aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rwxr-xr-xtests/runner.py13
-rw-r--r--tests/sdl_canvas_palette.c61
-rw-r--r--tests/sdl_canvas_palette_2.c77
3 files changed, 151 insertions, 0 deletions
diff --git a/tests/runner.py b/tests/runner.py
index 779e51da..49991498 100755
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -7448,6 +7448,19 @@ elif 'browser' in str(sys.argv):
Popen(['python', EMCC, os.path.join(self.get_dir(), 'sdl_canvas.c'), '-o', 'page.html']).communicate()
self.run_browser('page.html', '', '/report_result?1')
+ def test_sdl_canvas_palette(self):
+ open(os.path.join(self.get_dir(), 'sdl_canvas_palette.c'), 'w').write(self.with_report_result(open(path_from_root('tests', 'sdl_canvas_palette.c')).read()))
+
+ Popen(['python', EMCC, os.path.join(self.get_dir(), 'sdl_canvas_palette.c'), '-o', 'page.html']).communicate()
+ self.run_browser('page.html', '')
+
+ def test_sdl_canvas_palette_2(self):
+ open(os.path.join(self.get_dir(), 'sdl_canvas_palette_2.c'), 'w').write(self.with_report_result(open(path_from_root('tests', 'sdl_canvas_palette_2.c')).read()))
+ open(os.path.join(self.get_dir(), 'pre.js'), 'w').write('Module[\'preRun\'] = function() { SDL.defaults.copyOnLock = false }')
+
+ Popen(['python', EMCC, os.path.join(self.get_dir(), 'sdl_canvas_palette_2.c'), '-o', 'page.html', '--pre-js', 'pre.js']).communicate()
+ self.run_browser('page.html', '')
+
def test_sdl_key(self):
open(os.path.join(self.get_dir(), 'pre.js'), 'w').write('''
Module.postRun = function() {
diff --git a/tests/sdl_canvas_palette.c b/tests/sdl_canvas_palette.c
new file mode 100644
index 00000000..1ba07760
--- /dev/null
+++ b/tests/sdl_canvas_palette.c
@@ -0,0 +1,61 @@
+#include <stdio.h>
+#include <SDL/SDL.h>
+#include <emscripten.h>
+
+int main() {
+ SDL_Init(SDL_INIT_VIDEO);
+ SDL_Surface *screen = SDL_SetVideoMode(600, 400, 8, SDL_HWSURFACE | SDL_HWPALETTE);
+
+ //initialize sdl palette
+ //with red green and blue
+ //colors
+ SDL_Color pal[3];
+ pal[0].r = 255;
+ pal[0].g = 0;
+ pal[0].b = 0;
+ pal[0].unused = 0;
+
+ pal[1].r = 0;
+ pal[1].g = 255;
+ pal[1].b = 0;
+ pal[1].unused = 0;
+
+ pal[2].r = 0;
+ pal[2].g = 0;
+ pal[2].b = 255;
+ pal[2].unused = 0;
+
+ SDL_SetColors(screen, pal, 0, 3);
+
+ {
+ SDL_Rect rect = { 0, 0, 300, 200 };
+ SDL_FillRect(screen, &rect, 0);
+ }
+
+ {
+ SDL_Rect rect = { 300, 0, 300, 200 };
+ SDL_FillRect(screen, &rect, 1);
+ }
+
+ {
+ SDL_Rect rect = { 0, 200, 600, 200 };
+ SDL_FillRect(screen, &rect, 2);
+ }
+
+ //changing green color
+ //to yellow
+ pal[1].r = 255;
+ SDL_SetColors(screen, pal, 1, 1);
+
+ {
+ SDL_Rect rect = { 300, 200, 300, 200 };
+ SDL_FillRect(screen, &rect, 1);
+ }
+
+ printf("you should see red, blue and yellow rectangle\n");
+
+ SDL_Quit();
+
+ return 0;
+}
+
diff --git a/tests/sdl_canvas_palette_2.c b/tests/sdl_canvas_palette_2.c
new file mode 100644
index 00000000..db051b2b
--- /dev/null
+++ b/tests/sdl_canvas_palette_2.c
@@ -0,0 +1,77 @@
+#include <stdio.h>
+#include <SDL/SDL.h>
+#include <emscripten.h>
+
+static const int COLOR_COUNT = 32;
+
+static SDL_Surface *screen;
+static SDL_Color pal[COLOR_COUNT +1];
+
+void initializePalette() {
+ //initialize sdl palette
+ //with red green and blue
+ //colors
+ pal[0].r = 0;
+ pal[0].g = 0;
+ pal[0].b = 0;
+ pal[0].unused = 0;
+
+ for (int i=1; i< 1 + COLOR_COUNT; i++) {
+ pal[i].r = 255 / COLOR_COUNT * i;
+ pal[i].g = 0;
+ pal[i].b = 0;
+ pal[i].unused = 0;
+ }
+
+ SDL_SetColors(screen, pal, 0, 1 + COLOR_COUNT);
+}
+
+void animatePalette() {
+ SDL_Color temporary;
+ temporary = pal[1];
+ for (int i=2; i< 1 + COLOR_COUNT; i++) {
+ pal[i-1] = pal[i];
+ }
+ pal[COLOR_COUNT] = temporary;
+
+ SDL_SetColors(screen, pal, 1, COLOR_COUNT);
+
+ //refreshing
+ SDL_LockSurface(screen);
+ SDL_UnlockSurface(screen);
+
+ printf("yet another cycle\n");
+}
+
+int main() {
+ SDL_Init(SDL_INIT_VIDEO);
+ screen = SDL_SetVideoMode(600, 400, 8, SDL_HWSURFACE | SDL_HWPALETTE);
+
+ //test empty pallete
+ SDL_LockSurface(screen);
+ SDL_UnlockSurface(screen);
+
+ initializePalette();
+
+ //palette is red yellow blue
+ SDL_LockSurface(screen);
+ int size = screen->h * screen->pitch;
+ char *color = screen->pixels;
+ int divider = size / COLOR_COUNT;
+ int i = 0;
+ while (i < size) {
+ *color = 1 + (i / divider); //red
+ color++;
+ i++;
+ }
+ SDL_UnlockSurface(screen);
+
+ //Animation
+ printf("you should see red gradient animation\n");
+ emscripten_set_main_loop(animatePalette, 0);
+
+ SDL_Quit();
+
+ return 0;
+}
+