diff --git a/src/buttons.c b/src/buttons.c index 2bb42974..9a149874 100644 --- a/src/buttons.c +++ b/src/buttons.c @@ -3269,8 +3269,9 @@ void Load_picture(enum CONTEXT_TYPE type) ((context.Ratio == PIXEL_WIDE && Pixel_ratio != PIXEL_WIDE && Pixel_ratio != PIXEL_WIDE2) || (context.Ratio == PIXEL_TALL && - Pixel_ratio != PIXEL_TALL && Pixel_ratio != PIXEL_TALL2 && - Pixel_ratio != PIXEL_TALL3))) + Pixel_ratio != PIXEL_TALL && Pixel_ratio != PIXEL_TALL2) || + (context.Ratio == PIXEL_TALL3 && + Pixel_ratio != PIXEL_TALL3) )) { Init_mode_video( Video_mode[Current_resolution].Width, diff --git a/src/fileformats.c b/src/fileformats.c index 0fb03133..82a2ea8f 100644 --- a/src/fileformats.c +++ b/src/fileformats.c @@ -4087,12 +4087,19 @@ void Load_GIF(T_IO_Context * context) Original_screen_X=LSDB.Width; Original_screen_Y=LSDB.Height; - if (LSDB.Aspect==17) - ratio=PIXEL_TALL; - else if (LSDB.Aspect==113) - ratio=PIXEL_WIDE; - else - ratio=PIXEL_SIMPLE; + switch(LSDB.Aspect) { + case 17: // (17 + 15) / 64 = 1:2 + ratio=PIXEL_TALL; + break; + case 33: // (33 + 15) / 64 = 3:4 + ratio=PIXEL_TALL3; + break; + case 113: // (113 + 15) / 64 = 2:1 + ratio=PIXEL_WIDE; + break; + default: + ratio=PIXEL_SIMPLE; + } Pre_load(context, LSDB.Width,LSDB.Height,file_size,FORMAT_GIF,ratio,(LSDB.Resol&7)+1); context->Width=LSDB.Width; @@ -4657,10 +4664,15 @@ void Save_GIF(T_IO_Context * context) switch(context->Ratio) { case PIXEL_TALL: - LSDB.Aspect = 17; // 1:2 + case PIXEL_TALL2: + LSDB.Aspect = 17; // 1:2 = 2:4 + break; + case PIXEL_TALL3: + LSDB.Aspect = 33; // 3:4 break; case PIXEL_WIDE: - LSDB.Aspect = 113; // 2:1 + case PIXEL_WIDE2: + LSDB.Aspect = 113; // 2:1 = 4:2 break; default: LSDB.Aspect = 0; // undefined, which is most frequent. diff --git a/src/loadsave.c b/src/loadsave.c index fed635bb..d361f869 100644 --- a/src/loadsave.c +++ b/src/loadsave.c @@ -1288,12 +1288,7 @@ void Init_context_layered_image(T_IO_Context * context, char *file_name, char *f strcpy(context->Comment, Main.backups->Pages->Comment); context->Transparent_color=Main.backups->Pages->Transparent_color; context->Background_transparent=Main.backups->Pages->Background_transparent; - if (Pixel_ratio == PIXEL_WIDE || Pixel_ratio == PIXEL_WIDE2) - context->Ratio=PIXEL_WIDE; - else if (Pixel_ratio == PIXEL_TALL || Pixel_ratio == PIXEL_TALL2 || Pixel_ratio == PIXEL_TALL3) - context->Ratio=PIXEL_TALL; - else - context->Ratio=PIXEL_SIMPLE; + context->Ratio = Pixel_ratio; context->Target_address=Main.backups->Pages->Image[0].Pixels; context->Pitch=Main.image_width;