2 * ReactOS RosPerf - ReactOS GUI performance test program (gradient.c)
4 * Copyright 2006 Timo Kreuzer <timo.kreuzer@web.de>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25 GradientProc(void *Context
, PPERF_INFO PerfInfo
, unsigned Reps
)
30 static GRADIENT_TRIANGLE gcap
[4];
32 Dc
= PerfInfo
->ForegroundDc
;
39 vert
[1].x
= PerfInfo
->WndWidth
;;
42 vert
[1].Green
= 0xff00;
45 vert
[2].x
= PerfInfo
->WndWidth
;
46 vert
[2].y
= PerfInfo
->WndHeight
;
49 vert
[2].Blue
= 0xff00;
52 vert
[3].y
= PerfInfo
->WndHeight
;
54 vert
[3].Green
= 0xff00;
66 for (Rep
= 0; Rep
< Reps
; Rep
++)
68 switch (2 * Rep
/ Reps
)
71 vert
[4].x
= PerfInfo
->WndWidth
* 2 * Rep
/ Reps
;
73 vert
[5].x
= PerfInfo
->WndWidth
- vert
[4].x
;
74 vert
[5].y
= PerfInfo
->WndHeight
;
75 gcap
[0].Vertex1
= 5; gcap
[0].Vertex2
= 0; gcap
[0].Vertex3
= 4;
76 gcap
[1].Vertex1
= 5; gcap
[1].Vertex2
= 4; gcap
[1].Vertex3
= 1;
77 gcap
[2].Vertex1
= 5; gcap
[2].Vertex2
= 1; gcap
[2].Vertex3
= 2;
78 gcap
[3].Vertex1
= 5; gcap
[3].Vertex2
= 3; gcap
[3].Vertex3
= 0;
81 vert
[4].x
= PerfInfo
->WndWidth
;
82 vert
[4].y
= PerfInfo
->WndHeight
* 2 * Rep
/ Reps
- PerfInfo
->WndHeight
;
84 vert
[5].y
= PerfInfo
->WndHeight
- vert
[4].y
;
85 gcap
[0].Vertex1
= 5; gcap
[0].Vertex2
= 1; gcap
[0].Vertex3
= 4;
86 gcap
[1].Vertex1
= 5; gcap
[1].Vertex2
= 4; gcap
[1].Vertex3
= 2;
87 gcap
[2].Vertex1
= 5; gcap
[2].Vertex2
= 2; gcap
[2].Vertex3
= 3;
88 gcap
[3].Vertex1
= 5; gcap
[3].Vertex2
= 0; gcap
[3].Vertex3
= 1;
92 GradientFill(Dc
, vert
, 6, &gcap
, 4, GRADIENT_FILL_TRIANGLE
);
97 GradientHorizontalProc(void *Context
, PPERF_INFO PerfInfo
, unsigned Reps
)
102 static GRADIENT_RECT gcap
= {0, 1};
104 Dc
= PerfInfo
->ForegroundDc
;
105 for (Rep
= 0; Rep
< Reps
; Rep
++)
109 vert
[0].Red
= 0xff00;
110 vert
[0].Green
= 0xff00 - 0xff00 * Rep
/ Reps
;
111 vert
[0].Blue
= 0xff00 * Rep
/ Reps
;
114 vert
[1].x
= PerfInfo
->WndWidth
;
115 vert
[1].y
= PerfInfo
->WndHeight
;
116 vert
[1].Red
= 0xff00 - 0xff00 * Rep
/ Reps
;
117 vert
[1].Green
= 0xff00 * Rep
/ Reps
;
118 vert
[1].Blue
= 0xff00;
121 GradientFill(Dc
, vert
, 2, &gcap
, 1, GRADIENT_FILL_RECT_H
);
126 GradientVerticalProc(void *Context
, PPERF_INFO PerfInfo
, unsigned Reps
)
131 static GRADIENT_RECT gcap
= {0, 1};
133 Dc
= PerfInfo
->ForegroundDc
;
134 for (Rep
= 0; Rep
< Reps
; Rep
++)
138 vert
[0].Red
= 0xff00 * Rep
/ Reps
;
139 vert
[0].Green
= 0xff00 - 0xff00 * Rep
/ Reps
;
140 vert
[0].Blue
= 0xff00;
143 vert
[1].x
= PerfInfo
->WndWidth
;
144 vert
[1].y
= PerfInfo
->WndHeight
;
145 vert
[1].Red
= 0xff00 - 0xff00 * Rep
/ Reps
;
146 vert
[1].Green
= 0xff00;
147 vert
[1].Blue
= 0xff00 * Rep
/ Reps
;
150 GradientFill(Dc
, vert
, 2, &gcap
, 1, GRADIENT_FILL_RECT_V
);