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 Small banner for links to this site: |
diff --git a/grpapi/grpapi.cpp b/grpapi/grpapi.cpp
--- a/grpapi/grpapi.cpp
+++ b/grpapi/grpapi.cpp
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
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
|