summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorCarsten Haitzler <raster@rasterman.com>1999-11-01 17:49:58 +0000
committerCarsten Haitzler <raster@rasterman.com>1999-11-01 17:49:58 +0000
commit9307c331bd7d7c4aaa190bd6b24cf62cefccf4b5 (patch)
treecaa3bf80391099244b674eb1ec185b6711078768 /test
parent942f4219e82a80908fcf908f34c0bad1a20c6b7e (diff)
downloadimlib2-9307c331bd7d7c4aaa190bd6b24cf62cefccf4b5.tar.gz
restructure the direcotry a bit.......
SVN revision: 1108
Diffstat (limited to 'test')
-rw-r--r--test/Makefile.am18
-rw-r--r--test/main.c576
-rw-r--r--test/test_images/audio.pngbin0 -> 4263 bytes
-rw-r--r--test/test_images/bg.pngbin0 -> 132721 bytes
-rw-r--r--test/test_images/bulb.pngbin0 -> 3504 bytes
-rw-r--r--test/test_images/cal.pngbin0 -> 2755 bytes
-rw-r--r--test/test_images/calc.pngbin0 -> 3949 bytes
-rw-r--r--test/test_images/folder.pngbin0 -> 2873 bytes
-rw-r--r--test/test_images/globe.pngbin0 -> 3388 bytes
-rw-r--r--test/test_images/lock.pngbin0 -> 2770 bytes
-rw-r--r--test/test_images/mail.pngbin0 -> 3222 bytes
-rw-r--r--test/test_images/menu.pngbin0 -> 3240 bytes
-rw-r--r--test/test_images/mush.pngbin0 -> 3244 bytes
-rw-r--r--test/test_images/paper.pngbin0 -> 3410 bytes
-rw-r--r--test/test_images/sh1.pngbin0 -> 768 bytes
-rw-r--r--test/test_images/sh2.pngbin0 -> 280 bytes
-rw-r--r--test/test_images/sh3.pngbin0 -> 360 bytes
-rw-r--r--test/test_images/stop.pngbin0 -> 2684 bytes
-rw-r--r--test/test_images/tnt.pngbin0 -> 3010 bytes
-rw-r--r--test/ttfonts/cinema.ttfbin0 -> 11584 bytes
-rw-r--r--test/ttfonts/grunge.ttfbin0 -> 53189 bytes
-rw-r--r--test/ttfonts/morpheus.ttfbin0 -> 68023 bytes
-rw-r--r--test/ttfonts/notepad.ttfbin0 -> 31293 bytes
23 files changed, 594 insertions, 0 deletions
diff --git a/test/Makefile.am b/test/Makefile.am
new file mode 100644
index 0000000..b357763
--- /dev/null
+++ b/test/Makefile.am
@@ -0,0 +1,18 @@
+## Process this file with automake to produce Makefile.in
+
+AUTOMAKE_OPTIONS = 1.4 foreign
+
+# A list of all the files in the current directory which can be regenerated
+MAINTAINERCLEANFILES = Makefile.in
+
+LDFLAGS = -L/usr/X11R6/lib
+INCLUDES = -I/usr/X11R6/include -I$(top_srcdir)/libltdl \
+ $(X_CFLAGS) -I$(prefix)/include -I$(includedir) \
+ -I. -I$(top_srcdir) -I$(top_srcdir)/src \
+ -I$(top_srcdir)/loaders
+
+bin_PROGRAMS = imlib2
+imlib2_SOURCES = main.c
+imlib2_LDADD = @DLLDFLAGS@ $(top_builddir)/libltdl/libltdlc.la \
+ -lX11 -lXext -lttf -lImlib2
+
diff --git a/test/main.c b/test/main.c
new file mode 100644
index 0000000..768ef84
--- /dev/null
+++ b/test/main.c
@@ -0,0 +1,576 @@
+#include <X11/Xlib.h>
+#include <X11/extensions/XShm.h>
+#include <X11/Xutil.h>
+#include <X11/extensions/shape.h>
+#include <X11/Xatom.h>
+#include <X11/Xos.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+/*
+#include <sys/time.h>
+#include "common.h"
+#include "image.h"
+#include "rend.h"
+#include "rgba.h"
+#include "ximage.h"
+#include "color.h"
+ */
+#include "Imlib2.h"
+
+Display *disp;
+Window win;
+Visual *vis;
+Colormap cm;
+int depth;
+
+void progress(Imlib_Image *im, char percent, int update_x, int update_y,
+ int update_w, int update_h);
+
+void
+progress(Imlib_Image *im, char percent,
+ int update_x, int update_y,
+ int update_w, int update_h)
+{
+ imlib_render_image_part_on_drawable_at_size(im, disp, win, vis, cm, depth,
+ 0, 0, 0,
+ update_x, update_y,
+ update_w, update_h,
+ update_x, update_y,
+ update_w, update_h,
+ NULL, IMLIB_OP_COPY);
+}
+
+#if 1
+int main (int argc, char **argv)
+{
+ int i, j;
+ Imlib_Image *im = NULL;
+ int sec1, usec1, sec2, usec2;
+ int pixels = 0;
+ struct timeval timev;
+ double sec;
+ char *file = NULL;
+ char *fon = NULL, *str = NULL;
+
+ int root = 0;
+ int scale = 0;
+ int w = 20;
+ int h = 20;
+ int aa = 0;
+ int dith = 0;
+ int loop = 0;
+ int blend = 1;
+ int interactive = 1;
+ int blendtest = 0;
+
+ for (i = 1; i < argc; i++)
+ {
+ if (!strcmp(argv[i], "-root"))
+ root = 1;
+ else if (!strcmp(argv[i], "-smooth"))
+ aa = 1;
+ else if (!strcmp(argv[i], "-blast"))
+ interactive = 0;
+ else if (!strcmp(argv[i], "-loop"))
+ {
+ interactive = 0;
+ loop = 1;
+ }
+ else if (!strcmp(argv[i], "-blend"))
+ blend = 1;
+ else if (!strcmp(argv[i], "-blendtest"))
+ {
+ blendtest = 1;
+ interactive = 0;
+ }
+ else if (!strcmp(argv[i], "-dither"))
+ dith = 1;
+ else if (!strcmp(argv[i], "-scale"))
+ scale = 1;
+ else if (!strcmp(argv[i], "-noloop"))
+ loop = 0;
+ else if (!strcmp(argv[i], "-size"))
+ {
+ i++;
+ w = atoi(argv[i++]);
+ h = atoi(argv[i]);
+ }
+ else if (!strcmp(argv[i], "-maxcolors"))
+ {
+ i++;
+ imlib_set_color_usage(atoi(argv[i]));
+ }
+ else if (!strcmp(argv[i], "-font"))
+ {
+ i++;
+ fon = argv[i];
+ }
+ else if (!strcmp(argv[i], "-text"))
+ {
+ i++;
+ str = argv[i];
+ }
+ else
+ file = argv[i];
+ }
+ printf("init\n");
+ disp = XOpenDisplay(NULL);
+ vis = DefaultVisual(disp, DefaultScreen(disp));
+ depth = DefaultDepth(disp, DefaultScreen(disp));
+ cm = DefaultColormap(disp, DefaultScreen(disp));
+ if (root)
+ win = DefaultRootWindow(disp);
+ else
+ {
+ win = XCreateSimpleWindow(disp, DefaultRootWindow(disp), 0, 0, 10, 10, 0, 0, 0);
+ XSelectInput(disp, win, ButtonPressMask | ButtonReleaseMask |
+ ButtonMotionMask | PointerMotionMask | ExposureMask);
+ }
+ if (!interactive)
+ {
+ im = imlib_load_image_with_progress_callback(file, progress, 0);
+ if (!im)
+ {
+ printf("load fialed\n");
+ exit(0);
+ }
+ w = imlib_image_get_width(im);
+ h = imlib_image_get_height(im);
+ }
+ if (!root)
+ {
+ XResizeWindow(disp, win, w, h);
+ XMapWindow(disp, win);
+ }
+ if (scale)
+ {
+ Window d;
+ int dd;
+
+ XGetGeometry(disp, win, &d, &dd, &dd, &w, &h, &dd, &dd);
+ }
+ XSync(disp, False);
+ printf("rend\n");
+ gettimeofday(&timev,NULL);
+ sec1=(int)timev.tv_sec; /* and stores it so we can time outselves */
+ usec1=(int)timev.tv_usec; /* we will use this to vary speed of rot */
+
+ if (loop)
+ {
+ for (i = 0; i < w; i++)
+ {
+ imlib_render_image_on_drawable_at_size(im, disp, win, vis,
+ cm,
+ depth,
+ aa, dith, blend,
+ 0, 0,
+ w - i, (((w - i) * h) / w),
+ NULL, IMLIB_OP_COPY);
+ pixels += (w - i) * (((w - i) * h) / w);
+ }
+ }
+ else if (blendtest)
+ {
+ Imlib_Image im2;
+
+ im2 = imlib_create_image(w, h);
+ w = imlib_image_get_width(im);
+ h = imlib_image_get_height(im);
+ for (i = 0; i < 1024; i++)
+ {
+ imlib_blend_image_onto_image(im, im2,
+ 0, 0, 0,
+ 0, 0, w, h,
+ 0, 0, w, h, NULL, IMLIB_OP_COPY);
+ pixels += (w * h);
+ }
+ }
+ else if (interactive)
+ {
+ int wo, ho, px, py, first = 1;
+ Imlib_Image im_bg, im_sh1, im_sh2, im_sh3, im_ic[13], im_tmp;
+ /* Imlib_Border border; */
+ Imlib_Updates up = NULL;
+ int x, y, /* dum, */ i, j;
+ /*
+ unsigned int dui;
+ Window rt;
+ */
+ XEvent ev;
+ Imlib_Font fn=NULL;
+
+ /* "ARIAL/30" "COMIC/30" "IMPACT/30" "Prole/30" "Proteron/30" */
+ /* "TIMES/30" "badacid/30" "bajoran/30" "bigfish/30" */
+ imlib_add_path_to_font_path("./ttfonts");
+ if (fon)
+ {
+ fn = imlib_load_font(fon);
+ if (!fn)
+ fon = NULL;
+ }
+
+ if (file)
+ im_bg = imlib_load_image(file);
+ else
+ im_bg = imlib_load_image("test_images/bg.png");
+ im_tmp = imlib_clone_image(im_bg);
+ w = imlib_image_get_width(im_bg);
+ h = imlib_image_get_height(im_bg);
+ wo = w;
+ ho = h;
+ w *= 1;
+ h *= 1;
+ XResizeWindow(disp, win, w, h);
+ XSync(disp, False);
+ im = imlib_create_image(w, h);
+ imlib_set_cache_size(4 * 1024 * 1024);
+ i = 0;
+ up = imlib_update_append_rect(up, 0, 0, w, h);
+ x = -9999;
+ y = -9999;
+ while (1)
+ {
+ px = x;
+ py = y;
+ do
+ {
+ XNextEvent(disp, &ev);
+ switch (ev.type)
+ {
+ case Expose:
+ up = imlib_update_append_rect(up,
+ ev.xexpose.x, ev.xexpose.y,
+ ev.xexpose.width, ev.xexpose.height);
+ break;
+ case ButtonRelease:
+ exit(0);
+ break;
+ case MotionNotify:
+ x = ev.xmotion.x;
+ y = ev.xmotion.y;
+ default:
+ break;
+
+ }
+ }
+ while (XPending(disp));
+
+ im_sh1 = imlib_load_image("test_images/sh1.png");
+ im_sh2 = imlib_load_image("test_images/sh2.png");
+ im_sh3 = imlib_load_image("test_images/sh3.png");
+ im_ic[0] = imlib_load_image("test_images/audio.png");
+ im_ic[1] = imlib_load_image("test_images/folder.png");
+ im_ic[2] = imlib_load_image("test_images/mush.png");
+ im_ic[3] = imlib_load_image("test_images/paper.png");
+ im_ic[4] = imlib_load_image("test_images/mail.png");
+ im_ic[5] = imlib_load_image("test_images/calc.png");
+ im_ic[6] = imlib_load_image("test_images/cal.png");
+ im_ic[7] = imlib_load_image("test_images/stop.png");
+ im_ic[8] = imlib_load_image("test_images/globe.png");
+ im_ic[9] = imlib_load_image("test_images/menu.png");
+ im_ic[10] = imlib_load_image("test_images/tnt.png");
+ im_ic[11] = imlib_load_image("test_images/bulb.png");
+ im_ic[12] = imlib_load_image("test_images/lock.png");
+
+ if (first)
+ {
+ imlib_blend_image_onto_image(im_bg, im,
+ 0, 0, 0,
+ 0, 0, w, h,
+ 0, 0, w, h,
+ NULL, IMLIB_OP_COPY);
+ first = 0;
+ }
+ {
+ Imlib_Updates uu;
+ Imlib_Color col;
+
+ col.red = 255;
+ col.green = 255;
+ col.blue = 255;
+ col.alpha = 255;
+ uu = imlib_image_draw_line(im, 200, 200, x, y, &col,
+ IMLIB_OP_COPY, 1);
+ up = imlib_updates_append_updates(up, uu);
+ }
+ {
+ Imlib_Color_Range rg = NULL;
+
+ if (!rg)
+ {
+ Imlib_Color cl;
+
+ rg = imlib_create_color_range();
+ cl.red = 255; cl.green = 255; cl.blue = 255; cl.alpha = 255;
+ imlib_add_color_to_color_range(rg, &cl, 0);
+ cl.red = 255; cl.green = 255; cl.blue = 160; cl.alpha = 255;
+ imlib_add_color_to_color_range(rg, &cl, 1);
+ cl.red = 255; cl.green = 160; cl.blue = 120; cl.alpha = 255;
+ imlib_add_color_to_color_range(rg, &cl, 1);
+ cl.red = 100; cl.green = 80; cl.blue = 100; cl.alpha = 255;
+ imlib_add_color_to_color_range(rg, &cl, 1);
+ cl.red = 32; cl.green = 48; cl.blue = 80; cl.alpha = 255;
+ imlib_add_color_to_color_range(rg, &cl, 1);
+ }
+ imlib_image_fill_color_range_rectangle(im, 60, 60, 256, 256,
+ rg, (double)x,
+ IMLIB_OP_RESHADE);
+ up = imlib_update_append_rect(up, 60, 60, 256, 256);
+ }
+ if (fon)
+ {
+ int retw, reth, ty, nx, ny, cx, cy, cw, ch, cp;
+
+ if (!str)
+ str = "This is a test string";
+ ty = 50;
+ for (i = 0; i < 16; i++)
+ {
+ Imlib_Color cl;
+ int al;
+
+ al = (15 - i) * 16;
+ if (al > 255)
+ al = 255;
+ cl.red = 255;
+ cl.green = 255;
+ cl.blue = 255;
+ cl.alpha = al;
+
+ imlib_text_draw_with_return_metrics(fn, im, 50, ty,
+ IMLIB_TEXT_TO_RIGHT,
+ str, &cl,
+ IMLIB_OP_COPY,
+ &retw, &reth,
+ &nx, &ny);
+/* up = imlib_update_append_rect(up, px, ty + (py - y), retw, reth);*/
+ up = imlib_update_append_rect(up, 50, ty, retw, reth);
+ ty += ny;
+ }
+ cp = imlib_text_get_index_and_location(fn,
+ IMLIB_TEXT_TO_RIGHT,
+ str, x - 50, y - 50,
+ &cx, &cy, &cw, &ch);
+ if (cp >= 0)
+ {
+#if 0
+ GC gc;
+ XGCValues gcv;
+
+ gc = XCreateGC(disp, win, 0, &gcv);
+ XSetForeground(disp, gc, 0xffff);
+ XDrawRectangle(disp, win, gc, 50 + cx, 50 + cy, cw, ch);
+ XFreeGC(disp, gc);
+#endif
+ printf("over char %c\n", str[cp]);
+ }
+ }
+ if ((px != x) || (py != y))
+ {
+ for (j = 0; j < 32; j++)
+ {
+ for (i = 0; i < 32; i++)
+ {
+ int ic, iw, ih, ww, hh;
+
+ ic = ((j * 32) + i) % 13;
+ iw = imlib_image_get_width(im_ic[ic]);
+ ih = imlib_image_get_height(im_ic[ic]);
+ ww = iw;
+ hh = ih;
+ up = imlib_update_append_rect(up, x + (i * iw * 2),
+ y + (j * ih * 2), ww, hh);
+ up = imlib_update_append_rect(up, px + (i * iw * 2),
+ py + (j * ih * 2), ww, hh);
+ imlib_blend_image_onto_image(im_ic[ic], im,
+ aa, blend, 0,
+ 0, 0, iw, ih,
+ x + (i * iw * 2),
+ y + (j * ih * 2),
+ ww, hh,
+ NULL, IMLIB_OP_COPY);
+ }
+ }
+ }
+ imlib_blend_image_onto_image(im_sh1, im,
+ aa, blend, 0,
+ 0, 0, 50, 50,
+ 0, 0, 50, 50, NULL, IMLIB_OP_COPY);
+ up = imlib_update_append_rect(up, 0, 0, 50, 50);
+ imlib_blend_image_onto_image(im_sh2, im,
+ aa, blend, 0,
+ 0, 0, 50, 50,
+ 50, 0, w - 50, 50, NULL, IMLIB_OP_COPY);
+ up = imlib_update_append_rect(up, 50, 0, w - 50, 50);
+ imlib_blend_image_onto_image(im_sh3, im,
+ aa, blend, 0,
+ 0, 0, 50, 50,
+ 0, 50, 50, h - 50, NULL, IMLIB_OP_COPY);
+ up = imlib_update_append_rect(up, 0, 50, 50, h - 50);
+ up = imlib_updates_merge_for_rendering(up, w, h);
+ imlib_render_image_updates_on_drawable(im, up, disp, win, vis, cm,
+ depth, dith, 0, 0, NULL);
+ imlib_save_image(im, "out.png");
+ if ((px != x) || (py != y))
+ {
+ Imlib_Updates u;
+
+ u = up;
+ while (u)
+ {
+ int ux, uy, uw, uh;
+
+ imlib_updates_get_coordinates(u, &ux, &uy, &uw, &uh);
+ imlib_blend_image_onto_image(im_bg, im,
+ 0, 0, 0,
+ ux, uy, uw, uh,
+ ux, uy, uw, uh,
+ NULL, IMLIB_OP_COPY);
+ u = imlib_updates_get_next(u);
+ }
+ }
+#if 0
+ {
+ Imlib_Updates up2;
+ GC gc;
+ XGCValues gcv;
+
+ gc = XCreateGC(disp, win, 0, &gcv);
+ XSetForeground(disp, gc, 0xffff);
+ up2 = up;
+ while(up2)
+ {
+ int ux, uy, uw, uh;
+
+ imlib_updates_get_coordinates(up2, &ux, &uy, &uw, &uh);
+ XDrawRectangle(disp, win, gc, ux, uy, uw - 1, uh - 1);
+ up2 = imlib_updates_get_next(up2);
+ }
+ XFreeGC(disp, gc);
+ }
+#endif
+ imlib_updates_free(up);
+ up = NULL;
+ imlib_free_image(im_sh1);
+ imlib_free_image(im_sh2);
+ imlib_free_image(im_sh3);
+ imlib_free_image(im_ic[0]);
+ imlib_free_image(im_ic[1]);
+ imlib_free_image(im_ic[2]);
+ imlib_free_image(im_ic[3]);
+ }
+ }
+ else
+ {
+ for (i = 0; i < w; i++)
+ {
+ imlib_render_image_on_drawable_at_size(im, disp, win, vis,
+ cm,
+ depth,
+ aa, dith, blend,
+ 0, 0,
+ w, h,
+ NULL, IMLIB_OP_COPY);
+ pixels += w * h;
+ }
+ }
+ gettimeofday(&timev,NULL);
+ sec2=(int)timev.tv_sec; /* and stores it so we can time outselves */
+ usec2=(int)timev.tv_usec; /* we will use this to vary speed of rot */
+ printf("done\n");
+ i = sec2 - sec1;
+ j = usec2 - usec1;
+ while (j < 0)
+ {
+ i++;
+ j += 1000000;
+ }
+ sec = (double)i + ((double)j / 1000000);
+ printf("%3.3f sec\n", sec);
+ printf("%3.3f Mpixels / sec\n", (double)(pixels) / (sec * 1000000));
+ return 0;
+}
+#else
+int main (int argc, char **argv)
+{
+ Window win;
+/*
+ Pixmap back, scratch;
+ GC gc;
+ */
+ XGCValues gcv;
+ Imlib_Image *im = NULL, tmp, grab;
+ int x, y, start, i, w, h;
+ Visual *vis;
+ int depth;
+ int dith = 0;
+ int blend = 0;
+ DATA32 *data1, *data2;
+ Colormap cm;
+
+ start = 1;
+ x = 0;
+ y = 0;
+ for (i = 1; i < argc; i++)
+ {
+ if (!strcmp(argv[i], "-blend"))
+ blend = 1;
+ else if (!strcmp(argv[i], "-dither"))
+ dith = 1;
+ else if (!strcmp(argv[i], "-pos"))
+ {
+ i++;
+ x = atoi(argv[i++]);
+ y = atoi(argv[i]);
+ }
+ else
+ {
+ start = i;
+ i = argc;
+ }
+ }
+ disp = XOpenDisplay(NULL);
+ printf("load\n");
+ im = malloc(sizeof(Imlib_Image) * (argc - start));
+ for (i = start; i < argc; i++)
+ im[i - start] = imlib_load_image(argv[i]);
+ win = DefaultRootWindow(disp);
+ vis = DefaultVisual(disp, DefaultScreen(disp));
+ depth = DefaultDepth(disp, DefaultScreen(disp));
+ cm = DefaultColormap(disp, DefaultScreen(disp));
+ __imlib_SetMaxXImageCount(disp, 0);
+ XSync(disp, False);
+ printf("init\n");
+ w = imlib_image_get_width(im[0]);
+ h = imlib_image_get_height(im[0]);
+/*
+ gc = XCreateGC(disp, win, 0, &gcv);
+ back = XCreatePixmap(disp, win, w, h, depth);
+ scratch = XCreatePixmap(disp, win, w, h, depth);
+ XCopyArea(disp, win, back, gc, x, y, w, h, 0, 0);
+ XCopyArea(disp, back, scratch, gc, 0, 0, w, h, 0, 0);
+ */
+ grab = imlib_create_image_from_drawable(disp, win, 0, vis, cm, depth,
+ x, y, w, h);
+ tmp = imlib_clone_image(grab);
+
+ data1 = imlib_image_get_data(grab);
+ data2 = imlib_image_get_data(tmp);
+
+ printf("animate\n");
+ for(;;)
+ {
+ for (i = 0; i < (argc - start); i++)
+ {
+/* imlib_blend_image_onto_image(im[i], tmp, 0, 0, w, h, 0, 0, w, h);*/
+ imlib_render_image_on_drawable(im[i], disp, win, vis, cm, depth,
+ dith, 0,
+ x, y);
+ memcpy(data2, data1, w * h *sizeof(DATA32));
+ }
+ }
+ return 0;
+}
+#endif
diff --git a/test/test_images/audio.png b/test/test_images/audio.png
new file mode 100644
index 0000000..01c0611
--- /dev/null
+++ b/test/test_images/audio.png
Binary files differ
diff --git a/test/test_images/bg.png b/test/test_images/bg.png
new file mode 100644
index 0000000..3ca990a
--- /dev/null
+++ b/test/test_images/bg.png
Binary files differ
diff --git a/test/test_images/bulb.png b/test/test_images/bulb.png
new file mode 100644
index 0000000..757e599
--- /dev/null
+++ b/test/test_images/bulb.png
Binary files differ
diff --git a/test/test_images/cal.png b/test/test_images/cal.png
new file mode 100644
index 0000000..889f329
--- /dev/null
+++ b/test/test_images/cal.png
Binary files differ
diff --git a/test/test_images/calc.png b/test/test_images/calc.png
new file mode 100644
index 0000000..812237b
--- /dev/null
+++ b/test/test_images/calc.png
Binary files differ
diff --git a/test/test_images/folder.png b/test/test_images/folder.png
new file mode 100644
index 0000000..9a32d03
--- /dev/null
+++ b/test/test_images/folder.png
Binary files differ
diff --git a/test/test_images/globe.png b/test/test_images/globe.png
new file mode 100644
index 0000000..b52af4b
--- /dev/null
+++ b/test/test_images/globe.png
Binary files differ
diff --git a/test/test_images/lock.png b/test/test_images/lock.png
new file mode 100644
index 0000000..548b4e9
--- /dev/null
+++ b/test/test_images/lock.png
Binary files differ
diff --git a/test/test_images/mail.png b/test/test_images/mail.png
new file mode 100644
index 0000000..5247b3f
--- /dev/null
+++ b/test/test_images/mail.png
Binary files differ
diff --git a/test/test_images/menu.png b/test/test_images/menu.png
new file mode 100644
index 0000000..ab5d833
--- /dev/null
+++ b/test/test_images/menu.png
Binary files differ
diff --git a/test/test_images/mush.png b/test/test_images/mush.png
new file mode 100644
index 0000000..0a4b0d0
--- /dev/null
+++ b/test/test_images/mush.png
Binary files differ
diff --git a/test/test_images/paper.png b/test/test_images/paper.png
new file mode 100644
index 0000000..f6bbc6d
--- /dev/null
+++ b/test/test_images/paper.png
Binary files differ
diff --git a/test/test_images/sh1.png b/test/test_images/sh1.png
new file mode 100644
index 0000000..c7dcb66
--- /dev/null
+++ b/test/test_images/sh1.png
Binary files differ
diff --git a/test/test_images/sh2.png b/test/test_images/sh2.png
new file mode 100644
index 0000000..e4dee7a
--- /dev/null
+++ b/test/test_images/sh2.png
Binary files differ
diff --git a/test/test_images/sh3.png b/test/test_images/sh3.png
new file mode 100644
index 0000000..f15b892
--- /dev/null
+++ b/test/test_images/sh3.png
Binary files differ
diff --git a/test/test_images/stop.png b/test/test_images/stop.png
new file mode 100644
index 0000000..cc7830e
--- /dev/null
+++ b/test/test_images/stop.png
Binary files differ
diff --git a/test/test_images/tnt.png b/test/test_images/tnt.png
new file mode 100644
index 0000000..14e2266
--- /dev/null
+++ b/test/test_images/tnt.png
Binary files differ
diff --git a/test/ttfonts/cinema.ttf b/test/ttfonts/cinema.ttf
new file mode 100644
index 0000000..326a820
--- /dev/null
+++ b/test/ttfonts/cinema.ttf
Binary files differ
diff --git a/test/ttfonts/grunge.ttf b/test/ttfonts/grunge.ttf
new file mode 100644
index 0000000..deba7da
--- /dev/null
+++ b/test/ttfonts/grunge.ttf
Binary files differ
diff --git a/test/ttfonts/morpheus.ttf b/test/ttfonts/morpheus.ttf
new file mode 100644
index 0000000..46e19a2
--- /dev/null
+++ b/test/ttfonts/morpheus.ttf
Binary files differ
diff --git a/test/ttfonts/notepad.ttf b/test/ttfonts/notepad.ttf
new file mode 100644
index 0000000..4e165ce
--- /dev/null
+++ b/test/ttfonts/notepad.ttf
Binary files differ