From 71135230f5a48ce14627aa89259d5b5c9eb51754 Mon Sep 17 00:00:00 2001 From: Thomas Bernard Date: Fri, 2 Feb 2018 10:38:19 +0100 Subject: [PATCH] Load_IFF() set aspect ratio of loaded image --- src/fileformats.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/fileformats.c b/src/fileformats.c index 89896e9c..90eafa8e 100644 --- a/src/fileformats.c +++ b/src/fileformats.c @@ -676,6 +676,7 @@ void Load_IFF(T_IO_Context * context) int iff_format = 0; int plane; dword AmigaViewModes = 0; + enum PIXEL_RATIO ratio = PIXEL_SIMPLE; Get_full_filename(filename, context->File_name, context->File_directory); @@ -743,7 +744,17 @@ void Load_IFF(T_IO_Context * context) header.BitPlanes++; Back_color=header.Transp_col; Image_HAM=0; - // TODO parse X / Y aspect + if (header.X_aspect != 0 && header.Y_aspect != 0) + { + if ((10 * header.X_aspect) <= (6 * header.Y_aspect)) + ratio = PIXEL_TALL; // ratio <= 0.6 + else if ((10 * header.X_aspect) <= (8 * header.Y_aspect)) + ratio = PIXEL_TALL3; // 0.6 < ratio <= 0.8 + else if ((10 * header.X_aspect) < (15 * header.Y_aspect)) + ratio = PIXEL_SIMPLE; // 0.8 < ratio < 1.5 + else + ratio = PIXEL_WIDE; // 1.5 <= ratio + } while (File_error == 0 && Read_bytes(IFF_file,section,4) @@ -837,11 +848,12 @@ void Load_IFF(T_IO_Context * context) Read_word_be(IFF_file,&tiny_width); Read_word_be(IFF_file,&tiny_height); section_size -= 4; +printf("%d x %d = %d %d\n", tiny_width, tiny_height, tiny_width*tiny_height, section_size); // Load thumbnail if in preview mode if ((context->Type == CONTEXT_PREVIEW || context->Type == CONTEXT_PREVIEW_PALETTE) && iff_format == FORMAT_PBM) { - Pre_load(context, tiny_width, tiny_height,file_size,iff_format,PIXEL_SIMPLE,0); + Pre_load(context, tiny_width, tiny_height,file_size,iff_format,ratio,0); PBM_Decode(context, header.Compression, tiny_width, tiny_height); fclose(IFF_file); IFF_file = NULL; @@ -855,7 +867,7 @@ void Load_IFF(T_IO_Context * context) Original_screen_X = header.X_screen; Original_screen_Y = header.Y_screen; - Pre_load(context, header.Width, header.Height, file_size, iff_format, PIXEL_SIMPLE, 0); + Pre_load(context, header.Width, header.Height, file_size, iff_format, ratio, 0); context->Background_transparent = header.Mask == 2; context->Transparent_color = context->Background_transparent ? header.Transp_col : 0;