X-Git-Url: https://git.jankratochvil.net/?p=gnokii.git;a=blobdiff_plain;f=common%2Fgsm-bitmaps.c;h=761427271f95ddf165ec1dd8ad8ca018cc3113ea;hp=1e96f8b38315b5ee7051721c5768fa7d1ee37e32;hb=82bcbc2300f764bcb3551b152a0a961f4fef5e66;hpb=833e1c7c90e13ceaba3dde8e7a36fcc8dfb1db3c diff --git a/common/gsm-bitmaps.c b/common/gsm-bitmaps.c index 1e96f8b..7614272 100644 --- a/common/gsm-bitmaps.c +++ b/common/gsm-bitmaps.c @@ -10,6 +10,8 @@ */ +#include "config.h" + #include #include #include @@ -68,6 +70,27 @@ void GSM_ClearBitmap(GSM_Bitmap *bmp) for (i=0;isize;i++) bmp->bitmap[i]=0; } +int GSM_GetBitmapSize(GSM_Bitmap *bitmap) +{ + switch (bitmap->type) { + case GSM_StartupLogo : /*size 84*48*/ + case GSM_OperatorLogo : /*size 72*14*/ + case GSM_CallerLogo : /*size 72*14*/ + case GSM_PictureImage : /*size 72*28*/ + return bitmap->height*bitmap->width/8; + + case GSM_7110OperatorLogo: /*size 78*21*/ + return (bitmap->width*bitmap->height + 7)/8; + + case GSM_7110StartupLogo: /*size 96*65*/ + case GSM_6210StartupLogo: /*size 96*60*/ + return (bitmap->height+7)/8*bitmap->width; + + default: + return 0; + } +} + GSM_Error GSM_ReadBitmap(GSM_SMSMessage *message, GSM_Bitmap *bitmap) { int offset = 1; @@ -101,7 +124,7 @@ GSM_Error GSM_ReadBitmap(GSM_SMSMessage *message, GSM_Bitmap *bitmap) if (bitmap->width!=72 || bitmap->height!=14) return GE_INVALIDIMAGESIZE; - bitmap->size = (bitmap->width * bitmap->height) / 8; + bitmap->size = GSM_GetBitmapSize(bitmap); memcpy(bitmap->bitmap, message->MessageText + offset + 3, bitmap->size); #ifdef DEBUG @@ -143,7 +166,7 @@ void GSM_ResizeBitmap(GSM_Bitmap *bitmap, GSM_Bitmap_Types target) bitmap->height=21; } bitmap->type=target; - bitmap->size=(bitmap->width*bitmap->height + 7)/8; + bitmap->size=GSM_GetBitmapSize(bitmap); width=backup.width; if (bitmap->width