From a935f1cee90bfb336ea45f9c2d5172790f520c18 Mon Sep 17 00:00:00 2001 From: ManicSteiner Date: Sat, 18 Jan 2025 22:15:46 +0800 Subject: [PATCH] add image.cs --- GameRes/Image.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/GameRes/Image.cs b/GameRes/Image.cs index f52ce64c..0644a8c8 100644 --- a/GameRes/Image.cs +++ b/GameRes/Image.cs @@ -71,6 +71,8 @@ namespace GameRes BgrX = 6, RgbA = 9, BgrA = 10, + RgbX_Disposed = 55, + BgrX_Disposed = 66, } public class ImageData @@ -213,14 +215,18 @@ namespace GameRes int src = 0; var color_map = new Color[colors]; Func get_color; - if (PaletteFormat.Bgr == format || PaletteFormat.BgrX == format) + if (PaletteFormat.Bgr == format || PaletteFormat.BgrX_Disposed == format) get_color = x => Color.FromRgb (palette_data[x+2], palette_data[x+1], palette_data[x]); + else if (PaletteFormat.BgrX == format) + get_color = x => Color.FromArgb(palette_data[x+3] >= byte.MaxValue / 2 ? byte.MaxValue : (byte)(palette_data[x+3] << 1), palette_data[x+2], palette_data[x+1], palette_data[x]); else if (PaletteFormat.BgrA == format) get_color = x => Color.FromArgb (palette_data[x+3], palette_data[x+2], palette_data[x+1], palette_data[x]); else if (PaletteFormat.RgbA == format) get_color = x => Color.FromArgb (palette_data[x+3], palette_data[x], palette_data[x+1], palette_data[x+2]); + else if (PaletteFormat.RgbX == format) + get_color = x => Color.FromArgb (palette_data[x+3] >= byte.MaxValue / 2 ? byte.MaxValue : (byte)(palette_data[x+3] << 1), palette_data[x], palette_data[x+1], palette_data[x+2]); else - get_color = x => Color.FromRgb (palette_data[x], palette_data[x+1], palette_data[x+2]); + get_color = x => Color.FromRgb (palette_data[x], palette_data[x+1], palette_data[x+2]); for (int i = 0; i < colors; ++i) {