summaryrefslogtreecommitdiff
path: root/test/imlib2_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/imlib2_test.c')
-rw-r--r--test/imlib2_test.c273
1 files changed, 0 insertions, 273 deletions
diff --git a/test/imlib2_test.c b/test/imlib2_test.c
deleted file mode 100644
index 68d01aa..0000000
--- a/test/imlib2_test.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/* include X11 stuff */
-#include <X11/Xlib.h>
-/* include Imlib2 stuff */
-#include <Imlib2.h>
-/* sprintf include */
-#include <stdio.h>
-
-/* some globals for our window & X display */
-Display *disp;
-Window win;
-Visual *vis;
-Colormap cm;
-int depth;
-
-/* the program... */
-int
-main(int argc, char **argv)
-{
- /* events we get from X */
- XEvent ev;
-
- /* areas to update */
- Imlib_Updates updates, current_update;
-
- /* our virtual framebuffer image we draw into */
- Imlib_Image buffer;
-
- /* a font */
- Imlib_Font font;
-
- /* our color range */
- Imlib_Color_Range range;
-
- /* our mouse x, y coordinates */
- int mouse_x = 0, mouse_y = 0;
-
- /* connect to X */
- disp = XOpenDisplay(NULL);
- /* get default visual , colormap etc. you could ask imlib2 for what it */
- /* thinks is the best, but this example is intended to be simple */
- vis = DefaultVisual(disp, DefaultScreen(disp));
- depth = DefaultDepth(disp, DefaultScreen(disp));
- cm = DefaultColormap(disp, DefaultScreen(disp));
- /* create a window 640x480 */
- win = XCreateSimpleWindow(disp, DefaultRootWindow(disp),
- 0, 0, 640, 480, 0, 0, 0);
- /* tell X what events we are interested in */
- XSelectInput(disp, win, ButtonPressMask | ButtonReleaseMask |
- PointerMotionMask | ExposureMask);
- /* show the window */
- XMapWindow(disp, win);
- /* set our cache to 2 Mb so it doesnt have to go hit the disk as long as */
- /* the images we use use less than 2Mb of RAM (that is uncompressed) */
- imlib_set_cache_size(2048 * 1024);
- /* set the font cache to 512Kb - again to avoid re-loading */
- imlib_set_font_cache_size(512 * 1024);
- /* add the ./ttfonts dir to our font path - you'll want a notepad.ttf */
- /* in that dir for the text to display */
- imlib_add_path_to_font_path("./ttfonts");
- /* set the maximum number of colors to allocate for 8bpp and less to 128 */
- imlib_set_color_usage(128);
- /* dither for depths < 24bpp */
- imlib_context_set_dither(1);
- /* set the display , visual, colormap and drawable we are using */
- imlib_context_set_display(disp);
- imlib_context_set_visual(vis);
- imlib_context_set_colormap(cm);
- imlib_context_set_drawable(win);
- /* infinite event loop */
- for (;;)
- {
- /* image variable */
- Imlib_Image image;
-
- /* width and height values */
- int w, h, text_w, text_h;
-
- /* init our updates to empty */
- updates = imlib_updates_init();
- /* while there are events form X - handle them */
- do
- {
- XNextEvent(disp, &ev);
- switch (ev.type)
- {
- case Expose:
- /* window rectangle was exposed - add it to the list of */
- /* rectangles we need to re-render */
- updates = imlib_update_append_rect(updates,
- ev.xexpose.x,
- ev.xexpose.y,
- ev.xexpose.width,
- ev.xexpose.height);
- break;
- case ButtonPress:
- /* if we click anywhere in the window, exit */
- exit(0);
- break;
- case MotionNotify:
- /* if the mouse moves - note it */
- /* add a rectangle update for the new mouse position */
- image = imlib_load_image("./test_images/mush.png");
- imlib_context_set_image(image);
- w = imlib_image_get_width();
- h = imlib_image_get_height();
- imlib_context_set_image(image);
- imlib_free_image();
- /* the old position - so we wipe over where it used to be */
- updates = imlib_update_append_rect(updates,
- mouse_x - (w / 2),
- mouse_y - (h / 2), w, h);
- font = imlib_load_font("notepad/30");
- if (font)
- {
- char text[4096];
-
- imlib_context_set_font(font);
- sprintf(text, "Mouse is at %i, %i", mouse_x, mouse_y);
- imlib_get_text_size(text, &text_w, &text_h);
- imlib_free_font();
- updates = imlib_update_append_rect(updates,
- 320 - (text_w / 2),
- 240 - (text_h / 2),
- text_w, text_h);
- }
-
- mouse_x = ev.xmotion.x;
- mouse_y = ev.xmotion.y;
- /* the new one */
- updates = imlib_update_append_rect(updates,
- mouse_x - (w / 2),
- mouse_y - (h / 2), w, h);
- font = imlib_load_font("notepad/30");
- if (font)
- {
- char text[4096];
-
- imlib_context_set_font(font);
- sprintf(text, "Mouse is at %i, %i", mouse_x, mouse_y);
- imlib_get_text_size(text, &text_w, &text_h);
- imlib_free_font();
- updates = imlib_update_append_rect(updates,
- 320 - (text_w / 2),
- 240 - (text_h / 2),
- text_w, text_h);
- }
- default:
- /* any other events - do nothing */
- break;
- }
- }
- while (XPending(disp));
-
- /* no more events for now ? ok - idle time so lets draw stuff */
-
- /* take all the little rectangles to redraw and merge them into */
- /* something sane for rendering */
- updates = imlib_updates_merge_for_rendering(updates, 640, 480);
- for (current_update = updates;
- current_update;
- current_update = imlib_updates_get_next(current_update))
- {
- int up_x, up_y, up_w, up_h;
-
- /* find out where the first update is */
- imlib_updates_get_coordinates(current_update,
- &up_x, &up_y, &up_w, &up_h);
-
- /* create our buffer image for renderign this update */
- buffer = imlib_create_image(up_w, up_h);
-
- /* we can blend stuff now */
- imlib_context_set_blend(1);
-
- /* fill the window background */
- /* load the background image - you'll need to have some images */
- /* in ./test_images lying around for this to actually work */
- image = imlib_load_image("./test_images/bg.png");
- /* we're working with this image now */
- imlib_context_set_image(image);
- /* get its size */
- w = imlib_image_get_width();
- h = imlib_image_get_height();
- /* now we want to work with the buffer */
- imlib_context_set_image(buffer);
- /* if the iimage loaded */
- if (image)
- {
- /* blend image onto the buffer and scale it to 640x480 */
- imlib_blend_image_onto_image(image, 0,
- 0, 0, w, h,
- -up_x, -up_y, 640, 480);
- /* working with the loaded image */
- imlib_context_set_image(image);
- /* free it */
- imlib_free_image();
- }
-
- /* draw an icon centered around the mouse position */
- image = imlib_load_image("./test_images/mush.png");
- imlib_context_set_image(image);
- w = imlib_image_get_width();
- h = imlib_image_get_height();
- imlib_context_set_image(buffer);
- if (image)
- {
- imlib_blend_image_onto_image(image, 0,
- 0, 0, w, h,
- mouse_x - (w / 2) - up_x,
- mouse_y - (h / 2) - up_y, w, h);
- imlib_context_set_image(image);
- imlib_free_image();
- }
-
- /* draw a gradient on top of things at the top left of the window */
- /* create a range */
- range = imlib_create_color_range();
- imlib_context_set_color_range(range);
- /* add white opaque as the first color */
- imlib_context_set_color(255, 255, 255, 255);
- imlib_add_color_to_color_range(0);
- /* add an orange color, semi-transparent 10 units from the first */
- imlib_context_set_color(255, 200, 10, 100);
- imlib_add_color_to_color_range(10);
- /* add black, fully transparent at the end 20 units away */
- imlib_context_set_color(0, 0, 0, 0);
- imlib_add_color_to_color_range(20);
- /* draw the range */
- imlib_context_set_image(buffer);
- imlib_image_fill_color_range_rectangle(-up_x, -up_y, 128, 128,
- -45.0);
- /* free it */
- imlib_free_color_range();
-
- /* draw text - centered with the current mouse x, y */
- font = imlib_load_font("notepad/30");
- if (font)
- {
- char text[4096];
-
- /* set the current font */
- imlib_context_set_font(font);
- /* set the image */
- imlib_context_set_image(buffer);
- /* set the color (black) */
- imlib_context_set_color(0, 0, 0, 255);
- /* print text to display in the buffer */
- sprintf(text, "Mouse is at %i, %i", mouse_x, mouse_y);
- /* query the size it will be */
- imlib_get_text_size(text, &text_w, &text_h);
- /* draw it */
- imlib_text_draw(320 - (text_w / 2) - up_x,
- 240 - (text_h / 2) - up_y, text);
- /* free the font */
- imlib_free_font();
- }
-
- /* dont blend the image onto the drawable - slower */
- imlib_context_set_blend(0);
- /* set the buffer image as our current image */
- imlib_context_set_image(buffer);
- /* render the image at 0, 0 */
- imlib_render_image_on_drawable(up_x, up_y);
- /* don't need that temproary buffer image anymore */
- imlib_free_image();
- }
- /* if we had updates - free them */
- if (updates)
- imlib_updates_free(updates);
- /* loop again waiting for events */
- }
- return 0;
-}