1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
/*
* cpptest libcaca++ rendering test
* Copyright (c) 2006-2007 Jean-Yves Lamoureux <jylam@lnxscene.org>
* 2009-2010 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://sam.zoy.org/wtfpl/COPYING for more details.
*/
#include <iostream>
#include <cstring>
#include <caca++.h>
using namespace std;
static char const pigstring[] =
" \n"
" _ \n"
" _._ _..._ .-', _.._(`)) \n"
" '-. ` ' /-._.-' ',/ \n"
" ) \\ '. \n"
" / _ _ | \\ \n"
" | a a / | \n"
" \\ .-. ; \n"
" '-('' ).-' ,' ; \n"
" '-; | .' \n"
" \\ \\ / \n"
" | 7 .__ _.-\\ \\ \n"
" | | | ``/ /` / \n"
" jgs /,_| | /,_/ / \n"
" /,_/ '`-' \n";
int main(int argc, char *argv[])
{
Canvas *cv, *pig;
Caca *dp;
int x = 0, y = 0, ix = 1, iy = 1;
try {
cv = new Canvas();
}
catch (int e) {
cerr << "Error while creating canvas (" << e << ")" << endl;
return -1;
}
try {
dp = new Caca(cv);
}
catch(int e) {
cerr << "Error while attaching canvas to display (" << e << ")" << endl;
return -1;
}
try {
// Import buffer into a canvas
pig = new Canvas();
pig->setColorANSI(CACA_LIGHTMAGENTA, CACA_TRANSPARENT);
pig->importFromMemory(pigstring, strlen(pigstring), "text");
}
catch(int e) {
cerr << "Error while importing image (" << e << ")" << endl;
return -1;
}
dp->setDisplayTime(20000);
while(!dp->getEvent(Event::CACA_EVENT_KEY_PRESS, NULL, 0))
{
/* In case of resize ...*/
if((x + pig->getWidth())-1 >= cv->getWidth() || x < 0 )
x = 0;
if((y + pig->getHeight())-1 >= cv->getHeight() || y < 0 )
y = 0;
cv->Clear();
/* Draw pig */
cv->Blit(x, y, pig, NULL);
/* printf works */
cv->setColorANSI(CACA_LIGHTBLUE, CACA_BLACK);
cv->Printf(cv->getWidth() / 2 - 10, cv->getHeight() / 2,
"Powered by libcaca %s", dp->getVersion());
/* Blit */
dp->Display();
x += ix;
y += iy;
if(x + pig->getWidth() >= cv->getWidth() || x < 0 )
ix = -ix;
if(y + pig->getHeight() >= cv->getHeight() || y < 0 )
iy = -iy;
}
delete dp;
delete pig;
delete cv;
return 0;
}
|