@@ -1,6 +1,6 @@ | |||||
# $Id$ | # $Id$ | ||||
SUBDIRS = kernel cucul caca src test tools cpp doc | |||||
SUBDIRS = kernel cucul caca src test tools cxx doc | |||||
DIST_SUBDIRS = $(SUBDIRS) autotools debian msvc | DIST_SUBDIRS = $(SUBDIRS) autotools debian msvc | ||||
EXTRA_DIST = NOTES COPYING.GPL COPYING.LGPL bootstrap build-dos build-kernel build-win32 caca-config.in common.h libcaca.spec | EXTRA_DIST = NOTES COPYING.GPL COPYING.LGPL bootstrap build-dos build-kernel build-win32 caca-config.in common.h libcaca.spec | ||||
@@ -54,8 +54,8 @@ AC_ARG_ENABLE(vga, | |||||
[ --enable-vga VGA support (default disabled)]) | [ --enable-vga VGA support (default disabled)]) | ||||
dnl language bindings | dnl language bindings | ||||
AC_ARG_ENABLE(cpp, | |||||
[ --enable-cpp C++ bindings (default disabled)]) | |||||
AC_ARG_ENABLE(cxx, | |||||
[ --enable-cxx C++ bindings (default disabled)]) | |||||
dnl example programs features | dnl example programs features | ||||
AC_ARG_ENABLE(imlib2, | AC_ARG_ENABLE(imlib2, | ||||
@@ -247,11 +247,11 @@ CFLAGS="${CFLAGS} -g -O2 -fno-strength-reduce -fomit-frame-pointer" | |||||
CFLAGS="${CFLAGS} -Wall -Wpointer-arith -Wcast-align -Wcast-qual -Wstrict-prototypes -Waggregate-return -Wmissing-prototypes -Wnested-externs -Wsign-compare" | CFLAGS="${CFLAGS} -Wall -Wpointer-arith -Wcast-align -Wcast-qual -Wstrict-prototypes -Waggregate-return -Wmissing-prototypes -Wnested-externs -Wsign-compare" | ||||
# Build the C++ bindings? | # Build the C++ bindings? | ||||
ac_cv_my_have_cpp="no" | |||||
if test "${enable_cpp}" = "yes"; then | |||||
ac_cv_my_have_cpp="yes" | |||||
ac_cv_my_have_cxx="no" | |||||
if test "${enable_cxx}" = "yes"; then | |||||
ac_cv_my_have_cxx="yes" | |||||
fi | fi | ||||
AM_CONDITIONAL(USE_CPP, test "${ac_cv_my_have_cpp}" = "yes") | |||||
AM_CONDITIONAL(USE_CXX, test "${ac_cv_my_have_cxx}" = "yes") | |||||
# Build cacaserver? | # Build cacaserver? | ||||
ac_cv_my_have_fcntl="no" | ac_cv_my_have_fcntl="no" | ||||
@@ -316,7 +316,7 @@ AC_CONFIG_FILES([ | |||||
src/Makefile | src/Makefile | ||||
test/Makefile | test/Makefile | ||||
tools/Makefile | tools/Makefile | ||||
cpp/Makefile | |||||
cxx/Makefile | |||||
doc/Makefile | doc/Makefile | ||||
autotools/Makefile | autotools/Makefile | ||||
debian/Makefile | debian/Makefile | ||||
@@ -0,0 +1,24 @@ | |||||
# $Id: Makefile.am 552 2006-04-13 16:10:16Z jylam $ | |||||
AM_CPPFLAGS = -I$(top_srcdir)/cucul -I$(top_srcdir)/caca | |||||
if USE_CXX | |||||
include_HEADERS = cucul++.h caca++.h | |||||
lib_LTLIBRARIES = libcucul++.la libcaca++.la | |||||
endif | |||||
libcucul___la_SOURCES = cucul++.cpp cucul++.h | |||||
libcucul___la_LDFLAGS = -no-undefined -version-info @LT_VERSION@ | |||||
libcucul___la_LIBADD = ../cucul/libcucul.la | |||||
libcaca___la_SOURCES = caca++.cpp caca++.h | |||||
libcaca___la_LDFLAGS = -no-undefined -version-info @LT_VERSION@ | |||||
libcaca___la_LIBADD = ../caca/libcaca.la | |||||
if USE_CXX | |||||
noinst_PROGRAMS = cpptest | |||||
endif | |||||
cpptest_SOURCES = cpptest.cpp | |||||
cpptest_LDADD = libcaca++.la libcucul++.la ../caca/libcaca.la ../cucul/libcucul.la @CACA_LIBS@ | |||||
@@ -0,0 +1,97 @@ | |||||
/* | |||||
* libcaca++ C++ bindings for libcaca | |||||
* Copyright (c) 2006 Jean-Yves Lamoureux <jylam@lnxscene.org> | |||||
* All Rights Reserved | |||||
* | |||||
* $Id$ | |||||
* | |||||
* This library 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. | |||||
*/ | |||||
/* | |||||
* This file contains the main functions used by \e libcaca++ applications to | |||||
* initialise the library, get the screen properties, set the framerate and | |||||
* so on. | |||||
*/ | |||||
#include "caca++.h" | |||||
Caca::Caca(Cucul *cv) | |||||
{ | |||||
dp = caca_create_display(cv->get_cucul_canvas_t()); | |||||
if(!dp) | |||||
throw -1; | |||||
} | |||||
Caca::~Caca() | |||||
{ | |||||
caca_free_display(dp); | |||||
} | |||||
void Caca::Attach(Cucul *cv) | |||||
{ | |||||
dp = caca_create_display(cv->get_cucul_canvas_t()); | |||||
if(!dp) | |||||
throw -1; | |||||
} | |||||
void Caca::Detach() | |||||
{ | |||||
caca_free_display(dp); | |||||
} | |||||
void Caca::setDelay(unsigned int d) | |||||
{ | |||||
caca_set_delay(dp, d); | |||||
} | |||||
void Caca::Display() | |||||
{ | |||||
caca_refresh_display(dp); | |||||
} | |||||
unsigned int Caca::getRendertime() | |||||
{ | |||||
return caca_get_rendertime(dp); | |||||
} | |||||
unsigned int Caca::getWidth() | |||||
{ | |||||
return caca_get_display_width(dp); | |||||
} | |||||
unsigned int Caca::getHeight() | |||||
{ | |||||
return caca_get_display_height(dp); | |||||
} | |||||
int Caca::setTitle(char const *s) | |||||
{ | |||||
return caca_set_display_title(dp, s); | |||||
} | |||||
int Caca::getEvent(unsigned int g, Event *n, int aa) | |||||
{ | |||||
return caca_get_event(dp, g, &n->e, aa); | |||||
} | |||||
unsigned int Caca::getMouseX() | |||||
{ | |||||
return caca_get_mouse_x(dp); | |||||
} | |||||
unsigned int Caca::getMouseY() | |||||
{ | |||||
return caca_get_mouse_x(dp); | |||||
} | |||||
void Caca::setMouse(int v) | |||||
{ | |||||
caca_set_mouse(dp, v); | |||||
} | |||||
@@ -0,0 +1,76 @@ | |||||
/* | |||||
* libcaca++ C++ bindings for libcaca | |||||
* Copyright (c) 2006 Jean-Yves Lamoureux <jylam@lnxscene.org> | |||||
* All Rights Reserved | |||||
* | |||||
* $Id$ | |||||
* | |||||
* This library 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. | |||||
*/ | |||||
/** \file caca++.h | |||||
* \version \$Id$ | |||||
* \author Jean-Yves Lamoureux <jylam@lnxscene.org> | |||||
* \brief The \e libcaca++ public header. | |||||
* | |||||
* This header contains the public types and functions that applications | |||||
* using \e libcaca++ may use. | |||||
*/ | |||||
#ifndef _CACA_PP_H | |||||
#define _CACA_PP_H | |||||
#include <cucul.h> | |||||
#include <caca.h> | |||||
#include <cucul++.h> | |||||
class Event | |||||
{ | |||||
friend class Caca; | |||||
public: | |||||
enum caca_event_type | |||||
{ | |||||
CACA_EVENT_NONE = 0x0000, /**< No event. */ | |||||
CACA_EVENT_KEY_PRESS = 0x0001, /**< A key was pressed. */ | |||||
CACA_EVENT_KEY_RELEASE = 0x0002, /**< A key was released. */ | |||||
CACA_EVENT_MOUSE_PRESS = 0x0004, /**< A mouse button was pressed. */ | |||||
CACA_EVENT_MOUSE_RELEASE = 0x0008, /**< A mouse button was released. */ | |||||
CACA_EVENT_MOUSE_MOTION = 0x0010, /**< The mouse was moved. */ | |||||
CACA_EVENT_RESIZE = 0x0020, /**< The window was resized. */ | |||||
CACA_EVENT_ANY = 0xffff /**< Bitmask for any event. */ | |||||
} type; | |||||
protected: | |||||
caca_event e; | |||||
}; | |||||
class Caca | |||||
{ | |||||
public: | |||||
Caca(); | |||||
Caca(Cucul *cv); | |||||
~Caca(); | |||||
void Attach(Cucul *cv); | |||||
void Detach(); | |||||
void setDelay(unsigned int); | |||||
void Display(); | |||||
unsigned int getRendertime(); | |||||
unsigned int getWidth(); | |||||
unsigned int getHeight(); | |||||
int setTitle(char const *); | |||||
int getEvent(unsigned int, Event*, int); | |||||
unsigned int getMouseX(); | |||||
unsigned int getMouseY(); | |||||
void setMouse(int); | |||||
private: | |||||
caca_display_t *dp; | |||||
}; | |||||
#endif /* _CACA_PP_H */ |
@@ -0,0 +1,12 @@ | |||||
prefix=@prefix@ | |||||
exec_prefix=@exec_prefix@ | |||||
libdir=@libdir@ | |||||
includedir=@includedir@ | |||||
Name: caca++ | |||||
Description: Colour ASCII-Art library C++ bindings | |||||
Version: @VERSION@ | |||||
Requires: cucul++ = @VERSION@ | |||||
Conflicts: | |||||
Libs: -L${libdir} -lcaca -lcucul -lcucul++ | |||||
Cflags: -I${includedir} |
@@ -0,0 +1,103 @@ | |||||
/* | |||||
* cpptest libcaca++ rendering test | |||||
* Copyright (c) 2006 Jean-Yves Lamoureux <jylam@lnxscene.org> | |||||
* 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 <iostream> | |||||
#include <cucul++.h> | |||||
#include <caca++.h> | |||||
using namespace std; | |||||
static char const *pig[]= { | |||||
" ", | |||||
" _ ", | |||||
" _._ _..._ .-', _.._(`)) ", | |||||
" '-. ` ' /-._.-' ',/ ", | |||||
" ) \\ '. ", | |||||
" / _ _ | \\ ", | |||||
" | a a / | ", | |||||
" \\ .-. ; " , | |||||
" '-('' ).-' ,' ; ", | |||||
" '-; | .' ", | |||||
" \\ \\ / ", | |||||
" | 7 .__ _.-\\ \\ ", | |||||
" | | | ``/ /` / ", | |||||
" jgs /,_| | /,_/ / ", | |||||
" /,_/ '`-' ", | |||||
" ", | |||||
NULL | |||||
}; | |||||
int main(int argc, char *argv[]) | |||||
{ | |||||
Cucul *qq; | |||||
Caca *kk; | |||||
Event ev; | |||||
int x = 0, y = 0, ix = 1, iy = 1; | |||||
try { | |||||
qq = new Cucul(); | |||||
} | |||||
catch (int e) { | |||||
cerr << "Error while initializing cucul (" << e << ")" << endl; | |||||
return -1; | |||||
} | |||||
try { | |||||
kk = new Caca(qq); | |||||
} | |||||
catch(int e) { | |||||
cerr << "Error while attaching cucul to caca (" << e << ")" << endl; | |||||
return -1; | |||||
} | |||||
kk->setDelay(20000); | |||||
while(!kk->getEvent(ev.CACA_EVENT_KEY_PRESS, &ev, 0)) { | |||||
/* Draw pig */ | |||||
qq->setColor(CUCUL_COLOR_LIGHTMAGENTA, CUCUL_COLOR_BLACK); | |||||
for(int i = 0; pig[i]; i++) | |||||
qq->putStr(x, y+i, (char*)pig[i]); | |||||
/* printf works */ | |||||
qq->setColor(CUCUL_COLOR_LIGHTBLUE, CUCUL_COLOR_BLACK); | |||||
qq->Printf(30,15, "Powered by libcaca %s", VERSION); | |||||
/* Blit */ | |||||
kk->Display(); | |||||
x+=ix; | |||||
y+=iy; | |||||
if(x>=(qq->getWidth()-35) || x<0 ) | |||||
ix=-ix; | |||||
if(y>=(qq->getHeight()-15) || y<0 ) | |||||
iy=-iy; | |||||
} | |||||
delete kk; | |||||
delete qq; | |||||
return 0; | |||||
} |
@@ -0,0 +1,338 @@ | |||||
/* | |||||
* libcucul++ C++ bindings for libcucul | |||||
* Copyright (c) 2006 Jean-Yves Lamoureux <jylam@lnxscene.org> | |||||
* All Rights Reserved | |||||
* | |||||
* $Id$ | |||||
* | |||||
* This library 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. | |||||
*/ | |||||
/* | |||||
* This file contains the main functions used by \e libcucul++ applications | |||||
* to initialise a drawing context. | |||||
*/ | |||||
#include "config.h" | |||||
#include <stdio.h> // BUFSIZ | |||||
#include <stdarg.h> // va_* | |||||
#include "cucul++.h" | |||||
Cucul::Cucul() | |||||
{ | |||||
cv = cucul_create_canvas(0, 0); | |||||
if(!cv) | |||||
throw -1; | |||||
} | |||||
Cucul::Cucul(int width, int height) | |||||
{ | |||||
cv = cucul_create_canvas(width, height); | |||||
if(!cv) throw -1; | |||||
} | |||||
Cucul::Cucul(Buffer *b, char const *format) | |||||
{ | |||||
cv = cucul_import_canvas(b->get_buffer(), format); | |||||
if(!cv) throw -1; | |||||
} | |||||
Cucul::~Cucul() | |||||
{ | |||||
if(cv) | |||||
cucul_free_canvas(cv); | |||||
} | |||||
cucul_canvas_t *Cucul::get_cucul_canvas_t() | |||||
{ | |||||
return cv; | |||||
} | |||||
void Cucul::setSize(unsigned int width, unsigned int height) | |||||
{ | |||||
cucul_set_canvas_size(cv, width, height); | |||||
} | |||||
unsigned int Cucul::getWidth(void) | |||||
{ | |||||
return cucul_get_canvas_width(cv); | |||||
} | |||||
unsigned int Cucul::getHeight(void) | |||||
{ | |||||
return cucul_get_canvas_height(cv); | |||||
} | |||||
void Cucul::setColor(unsigned int f, unsigned int b) | |||||
{ | |||||
cucul_set_color(cv, f, b); | |||||
} | |||||
char const * Cucul::getColorName(unsigned int color) | |||||
{ | |||||
return cucul_get_color_name(color); | |||||
} | |||||
void Cucul::putChar(int x, int y, char ch) | |||||
{ | |||||
cucul_putchar(cv, x, y, ch); | |||||
} | |||||
void Cucul::putStr(int x, int y, char *str) | |||||
{ | |||||
cucul_putstr(cv, x, y, str); | |||||
} | |||||
void Cucul::Printf(int x, int y, char const * format,...) | |||||
{ | |||||
char tmp[BUFSIZ]; | |||||
char *buf = tmp; | |||||
va_list args; | |||||
va_start(args, format); | |||||
#if defined(HAVE_VSNPRINTF) | |||||
vsnprintf(buf, getWidth() - x + 1, format, args); | |||||
#else | |||||
vsprintf(buf, format, args); | |||||
#endif | |||||
buf[getWidth() - x] = '\0'; | |||||
va_end(args); | |||||
putStr(x, y, buf); | |||||
} | |||||
void Cucul::Clear(void) | |||||
{ | |||||
cucul_clear_canvas(cv); | |||||
} | |||||
void Cucul::Blit(int x, int y, Cucul* c1, Cucul* c2) | |||||
{ | |||||
cucul_blit(cv, x, y, c1->get_cucul_canvas_t(), c2->get_cucul_canvas_t()); | |||||
} | |||||
void Cucul::Invert() | |||||
{ | |||||
cucul_invert(cv); | |||||
} | |||||
void Cucul::Flip() | |||||
{ | |||||
cucul_flip(cv); | |||||
} | |||||
void Cucul::Flop() | |||||
{ | |||||
cucul_flop(cv); | |||||
} | |||||
void Cucul::Rotate() | |||||
{ | |||||
cucul_rotate(cv); | |||||
} | |||||
void Cucul::drawLine(int x1, int y1, int x2, int y2, char const *ch) | |||||
{ | |||||
cucul_draw_line(cv, x1, y1, x2, y2, ch); | |||||
} | |||||
void Cucul::drawPolyline(int const x[], int const y[], int f, char const *ch) | |||||
{ | |||||
cucul_draw_polyline(cv, x, y, f, ch); | |||||
} | |||||
void Cucul::drawThinLine(int x1, int y1, int x2, int y2) | |||||
{ | |||||
cucul_draw_thin_line(cv, x1, y1, x2, y2); | |||||
} | |||||
void Cucul::drawThinPolyline(int const x[], int const y[], int f) | |||||
{ | |||||
cucul_draw_thin_polyline(cv, x, y, f); | |||||
} | |||||
void Cucul::drawCircle(int x, int y, int d, char const *ch) | |||||
{ | |||||
cucul_draw_circle(cv, x, y, d, ch); | |||||
} | |||||
void Cucul::drawEllipse(int x, int y, int d1, int d2, char const *ch) | |||||
{ | |||||
cucul_draw_ellipse(cv, x, y, d1, d2, ch); | |||||
} | |||||
void Cucul::drawThinEllipse(int x, int y, int d1, int d2) | |||||
{ | |||||
cucul_draw_thin_ellipse(cv, x, y, d1, d2); | |||||
} | |||||
void Cucul::fillEllipse(int x, int y, int d1, int d2, char const *ch) | |||||
{ | |||||
cucul_fill_ellipse(cv, x, y, d1, d2, ch); | |||||
} | |||||
void Cucul::drawBox(int x, int y, int w, int h, char const *ch) | |||||
{ | |||||
cucul_draw_box(cv, x, y, w, h, ch); | |||||
} | |||||
void Cucul::drawThinBox(int x, int y, int w, int h) | |||||
{ | |||||
cucul_draw_thin_box(cv, x, y, w, h); | |||||
} | |||||
void Cucul::fillBox(int x, int y, int w, int h, char const *ch) | |||||
{ | |||||
cucul_fill_box(cv, x, y, w, h, ch); | |||||
} | |||||
void Cucul::drawTriangle(int x1, int y1, int x2, int y2, int x3, int y3, char const *ch) | |||||
{ | |||||
cucul_draw_triangle(cv, x1, y1, x2, y2, x3, y3, ch); | |||||
} | |||||
void Cucul::drawThinTriangle(int x1, int y1, int x2, int y2, int x3, int y3) | |||||
{ | |||||
cucul_draw_thin_triangle(cv, x1, y1, x2, y2, x3, y3); | |||||
} | |||||
void Cucul::fillTriangle(int x1, int y1, int x2, int y2, int x3, int y3, const char *ch) | |||||
{ | |||||
cucul_fill_triangle(cv, x1, y1, x2, y2, x3, y3, ch); | |||||
} | |||||
int Cucul::Rand(int min, int max) | |||||
{ | |||||
return cucul_rand(min, max); | |||||
} | |||||
Dither::Dither(unsigned int v1, unsigned int v2, unsigned int v3, unsigned int v4, unsigned int v5, unsigned int v6, unsigned int v7, unsigned int v8) | |||||
{ | |||||
dither = cucul_create_dither(v1, v2, v3, v4, v5, v6, v7, v8); | |||||
} | |||||
Dither::~Dither() | |||||
{ | |||||
cucul_free_dither(dither); | |||||
} | |||||
void Dither::setPalette(unsigned int r[], unsigned int g[], unsigned int b[], unsigned int a[]) | |||||
{ | |||||
cucul_set_dither_palette(dither, r, g, b, a); | |||||
} | |||||
void Dither::setBrightness(float f) | |||||
{ | |||||
cucul_set_dither_brightness(dither, f); | |||||
} | |||||
void Dither::setGamma(float f) | |||||
{ | |||||
cucul_set_dither_gamma(dither, f); | |||||
} | |||||
void Dither::setContrast(float f) | |||||
{ | |||||
cucul_set_dither_contrast(dither, f); | |||||
} | |||||
void Dither::setInvert(int i) | |||||
{ | |||||
cucul_set_dither_invert(dither, i); | |||||
} | |||||
void Dither::setAntialias(char const *cv) | |||||
{ | |||||
cucul_set_dither_antialias(dither, cv); | |||||
} | |||||
char const *const * Dither::getAntialiasList() | |||||
{ | |||||
return cucul_get_dither_antialias_list(dither); | |||||
} | |||||
void Dither::setColor(char const *cv) | |||||
{ | |||||
cucul_set_dither_color(dither, cv); | |||||
} | |||||
char const *const * Dither::getColorList() | |||||
{ | |||||
return cucul_get_dither_color_list(dither); | |||||
} | |||||
void Dither::setCharset(char const *cv) | |||||
{ | |||||
cucul_set_dither_charset(dither, cv); | |||||
} | |||||
char const *const * Dither::getCharsetList() | |||||
{ | |||||
return cucul_get_dither_charset_list(dither); | |||||
} | |||||
void Dither::setMode(char const *cv) | |||||
{ | |||||
cucul_set_dither_mode(dither, cv); | |||||
} | |||||
char const *const * Dither::getModeList(void) | |||||
{ | |||||
return cucul_get_dither_mode_list(dither); | |||||
} | |||||
void Dither::Bitmap(Cucul *cv, int x, int y, int w, int h, void *v) | |||||
{ | |||||
cucul_dither_bitmap(cv->get_cucul_canvas_t(), x, y, w, h, dither, v); | |||||
} | |||||
Font::Font(void const *s, unsigned int v) | |||||
{ | |||||
font = cucul_load_font(s, v); | |||||
if(!font) throw -1; | |||||
} | |||||
char const *const * Font::getList(void) | |||||
{ | |||||
return cucul_get_font_list(); | |||||
} | |||||
unsigned int Font::getWidth() | |||||
{ | |||||
return cucul_get_font_width(font); | |||||
} | |||||
unsigned int Font::getHeight() | |||||
{ | |||||
return cucul_get_font_height(font); | |||||
} | |||||
void Font::renderCanvas(Cucul *cv, unsigned char *buf, unsigned int x, unsigned int y, unsigned int w) | |||||
{ | |||||
cucul_render_canvas(cv->get_cucul_canvas_t(), font, buf, x, y, w); | |||||
} | |||||
Font::~Font() | |||||
{ | |||||
cucul_free_font(font); | |||||
} | |||||
Buffer::Buffer(Cucul *cv, char const *buf) | |||||
{ | |||||
buffer = cucul_export_canvas(cv->get_cucul_canvas_t(), buf); | |||||
if(!buffer) throw -1; | |||||
} | |||||
char const *const * Buffer::getExportList(void) | |||||
{ | |||||
return cucul_get_export_list(); | |||||
} | |||||
cucul_buffer *Buffer::get_buffer(void) | |||||
{ | |||||
return buffer; | |||||
} |
@@ -0,0 +1,139 @@ | |||||
/* | |||||
* libcucul++ C++ bindings for libcucul | |||||
* Copyright (c) 2006 Jean-Yves Lamoureux <jylam@lnxscene.org> | |||||
* All Rights Reserved | |||||
* | |||||
* $Id$ | |||||
* | |||||
* This library 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. | |||||
*/ | |||||
/** \file cucul++.h | |||||
* \version \$Id$ | |||||
* \author Jean-Yves Lamoureux <jylam@lnxscene.org> | |||||
* \brief The \e libcucul++ public header. | |||||
* | |||||
* This header contains the public types and functions that applications | |||||
* using \e libcucul++ may use. | |||||
*/ | |||||
#ifndef _CUCUL_PP_H | |||||
#define _CUCUL_PP_H | |||||
#include <cucul.h> | |||||
class Cucul; | |||||
/* Ugly, I know */ | |||||
class Font | |||||
{ | |||||
public: | |||||
~Font(); | |||||
Font(void const *, unsigned int); | |||||
char const *const * getList(void); | |||||
unsigned int getWidth(); | |||||
unsigned int getHeight(); | |||||
void renderCanvas(Cucul *, unsigned char *, unsigned int, unsigned int, unsigned int); | |||||
private: | |||||
cucul_font *font; | |||||
}; | |||||
class Dither | |||||
{ | |||||
public: | |||||
Dither(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int); | |||||
~Dither(); | |||||
void setPalette(unsigned int r[], unsigned int g[], unsigned int b[], unsigned int a[]); | |||||
void setBrightness(float); | |||||
void setGamma(float); | |||||
void setContrast(float); | |||||
void setInvert(int); | |||||
void setAntialias(char const *); | |||||
char const *const * getAntialiasList(); | |||||
void setColor(char const *); | |||||
char const *const * getColorList(); | |||||
void setCharset(char const *); | |||||
char const *const * getCharsetList(); | |||||
void setMode(char const *); | |||||
char const *const * getModeList(); | |||||
void Bitmap(Cucul *, int, int, int, int, void *); | |||||
private: | |||||
cucul_dither *dither; | |||||
}; | |||||
class Buffer | |||||
{ | |||||
friend class Cucul; | |||||
public: | |||||
Buffer(Cucul *cv, char const *); | |||||
~Buffer(); | |||||
char const *const * getExportList(void); | |||||
protected: | |||||
cucul_buffer *get_buffer(); | |||||
private: | |||||
cucul_buffer *buffer; | |||||
}; | |||||
class Cucul | |||||
{ | |||||
friend class Caca; | |||||
friend class Dither; | |||||
friend class Font; | |||||
friend class Buffer; | |||||
public: | |||||
Cucul(); | |||||
Cucul(int width, int height); | |||||
Cucul(Buffer *, char const *); | |||||
~Cucul(); | |||||
void setSize(unsigned int w, unsigned int h); | |||||
unsigned int getWidth(void); | |||||
unsigned int getHeight(void); | |||||
void setColor(unsigned int f, unsigned int b); | |||||
char const * getColorName(unsigned int color); | |||||
void Printf(int x , int y , char const * format,...); | |||||
void putChar(int x, int y, char ch); | |||||
void putStr(int x, int y, char *str); | |||||
void Clear(void); | |||||
void Blit(int, int, Cucul* c1, Cucul* c2); | |||||
void Invert(); | |||||
void Flip(); | |||||
void Flop(); | |||||
void Rotate(); | |||||
void drawLine(int, int, int, int, char const *); | |||||
void drawPolyline(int const x[], int const y[], int, char const *); | |||||
void drawThinLine(int, int, int, int); | |||||
void drawThinPolyline(int const x[], int const y[], int); | |||||
void drawCircle(int, int, int, char const *); | |||||
void drawEllipse(int, int, int, int, char const *); | |||||
void drawThinEllipse(int, int, int, int); | |||||
void fillEllipse(int, int, int, int, char const *); | |||||
void drawBox(int, int, int, int, char const *); | |||||
void drawThinBox(int, int, int, int); | |||||
void fillBox(int, int, int, int, char const *); | |||||
void drawTriangle(int, int, int, int, int, int, char const *); | |||||
void drawThinTriangle(int, int, int, int, int, int); | |||||
void fillTriangle(int, int, int, int, int, int, char const *); | |||||
int Rand(int, int); | |||||
protected: | |||||
cucul_canvas_t *get_cucul_canvas_t(); | |||||
private: | |||||
cucul_canvas_t *cv; | |||||
}; | |||||
#endif /* _CUCUL_PP_H */ |
@@ -0,0 +1,12 @@ | |||||
prefix=@prefix@ | |||||
exec_prefix=@exec_prefix@ | |||||
libdir=@libdir@ | |||||
includedir=@includedir@ | |||||
Name: cucul++ | |||||
Description: Canvas for ultrafast compositing of Unicode letters C++ binding | |||||
Version: @VERSION@ | |||||
Requires: | |||||
Conflicts: | |||||
Libs: -L${libdir} -lcucul -lcaca | |||||
Cflags: -I${includedir} |