diff --git a/cucul/canvas.c b/cucul/canvas.c index eefcab2..d2b5254 100644 --- a/cucul/canvas.c +++ b/cucul/canvas.c @@ -390,6 +390,9 @@ int cucul_blit(cucul_canvas_t *dst, int x, int y, return -1; } + x -= src->frames[src->frame].handlex; + y -= src->frames[src->frame].handley; + starti = x < 0 ? -x : 0; startj = y < 0 ? -y : 0; endi = (x + src->width >= dst->width) ? dst->width - x : src->width; diff --git a/test/Makefile.am b/test/Makefile.am index 1ad6f0b..7cfe604 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -2,7 +2,10 @@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/cucul -I$(top_srcdir)/caca -DDATADIR=\"$(pkgdatadir)\" -noinst_PROGRAMS = colors demo demo0 dithering event export font frames fullwidth gamma hsv input spritedit font2tga text transform truecolor unicode import +noinst_PROGRAMS = blit colors demo demo0 dithering event export font frames fullwidth gamma hsv input spritedit font2tga text transform truecolor unicode import + +blit_SOURCES = blit.c +blit_LDADD = ../caca/libcaca.la ../cucul/libcucul.la colors_SOURCES = colors.c colors_LDADD = ../caca/libcaca.la ../cucul/libcucul.la diff --git a/test/blit.c b/test/blit.c new file mode 100644 index 0000000..503099b --- /dev/null +++ b/test/blit.c @@ -0,0 +1,73 @@ +/* + * unicode libcaca Unicode rendering test program + * Copyright (c) 2006 Sam Hocevar + * All Rights Reserved + * + * $Id$ + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the Do What The Fuck You Want To + * Public License, Version 2, as published by Sam Hocevar. See + * http://sam.zoy.org/wtfpl/COPYING for more details. + */ + +#include "config.h" +#include "common.h" +#if !defined(__KERNEL__) +# if defined(HAVE_INTTYPES_H) +# include +# endif +# include +# include +#endif + +#include "cucul.h" +#include "caca.h" + +static char const pig[] = + " ,__ __,\n" + " \\)`\\_..._/`(/\n" + " .' _ _ '.\n" + " / o\\ /o \\\n" + " | .-.-. | _\n" + " | /() ()\\ | (,`)\n" + " / \\ '-----' / \\ .'\n" + "| '-..___..-' |\n" + "| |\n" + "| |\n" + "; ;\n" + " \\ / \\ /\n" + " \\-..-/'-'\\-..-/\n" + "jgs\\/\\/ \\/\\/\n"; + +int main(int argc, char *argv[]) +{ + cucul_canvas_t *cv, *sprite; + caca_display_t *dp; + + cv = cucul_create_canvas(0, 0); + dp = caca_create_display(cv); + + sprite = cucul_create_canvas(0, 0); + cucul_set_color_ansi(sprite, CUCUL_LIGHTRED, CUCUL_BLACK); + cucul_import_memory(sprite, pig, strlen(pig), "text"); + cucul_set_canvas_handle(sprite, cucul_get_canvas_width(sprite) / 2, + cucul_get_canvas_height(sprite) / 2); + + cucul_set_color_ansi(cv, CUCUL_WHITE, CUCUL_BLUE); + cucul_putstr(cv, 0, 0, "Centered sprite"); + + cucul_blit(cv, cucul_get_canvas_width(cv) / 2, + cucul_get_canvas_height(cv) / 2, sprite, NULL); + + caca_refresh_display(dp); + + caca_get_event(dp, CACA_EVENT_KEY_PRESS, NULL, -1); + + caca_free_display(dp); + cucul_free_canvas(sprite); + cucul_free_canvas(cv); + + return 0; +} +