testintersections.c File Reference
`#include <stdlib.h>`
`#include <stdio.h>`
`#include <time.h>`
`#include "SDL_test_common.h"`
Include dependency graph for testintersections.c:

Go to the source code of this file.

## Macros

#define | SWAP(typ, a, b) do{typ t=a;a=b;b=t;}while(0)
#define | NUM_OBJECTS 100
#define | MAX_LINES 16
#define | MAX_RECTS 16

## Functions

void | DrawPoints (SDL_Renderer *renderer)
static int | add_line (int x1, int y1, int x2, int y2)
void | DrawLines (SDL_Renderer *renderer)
static int | add_rect (int x1, int y1, int x2, int y2)
static void | DrawRects (SDL_Renderer *renderer)
static void | DrawRectLineIntersections (SDL_Renderer *renderer)
static void | DrawRectRectIntersections (SDL_Renderer *renderer)
void | loop ()
int | main (int argc, char *argv[])

## Variables

static SDLTest_CommonState * | state
static int | num_objects
static SDL_bool | cycle_color
static SDL_bool | cycle_alpha
static int | cycle_direction = 1
static int | current_alpha = 255
static int | current_color = 255
static SDL_BlendMode | blendMode = SDL_BLENDMODE_NONE
int | mouse_begin_x = -1
int | mouse_begin_y = -1
int | done
int | num_lines = 0
SDL_Rect | lines [MAX_LINES]
int | num_rects = 0
SDL_Rect | rects [MAX_RECTS]

## Macro Definition Documentation

#define MAX_LINES 16

Definition at line 83 of file testintersections.c.

Referenced by add_line().

#define MAX_RECTS 16

Definition at line 127 of file testintersections.c.

Referenced by add_rect().

#define NUM_OBJECTS 100

Definition at line 26 of file testintersections.c.

Referenced by main().

#define SWAP | ( |  | typ,
|  |  | a,
|  |  | b
| ) |  | do{typ t=a;a=b;b=t;}while(0)

Definition at line 25 of file testintersections.c.

Referenced by add_rect().

## Function Documentation

static int add_line | ( | int | x1,
|  | int | y1,
|  | int | x2,
|  | int | y2
| ) |  |

static

Definition at line 87 of file testintersections.c.

References SDL_Rect::h, MAX_LINES, num_lines, SDL_Log, SDL_Rect::w, SDL_Rect::x, and SDL_Rect::y.

Referenced by loop().

{
if (num_lines >= MAX_LINES)
return 0;
if ((x1 == x2) && (y1 == y2))
return 0;
SDL_Log("adding line (%d, %d), (%d, %d)\n", x1, y1, x2, y2);
lines[num_lines].x = x1;
lines[num_lines].y = y1;
lines[num_lines].w = x2;
lines[num_lines].h = y2;
return ++num_lines;
}
x1
GLuint GLfloat GLfloat GLfloat x1
Definition: SDL_opengl_glext.h:8583
num_lines
int num_lines
Definition: testintersections.c:84
y2
GLfixed GLfixed GLfixed y2
Definition: SDL_opengl_glext.h:4583
x2
GLfixed GLfixed x2
Definition: SDL_opengl_glext.h:4583
MAX_LINES
#define MAX_LINES
Definition: testintersections.c:83
y1
GLfixed y1
Definition: SDL_opengl_glext.h:4583
SDL_Log
#define SDL_Log
Definition: SDL_dynapi_overrides.h:37
lines
SDL_Rect lines[MAX_LINES]
Definition: testintersections.c:85
SDL_Rect::x
int x
Definition: SDL_rect.h:66
SDL_Rect::w
int w
Definition: SDL_rect.h:67
SDL_Rect::h
int h
Definition: SDL_rect.h:67
SDL_Rect::y
int y
Definition: SDL_rect.h:66

static int add_rect | ( | int | x1,
|  | int | y1,
|  | int | x2,
|  | int | y2
| ) |  |

static

Definition at line 131 of file testintersections.c.

References SDL_Rect::h, MAX_RECTS, num_rects, SDL_Log, SWAP, SDL_Rect::w, SDL_Rect::x, and SDL_Rect::y.

Referenced by loop().

{
if (num_rects >= MAX_RECTS)
return 0;
if ((x1 == x2) || (y1 == y2))
return 0;
if (x1 > x2)
SWAP(int, x1, x2);
if (y1 > y2)
SWAP(int, y1, y2);
SDL_Log("adding rect (%d, %d), (%d, %d) [%dx%d]\n", x1, y1, x2, y2,
x2 - x1, y2 - y1);
rects[num_rects].x = x1;
rects[num_rects].y = y1;
rects[num_rects].w = x2 - x1;
rects[num_rects].h = y2 - y1;
return ++num_rects;
}
x1
GLuint GLfloat GLfloat GLfloat x1
Definition: SDL_opengl_glext.h:8583
y2
GLfixed GLfixed GLfixed y2
Definition: SDL_opengl_glext.h:4583
x2
GLfixed GLfixed x2
Definition: SDL_opengl_glext.h:4583
y1
GLfixed y1
Definition: SDL_opengl_glext.h:4583
SDL_Log
#define SDL_Log
Definition: SDL_dynapi_overrides.h:37
num_rects
int num_rects
Definition: testintersections.c:128
SWAP
#define SWAP(typ, a, b)
Definition: testintersections.c:25
SDL_Rect::x
int x
Definition: SDL_rect.h:66
SDL_Rect::w
int w
Definition: SDL_rect.h:67
SDL_Rect::h
int h
Definition: SDL_rect.h:67
rects
SDL_Rect rects[MAX_RECTS]
Definition: testintersections.c:129
MAX_RECTS
#define MAX_RECTS
Definition: testintersections.c:127
SDL_Rect::y
int y
Definition: SDL_rect.h:66

void DrawLines | ( | SDL_Renderer * | renderer | ) |

Definition at line 105 of file testintersections.c.

References SDL_Rect::h, i, num_lines, SDL_RenderDrawLine, SDL_RenderGetViewport, SDL_SetRenderDrawColor, viewport, and SDL_Rect::w.

Referenced by loop().

{
int i;
SDL_Rect viewport;
/* Query the sizes */
SDL_RenderGetViewport(renderer, &viewport);
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
for (i = 0; i < num_lines; ++i) {
if (i == -1) {
SDL_RenderDrawLine(renderer, 0, 0, viewport.w - 1, viewport.h - 1);
SDL_RenderDrawLine(renderer, 0, viewport.h - 1, viewport.w - 1, 0);
SDL_RenderDrawLine(renderer, 0, viewport.h / 2, viewport.w - 1, viewport.h / 2);
SDL_RenderDrawLine(renderer, viewport.w / 2, 0, viewport.w / 2, viewport.h - 1);
} else {
SDL_RenderDrawLine(renderer, lines[i].x, lines[i].y, lines[i].w, lines[i].h);
}
}
}
x
GLint GLint GLint GLint GLint x
Definition: SDL_opengl.h:1567
num_lines
int num_lines
Definition: testintersections.c:84
y
GLint GLint GLint GLint GLint GLint y
Definition: SDL_opengl.h:1567
SDL_RenderGetViewport
#define SDL_RenderGetViewport
Definition: SDL_dynapi_overrides.h:331
lines
SDL_Rect lines[MAX_LINES]
Definition: testintersections.c:85
SDL_Rect::w
int w
Definition: SDL_rect.h:67
i
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
Definition: SDL_x11sym.h:42
SDL_Rect::h
int h
Definition: SDL_rect.h:67
viewport
SDL_Rect viewport
Definition: testviewport.c:28
SDL_SetRenderDrawColor
#define SDL_SetRenderDrawColor
Definition: SDL_dynapi_overrides.h:336
w
GLubyte GLubyte GLubyte GLubyte w
Definition: SDL_opengl_glext.h:731
SDL_RenderDrawLine
#define SDL_RenderDrawLine
Definition: SDL_dynapi_overrides.h:343
h
GLfloat GLfloat GLfloat GLfloat h
Definition: SDL_opengl_glext.h:1946
SDL_Rect
A rectangle, with the origin at the upper left.
Definition: SDL_rect.h:64

void DrawPoints | ( | SDL_Renderer * | renderer | ) |

Definition at line 41 of file testintersections.c.

References current_alpha, current_color, cycle_alpha, cycle_color, cycle_direction, SDL_Rect::h, i, num_objects, SDL_RenderDrawPoint, SDL_RenderGetViewport, SDL_SetRenderDrawColor, viewport, and SDL_Rect::w.

Referenced by loop().

{
int i;
int x, y;
SDL_Rect viewport;
/* Query the sizes */
SDL_RenderGetViewport(renderer, &viewport);
for (i = 0; i < num_objects * 4; ++i) {
/* Cycle the color and alpha, if desired */
if (cycle_color) {
current_color += cycle_direction;
if (current_color < 0) {
current_color = 0;
cycle_direction = -cycle_direction;
}
if (current_color > 255) {
current_color = 255;
cycle_direction = -cycle_direction;
}
}
if (cycle_alpha) {
current_alpha += cycle_direction;
if (current_alpha < 0) {
current_alpha = 0;
cycle_direction = -cycle_direction;
}
if (current_alpha > 255) {
current_alpha = 255;
cycle_direction = -cycle_direction;
}
}
SDL_SetRenderDrawColor(renderer, 255, (Uint8) current_color,
(Uint8) current_color, (Uint8) current_alpha);
x = rand() % viewport.w;
y = rand() % viewport.h;
SDL_RenderDrawPoint(renderer, x, y);
}
}
SDL_RenderDrawPoint
#define SDL_RenderDrawPoint
Definition: SDL_dynapi_overrides.h:341
cycle_alpha
static SDL_bool cycle_alpha
Definition: testintersections.c:31
x
GLint GLint GLint GLint GLint x
Definition: SDL_opengl.h:1567
cycle_direction
static int cycle_direction
Definition: testintersections.c:32
y
GLint GLint GLint GLint GLint GLint y
Definition: SDL_opengl.h:1567
Uint8
uint8_t Uint8
An unsigned 8-bit integer type.
Definition: SDL_stdinc.h:139
SDL_RenderGetViewport
#define SDL_RenderGetViewport
Definition: SDL_dynapi_overrides.h:331
SDL_Rect::w
int w
Definition: SDL_rect.h:67
i
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
Definition: SDL_x11sym.h:42
SDL_Rect::h
int h
Definition: SDL_rect.h:67
viewport
SDL_Rect viewport
Definition: testviewport.c:28
current_color
static int current_color
Definition: testintersections.c:34
num_objects
static int num_objects
Definition: testintersections.c:29
cycle_color
static SDL_bool cycle_color
Definition: testintersections.c:30
current_alpha
static int current_alpha
Definition: testintersections.c:33
SDL_SetRenderDrawColor
#define SDL_SetRenderDrawColor
Definition: SDL_dynapi_overrides.h:336
SDL_Rect
A rectangle, with the origin at the upper left.
Definition: SDL_rect.h:64

static void DrawRectLineIntersections | ( | SDL_Renderer * | renderer | ) |

static

Definition at line 162 of file testintersections.c.

References SDL_Rect::h, i, j, num_lines, num_rects, SDL_IntersectRectAndLine, SDL_RenderDrawLine, SDL_SetRenderDrawColor, SDL_Rect::w, SDL_Rect::x, and SDL_Rect::y.

Referenced by loop().

{
int i, j;
SDL_SetRenderDrawColor(renderer, 0, 255, 55, 255);
for (i = 0; i < num_rects; i++)
for (j = 0; j < num_lines; j++) {
int x1, y1, x2, y2;
SDL_Rect r;
r = rects[i];
x1 = lines[j].x;
y1 = lines[j].y;
x2 = lines[j].w;
y2 = lines[j].h;
if (SDL_IntersectRectAndLine(&r, &x1, &y1, &x2, &y2)) {
SDL_RenderDrawLine(renderer, x1, y1, x2, y2);
}
}
}
x1
GLuint GLfloat GLfloat GLfloat x1
Definition: SDL_opengl_glext.h:8583
r
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
num_lines
int num_lines
Definition: testintersections.c:84
y2
GLfixed GLfixed GLfixed y2
Definition: SDL_opengl_glext.h:4583
x2
GLfixed GLfixed x2
Definition: SDL_opengl_glext.h:4583
y1
GLfixed y1
Definition: SDL_opengl_glext.h:4583
num_rects
int num_rects
Definition: testintersections.c:128
lines
SDL_Rect lines[MAX_LINES]
Definition: testintersections.c:85
SDL_Rect::x
int x
Definition: SDL_rect.h:66
SDL_Rect::w
int w
Definition: SDL_rect.h:67
i
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
Definition: SDL_x11sym.h:42
SDL_Rect::h
int h
Definition: SDL_rect.h:67
rects
SDL_Rect rects[MAX_RECTS]
Definition: testintersections.c:129
SDL_SetRenderDrawColor
#define SDL_SetRenderDrawColor
Definition: SDL_dynapi_overrides.h:336
SDL_IntersectRectAndLine
#define SDL_IntersectRectAndLine
Definition: SDL_dynapi_overrides.h:303
SDL_RenderDrawLine
#define SDL_RenderDrawLine
Definition: SDL_dynapi_overrides.h:343
SDL_Rect::y
int y
Definition: SDL_rect.h:66
SDL_Rect
A rectangle, with the origin at the upper left.
Definition: SDL_rect.h:64
j
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int int in j)
Definition: SDL_x11sym.h:42

static void DrawRectRectIntersections | ( | SDL_Renderer * | renderer | ) |

static

Definition at line 186 of file testintersections.c.

References i, j, num_rects, SDL_IntersectRect, SDL_RenderFillRect, and SDL_SetRenderDrawColor.

Referenced by loop().

{
int i, j;
SDL_SetRenderDrawColor(renderer, 255, 200, 0, 255);
for (i = 0; i < num_rects; i++)
for (j = i + 1; j < num_rects; j++) {
SDL_Rect r;
if (SDL_IntersectRect(&rects[i], &rects[j], &r)) {
SDL_RenderFillRect(renderer, &r);
}
}
}
r
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
SDL_RenderFillRect
#define SDL_RenderFillRect
Definition: SDL_dynapi_overrides.h:347
SDL_IntersectRect
#define SDL_IntersectRect
Definition: SDL_dynapi_overrides.h:300
num_rects
int num_rects
Definition: testintersections.c:128
i
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
Definition: SDL_x11sym.h:42
rects
SDL_Rect rects[MAX_RECTS]
Definition: testintersections.c:129
SDL_SetRenderDrawColor
#define SDL_SetRenderDrawColor
Definition: SDL_dynapi_overrides.h:336
SDL_Rect
A rectangle, with the origin at the upper left.
Definition: SDL_rect.h:64
j
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int int in j)
Definition: SDL_x11sym.h:42

static void DrawRects | ( | SDL_Renderer * | renderer | ) |

static

Definition at line 155 of file testintersections.c.

References num_rects, SDL_RenderFillRects, and SDL_SetRenderDrawColor.

Referenced by loop().

{
SDL_SetRenderDrawColor(renderer, 255, 127, 0, 255);
SDL_RenderFillRects(renderer, rects, num_rects);
}
SDL_RenderFillRects
#define SDL_RenderFillRects
Definition: SDL_dynapi_overrides.h:348
num_rects
int num_rects
Definition: testintersections.c:128
rects
SDL_Rect rects[MAX_RECTS]
Definition: testintersections.c:129
SDL_SetRenderDrawColor
#define SDL_SetRenderDrawColor
Definition: SDL_dynapi_overrides.h:336

void loop | ( |  | ) |

Definition at line 202 of file testintersections.c.

References add_line(), add_rect(), SDL_MouseButtonEvent::button, SDL_Event::button, done, DrawLines(), DrawPoints(), DrawRectLineIntersections(), DrawRectRectIntersections(), DrawRects(), i, SDL_Event::key, SDL_KeyboardEvent::keysym, KMOD_SHIFT, SDL_Keysym::mod, mouse_begin_x, mouse_begin_y, NULL, num_lines, num_rects, SDLTest_CommonState::num_windows, renderer, SDLTest_CommonState::renderers, SDL_KEYDOWN, SDL_MOUSEBUTTONDOWN, SDL_MOUSEBUTTONUP, SDL_PollEvent, SDL_RenderClear, SDL_RenderPresent, SDL_SetRenderDrawColor, SDLTest_CommonEvent(), SDL_Keysym::sym, SDL_Event::type, SDLTest_CommonState::windows, SDL_MouseButtonEvent::x, and SDL_MouseButtonEvent::y.

Referenced by main().

{
int i;
SDL_Event event;
/* Check for events */
while (SDL_PollEvent(&event)) {
SDLTest_CommonEvent(state, &event, &done);
switch (event.type) {
case SDL_MOUSEBUTTONDOWN:
mouse_begin_x = event.button.x;
mouse_begin_y = event.button.y;
break;
case SDL_MOUSEBUTTONUP:
if (event.button.button == 3)
add_line(mouse_begin_x, mouse_begin_y, event.button.x,
event.button.y);
if (event.button.button == 1)
add_rect(mouse_begin_x, mouse_begin_y, event.button.x,
event.button.y);
break;
case SDL_KEYDOWN:
switch (event.key.keysym.sym) {
case 'l':
if (event.key.keysym.mod & KMOD_SHIFT)
num_lines = 0;
else
add_line(rand() % 640, rand() % 480, rand() % 640,
rand() % 480);
break;
case 'r':
if (event.key.keysym.mod & KMOD_SHIFT)
num_rects = 0;
else
add_rect(rand() % 640, rand() % 480, rand() % 640,
rand() % 480);
break;
}
break;
default:
break;
}
}
for (i = 0; i < state->num_windows; ++i) {
SDL_Renderer *renderer = state->renderers[i];
if (state->windows[i] == NULL)
continue;
SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF);
SDL_RenderClear(renderer);
DrawRects(renderer);
DrawPoints(renderer);
DrawRectRectIntersections(renderer);
DrawLines(renderer);
DrawRectLineIntersections(renderer);
SDL_RenderPresent(renderer);
}
#ifdef __EMSCRIPTEN__
if (done) {
emscripten_cancel_main_loop();
}
#endif
}
SDL_PollEvent
#define SDL_PollEvent
Definition: SDL_dynapi_overrides.h:128
DrawLines
void DrawLines(SDL_Renderer *renderer)
Definition: testintersections.c:105
SDL_KEYDOWN
Definition: SDL_events.h:93
SDL_MOUSEBUTTONUP
Definition: SDL_events.h:104
done
int done
Definition: testintersections.c:38
SDL_MouseButtonEvent::y
Sint32 y
Definition: SDL_events.h:256
mouse_begin_x
int mouse_begin_x
Definition: testintersections.c:37
num_lines
int num_lines
Definition: testintersections.c:84
SDL_MOUSEBUTTONDOWN
Definition: SDL_events.h:103
SDL_Renderer
Definition: SDL_sysrender.h:76
DrawRects
static void DrawRects(SDL_Renderer *renderer)
Definition: testintersections.c:155
mouse_begin_y
int mouse_begin_y
Definition: testintersections.c:37
SDLTest_CommonState::windows
SDL_Window ** windows
Definition: SDL_test_common.h:78
DrawPoints
void DrawPoints(SDL_Renderer *renderer)
Definition: testintersections.c:41
SDLTest_CommonState::num_windows
int num_windows
Definition: SDL_test_common.h:77
renderer
SDL_Renderer * renderer
Definition: testautomation_render.c:27
SDL_MouseButtonEvent::button
Uint8 button
Definition: SDL_events.h:251
SDLTest_CommonEvent
void SDLTest_CommonEvent(SDLTest_CommonState *state, SDL_Event *event, int *done)
Common event handler for test windows.
Definition: SDL_test_common.c:1295
num_rects
int num_rects
Definition: testintersections.c:128
KMOD_SHIFT
#define KMOD_SHIFT
Definition: SDL_keycode.h:335
event
struct _cl_event * event
Definition: SDL_opengl_glext.h:2649
DrawRectRectIntersections
static void DrawRectRectIntersections(SDL_Renderer *renderer)
Definition: testintersections.c:186
add_line
static int add_line(int x1, int y1, int x2, int y2)
Definition: testintersections.c:87
SDL_KeyboardEvent::keysym
SDL_Keysym keysym
Definition: SDL_events.h:196
SDLTest_CommonState::renderers
SDL_Renderer ** renderers
Definition: SDL_test_common.h:84
i
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
Definition: SDL_x11sym.h:42
NULL
#define NULL
Definition: begin_code.h:143
SDL_Keysym::mod
Uint16 mod
Definition: SDL_keyboard.h:51
DrawRectLineIntersections
static void DrawRectLineIntersections(SDL_Renderer *renderer)
Definition: testintersections.c:162
SDL_RenderClear
#define SDL_RenderClear
Definition: SDL_dynapi_overrides.h:340
SDL_Event::key
SDL_KeyboardEvent key
Definition: SDL_events.h:526
SDL_Keysym::sym
SDL_Keycode sym
Definition: SDL_keyboard.h:50
SDL_Event::button
SDL_MouseButtonEvent button
Definition: SDL_events.h:530
SDL_MouseButtonEvent::x
Sint32 x
Definition: SDL_events.h:255
SDL_Event
General event structure.
Definition: SDL_events.h:521
SDL_SetRenderDrawColor
#define SDL_SetRenderDrawColor
Definition: SDL_dynapi_overrides.h:336
add_rect
static int add_rect(int x1, int y1, int x2, int y2)
Definition: testintersections.c:131
state
static SDLTest_CommonState * state
Definition: testintersections.c:28
SDL_RenderPresent
#define SDL_RenderPresent
Definition: SDL_dynapi_overrides.h:352
SDL_Event::type
Uint32 type
Definition: SDL_events.h:523

int main | ( | int | argc,
|  | char * | argv[]
| ) |  |

Definition at line 268 of file testintersections.c.

References blendMode, cycle_alpha, cycle_color, done, i, loop(), NULL, NUM_OBJECTS, num_objects, SDLTest_CommonState::num_windows, renderer, SDLTest_CommonState::renderers, SDL_atoi, SDL_BLENDMODE_ADD, SDL_BLENDMODE_BLEND, SDL_BLENDMODE_MOD, SDL_BLENDMODE_NONE, SDL_GetTicks(), SDL_INIT_VIDEO, SDL_isdigit, SDL_Log, SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, SDL_LogSetPriority, SDL_RenderClear, SDL_SetRenderDrawBlendMode, SDL_SetRenderDrawColor, SDL_strcasecmp, SDL_TRUE, SDLTest_CommonArg(), SDLTest_CommonCreateState(), SDLTest_CommonInit(), SDLTest_CommonQuit(), and SDLTest_CommonUsage().

{
int i;
Uint32 then, now, frames;
/* Enable standard application logging */
SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
/* Initialize parameters */
num_objects = NUM_OBJECTS;
/* Initialize test framework */
state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
if (!state) {
return 1;
}
for (i = 1; i < argc;) {
int consumed;
consumed = SDLTest_CommonArg(state, i);
if (consumed == 0) {
consumed = -1;
if (SDL_strcasecmp(argv[i], "--blend") == 0) {
if (argv[i + 1]) {
if (SDL_strcasecmp(argv[i + 1], "none") == 0) {
blendMode = SDL_BLENDMODE_NONE;
consumed = 2;
} else if (SDL_strcasecmp(argv[i + 1], "blend") == 0) {
blendMode = SDL_BLENDMODE_BLEND;
consumed = 2;
} else if (SDL_strcasecmp(argv[i + 1], "add") == 0) {
blendMode = SDL_BLENDMODE_ADD;
consumed = 2;
} else if (SDL_strcasecmp(argv[i + 1], "mod") == 0) {
blendMode = SDL_BLENDMODE_MOD;
consumed = 2;
}
}
} else if (SDL_strcasecmp(argv[i], "--cyclecolor") == 0) {
cycle_color = SDL_TRUE;
consumed = 1;
} else if (SDL_strcasecmp(argv[i], "--cyclealpha") == 0) {
cycle_alpha = SDL_TRUE;
consumed = 1;
} else if (SDL_isdigit(*argv[i])) {
num_objects = SDL_atoi(argv[i]);
consumed = 1;
}
}
if (consumed < 0) {
SDL_Log("Usage: %s %s [--blend none|blend|add|mod] [--cyclecolor] [--cyclealpha]\n",
argv[0], SDLTest_CommonUsage(state));
return 1;
}
i += consumed;
}
if (!SDLTest_CommonInit(state)) {
return 2;
}
/* Create the windows and initialize the renderers */
for (i = 0; i < state->num_windows; ++i) {
SDL_Renderer *renderer = state->renderers[i];
SDL_SetRenderDrawBlendMode(renderer, blendMode);
SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF);
SDL_RenderClear(renderer);
}
srand(time(NULL));
/* Main render loop */
frames = 0;
then = SDL_GetTicks();
done = 0;
#ifdef __EMSCRIPTEN__
emscripten_set_main_loop(loop, 0, 1);
#else
while (!done) {
++frames;
loop();
}
#endif
SDLTest_CommonQuit(state);
/* Print out some timing information */
now = SDL_GetTicks();
if (now > then) {
double fps = ((double) frames * 1000) / (now - then);
SDL_Log("%2.2f frames per second\n", fps);
}
return 0;
}
blendMode
static SDL_BlendMode blendMode
Definition: testintersections.c:35
cycle_alpha
static SDL_bool cycle_alpha
Definition: testintersections.c:31
Uint32
uint32_t Uint32
An unsigned 32-bit integer type.
Definition: SDL_stdinc.h:157
SDL_BLENDMODE_NONE
Definition: SDL_blendmode.h:42
done
int done
Definition: testintersections.c:38
SDLTest_CommonCreateState
SDLTest_CommonState * SDLTest_CommonCreateState(char **argv, Uint32 flags)
Parse command line parameters and create common state.
Definition: SDL_test_common.c:36
NUM_OBJECTS
#define NUM_OBJECTS
Definition: testintersections.c:26
SDLTest_CommonArg
int SDLTest_CommonArg(SDLTest_CommonState *state, int index)
Process one common argument.
Definition: SDL_test_common.c:83
SDL_SetRenderDrawBlendMode
#define SDL_SetRenderDrawBlendMode
Definition: SDL_dynapi_overrides.h:338
SDL_Renderer
Definition: SDL_sysrender.h:76
SDL_strcasecmp
#define SDL_strcasecmp
Definition: SDL_dynapi_overrides.h:425
SDLTest_CommonInit
SDL_bool SDLTest_CommonInit(SDLTest_CommonState *state)
Open test window.
Definition: SDL_test_common.c:645
SDL_BLENDMODE_MOD
Definition: SDL_blendmode.h:50
SDLTest_CommonState::num_windows
int num_windows
Definition: SDL_test_common.h:77
renderer
SDL_Renderer * renderer
Definition: testautomation_render.c:27
SDL_Log
#define SDL_Log
Definition: SDL_dynapi_overrides.h:37
SDL_isdigit
#define SDL_isdigit
Definition: SDL_dynapi_overrides.h:388
SDL_GetTicks
Uint32 SDL_GetTicks(void)
Get the number of milliseconds since the SDL library initialization.
SDL_LOG_PRIORITY_INFO
Definition: SDL_log.h:106
SDL_TRUE
Definition: SDL_stdinc.h:129
SDLTest_CommonUsage
const char * SDLTest_CommonUsage(SDLTest_CommonState *state)
Returns common usage information.
Definition: SDL_test_common.c:451
SDL_atoi
#define SDL_atoi
Definition: SDL_dynapi_overrides.h:416
SDLTest_CommonState::renderers
SDL_Renderer ** renderers
Definition: SDL_test_common.h:84
i
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
Definition: SDL_x11sym.h:42
SDL_LogSetPriority
#define SDL_LogSetPriority
Definition: SDL_dynapi_overrides.h:242
loop
void loop()
Definition: testintersections.c:202
NULL
#define NULL
Definition: begin_code.h:143
SDL_RenderClear
#define SDL_RenderClear
Definition: SDL_dynapi_overrides.h:340
SDL_BLENDMODE_ADD
Definition: SDL_blendmode.h:47
num_objects
static int num_objects
Definition: testintersections.c:29
cycle_color
static SDL_bool cycle_color
Definition: testintersections.c:30
SDL_SetRenderDrawColor
#define SDL_SetRenderDrawColor
Definition: SDL_dynapi_overrides.h:336
state
static SDLTest_CommonState * state
Definition: testintersections.c:28
SDL_LOG_CATEGORY_APPLICATION
Definition: SDL_log.h:66
SDLTest_CommonQuit
void SDLTest_CommonQuit(SDLTest_CommonState *state)
Close test window.
Definition: SDL_test_common.c:1560
SDL_INIT_VIDEO
#define SDL_INIT_VIDEO
Definition: SDL.h:77
SDL_BLENDMODE_BLEND
Definition: SDL_blendmode.h:44

## Variable Documentation

SDL_BlendMode blendMode = SDL_BLENDMODE_NONE

static

Definition at line 35 of file testintersections.c.

Referenced by main().

int current_alpha = 255

static

Definition at line 33 of file testintersections.c.

Referenced by DrawPoints().

int current_color = 255

static

Definition at line 34 of file testintersections.c.

Referenced by DrawPoints().

SDL_bool cycle_alpha

static

Definition at line 31 of file testintersections.c.

Referenced by DrawPoints(), and main().

SDL_bool cycle_color

static

Definition at line 30 of file testintersections.c.

Referenced by DrawPoints(), and main().

int cycle_direction = 1

static

Definition at line 32 of file testintersections.c.

Referenced by DrawPoints().

int done

Definition at line 38 of file testintersections.c.

Referenced by loop(), and main().

SDL_Rect lines[MAX_LINES]

Definition at line 85 of file testintersections.c.

int mouse_begin_x = -1

Definition at line 37 of file testintersections.c.

Referenced by loop().

int mouse_begin_y = -1

Definition at line 37 of file testintersections.c.

Referenced by loop().

int num_lines = 0

Definition at line 84 of file testintersections.c.

Referenced by add_line(), DrawLines(), DrawRectLineIntersections(), and loop().

int num_objects

static

Definition at line 29 of file testintersections.c.

Referenced by DrawPoints(), and main().

int num_rects = 0

Definition at line 128 of file testintersections.c.

Referenced by add_rect(), DrawRectLineIntersections(), DrawRectRectIntersections(), DrawRects(), and loop().

SDL_Rect rects[MAX_RECTS]

Definition at line 129 of file testintersections.c.

SDLTest_CommonState* state

static

Definition at line 28 of file testintersections.c.