X-Git-Url: https://git.jankratochvil.net/?p=gnokii.git;a=blobdiff_plain;f=common%2Fgsm-bitmaps.c;h=9114c5d37de44c3e5ede9a527e95127ec866b625;hp=1e96f8b38315b5ee7051721c5768fa7d1ee37e32;hb=f27649b20525793d0880d0df34205548f71ed7f8;hpb=52566bd0b60e367348e0f7ecaafa6d9d8faebca4;ds=sidebyside diff --git a/common/gsm-bitmaps.c b/common/gsm-bitmaps.c index 1e96f8b..9114c5d 100644 --- a/common/gsm-bitmaps.c +++ b/common/gsm-bitmaps.c @@ -68,6 +68,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 +122,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 +164,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