Author: gschneider
Date: Tue Nov 25 10:50:25 2008
New Revision: 37640
URL:
http://svn.reactos.org/svn/reactos?rev=37640&view=rev
Log:
- Enhance test with icon drawing
- Tests some configurations of DrawIcon and DrawIconEx, highlighting another problem in
32bpp
- Reference TransparentBlt and AlphaBlend directly
Added:
trunk/rostests/dibtests/vbltest/test_inv32.ico (with props)
Modified:
trunk/rostests/dibtests/vbltest/vbltest.c
trunk/rostests/dibtests/vbltest/vbltest.rbuild
trunk/rostests/dibtests/vbltest/vbltest.rc
Added: trunk/rostests/dibtests/vbltest/test_inv32.ico
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/dibtests/vbltest/test_inv…
==============================================================================
Binary file - no diff available.
Propchange: trunk/rostests/dibtests/vbltest/test_inv32.ico
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: trunk/rostests/dibtests/vbltest/vbltest.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/dibtests/vbltest/vbltest.…
==============================================================================
--- trunk/rostests/dibtests/vbltest/vbltest.c [iso-8859-1] (original)
+++ trunk/rostests/dibtests/vbltest/vbltest.c [iso-8859-1] Tue Nov 25 10:50:25 2008
@@ -8,7 +8,18 @@
#include <windows.h>
#include <tchar.h>
+BOOL WINAPI GdiAlphaBlend(
+ HDC hdcDst, int xDst, int yDst, int wDst, int hDst,
+ HDC hdcSrc, int xSrc, int ySrc, int wSrc, int hSrc,
+ BLENDFUNCTION blendFunction);
+
+BOOL WINAPI GdiTransparentBlt(
+ HDC hdcDst, int xDst, int yDst, int wDst, int hDst,
+ HDC hdcSrc, int xSrc, int ySrc, int wSrc, int hSrc,
+ UINT crTransparent);
+
#define CURRENT_BMPS 4
+#define CURRENT_ICONS 1
#define SCALE 1.5
#define OFFSET 5
@@ -19,6 +30,7 @@
WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HBITMAP hbmList[CURRENT_BMPS];
+ static HICON hicList[CURRENT_ICONS];
switch (message)
{
@@ -28,6 +40,7 @@
hbmList[1] = (HBITMAP)LoadImage(hInst, MAKEINTRESOURCE(400), IMAGE_BITMAP, 0,
0, LR_DEFAULTCOLOR);
hbmList[2] = (HBITMAP)LoadImage(hInst, MAKEINTRESOURCE(800), IMAGE_BITMAP, 0,
0, LR_DEFAULTCOLOR);
hbmList[3] = (HBITMAP)LoadImage(hInst, MAKEINTRESOURCE(2400), IMAGE_BITMAP,
0, 0, LR_DEFAULTCOLOR);
+ hicList[0] = (HICON)LoadIcon(hInst, MAKEINTRESOURCE(3200));
break;
}
@@ -38,7 +51,6 @@
BITMAP bitmap;
BLENDFUNCTION bfunc;
int x = 0, y = 0, i;
-
hdc = BeginPaint(hWnd, &ps);
hdcMem = CreateCompatibleDC(hdc);
@@ -47,6 +59,7 @@
bfunc.BlendOp = AC_SRC_OVER;
bfunc.SourceConstantAlpha = 128;
+ /* bitmaps */
for(i = 0; i < CURRENT_BMPS; i++)
{
y = 0;
@@ -66,19 +79,47 @@
y += bitmap.bmHeight*SCALE + OFFSET;
/* transparent blt, transparency: grey */
- TransparentBlt(hdc, x, y, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0, 0,
bitmap.bmWidth, bitmap.bmHeight, 128*256*256+128*256+128);
+ GdiTransparentBlt(hdc, x, y, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0,
0, bitmap.bmWidth, bitmap.bmHeight, 128*256*256+128*256+128);
y += bitmap.bmHeight + OFFSET;
/* transparent blt, transparency: grey, scaled */
- TransparentBlt(hdc, x, y, bitmap.bmWidth*SCALE, bitmap.bmHeight*SCALE,
hdcMem, 0, 0, bitmap.bmWidth, bitmap.bmHeight, 128*256*256+128*256+128);
+ GdiTransparentBlt(hdc, x, y, bitmap.bmWidth*SCALE, bitmap.bmHeight*SCALE,
hdcMem, 0, 0, bitmap.bmWidth, bitmap.bmHeight, 128*256*256+128*256+128);
y += bitmap.bmHeight*SCALE + OFFSET;
-
+
/* alpha blend, org size */
- AlphaBlend(hdc, x, y, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0, 0,
bitmap.bmWidth, bitmap.bmHeight, bfunc);
+ GdiAlphaBlend(hdc, x, y, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0, 0,
bitmap.bmWidth, bitmap.bmHeight, bfunc);
y += bitmap.bmHeight + OFFSET;
/* alpha blend, scaled */
- AlphaBlend(hdc, x, y, bitmap.bmWidth*SCALE, bitmap.bmHeight*SCALE,
hdcMem, 0, 0, bitmap.bmWidth, bitmap.bmHeight, bfunc);
+ GdiAlphaBlend(hdc, x, y, bitmap.bmWidth*SCALE, bitmap.bmHeight*SCALE,
hdcMem, 0, 0, bitmap.bmWidth, bitmap.bmHeight, bfunc);
+ y += bitmap.bmHeight*SCALE + OFFSET;
+
+ x += bitmap.bmWidth*SCALE + OFFSET;
+ }
+
+ /* icons */
+ for(i = 0; i < CURRENT_ICONS; i++)
+ {
+ y = 0;
+ /* pure icon */
+ DrawIcon(hdc, x, y, hicList[i]);
+ y += bitmap.bmHeight + OFFSET;
+
+ /* normal icon using Ex */
+ DrawIconEx(hdc, x, y, hicList[i], 0, 0, 0, NULL, DI_NORMAL);
+ y += bitmap.bmHeight + OFFSET;
+
+ /* normal icon using Ex with bigger size */
+ DrawIconEx(hdc, x, y, hicList[i], bitmap.bmWidth, bitmap.bmHeight, 0,
NULL, DI_NORMAL);
+ y += bitmap.bmHeight + OFFSET;
+
+ /* only icon using Ex */
+ DrawIconEx(hdc, x, y, hicList[i], 0, 0, 0, NULL, DI_IMAGE);
+ y += bitmap.bmHeight + OFFSET;
+
+ /* mask using Ex */
+ DrawIconEx(hdc, x, y, hicList[i], 0, 0, 0, NULL, DI_MASK);
+ y += bitmap.bmHeight + OFFSET;
x += bitmap.bmWidth*SCALE + OFFSET;
}
Modified: trunk/rostests/dibtests/vbltest/vbltest.rbuild
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/dibtests/vbltest/vbltest.…
==============================================================================
--- trunk/rostests/dibtests/vbltest/vbltest.rbuild [iso-8859-1] (original)
+++ trunk/rostests/dibtests/vbltest/vbltest.rbuild [iso-8859-1] Tue Nov 25 10:50:25 2008
@@ -2,9 +2,8 @@
<define name="__USE_W32API" />
<include base="vbltest">.</include>
<library>kernel32</library>
+ <library>user32</library>
<library>gdi32</library>
- <library>user32</library>
- <library>msimg32</library>
<file>vbltest.c</file>
<file>vbltest.rc</file>
</module>
Modified: trunk/rostests/dibtests/vbltest/vbltest.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/dibtests/vbltest/vbltest.…
==============================================================================
--- trunk/rostests/dibtests/vbltest/vbltest.rc [iso-8859-1] (original)
+++ trunk/rostests/dibtests/vbltest/vbltest.rc [iso-8859-1] Tue Nov 25 10:50:25 2008
@@ -2,3 +2,5 @@
400 BITMAP "test_inv04.bmp"
800 BITMAP "test_inv08.bmp"
2400 BITMAP "test_inv24.bmp"
+3200 ICON "test_inv32.ico"
+