From ad9306498f968eb283b81e982ceff30f15699e6a Mon Sep 17 00:00:00 2001 From: Thomas Bernard Date: Thu, 18 Jan 2018 00:59:00 +0100 Subject: [PATCH] Add support for 2bpp BMP's (Win CE) File extension is usually 2bp (ic2 for icons) --- src/fileformats.c | 5 +++++ src/loadsave.c | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/fileformats.c b/src/fileformats.c index 0fa71b15..c34088aa 100644 --- a/src/fileformats.c +++ b/src/fileformats.c @@ -1500,6 +1500,10 @@ static void Load_BMP_Pixels(T_IO_Context * context, FILE * file, unsigned int co value = (x_pos & 1) ? (buffer[x_pos>>1] & 0xF) : (buffer[x_pos>>1] >> 4); Set_pixel(context, x_pos, target_y, value); break; + case 2: + value = (buffer[x_pos>>2] >> (((x_pos&3)^3)*2)) & 3; + Set_pixel(context, x_pos, target_y, value); + break; case 1 : value = ( buffer[x_pos>>3] & (0x80>>(x_pos&7)) ) ? 1 : 0; if (flags & LOAD_BMP_PIXEL_FLAG_TRANSP_PLANE) @@ -1728,6 +1732,7 @@ void Load_BMP(T_IO_Context * context) switch (header.Nb_bits) { case 1 : + case 2 : case 4 : case 8 : if (header.Nb_Clr) diff --git a/src/loadsave.c b/src/loadsave.c index 0c371fe5..6fe2e8f9 100644 --- a/src/loadsave.c +++ b/src/loadsave.c @@ -162,14 +162,14 @@ void Load_SDL_Image(T_IO_Context *); // ENUM Name TestFunc LoadFunc SaveFunc PalOnly Comment Layers Ext Exts T_Format File_formats[] = { - {FORMAT_ALL_IMAGES, "(all)", NULL, NULL, NULL, 0, 0, 0, "", "gif;png;bmp;pcx;pkm;iff;lbm;ilbm;img;sci;scq;scf;scn;sco;pi1;pc1;cel;neo;c64;koa;koala;fli;bml;cdu;prg;tga;pnm;xpm;xcf;jpg;jpeg;tif;tiff;ico;cur;cm5;pph"}, + {FORMAT_ALL_IMAGES, "(all)", NULL, NULL, NULL, 0, 0, 0, "", "gif;png;bmp;2bp;pcx;pkm;iff;lbm;ilbm;img;sci;scq;scf;scn;sco;pi1;pc1;cel;neo;c64;koa;koala;fli;bml;cdu;prg;tga;pnm;xpm;xcf;jpg;jpeg;tif;tiff;ico;ic2;cur;cm5;pph"}, {FORMAT_ALL_PALETTES, "(all)", NULL, NULL, NULL, 1, 0, 0, "", "kcf;pal;gpl"}, {FORMAT_ALL_FILES, "(*.*)", NULL, NULL, NULL, 0, 0, 0, "", "*"}, {FORMAT_GIF, " gif", Test_GIF, Load_GIF, Save_GIF, 0, 1, 1, "gif", "gif"}, #ifndef __no_pnglib__ {FORMAT_PNG, " png", Test_PNG, Load_PNG, Save_PNG, 0, 1, 0, "png", "png"}, #endif - {FORMAT_BMP, " bmp", Test_BMP, Load_BMP, Save_BMP, 0, 0, 0, "bmp", "bmp"}, + {FORMAT_BMP, " bmp", Test_BMP, Load_BMP, Save_BMP, 0, 0, 0, "bmp", "bmp;2bp"}, {FORMAT_PCX, " pcx", Test_PCX, Load_PCX, Save_PCX, 0, 0, 0, "pcx", "pcx"}, {FORMAT_PKM, " pkm", Test_PKM, Load_PKM, Save_PKM, 0, 1, 0, "pkm", "pkm"}, {FORMAT_LBM, " lbm", Test_LBM, Load_IFF, Save_IFF, 0, 0, 0, "iff", "iff;lbm;ilbm"}, @@ -188,7 +188,7 @@ T_Format File_formats[] = { {FORMAT_CM5, " cm5", Test_CM5, Load_CM5, Save_CM5, 0, 0, 1, "cm5", "cm5"}, {FORMAT_PPH, " pph", Test_PPH, Load_PPH, Save_PPH, 0, 0, 1, "pph", "pph"}, {FORMAT_XPM, " xpm", NULL, NULL, Save_XPM, 0, 0, 0, "xpm", "xpm"}, - {FORMAT_ICO, " ico", Test_ICO, Load_ICO, NULL, 0, 0, 0, "ico", "ico;cur"}, + {FORMAT_ICO, " ico", Test_ICO, Load_ICO, NULL, 0, 0, 0, "ico", "ico;ic2;cur"}, {FORMAT_MISC,"misc.",NULL, NULL, NULL, 0, 0, 0, "", "tga;pnm;xpm;xcf;jpg;jpeg;tif;tiff"}, };