for (i=0;i<bmp->size;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;
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
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<width) {
return 0;
}
+