1 /*
2  *  ReactOS RosPerf - ReactOS GUI performance test program
3  *
4  *  This program is free software; you can redistribute it and/or modify
5  *  it under the terms of the GNU General Public License as published by
6  *  the Free Software Foundation; either version 2 of the License, or
7  *  (at your option) any later version.
8  *
9  *  This program is distributed in the hope that it will be useful,
10  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  *  GNU General Public License for more details.
13  *
14  *  You should have received a copy of the GNU General Public License
15  *  along with this program; if not, write to the Free Software
16  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17  */
18 
19 #ifndef ROSPERF_H_INCLUDED
20 #define ROSPERF_H_INCLUDED
21 
22 typedef struct tagPERF_INFO
23 {
24   HWND Wnd;
25   unsigned Seconds;
26   unsigned Repeats;
27   COLORREF ForegroundColor;
28   COLORREF BackgroundColor;
29   HDC ForegroundDc;
30   HDC BackgroundDc;
31   INT WndWidth;
32   INT WndHeight;
33 } PERF_INFO, *PPERF_INFO;
34 
35 typedef unsigned (*INITTESTPROC)(void **Context, PPERF_INFO PerfInfo, unsigned Reps);
36 typedef void (*TESTPROC)(void *Context, PPERF_INFO PerfInfo, unsigned Reps);
37 typedef void (*CLEANUPTESTPROC)(void *Context, PPERF_INFO PerfInfo);
38 
39 typedef struct tagTEST
40 {
41   LPCWSTR Option;
42   LPCWSTR Label;
43   INITTESTPROC Init;
44   TESTPROC Proc;
45   CLEANUPTESTPROC PassCleanup;
46   CLEANUPTESTPROC Cleanup;
47 } TEST, *PTEST;
48 
49 void GetTests(unsigned *TestCount, PTEST *Tests);
50 
51 /* Tests */
52 unsigned NullInit(void **Context, PPERF_INFO PerfInfo, unsigned Reps);
53 void NullCleanup(void *Context, PPERF_INFO PerfInfo);
54 
55 void FillProc(void *Context, PPERF_INFO PerfInfo, unsigned Reps);
56 void FillSmallProc(void *Context, PPERF_INFO PerfInfo, unsigned Reps);
57 
58 void LinesHorizontalProc(void *Context, PPERF_INFO PerfInfo, unsigned Reps);
59 void LinesVerticalProc(void *Context, PPERF_INFO PerfInfo, unsigned Reps);
60 void LinesProc(void *Context, PPERF_INFO PerfInfo, unsigned Reps);
61 
62 void TextProc(void *Context, PPERF_INFO PerfInfo, unsigned Reps);
63 
64 unsigned AlphaBlendInit(void **Context, PPERF_INFO PerfInfo, unsigned Reps);
65 void AlphaBlendCleanup(void *Context, PPERF_INFO PerfInfo);
66 void AlphaBlendProc(void *Context, PPERF_INFO PerfInfo, unsigned Reps);
67 
68 void GradientHorizontalProc(void *Context, PPERF_INFO PerfInfo, unsigned Reps);
69 void GradientVerticalProc(void *Context, PPERF_INFO PerfInfo, unsigned Reps);
70 void GradientProc(void *Context, PPERF_INFO PerfInfo, unsigned Reps);
71 
72 void ScrollProc(void *Context, PPERF_INFO PerfInfo, unsigned Reps);
73 
74 #endif /* ROSPERF_H_INCLUDED */
75 
76 /* EOF */
77