181 { |
184 { |
182 int ret; |
185 int ret; |
183 int i, j; |
186 int i, j; |
184 SDL_Rect rect; |
187 SDL_Rect rect; |
185 |
188 |
186 SDL_ATbegin( "Primitives Blend Test" ); |
|
187 |
|
188 /* Clear surface. */ |
189 /* Clear surface. */ |
189 ret = SDL_FillRect( testsur, NULL, |
190 if (render_clearScreen()) |
190 SDL_MapRGB( testsur->format, 0, 0, 0 ) ); |
|
191 if (SDL_ATassert( "SDL_FillRect", ret == 0)) |
|
192 return; |
191 return; |
193 |
192 |
194 /* Create some rectangles for each blend mode. */ |
193 /* Create some rectangles for each blend mode. */ |
195 ret = SDL_BlendRect( testsur, NULL, SDL_BLENDMODE_NONE, 255, 255, 255, 0 ); |
194 ret = SDL_SetRenderDrawColor( 255, 255, 255, 0 ); |
196 if (SDL_ATassert( "SDL_BlendRect", ret == 0)) |
195 if (SDL_ATassert( "SDL_SetRenderDrawColor", ret == 0)) |
|
196 return; |
|
197 ret = SDL_SetRenderDrawBlendMode( SDL_BLENDMODE_NONE ); |
|
198 if (SDL_ATassert( "SDL_SetSurfaceBlendMode", ret == 0)) |
|
199 return; |
|
200 ret = SDL_RenderFill( NULL ); |
|
201 if (SDL_ATassert( "SDL_RenderFill", ret == 0)) |
197 return; |
202 return; |
198 rect.x = 10; |
203 rect.x = 10; |
199 rect.y = 25; |
204 rect.y = 25; |
200 rect.w = 40; |
205 rect.w = 40; |
201 rect.h = 25; |
206 rect.h = 25; |
202 ret = SDL_BlendRect( testsur, &rect, SDL_BLENDMODE_ADD, 240, 10, 10, 75 ); |
207 ret = SDL_SetRenderDrawColor( 240, 10, 10, 75 ); |
203 if (SDL_ATassert( "SDL_BlendRect", ret == 0)) |
208 if (SDL_ATassert( "SDL_SetRenderDrawColor", ret == 0)) |
|
209 return; |
|
210 ret = SDL_SetRenderDrawBlendMode( SDL_BLENDMODE_ADD ); |
|
211 if (SDL_ATassert( "SDL_SetSurfaceBlendMode", ret == 0)) |
|
212 return; |
|
213 ret = SDL_RenderFill( &rect ); |
|
214 if (SDL_ATassert( "SDL_RenderFill", ret == 0)) |
204 return; |
215 return; |
205 rect.x = 30; |
216 rect.x = 30; |
206 rect.y = 40; |
217 rect.y = 40; |
207 rect.w = 45; |
218 rect.w = 45; |
208 rect.h = 15; |
219 rect.h = 15; |
209 ret = SDL_BlendRect( testsur, &rect, SDL_BLENDMODE_BLEND, 10, 240, 10, 100 ); |
220 ret = SDL_SetRenderDrawColor( 10, 240, 10, 100 ); |
210 if (SDL_ATassert( "SDL_BlendRect", ret == 0)) |
221 if (SDL_ATassert( "SDL_SetRenderDrawColor", ret == 0)) |
|
222 return; |
|
223 ret = SDL_SetRenderDrawBlendMode( SDL_BLENDMODE_BLEND ); |
|
224 if (SDL_ATassert( "SDL_SetSurfaceBlendMode", ret == 0)) |
|
225 return; |
|
226 ret = SDL_RenderFill( &rect ); |
|
227 if (SDL_ATassert( "SDL_RenderFill", ret == 0)) |
211 return; |
228 return; |
212 rect.x = 25; |
229 rect.x = 25; |
213 rect.y = 25; |
230 rect.y = 25; |
214 rect.w = 25; |
231 rect.w = 25; |
215 rect.h = 25; |
232 rect.h = 25; |
216 ret = SDL_BlendRect( testsur, &rect, SDL_BLENDMODE_MOD, 10, 10, 240, 125 ); |
233 ret = SDL_SetRenderDrawColor( 10, 10, 240, 125 ); |
217 if (SDL_ATassert( "SDL_BlendRect", ret == 0)) |
234 if (SDL_ATassert( "SDL_SetRenderDrawColor", ret == 0)) |
|
235 return; |
|
236 ret = SDL_SetRenderDrawBlendMode( SDL_BLENDMODE_MOD ); |
|
237 if (SDL_ATassert( "SDL_SetSurfaceBlendMode", ret == 0)) |
|
238 return; |
|
239 ret = SDL_RenderFill( &rect ); |
|
240 if (SDL_ATassert( "SDL_RenderFill", ret == 0)) |
218 return; |
241 return; |
219 |
242 |
220 /* Draw blended lines, lines for everyone. */ |
243 /* Draw blended lines, lines for everyone. */ |
221 for (i=0; i<testsur->w; i+=2) { |
244 for (i=0; i<SCREEN_W; i+=2) { |
222 ret = SDL_BlendLine( testsur, 0, 0, i, 59, |
245 ret = SDL_SetRenderDrawColor( 60+2*i, 240-2*i, 50, 3*i ); |
223 (((i/2)%3)==0) ? SDL_BLENDMODE_BLEND : |
246 if (SDL_ATassert( "SDL_SetRenderDrawColor", ret == 0)) |
224 (((i/2)%3)==1) ? SDL_BLENDMODE_ADD : SDL_BLENDMODE_MOD, |
|
225 60+2*i, 240-2*i, 50, 3*i ); |
|
226 if (SDL_ATassert( "SDL_BlendLine", ret == 0)) |
|
227 return; |
247 return; |
228 } |
248 ret = SDL_SetRenderDrawBlendMode((((i/2)%3)==0) ? SDL_BLENDMODE_BLEND : |
229 for (i=0; i<testsur->h; i+=2) { |
249 (((i/2)%3)==1) ? SDL_BLENDMODE_ADD : SDL_BLENDMODE_MOD ); |
230 ret = SDL_BlendLine( testsur, 0, 0, 79, i, |
250 if (SDL_ATassert( "SDL_SetSurfaceBlendMode", ret == 0)) |
231 (((i/2)%3)==0) ? SDL_BLENDMODE_BLEND : |
|
232 (((i/2)%3)==1) ? SDL_BLENDMODE_ADD : SDL_BLENDMODE_MOD, |
|
233 60+2*i, 240-2*i, 50, 3*i ); |
|
234 if (SDL_ATassert( "SDL_BlendLine", ret == 0)) |
|
235 return; |
251 return; |
|
252 ret = SDL_RenderLine( 0, 0, i, 59 ); |
|
253 if (SDL_ATassert( "SDL_RenderLine", ret == 0)) |
|
254 return; |
|
255 } |
|
256 for (i=0; i<SCREEN_H; i+=2) { |
|
257 ret = SDL_SetRenderDrawColor( 60+2*i, 240-2*i, 50, 3*i ); |
|
258 if (SDL_ATassert( "SDL_SetRenderDrawColor", ret == 0)) |
|
259 return; |
|
260 ret = SDL_SetRenderDrawBlendMode((((i/2)%3)==0) ? SDL_BLENDMODE_BLEND : |
|
261 (((i/2)%3)==1) ? SDL_BLENDMODE_ADD : SDL_BLENDMODE_MOD ); |
|
262 if (SDL_ATassert( "SDL_SetSurfaceBlendMode", ret == 0)) |
|
263 return; |
|
264 ret = SDL_RenderLine( 0, 0, 79, i ); |
|
265 if (SDL_ATassert( "SDL_RenderLine", ret == 0)) |
|
266 return; |
236 } |
267 } |
237 |
268 |
238 /* Draw points. */ |
269 /* Draw points. */ |
239 for (j=0; j<testsur->h; j+=3) { |
270 for (j=0; j<SCREEN_H; j+=3) { |
240 for (i=0; i<testsur->w; i+=3) { |
271 for (i=0; i<SCREEN_W; i+=3) { |
241 ret = SDL_BlendPoint( testsur, i, j, |
272 ret = SDL_SetRenderDrawColor( j*4, i*3, j*4, i*3 ); |
242 ((((i+j)/3)%3)==0) ? SDL_BLENDMODE_BLEND : |
273 if (SDL_ATassert( "SDL_SetRenderDrawColor", ret == 0)) |
243 ((((i+j)/3)%3)==1) ? SDL_BLENDMODE_ADD : SDL_BLENDMODE_MOD, |
274 return; |
244 j*4, i*3, j*4, i*3 ); |
275 ret = SDL_SetRenderDrawBlendMode( ((((i+j)/3)%3)==0) ? SDL_BLENDMODE_BLEND : |
245 if (SDL_ATassert( "SDL_BlendPoint", ret == 0)) |
276 ((((i+j)/3)%3)==1) ? SDL_BLENDMODE_ADD : SDL_BLENDMODE_MOD ); |
246 return; |
277 if (SDL_ATassert( "SDL_SetSurfaceBlendMode", ret == 0)) |
|
278 return; |
|
279 ret = SDL_RenderPoint( i, j ); |
|
280 if (SDL_ATassert( "SDL_RenderPoint", ret == 0)) |
|
281 return; |
247 } |
282 } |
248 } |
283 } |
249 |
284 |
250 /* See if it's the same. */ |
285 /* See if it's the same. */ |
251 if (SDL_ATassert( "Primitives output not the same.", |
286 if (render_compare( "Blended primitives output not the same.", &img_primitives )) |
252 render_compare( testsur, &img_blend )==0 )) |
287 return; |
253 return; |
288 } |
254 |
289 #if 0 |
255 SDL_ATend(); |
|
256 } |
|
257 |
290 |
258 |
291 |
259 /** |
292 /** |
260 * @brief Tests some blitting routines. |
293 * @brief Tests some blitting routines. |
261 */ |
294 */ |