Current News
Archived News
Search News
Discussion Forum


Old Forum
Install Programs More Downloads...
Troubleshooting
Source Code
Format Specs.
Misc. Information
Non-SF Stuff
Links




index d206614..20d0c06 100644 (file)
@@ -223,24 +223,33 @@ BOOL GRPAPI WINAPI DrawGrp(HANDLE hGrp, HDC hdcDest, int nXDest, int nYDest, WOR
        BYTE *GrpRaw = (BYTE *)GrpOffsets;\r
        BYTE *RowData;\r
        WORD x,ofs;\r
-       DWORD y;\r
+       DWORD y, nMaxOffset = 0;\r
        WORD i;\r
-       int j;\r
-       if (nFrame + 1 < GrpFile->nFrames) {\r
-               for (i = 0; i + 1 < GrpFile->nFrames; i++) {\r
-                       j = GrpFrames[i].Offset - GrpFrame->Offset;\r
-                       if (j > 0 && j < FrameSize)\r
-                               FrameSize = j;\r
-               }\r
+       int j, nFirstNonBlankFrame = 0;\r
+       for (i = 0; i < GrpFile->nFrames; i++) {\r
+               j = GrpFrames[i].Offset - GrpFrame->Offset;\r
+               if (j > 0 && j < FrameSize)\r
+                       FrameSize = j;\r
+               if (GrpFrames[i].Offset > nMaxOffset)\r
+                       nMaxOffset = GrpFrames[i].Offset;\r
        }\r
        if (FrameSize == 0xFFFFFF || FrameSize == GrpFrame->Width * GrpFrame->Height) {\r
                FrameSize = 0xFFFFFF;\r
-               for (i = 0; i + 1 < GrpFile->nFrames; i++) {\r
-                       j = GrpFrames[i].Offset - GrpFrames[0].Offset;\r
+               for (i = 0; i < GrpFile->nFrames; i++) {\r
+                       if (GrpFrames[i].Width != 0 && GrpFrames[i].Height != 0 && GrpFrames[i].Offset != GrpFrame->Offset && GrpFrames[i].Offset != nMaxOffset) {\r
+                               nFirstNonBlankFrame = i;\r
+                               break;\r
+                       }\r
+               }\r
+               if (i == GrpFile->nFrames)\r
+                       nFirstNonBlankFrame = nFrame;\r
+\r
+               for (i = 0; i < GrpFile->nFrames; i++) {\r
+                       j = GrpFrames[i].Offset - GrpFrames[nFirstNonBlankFrame].Offset;\r
                        if (j > 0 && j < FrameSize)\r
                                FrameSize = j;\r
                }\r
-               if (FrameSize == GrpFrames[0].Width * GrpFrames[0].Height)\r
+               if (FrameSize == GrpFrames[nFirstNonBlankFrame].Width * GrpFrames[nFirstNonBlankFrame].Height)\r
                        FrameSize = GrpFrame->Width * GrpFrame->Height;\r
        }\r
        if (!(dwFlags&HORIZONTAL_FLIP) && !(dwFlags&VERTICAL_FLIP)) {\r