X-Git-Url: https://git.jankratochvil.net/?p=gnokii.git;a=blobdiff_plain;f=common%2Fgsm-bitmaps.c;h=761427271f95ddf165ec1dd8ad8ca018cc3113ea;hp=3dae76c77b3cd609d9668423978fe3af6c461d7b;hb=82bcbc2300f764bcb3551b152a0a961f4fef5e66;hpb=c7dcdfd34d2bed9cc64c5c9603e51ef8c8271951 diff --git a/common/gsm-bitmaps.c b/common/gsm-bitmaps.c index 3dae76c..7614272 100644 --- a/common/gsm-bitmaps.c +++ b/common/gsm-bitmaps.c @@ -70,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; @@ -103,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 @@ -145,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