Handle PIXEL_TALL3 mode in file formats (GIF)
This commit is contained in:
parent
0285f37fc2
commit
8dfd6d6c97
@ -3269,8 +3269,9 @@ void Load_picture(enum CONTEXT_TYPE type)
|
|||||||
((context.Ratio == PIXEL_WIDE &&
|
((context.Ratio == PIXEL_WIDE &&
|
||||||
Pixel_ratio != PIXEL_WIDE && Pixel_ratio != PIXEL_WIDE2) ||
|
Pixel_ratio != PIXEL_WIDE && Pixel_ratio != PIXEL_WIDE2) ||
|
||||||
(context.Ratio == PIXEL_TALL &&
|
(context.Ratio == PIXEL_TALL &&
|
||||||
Pixel_ratio != PIXEL_TALL && Pixel_ratio != PIXEL_TALL2 &&
|
Pixel_ratio != PIXEL_TALL && Pixel_ratio != PIXEL_TALL2) ||
|
||||||
Pixel_ratio != PIXEL_TALL3)))
|
(context.Ratio == PIXEL_TALL3 &&
|
||||||
|
Pixel_ratio != PIXEL_TALL3) ))
|
||||||
{
|
{
|
||||||
Init_mode_video(
|
Init_mode_video(
|
||||||
Video_mode[Current_resolution].Width,
|
Video_mode[Current_resolution].Width,
|
||||||
|
|||||||
@ -4087,12 +4087,19 @@ void Load_GIF(T_IO_Context * context)
|
|||||||
Original_screen_X=LSDB.Width;
|
Original_screen_X=LSDB.Width;
|
||||||
Original_screen_Y=LSDB.Height;
|
Original_screen_Y=LSDB.Height;
|
||||||
|
|
||||||
if (LSDB.Aspect==17)
|
switch(LSDB.Aspect) {
|
||||||
ratio=PIXEL_TALL;
|
case 17: // (17 + 15) / 64 = 1:2
|
||||||
else if (LSDB.Aspect==113)
|
ratio=PIXEL_TALL;
|
||||||
ratio=PIXEL_WIDE;
|
break;
|
||||||
else
|
case 33: // (33 + 15) / 64 = 3:4
|
||||||
ratio=PIXEL_SIMPLE;
|
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);
|
Pre_load(context, LSDB.Width,LSDB.Height,file_size,FORMAT_GIF,ratio,(LSDB.Resol&7)+1);
|
||||||
context->Width=LSDB.Width;
|
context->Width=LSDB.Width;
|
||||||
@ -4657,10 +4664,15 @@ void Save_GIF(T_IO_Context * context)
|
|||||||
switch(context->Ratio)
|
switch(context->Ratio)
|
||||||
{
|
{
|
||||||
case PIXEL_TALL:
|
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;
|
break;
|
||||||
case PIXEL_WIDE:
|
case PIXEL_WIDE:
|
||||||
LSDB.Aspect = 113; // 2:1
|
case PIXEL_WIDE2:
|
||||||
|
LSDB.Aspect = 113; // 2:1 = 4:2
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
LSDB.Aspect = 0; // undefined, which is most frequent.
|
LSDB.Aspect = 0; // undefined, which is most frequent.
|
||||||
|
|||||||
@ -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);
|
strcpy(context->Comment, Main.backups->Pages->Comment);
|
||||||
context->Transparent_color=Main.backups->Pages->Transparent_color;
|
context->Transparent_color=Main.backups->Pages->Transparent_color;
|
||||||
context->Background_transparent=Main.backups->Pages->Background_transparent;
|
context->Background_transparent=Main.backups->Pages->Background_transparent;
|
||||||
if (Pixel_ratio == PIXEL_WIDE || Pixel_ratio == PIXEL_WIDE2)
|
context->Ratio = Pixel_ratio;
|
||||||
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->Target_address=Main.backups->Pages->Image[0].Pixels;
|
context->Target_address=Main.backups->Pages->Image[0].Pixels;
|
||||||
context->Pitch=Main.image_width;
|
context->Pitch=Main.image_width;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user