hackthelobby/libcaca/examples/spritedit.c

92 lines
2.1 KiB
C

/*
* spritedit sprite editor for libcaca
* Copyright (c) 2003-2012 Sam Hocevar <sam@hocevar.net>
* All Rights Reserved
*
* This program is free software. It comes without any warranty, to
* the extent permitted by applicable law. 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://www.wtfpl.net/ for more details.
*/
#include "config.h"
#if !defined(__KERNEL__)
# include <stdio.h>
# include <string.h>
# include <stdlib.h>
#endif
#include "caca.h"
/* Courtesy of Zashi */
char *guy[] = {
" O_,= \n"
" | \n"
" /\\ \n"
" / / \n",
" O_,= \n"
" | \n"
" /| \n"
" / | \n",
" O_,= \n"
" | \n"
" |\\ \n"
" |/ \n",
" O_,= \n"
" | \n"
" |\\ \n"
" | \\ \n",
};
int main(int argc, char **argv)
{
caca_canvas_t *sprite;
size_t len;
void *buffer;
int i;
/* Create a canvas with 4 frames */
sprite = caca_create_canvas(0, 0);
for(i = 0; i < 3; i++)
caca_create_frame(sprite, 0);
/* Load stuff in all 4 frames */
for(i = 0; i < 4; i++)
{
caca_set_frame(sprite, i);
caca_import_canvas_from_memory(sprite, guy[i], strlen(guy[i]), "utf8");
}
/* Export our sprite in a memory buffer. We could save this to
* disk afterwards. */
buffer = caca_export_canvas_to_memory(sprite, "caca", &len);
/* Free our sprite and reload it from the memory buffer. We could
* load this from disk, too. */
caca_free_canvas(sprite);
sprite = caca_create_canvas(0, 0);
caca_import_canvas_from_memory(sprite, buffer, len, "caca");
free(buffer);
/* Print each sprite frame to stdout */
for(i = 0; i < 4; i++)
{
caca_set_frame(sprite, i);
printf("Frame #%i\n", i);
buffer = caca_export_canvas_to_memory(sprite, "utf8", &len);
fwrite(buffer, len, 1, stdout);
free(buffer);
}
/* Free our sprite */
caca_free_canvas(sprite);
return 0;
}