aboutsummaryrefslogtreecommitdiff
path: root/tests/sdl_headless.c
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-08-26 11:58:01 -0700
committerAlon Zakai <alonzakai@gmail.com>2013-08-26 11:58:01 -0700
commit422d9a1f3227ae8f47fa8bd0037c2220bb2017f7 (patch)
tree107571ed84b48bab5bfb5aea6b7e5b01b814929f /tests/sdl_headless.c
parent1c92c15746d6eff0522fdb819a8d4213334f1144 (diff)
make headless test use its own file
Diffstat (limited to 'tests/sdl_headless.c')
-rw-r--r--tests/sdl_headless.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/tests/sdl_headless.c b/tests/sdl_headless.c
new file mode 100644
index 00000000..349c5e26
--- /dev/null
+++ b/tests/sdl_headless.c
@@ -0,0 +1,65 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <SDL/SDL.h>
+#include <SDL/SDL_ttf.h>
+#include <emscripten.h>
+
+
+int main(int argc, char **argv) {
+#if EMSCRIPTEN
+ // include GL stuff, to check that we can compile hybrid 2d/GL apps
+ extern void glBegin(int mode);
+ extern void glBindBuffer(int target, int buffer);
+ if (argc == 9876) {
+ glBegin(0);
+ glBindBuffer(0, 0);
+ }
+#endif
+
+ SDL_Init(SDL_INIT_VIDEO);
+ SDL_Surface *screen = SDL_SetVideoMode(600, 450, 32, SDL_HWSURFACE);
+
+ printf("Init: %d\n", TTF_Init());
+
+ TTF_Font *font = TTF_OpenFont("sans-serif", 40);
+ printf("Font: %p\n", font);
+
+ SDL_Color color = { 0xff, 0x99, 0x00, 0xff };
+
+ SDL_Surface *text = TTF_RenderText_Solid(font, "hello orange world", color);
+
+ SDL_Color color2 = { 0xbb, 0, 0xff, 0xff };
+ SDL_Surface *text2 = TTF_RenderText_Solid(font, "a second line, purple", color2);
+
+ // render
+ SDL_Rect dest = { 0, 50, 0, 0 };
+ SDL_BlitSurface (text, NULL, screen, NULL);
+ dest.y = 100;
+ SDL_BlitSurface (text2, NULL, screen, &dest);
+
+ // fill stuff
+ SDL_Rect rect = { 200, 200, 175, 125 };
+ SDL_FillRect(screen, &rect, SDL_MapRGBA(screen->format, 0x22, 0x22, 0xff, 0xff));
+
+ SDL_Flip(screen);
+
+ SDL_LockSurface(screen);
+
+ int sum = 0;
+ for (int i = 0; i < screen->h; i++) {
+ sum += *((char*)screen->pixels + i*screen->w*4 + i*4 + 0);
+ }
+ printf("Sum: %d\n", sum);
+
+ printf("you should see two lines of text in different colors and a blue rectangle\n");
+
+ SDL_Quit();
+
+ printf("done.\n");
+
+ int result = sum > 3000 && sum < 5000; // varies a little on different browsers, font differences?
+ REPORT_RESULT();
+
+ return 0;
+}
+