Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
libSDL
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PocketInsanity
libSDL
Commits
04b2c7e3
Commit
04b2c7e3
authored
Aug 14, 2011
by
Markus Kauppila
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cleaning up render test suite.
parent
e89d876f
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
342 additions
and
284 deletions
+342
-284
testrender.c
test/test-automation/tests/testrender/testrender.c
+342
-284
No files found.
test/test-automation/tests/testrender/testrender.c
View file @
04b2c7e3
...
@@ -17,10 +17,16 @@
...
@@ -17,10 +17,16 @@
static
SDL_Renderer
*
renderer
;
static
SDL_Renderer
*
renderer
;
/*!
/* Prototypes for helper functions */
* Note: Port tests from "/test/automated/render" here
static
int
render_clearScreen
(
void
);
*
static
void
render_compare
(
const
char
*
msg
,
const
SurfaceImage_t
*
s
,
int
allowable_error
);
*/
static
int
render_hasTexAlpha
(
void
);
static
int
render_hasTexColor
(
void
);
static
SDL_Texture
*
render_loadTestFace
(
void
);
static
int
render_hasBlendModes
(
void
);
static
int
render_hasDrawColor
(
void
);
static
int
render_isSupported
(
int
code
);
/* Test cases */
/* Test cases */
static
const
TestCaseReference
test1
=
static
const
TestCaseReference
test1
=
...
@@ -49,8 +55,6 @@ static const TestCaseReference test8 =
...
@@ -49,8 +55,6 @@ static const TestCaseReference test8 =
/* Test suite */
/* Test suite */
extern
const
TestCaseReference
*
testSuite
[]
=
{
extern
const
TestCaseReference
*
testSuite
[]
=
{
&
test1
,
&
test2
,
&
test3
,
&
test4
,
&
test5
,
&
test6
,
&
test7
,
&
test8
,
NULL
&
test1
,
&
test2
,
&
test3
,
&
test4
,
&
test5
,
&
test6
,
&
test7
,
&
test8
,
NULL
...
@@ -71,8 +75,7 @@ SetUp(void *arg)
...
@@ -71,8 +75,7 @@ SetUp(void *arg)
SDL_Window
*
w
=
SDL_CreateWindow
(
"title"
,
SDL_WINDOWPOS_CENTERED
,
SDL_WINDOWPOS_CENTERED
,
SDL_Window
*
w
=
SDL_CreateWindow
(
"title"
,
SDL_WINDOWPOS_CENTERED
,
SDL_WINDOWPOS_CENTERED
,
80
,
60
,
SDL_WINDOW_SHOWN
);
80
,
60
,
SDL_WINDOW_SHOWN
);
//if (SDL_ATassert( "SDL_CreateWindow", w!=NULL ))
renderer
=
SDL_CreateRenderer
(
w
,
0
,
0
);
renderer
=
SDL_CreateRenderer
(
w
,
0
,
0
);
}
}
void
void
...
@@ -84,6 +87,7 @@ TearDown(void *arg)
...
@@ -84,6 +87,7 @@ TearDown(void *arg)
/**
/**
* @brief Tests call to SDL_GetNumRenderDrivers
* @brief Tests call to SDL_GetNumRenderDrivers
*
* \sa
* \sa
* http://wiki.libsdl.org/moin.cgi/SDL_GetNumRenderDrivers
* http://wiki.libsdl.org/moin.cgi/SDL_GetNumRenderDrivers
*/
*/
...
@@ -100,6 +104,7 @@ render_testGetNumRenderDrivers(void *arg)
...
@@ -100,6 +104,7 @@ render_testGetNumRenderDrivers(void *arg)
/**
/**
* @brief Tests call to SDL_CreateRenderer
* @brief Tests call to SDL_CreateRenderer
*
* \sa
* \sa
* http://wiki.libsdl.org/moin.cgi/SDL_CreateRenderer
* http://wiki.libsdl.org/moin.cgi/SDL_CreateRenderer
*/
*/
...
@@ -127,235 +132,6 @@ render_testCreateRenderer(void *arg)
...
@@ -127,235 +132,6 @@ render_testCreateRenderer(void *arg)
/**
* @brief Compares screen pixels with image pixels.
*
* @param msg Message on failure.
* @param s Image to compare against.
* @return 0 on success.
*/
static
void
render_compare
(
const
char
*
msg
,
const
SurfaceImage_t
*
s
,
int
allowable_error
)
{
int
ret
;
SDL_Rect
rect
;
Uint8
pix
[
4
*
80
*
60
];
SDL_Surface
*
testsur
;
/* Read pixels. */
/* Explicitly specify the rect in case the window isn't expected size... */
rect
.
x
=
0
;
rect
.
y
=
0
;
rect
.
w
=
80
;
rect
.
h
=
60
;
ret
=
SDL_RenderReadPixels
(
renderer
,
&
rect
,
FORMAT
,
pix
,
80
*
4
);
AssertEquals
(
ret
,
0
,
"SDL_RenderReadPixels failed"
);
/* Create surface. */
testsur
=
SDL_CreateRGBSurfaceFrom
(
pix
,
80
,
60
,
32
,
80
*
4
,
RMASK
,
GMASK
,
BMASK
,
AMASK
);
AssertTrue
(
testsur
!=
NULL
,
"SDL_CreateRGBSurface failed"
);
/* Compare surface. */
ret
=
surface_compare
(
testsur
,
s
,
allowable_error
);
AssertEquals
(
ret
,
0
,
"surface_compare failed"
);
/* Clean up. */
SDL_FreeSurface
(
testsur
);
}
/**
* @brief Checks to see if functionality is supported.
*/
static
int
render_isSupported
(
int
code
)
{
return
(
code
==
0
);
}
/**
* @brief Test to see if we can vary the draw colour.
*/
static
int
render_hasDrawColor
(
void
)
{
int
ret
,
fail
;
Uint8
r
,
g
,
b
,
a
;
fail
=
0
;
/* Set colour. */
ret
=
SDL_SetRenderDrawColor
(
renderer
,
100
,
100
,
100
,
100
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
SDL_GetRenderDrawColor
(
renderer
,
&
r
,
&
g
,
&
b
,
&
a
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
/* Restore natural. */
ret
=
SDL_SetRenderDrawColor
(
renderer
,
0
,
0
,
0
,
SDL_ALPHA_OPAQUE
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
/* Something failed, consider not available. */
if
(
fail
)
return
0
;
/* Not set properly, consider failed. */
else
if
((
r
!=
100
)
||
(
g
!=
100
)
||
(
b
!=
100
)
||
(
a
!=
100
))
return
0
;
return
1
;
}
/**
* @brief Test to see if we can vary the blend mode.
*/
static
int
render_hasBlendModes
(
void
)
{
int
fail
;
int
ret
;
SDL_BlendMode
mode
;
fail
=
0
;
ret
=
SDL_SetRenderDrawBlendMode
(
renderer
,
SDL_BLENDMODE_BLEND
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
SDL_GetRenderDrawBlendMode
(
renderer
,
&
mode
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
(
mode
!=
SDL_BLENDMODE_BLEND
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
SDL_SetRenderDrawBlendMode
(
renderer
,
SDL_BLENDMODE_ADD
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
SDL_GetRenderDrawBlendMode
(
renderer
,
&
mode
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
(
mode
!=
SDL_BLENDMODE_ADD
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
SDL_SetRenderDrawBlendMode
(
renderer
,
SDL_BLENDMODE_MOD
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
SDL_GetRenderDrawBlendMode
(
renderer
,
&
mode
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
(
mode
!=
SDL_BLENDMODE_MOD
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
SDL_SetRenderDrawBlendMode
(
renderer
,
SDL_BLENDMODE_NONE
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
SDL_GetRenderDrawBlendMode
(
renderer
,
&
mode
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
(
mode
!=
SDL_BLENDMODE_NONE
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
return
!
fail
;
}
/**
* @brief Loads the test face.
*/
static
SDL_Texture
*
render_loadTestFace
(
void
)
{
SDL_Surface
*
face
;
SDL_Texture
*
tface
;
/* Create face surface. */
face
=
SDL_CreateRGBSurfaceFrom
(
(
void
*
)
img_face
.
pixel_data
,
img_face
.
width
,
img_face
.
height
,
32
,
img_face
.
width
*
4
,
#if (SDL_BYTEORDER == SDL_BIG_ENDIAN)
0xff000000
,
/* Red bit mask. */
0x00ff0000
,
/* Green bit mask. */
0x0000ff00
,
/* Blue bit mask. */
0x000000ff
/* Alpha bit mask. */
#else
0x000000ff
,
/* Red bit mask. */
0x0000ff00
,
/* Green bit mask. */
0x00ff0000
,
/* Blue bit mask. */
0xff000000
/* Alpha bit mask. */
#endif
);
if
(
face
==
NULL
)
return
0
;
tface
=
SDL_CreateTextureFromSurface
(
renderer
,
face
);
SDL_FreeSurface
(
face
);
return
tface
;
}
/**
* @brief Test to see if can set texture colour mode.
*/
static
int
render_hasTexColor
(
void
)
{
int
fail
;
int
ret
;
SDL_Texture
*
tface
;
Uint8
r
,
g
,
b
;
/* Get test face. */
tface
=
render_loadTestFace
();
if
(
tface
==
0
)
return
0
;
/* See if supported. */
fail
=
0
;
ret
=
SDL_SetTextureColorMod
(
tface
,
100
,
100
,
100
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
SDL_GetTextureColorMod
(
tface
,
&
r
,
&
g
,
&
b
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
/* Clean up. */
SDL_DestroyTexture
(
tface
);
if
(
fail
)
return
0
;
else
if
((
r
!=
100
)
||
(
g
!=
100
)
||
(
b
!=
100
))
return
0
;
return
1
;
}
/**
* @brief Test to see if we can vary the alpha of the texture.
*/
static
int
render_hasTexAlpha
(
void
)
{
int
fail
;
int
ret
;
SDL_Texture
*
tface
;
Uint8
a
;
/* Get test face. */
tface
=
render_loadTestFace
();
if
(
tface
==
0
)
return
0
;
/* See if supported. */
fail
=
0
;
ret
=
SDL_SetTextureAlphaMod
(
tface
,
100
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
SDL_GetTextureAlphaMod
(
tface
,
&
a
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
/* Clean up. */
SDL_DestroyTexture
(
tface
);
if
(
fail
)
return
0
;
else
if
(
a
!=
100
)
return
0
;
return
1
;
}
/**
/**
* @brief Tests the SDL primitives for rendering.
* @brief Tests the SDL primitives for rendering.
...
@@ -449,6 +225,11 @@ int render_testPrimitives (void *arg)
...
@@ -449,6 +225,11 @@ int render_testPrimitives (void *arg)
/**
/**
* @brief Tests the SDL primitives with alpha for rendering.
* @brief Tests the SDL primitives with alpha for rendering.
*
* \sa
* http://wiki.libsdl.org/moin.cgi/SDL_SetRenderDrawColor
* http://wiki.libsdl.org/moin.cgi/SDL_SetRenderDrawBlendMode
* http://wiki.libsdl.org/moin.cgi/SDL_RenderFillRect
*/
*/
int
render_testPrimitivesBlend
(
void
*
arg
)
int
render_testPrimitivesBlend
(
void
*
arg
)
{
{
...
@@ -559,6 +340,10 @@ int render_testPrimitivesBlend (void *arg)
...
@@ -559,6 +340,10 @@ int render_testPrimitivesBlend (void *arg)
/**
/**
* @brief Tests some blitting routines.
* @brief Tests some blitting routines.
*
* \sa
* http://wiki.libsdl.org/moin.cgi/SDL_RenderCopy
* http://wiki.libsdl.org/moin.cgi/SDL_DestroyTexture
*/
*/
int
int
render_testBlit
(
void
*
arg
)
render_testBlit
(
void
*
arg
)
...
@@ -602,6 +387,11 @@ render_testBlit(void *arg)
...
@@ -602,6 +387,11 @@ render_testBlit(void *arg)
/**
/**
* @brief Blits doing colour tests.
* @brief Blits doing colour tests.
*
* \sa
* http://wiki.libsdl.org/moin.cgi/SDL_SetTextureColorMod
* http://wiki.libsdl.org/moin.cgi/SDL_RenderCopy
* http://wiki.libsdl.org/moin.cgi/SDL_DestroyTexture
*/
*/
int
int
render_testBlitColour
(
void
*
arg
)
render_testBlitColour
(
void
*
arg
)
...
@@ -647,6 +437,11 @@ render_testBlitColour (void *arg)
...
@@ -647,6 +437,11 @@ render_testBlitColour (void *arg)
/**
/**
* @brief Tests blitting with alpha.
* @brief Tests blitting with alpha.
*
* \sa
* http://wiki.libsdl.org/moin.cgi/SDL_SetTextureAlphaMod
* http://wiki.libsdl.org/moin.cgi/SDL_RenderCopy
* http://wiki.libsdl.org/moin.cgi/SDL_DestroyTexture
*/
*/
int
int
render_testBlitAlpha
(
void
*
arg
)
render_testBlitAlpha
(
void
*
arg
)
...
@@ -693,55 +488,21 @@ render_testBlitAlpha (void *arg)
...
@@ -693,55 +488,21 @@ render_testBlitAlpha (void *arg)
}
}
/**
/**
* @brief
Clears the screen
.
* @brief
Tests a blend mode. Helper
.
*
*
* @note We don't test for errors, but they shouldn't happen.
* \sa
* http://wiki.libsdl.org/moin.cgi/SDL_SetTextureBlendMode
* http://wiki.libsdl.org/moin.cgi/SDL_RenderCopy
*/
*/
static
int
render_clearScreen
(
void
)
void
render_testBlitBlendMode
(
SDL_Texture
*
tface
,
int
mode
)
{
{
int
ret
;
int
ret
;
int
i
,
j
,
ni
,
nj
;
SDL_Rect
rect
;
/* Set colour. */
/* Clear surface. */
ret
=
SDL_SetRenderDrawColor
(
renderer
,
0
,
0
,
0
,
SDL_ALPHA_OPAQUE
);
if
(
render_clearScreen
())
/*
if (SDL_ATassert( "SDL_SetRenderDrawColor", ret == 0))
return -1;
*/
/* Clear screen. */
ret
=
SDL_RenderFillRect
(
renderer
,
NULL
);
/*
if (SDL_ATassert( "SDL_RenderFillRect", ret == 0))
return -1;
*/
/* Set defaults. */
ret
=
SDL_SetRenderDrawBlendMode
(
renderer
,
SDL_BLENDMODE_NONE
);
/*
if (SDL_ATassert( "SDL_SetRenderDrawBlendMode", ret == 0))
return -1;
*/
ret
=
SDL_SetRenderDrawColor
(
renderer
,
255
,
255
,
255
,
SDL_ALPHA_OPAQUE
);
/*
if (SDL_ATassert( "SDL_SetRenderDrawColor", ret == 0))
return -1;
*/
return
0
;
}
/**
* @brief Tests a blend mode. Helper.
*/
void
render_testBlitBlendMode
(
SDL_Texture
*
tface
,
int
mode
)
{
int
ret
;
int
i
,
j
,
ni
,
nj
;
SDL_Rect
rect
;
/* Clear surface. */
if
(
render_clearScreen
())
return
-
1
;
return
-
1
;
/* Steps to take. */
/* Steps to take. */
...
@@ -773,6 +534,12 @@ render_testBlitBlendMode( SDL_Texture * tface, int mode )
...
@@ -773,6 +534,12 @@ render_testBlitBlendMode( SDL_Texture * tface, int mode )
/**
/**
* @brief Tests some more blitting routines.
* @brief Tests some more blitting routines.
*
* \sa
* http://wiki.libsdl.org/moin.cgi/SDL_SetTextureColorMod
* http://wiki.libsdl.org/moin.cgi/SDL_SetTextureAlphaMod
* http://wiki.libsdl.org/moin.cgi/SDL_SetTextureBlendMode
* http://wiki.libsdl.org/moin.cgi/SDL_DestroyTexture
*/
*/
int
int
render_testBlitBlend
(
void
*
arg
)
render_testBlitBlend
(
void
*
arg
)
...
@@ -871,3 +638,294 @@ render_testBlitBlend (void *arg)
...
@@ -871,3 +638,294 @@ render_testBlitBlend (void *arg)
/**
* @brief Checks to see if functionality is supported.
*/
static
int
render_isSupported
(
int
code
)
{
return
(
code
==
0
);
}
/**
* @brief Test to see if we can vary the draw colour.
*
* \sa
* http://wiki.libsdl.org/moin.cgi/SDL_SetRenderDrawColor
* http://wiki.libsdl.org/moin.cgi/SDL_GetRenderDrawColor
*/
static
int
render_hasDrawColor
(
void
)
{
int
ret
,
fail
;
Uint8
r
,
g
,
b
,
a
;
fail
=
0
;
/* Set colour. */
ret
=
SDL_SetRenderDrawColor
(
renderer
,
100
,
100
,
100
,
100
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
SDL_GetRenderDrawColor
(
renderer
,
&
r
,
&
g
,
&
b
,
&
a
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
/* Restore natural. */
ret
=
SDL_SetRenderDrawColor
(
renderer
,
0
,
0
,
0
,
SDL_ALPHA_OPAQUE
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
/* Something failed, consider not available. */
if
(
fail
)
return
0
;
/* Not set properly, consider failed. */
else
if
((
r
!=
100
)
||
(
g
!=
100
)
||
(
b
!=
100
)
||
(
a
!=
100
))
return
0
;
return
1
;
}
/**
* @brief Test to see if we can vary the blend mode.
*
* \sa
* http://wiki.libsdl.org/moin.cgi/SDL_SetRenderDrawBlendMode
* http://wiki.libsdl.org/moin.cgi/SDL_GetRenderDrawBlendMode
*/
static
int
render_hasBlendModes
(
void
)
{
int
fail
;
int
ret
;
SDL_BlendMode
mode
;
fail
=
0
;
ret
=
SDL_SetRenderDrawBlendMode
(
renderer
,
SDL_BLENDMODE_BLEND
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
SDL_GetRenderDrawBlendMode
(
renderer
,
&
mode
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
(
mode
!=
SDL_BLENDMODE_BLEND
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
SDL_SetRenderDrawBlendMode
(
renderer
,
SDL_BLENDMODE_ADD
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
SDL_GetRenderDrawBlendMode
(
renderer
,
&
mode
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
(
mode
!=
SDL_BLENDMODE_ADD
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
SDL_SetRenderDrawBlendMode
(
renderer
,
SDL_BLENDMODE_MOD
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
SDL_GetRenderDrawBlendMode
(
renderer
,
&
mode
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
(
mode
!=
SDL_BLENDMODE_MOD
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
SDL_SetRenderDrawBlendMode
(
renderer
,
SDL_BLENDMODE_NONE
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
SDL_GetRenderDrawBlendMode
(
renderer
,
&
mode
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
(
mode
!=
SDL_BLENDMODE_NONE
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
return
!
fail
;
}
/**
* @brief Loads the test face.
*
* \sa
* http://wiki.libsdl.org/moin.cgi/SDL_CreateRGBSurfaceFrom
* http://wiki.libsdl.org/moin.cgi/SDL_CreateTextureFromSurface
*/
static
SDL_Texture
*
render_loadTestFace
(
void
)
{
SDL_Surface
*
face
;
SDL_Texture
*
tface
;
/* Create face surface. */
face
=
SDL_CreateRGBSurfaceFrom
(
(
void
*
)
img_face
.
pixel_data
,
img_face
.
width
,
img_face
.
height
,
32
,
img_face
.
width
*
4
,
#if (SDL_BYTEORDER == SDL_BIG_ENDIAN)
0xff000000
,
/* Red bit mask. */
0x00ff0000
,
/* Green bit mask. */
0x0000ff00
,
/* Blue bit mask. */
0x000000ff
/* Alpha bit mask. */
#else
0x000000ff
,
/* Red bit mask. */
0x0000ff00
,
/* Green bit mask. */
0x00ff0000
,
/* Blue bit mask. */
0xff000000
/* Alpha bit mask. */
#endif
);
if
(
face
==
NULL
)
return
0
;
tface
=
SDL_CreateTextureFromSurface
(
renderer
,
face
);
SDL_FreeSurface
(
face
);
return
tface
;
}
/**
* @brief Test to see if can set texture colour mode.
*
* \sa
* http://wiki.libsdl.org/moin.cgi/SDL_SetTextureColorMod
* http://wiki.libsdl.org/moin.cgi/SDL_GetTextureColorMod
* http://wiki.libsdl.org/moin.cgi/SDL_DestroyTexture
*/
static
int
render_hasTexColor
(
void
)
{
int
fail
;
int
ret
;
SDL_Texture
*
tface
;
Uint8
r
,
g
,
b
;
/* Get test face. */
tface
=
render_loadTestFace
();
if
(
tface
==
0
)
return
0
;
/* See if supported. */
fail
=
0
;
ret
=
SDL_SetTextureColorMod
(
tface
,
100
,
100
,
100
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
SDL_GetTextureColorMod
(
tface
,
&
r
,
&
g
,
&
b
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
/* Clean up. */
SDL_DestroyTexture
(
tface
);
if
(
fail
)
return
0
;
else
if
((
r
!=
100
)
||
(
g
!=
100
)
||
(
b
!=
100
))
return
0
;
return
1
;
}
/**
* @brief Test to see if we can vary the alpha of the texture.
*
* \sa
* http://wiki.libsdl.org/moin.cgi/SDL_SetTextureAlphaMod
* http://wiki.libsdl.org/moin.cgi/SDL_GetTextureAlphaMod
* http://wiki.libsdl.org/moin.cgi/SDL_DestroyTexture
*/
static
int
render_hasTexAlpha
(
void
)
{
int
fail
;
int
ret
;
SDL_Texture
*
tface
;
Uint8
a
;
/* Get test face. */
tface
=
render_loadTestFace
();
if
(
tface
==
0
)
return
0
;
/* See if supported. */
fail
=
0
;
ret
=
SDL_SetTextureAlphaMod
(
tface
,
100
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
ret
=
SDL_GetTextureAlphaMod
(
tface
,
&
a
);
if
(
!
render_isSupported
(
ret
))
fail
=
1
;
/* Clean up. */
SDL_DestroyTexture
(
tface
);
if
(
fail
)
return
0
;
else
if
(
a
!=
100
)
return
0
;
return
1
;
}
/**
* @brief Compares screen pixels with image pixels.
*
* @param msg Message on failure.
* @param s Image to compare against.
* @return 0 on success.
*
* \sa
* http://wiki.libsdl.org/moin.cgi/SDL_RenderReadPixels
* http://wiki.libsdl.org/moin.cgi/SDL_CreateRGBSurfaceFrom
* http://wiki.libsdl.org/moin.cgi/SDL_FreeSurface
*/
static
void
render_compare
(
const
char
*
msg
,
const
SurfaceImage_t
*
s
,
int
allowable_error
)
{
int
ret
;
SDL_Rect
rect
;
Uint8
pix
[
4
*
80
*
60
];
SDL_Surface
*
testsur
;
/* Read pixels. */
/* Explicitly specify the rect in case the window isn't expected size... */
rect
.
x
=
0
;
rect
.
y
=
0
;
rect
.
w
=
80
;
rect
.
h
=
60
;
ret
=
SDL_RenderReadPixels
(
renderer
,
&
rect
,
FORMAT
,
pix
,
80
*
4
);
AssertEquals
(
ret
,
0
,
"SDL_RenderReadPixels failed"
);
/* Create surface. */
testsur
=
SDL_CreateRGBSurfaceFrom
(
pix
,
80
,
60
,
32
,
80
*
4
,
RMASK
,
GMASK
,
BMASK
,
AMASK
);
AssertTrue
(
testsur
!=
NULL
,
"SDL_CreateRGBSurface failed"
);
/* Compare surface. */
ret
=
surface_compare
(
testsur
,
s
,
allowable_error
);
AssertEquals
(
ret
,
0
,
"surface_compare failed"
);
/* Clean up. */
SDL_FreeSurface
(
testsur
);
}
/**
* @brief Clears the screen.
*
* \sa
* http://wiki.libsdl.org/moin.cgi/SDL_SetRenderDrawColor
* http://wiki.libsdl.org/moin.cgi/SDL_RenderFillRect
* http://wiki.libsdl.org/moin.cgi/SDL_SetRenderDrawBlendMode
*
*/
static
int
render_clearScreen
(
void
)
{
int
ret
;
/* Set colour. */
ret
=
SDL_SetRenderDrawColor
(
renderer
,
0
,
0
,
0
,
SDL_ALPHA_OPAQUE
);
AssertEquals
(
ret
,
0
,
"SDL_SetRenderDrawColor"
);
/* Clear screen. */
ret
=
SDL_RenderFillRect
(
renderer
,
NULL
);
AssertEquals
(
ret
,
0
,
"SDL_RenderFillRect"
);
/* Set defaults. */
ret
=
SDL_SetRenderDrawBlendMode
(
renderer
,
SDL_BLENDMODE_NONE
);
AssertEquals
(
ret
,
0
,
"SDL_SetRenderDrawBlendMode"
);
ret
=
SDL_SetRenderDrawColor
(
renderer
,
255
,
255
,
255
,
SDL_ALPHA_OPAQUE
);
AssertEquals
(
ret
,
0
,
"SDL_SetRenderDrawColor"
);
return
0
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment