Add very primitive AlphaBlend test. Added: trunk/reactos/apps/utils/rosperf/alphablend.c Modified: trunk/reactos/apps/utils/rosperf/rosperf.h Modified: trunk/reactos/apps/utils/rosperf/rosperf.xml Modified: trunk/reactos/apps/utils/rosperf/testlist.c _____
Added: trunk/reactos/apps/utils/rosperf/alphablend.c --- trunk/reactos/apps/utils/rosperf/alphablend.c 2005-11-04 21:03:35 UTC (rev 19006) +++ trunk/reactos/apps/utils/rosperf/alphablend.c 2005-11-04 23:25:03 UTC (rev 19007) @@ -0,0 +1,88 @@
+/* + * ReactOS RosPerf - ReactOS GUI performance test program + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <windows.h> +#include <wingdi.h> +#include "rosperf.h" + +typedef struct _ALPHABLEND_CONTEXT { + HDC BitmapDc; + HBITMAP Bitmap; +} ALPHABLEND_CONTEXT, *PALPHABLEND_CONTEXT; + +unsigned +AlphaBlendInit(void **Context, PPERF_INFO PerfInfo, unsigned Reps) +{ + PALPHABLEND_CONTEXT ctx = HeapAlloc(GetProcessHeap(), 0, sizeof (ALPHABLEND_CONTEXT)); + INT x, y; + + ctx->BitmapDc = CreateCompatibleDC(PerfInfo->BackgroundDc); + ctx->Bitmap = CreateCompatibleBitmap(PerfInfo->BackgroundDc, PerfInfo->WndWidth, PerfInfo->WndHeight); + SelectObject(ctx->BitmapDc, ctx->Bitmap); + + for (y = 0; y < PerfInfo->WndHeight; y++) + { + for (x = 0; x < PerfInfo->WndWidth; x++) + { + SetPixel(ctx->BitmapDc, x, y, RGB(0xff, 0x00, 0x00)); + } + } + + *Context = ctx; + + return Reps; +} + +void +AlphaBlendCleanup(void *Context, PPERF_INFO PerfInfo) +{ + PALPHABLEND_CONTEXT ctx = Context; + DeleteDC(ctx->BitmapDc); + DeleteObject(ctx->Bitmap); + HeapFree(GetProcessHeap(), 0, ctx); +} + + +ULONG +DbgPrint( + IN PCH Format, + IN ...); + +void +AlphaBlendProc(void *Context, PPERF_INFO PerfInfo, unsigned Reps) +{ + PALPHABLEND_CONTEXT ctx = Context; + unsigned Rep; + BLENDFUNCTION BlendFunc = { AC_SRC_OVER, 0, 0, 0 }; + + for (Rep = 0; Rep < Reps; Rep++) + { + BlendFunc.SourceConstantAlpha = 255 * Rep / Reps; +#if 0 + PatBlt(PerfInfo->BackgroundDc, 0, 0, PerfInfo->WndWidth, PerfInfo->WndHeight, PATCOPY); +#endif + if (!AlphaBlend(PerfInfo->BackgroundDc, 0, 0, PerfInfo->WndWidth, PerfInfo->WndHeight, + ctx->BitmapDc, 0, 0, PerfInfo->WndWidth, PerfInfo->WndHeight, + BlendFunc)) + { + DbgPrint("AlphaBlend failed (0x%lx)\n", GetLastError()); + } + } +} + +/* EOF */ Property changes on: trunk/reactos/apps/utils/rosperf/alphablend.c ___________________________________________________________________ Name: svn:eol-style + native _____
Modified: trunk/reactos/apps/utils/rosperf/rosperf.h --- trunk/reactos/apps/utils/rosperf/rosperf.h 2005-11-04 21:03:35 UTC (rev 19006) +++ trunk/reactos/apps/utils/rosperf/rosperf.h 2005-11-04 23:25:03 UTC (rev 19007) @@ -61,6 +61,10 @@
void TextProc(void *Context, PPERF_INFO PerfInfo, unsigned Reps);
+unsigned AlphaBlendInit(void **Context, PPERF_INFO PerfInfo, unsigned Reps); +void AlphaBlendCleanup(void *Context, PPERF_INFO PerfInfo); +void AlphaBlendProc(void *Context, PPERF_INFO PerfInfo, unsigned Reps); + #endif /* ROSPERF_H_INCLUDED */
/* EOF */ _____
Modified: trunk/reactos/apps/utils/rosperf/rosperf.xml --- trunk/reactos/apps/utils/rosperf/rosperf.xml 2005-11-04 21:03:35 UTC (rev 19006) +++ trunk/reactos/apps/utils/rosperf/rosperf.xml 2005-11-04 23:25:03 UTC (rev 19007) @@ -2,7 +2,9 @@
<include base="rosperf">.</include> <define name="__USE_W32API" /> <define name="UNICODE" /> + <define name="WINVER">0x0500</define> <library>version</library> + <library>msimg32</library> <library>gdi32</library> <library>user32</library> <library>kernel32</library> @@ -11,6 +13,7 @@ <file>lines.c</file> <file>fill.c</file> <file>text.c</file> + <file>alphablend.c</file> <file>testlist.c</file> <file>rosperf.rc</file> </module> _____
Modified: trunk/reactos/apps/utils/rosperf/testlist.c --- trunk/reactos/apps/utils/rosperf/testlist.c 2005-11-04 21:03:35 UTC (rev 19006) +++ trunk/reactos/apps/utils/rosperf/testlist.c 2005-11-04 23:25:03 UTC (rev 19007) @@ -26,7 +26,8 @@
{ L"hlines", L"Horizontal Lines", NullInit, LinesHorizontalProc, NullCleanup, NullCleanup }, { L"vlines", L"Vertical Lines", NullInit, LinesVerticalProc, NullCleanup, NullCleanup }, { L"lines", L"Lines", NullInit, LinesProc, NullCleanup, NullCleanup }, - { L"text", L"Text", NullInit, TextProc, NullCleanup, NullCleanup } + { L"text", L"Text", NullInit, TextProc, NullCleanup, NullCleanup }, + { L"alpha", L"Alpha Blend", AlphaBlendInit, AlphaBlendProc, NullCleanup, AlphaBlendCleanup } };