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 b286741..abe808a 100644 (file)
@@ -37,7 +37,7 @@ typedef struct {
 GETPIXELPROC MyGetPixel = GetPixel;\r
 SETPIXELPROC MySetPixel = (SETPIXELPROC)SetPixelV;\r
 \r
-void __inline SetPix(HDC hDC, int X, int Y, COLORREF clrColor, DWORD dwFlags, DWORD dwAlpha);\r
+void __inline SetPix(HDC hDC, int X, int Y, COLORREF clrColor, DWORD *dwPalette, DWORD dwFlags, DWORD dwAlpha);\r
 \r
 extern HINSTANCE hStorm;\r
 \r
@@ -226,14 +226,14 @@ BOOL GRPAPI WINAPI DrawGrp(HANDLE hGrp, HDC hdcDest, int nXDest, int nYDest, WOR
                                        if (!(RowData[ofs] & 0x80)) {\r
                                                if (!(RowData[ofs] & 0x40)) {\r
                                                        for (i=1;i<=RowData[ofs] && x<GrpFrame->Width;i++) {\r
-                                                               SetPix(hdcDest,nXDest+x,nYDest+y,dwPalette[RowData[ofs+i]],dwFlags,dwAlpha);\r
+                                                               SetPix(hdcDest,nXDest+x,nYDest+y,RowData[ofs+i],dwPalette,dwFlags,dwAlpha);\r
                                                                x++;\r
                                                        }\r
                                                        ofs+=RowData[ofs]+1;\r
                                                }\r
                                                else {\r
                                                        for (i=0;i<RowData[ofs]-64 && x<GrpFrame->Width;i++) {\r
-                                                               SetPix(hdcDest,nXDest+x,nYDest+y,dwPalette[RowData[ofs+1]],dwFlags,dwAlpha);\r
+                                                               SetPix(hdcDest,nXDest+x,nYDest+y,RowData[ofs+1],dwPalette,dwFlags,dwAlpha);\r
                                                                x++;\r
                                                        }\r
                                                        ofs+=2;\r
@@ -249,7 +249,7 @@ BOOL GRPAPI WINAPI DrawGrp(HANDLE hGrp, HDC hdcDest, int nXDest, int nYDest, WOR
                else {\r
                        for (y=0;y<GrpFrame->Height;y++) {\r
                                for (x=0;x<GrpFrame->Width;x++) {\r
-                                       SetPix(hdcDest,nXDest+x,nYDest+y,dwPalette[GrpRaw[y * GrpFrame->Width + x]],dwFlags,dwAlpha);\r
+                                       SetPix(hdcDest,nXDest+x,nYDest+y,GrpRaw[y * GrpFrame->Width + x],dwPalette,dwFlags,dwAlpha);\r
                                }\r
                        }\r
                }\r
@@ -263,14 +263,14 @@ BOOL GRPAPI WINAPI DrawGrp(HANDLE hGrp, HDC hdcDest, int nXDest, int nYDest, WOR
                                        if (!(RowData[ofs] & 0x80)) {\r
                                                if (!(RowData[ofs] & 0x40)) {\r
                                                        for (i=1;i<=RowData[ofs] && x<GrpFrame->Width;i++) {\r
-                                                               SetPix(hdcDest,Right-x,nYDest+y,dwPalette[RowData[ofs+i]],dwFlags,dwAlpha);\r
+                                                               SetPix(hdcDest,Right-x,nYDest+y,RowData[ofs+i],dwPalette,dwFlags,dwAlpha);\r
                                                                x++;\r
                                                        }\r
                                                        ofs+=RowData[ofs]+1;\r
                                                }\r
                                                else {\r
                                                        for (i=0;i<RowData[ofs]-64 && x<GrpFrame->Width;i++) {\r
-                                                               SetPix(hdcDest,Right-x,nYDest+y,dwPalette[RowData[ofs+1]],dwFlags,dwAlpha);\r
+                                                               SetPix(hdcDest,Right-x,nYDest+y,RowData[ofs+1],dwPalette,dwFlags,dwAlpha);\r
                                                                x++;\r
                                                        }\r
                                                        ofs+=2;\r
@@ -286,7 +286,7 @@ BOOL GRPAPI WINAPI DrawGrp(HANDLE hGrp, HDC hdcDest, int nXDest, int nYDest, WOR
                else {\r
                        for (y=0;y<GrpFrame->Height;y++) {\r
                                for (x=0;x<GrpFrame->Width;x++) {\r
-                                       SetPix(hdcDest,Right-x,nYDest+y,dwPalette[GrpRaw[y * GrpFrame->Width + x]],dwFlags,dwAlpha);\r
+                                       SetPix(hdcDest,Right-x,nYDest+y,GrpRaw[y * GrpFrame->Width + x],dwPalette,dwFlags,dwAlpha);\r
                                }\r
                        }\r
                }\r
@@ -300,14 +300,14 @@ BOOL GRPAPI WINAPI DrawGrp(HANDLE hGrp, HDC hdcDest, int nXDest, int nYDest, WOR
                                        if (!(RowData[ofs] & 0x80)) {\r
                                                if (!(RowData[ofs] & 0x40)) {\r
                                                        for (i=1;i<=RowData[ofs] && x<GrpFrame->Width;i++) {\r
-                                                               SetPix(hdcDest,nXDest+x,Bottom-y,dwPalette[RowData[ofs+i]],dwFlags,dwAlpha);\r
+                                                               SetPix(hdcDest,nXDest+x,Bottom-y,RowData[ofs+i],dwPalette,dwFlags,dwAlpha);\r
                                                                x++;\r
                                                        }\r
                                                        ofs+=RowData[ofs]+1;\r
                                                }\r
                                                else {\r
                                                        for (i=0;i<RowData[ofs]-64 && x<GrpFrame->Width;i++) {\r
-                                                               SetPix(hdcDest,nXDest+x,Bottom-y,dwPalette[RowData[ofs+1]],dwFlags,dwAlpha);\r
+                                                               SetPix(hdcDest,nXDest+x,Bottom-y,RowData[ofs+1],dwPalette,dwFlags,dwAlpha);\r
                                                                x++;\r
                                                        }\r
                                                        ofs+=2;\r
@@ -323,7 +323,7 @@ BOOL GRPAPI WINAPI DrawGrp(HANDLE hGrp, HDC hdcDest, int nXDest, int nYDest, WOR
                else {\r
                        for (y=0;y<GrpFrame->Height;y++) {\r
                                for (x=0;x<GrpFrame->Width;x++) {\r
-                                       SetPix(hdcDest,nXDest+x,Bottom-y,dwPalette[GrpRaw[y * GrpFrame->Width + x]],dwFlags,dwAlpha);\r
+                                       SetPix(hdcDest,nXDest+x,Bottom-y,GrpRaw[y * GrpFrame->Width + x],dwPalette,dwFlags,dwAlpha);\r
                                }\r
                        }\r
                }\r
@@ -337,14 +337,14 @@ BOOL GRPAPI WINAPI DrawGrp(HANDLE hGrp, HDC hdcDest, int nXDest, int nYDest, WOR
                                        if (!(RowData[ofs] & 0x80)) {\r
                                                if (!(RowData[ofs] & 0x40)) {\r
                                                        for (i=1;i<=RowData[ofs] && x<GrpFrame->Width;i++) {\r
-                                                               SetPix(hdcDest,Right-x,Bottom-y,dwPalette[RowData[ofs+i]],dwFlags,dwAlpha);\r
+                                                               SetPix(hdcDest,Right-x,Bottom-y,RowData[ofs+i],dwPalette,dwFlags,dwAlpha);\r
                                                                x++;\r
                                                        }\r
                                                        ofs+=RowData[ofs]+1;\r
                                                }\r
                                                else {\r
                                                        for (i=0;i<RowData[ofs]-64 && x<GrpFrame->Width;i++) {\r
-                                                               SetPix(hdcDest,Right-x,Bottom-y,dwPalette[RowData[ofs+1]],dwFlags,dwAlpha);\r
+                                                               SetPix(hdcDest,Right-x,Bottom-y,RowData[ofs+1],dwPalette,dwFlags,dwAlpha);\r
                                                                x++;\r
                                                        }\r
                                                        ofs+=2;\r
@@ -360,7 +360,7 @@ BOOL GRPAPI WINAPI DrawGrp(HANDLE hGrp, HDC hdcDest, int nXDest, int nYDest, WOR
                else {\r
                        for (y=0;y<GrpFrame->Height;y++) {\r
                                for (x=0;x<GrpFrame->Width;x++) {\r
-                                       SetPix(hdcDest,Right-x,Bottom-y,dwPalette[GrpRaw[y * GrpFrame->Width + x]],dwFlags,dwAlpha);\r
+                                       SetPix(hdcDest,Right-x,Bottom-y,GrpRaw[y * GrpFrame->Width + x],dwPalette,dwFlags,dwAlpha);\r
                                }\r
                        }\r
                }\r
@@ -385,37 +385,42 @@ void GRPAPI WINAPI SetFunctionSetPixel(SETPIXELPROC lpSetPixelProc)
        MySetPixel = lpSetPixelProc;\r
 }\r
 \r
-void __inline SetPix(HDC hDC, int X, int Y, COLORREF clrColor, DWORD dwFlags, DWORD dwAlpha)\r
+void __inline SetPix(HDC hDC, int X, int Y, COLORREF clrColor, DWORD *dwPalette, DWORD dwFlags, DWORD dwAlpha)\r
 {\r
-       if (dwFlags&SHADOW_COLOR) {\r
-               clrColor = (dwFlags >> 8) & 0x00FFFFFF;\r
-       }\r
-       if (dwFlags&ALPHA_BLEND) {\r
-               DWORD dwColor = MyGetPixel(hDC,X,Y);\r
+       if (!(dwFlags&USE_INDEX)) {\r
+               if (dwFlags&SHADOW_COLOR) {\r
+                       clrColor = (dwFlags >> 8) & 0x00FFFFFF;\r
+               }\r
+               else {\r
+                       clrColor = dwPalette[clrColor];\r
+               }\r
+               if (dwFlags&ALPHA_BLEND) {\r
+                       DWORD dwColor = MyGetPixel(hDC,X,Y);\r
 \r
-               // Old alpha\r
-               /*((BYTE *)&dwColor)[0]*=1-((float)((BYTE *)&dwAlpha)[0]/256);\r
-               ((BYTE *)&dwColor)[1]*=1-((float)((BYTE *)&dwAlpha)[1]/256);\r
-               ((BYTE *)&dwColor)[2]*=1-((float)((BYTE *)&dwAlpha)[2]/256);\r
-               ((BYTE *)&clrColor)[0]*=(float)((BYTE *)&dwAlpha)[0]/256;\r
-               ((BYTE *)&clrColor)[1]*=(float)((BYTE *)&dwAlpha)[1]/256;\r
-               ((BYTE *)&clrColor)[2]*=(float)((BYTE *)&dwAlpha)[2]/256;\r
-               ((BYTE *)&clrColor)[0]+=((BYTE *)&dwColor)[0];\r
-               ((BYTE *)&clrColor)[1]+=((BYTE *)&dwColor)[1];\r
-               ((BYTE *)&clrColor)[2]+=((BYTE *)&dwColor)[2];*/\r
+                       // Old alpha\r
+                       /*((BYTE *)&dwColor)[0]*=1-((float)((BYTE *)&dwAlpha)[0]/256);\r
+                       ((BYTE *)&dwColor)[1]*=1-((float)((BYTE *)&dwAlpha)[1]/256);\r
+                       ((BYTE *)&dwColor)[2]*=1-((float)((BYTE *)&dwAlpha)[2]/256);\r
+                       ((BYTE *)&clrColor)[0]*=(float)((BYTE *)&dwAlpha)[0]/256;\r
+                       ((BYTE *)&clrColor)[1]*=(float)((BYTE *)&dwAlpha)[1]/256;\r
+                       ((BYTE *)&clrColor)[2]*=(float)((BYTE *)&dwAlpha)[2]/256;\r
+                       ((BYTE *)&clrColor)[0]+=((BYTE *)&dwColor)[0];\r
+                       ((BYTE *)&clrColor)[1]+=((BYTE *)&dwColor)[1];\r
+                       ((BYTE *)&clrColor)[2]+=((BYTE *)&dwColor)[2];*/\r
 \r
-               /* blendedcolor =\r
-                    ( ( forecolor * ( 1 - alpha ) ) >> 8 )\r
-                  + ( ( backcolor * ( 256 - alpha ) ) >> 8 ) */\r
-               ((BYTE *)&clrColor)[0] =\r
-                       ( ( ((BYTE *)&clrColor)[0] * ( ((BYTE *)&dwAlpha)[0] + 1 ) ) >> 8 )\r
-                       + ( ( ((BYTE *)&dwColor)[0] * ( 256 - ((BYTE *)&dwAlpha)[0] ) ) >> 8 );\r
-               ((BYTE *)&clrColor)[1] =\r
-                       ( ( ((BYTE *)&clrColor)[1] * ( ((BYTE *)&dwAlpha)[1] + 1 ) ) >> 8 )\r
-                       + ( ( ((BYTE *)&dwColor)[1] * ( 256 - ((BYTE *)&dwAlpha)[1] ) ) >> 8 );\r
-               ((BYTE *)&clrColor)[2] =\r
-                       ( ( ((BYTE *)&clrColor)[2] * ( ((BYTE *)&dwAlpha)[2] + 1 ) ) >> 8 )\r
-                       + ( ( ((BYTE *)&dwColor)[2] * ( 256 - ((BYTE *)&dwAlpha)[2] ) ) >> 8 );\r
+                       /* blendedcolor =\r
+                                ( ( forecolor * ( 1 - alpha ) ) >> 8 )\r
+                          + ( ( backcolor * ( 256 - alpha ) ) >> 8 ) */\r
+                       ((BYTE *)&clrColor)[0] =\r
+                               ( ( ((BYTE *)&clrColor)[0] * ( ((BYTE *)&dwAlpha)[0] + 1 ) ) >> 8 )\r
+                               + ( ( ((BYTE *)&dwColor)[0] * ( 256 - ((BYTE *)&dwAlpha)[0] ) ) >> 8 );\r
+                       ((BYTE *)&clrColor)[1] =\r
+                               ( ( ((BYTE *)&clrColor)[1] * ( ((BYTE *)&dwAlpha)[1] + 1 ) ) >> 8 )\r
+                               + ( ( ((BYTE *)&dwColor)[1] * ( 256 - ((BYTE *)&dwAlpha)[1] ) ) >> 8 );\r
+                       ((BYTE *)&clrColor)[2] =\r
+                               ( ( ((BYTE *)&clrColor)[2] * ( ((BYTE *)&dwAlpha)[2] + 1 ) ) >> 8 )\r
+                               + ( ( ((BYTE *)&dwColor)[2] * ( 256 - ((BYTE *)&dwAlpha)[2] ) ) >> 8 );\r
+               }\r
        }\r
        MySetPixel(hDC,X,Y,clrColor);\r
 }\r