source: libcaca/trunk/cpp/cucul++.cpp @ 785

Last change on this file since 785 was 784, checked in by Jean-Yves Lamoureux, 15 years ago
  • Added license in C++ files.
  • Property svn:keywords set to Id
File size: 7.9 KB
Line 
1/*
2 *  libcucul++      C++ bindings for libcucul
3 *  Copyright (c) 2006 Jean-Yves Lamoureux <jylam@lnxscene.org>
4 *                All Rights Reserved
5 *
6 *  $Id: cucul++.cpp 784 2006-04-17 11:06:48Z jylam $
7 *
8 *  This library is free software; you can redistribute it and/or
9 *  modify it under the terms of the Do What The Fuck You Want To
10 *  Public License, Version 2, as published by Sam Hocevar. See
11 *  http://sam.zoy.org/wtfpl/COPYING for more details.
12 */
13/*
14 *  This file contains the main functions used by \e libcucul++ applications
15 *  to initialise a drawing context.
16 */
17
18
19#include "cucul++.h"
20
21Cucul::Cucul()
22{
23    qq = cucul_create(0,0);
24    if(!qq) throw -1;
25}
26Cucul::Cucul(int width, int height)
27{
28    qq = cucul_create(width, height);
29    if(!qq) throw -1;
30}
31Cucul::~Cucul()
32{
33    if(qq) {
34        cucul_free(qq);
35    }
36}
37
38cucul_t *Cucul::get_cucul_t()
39{
40    return qq;
41}
42
43
44
45void Cucul::set_size(unsigned int width, unsigned int height)
46{
47    cucul_set_size (qq, width, height);
48}
49unsigned int Cucul::get_width(void)
50{
51    return cucul_get_width (qq);
52}
53unsigned int Cucul::get_height(void)
54{
55    return cucul_get_height (qq);
56}
57void Cucul::set_color(unsigned int f, unsigned int b)
58{
59    cucul_set_color (qq, f, b);
60}
61char const * Cucul::get_color_name (unsigned int color)
62{
63    return cucul_get_color_name (color);
64}
65void Cucul::putchar (int x, int y, char c)
66{
67    cucul_putchar (qq, x, y, c);
68}
69void Cucul::putstr (int x, int y, char *str)
70{
71    cucul_putstr(qq, x, y, str);
72}
73void    Cucul::printf ( int x , int y , char const * format,...)
74{
75    char tmp[BUFSIZ];
76    char *buf = tmp;
77    va_list args;
78
79    va_start(args, format);
80#if defined(HAVE_VSNPRINTF)
81    vsnprintf(buf, get_width() - x + 1, format, args);
82#else
83    vsprintf(buf, format, args);
84#endif
85    buf[get_width() - x] = '\0';
86    va_end(args);
87
88    putstr(x, y, buf);
89
90}
91
92void    Cucul::clear ()
93{
94    cucul_clear(qq);
95}
96
97void    Cucul::blit ( int x, int y, Cucul* c1, Cucul* c2)
98{
99    cucul_blit(qq, x, y, c1->get_cucul_t(), c2->get_cucul_t());
100}
101
102void    Cucul::invert ()
103{
104    cucul_invert(qq);
105}
106
107void    Cucul::flip ()
108{
109    cucul_flip(qq);
110}
111
112void    Cucul::flop ()
113{
114    cucul_flop(qq);
115}
116
117void    Cucul::rotate ()
118{
119    cucul_rotate(qq);
120}
121
122void    Cucul::draw_line (int x1 , int y1, int x2, int y2, char const *c)
123{
124    cucul_draw_line(qq, x1,y1,x2,y2, c);
125}
126 
127void    Cucul::draw_polyline (int const x[], int const y[], int f, char const *c)
128{
129    cucul_draw_polyline(qq, x, y, f, c);
130}
131 
132void    Cucul::draw_thin_line (int x1 , int y1, int x2, int y2)
133{
134    cucul_draw_thin_line(qq, x1, y1, x2, y2);
135}
136
137void    Cucul::draw_thin_polyline ( int const x[], int const y[], int f)
138{
139    cucul_draw_thin_polyline(qq, x, y, f);
140}
141 
142void    Cucul::draw_circle ( int x, int y, int d, char const *c)
143{
144    cucul_draw_circle(qq, x, y, d, c);
145}
146
147void    Cucul::draw_ellipse ( int x, int y, int d1, int d2, char const *c)
148{
149    cucul_draw_ellipse(qq, x, y, d1, d2, c);
150}
151
152void    Cucul::draw_thin_ellipse ( int x, int y, int d1, int d2)
153{
154    cucul_draw_thin_ellipse(qq, x, y, d1, d2);
155}
156
157void    Cucul::fill_ellipse ( int x, int y, int d1, int d2, char const *c)
158{
159    cucul_fill_ellipse(qq, x, y, d1, d2, c);
160}
161
162void    Cucul::draw_box ( int x, int y, int w, int h, char const *c)
163{
164    cucul_draw_box(qq, x, y, w, h, c);
165}
166 
167void    Cucul::draw_thin_box ( int x, int y, int w, int h)
168{
169    cucul_draw_thin_box(qq, x, y, w, h);
170}
171
172void    Cucul::fill_box ( int x, int y, int w, int h, char const *c)
173{
174    cucul_fill_box(qq, x, y, w, h, c);
175}
176
177void    Cucul::draw_triangle ( int x1, int y1, int x2, int y2, int x3, int y3, char const *c)
178{
179    cucul_draw_triangle(qq, x1, y1, x2, y2, x3, y3, c);
180}
181
182void    Cucul::draw_thin_triangle ( int x1, int y1, int x2, int y2, int x3, int y3)
183{
184    cucul_draw_thin_triangle(qq, x1, y1, x2, y2, x3, y3);
185}
186
187void    Cucul::fill_triangle ( int x1, int y1, int x2, int y2, int x3, int y3, const char *c)
188{
189    cucul_fill_triangle(qq, x1, y1, x2, y2, x3, y3, c);
190}
191
192int     Cucul::rand (int min, int max)
193{
194    return cucul_rand(min, max);
195}
196
197unsigned int    Cucul::sqrt (unsigned int v)
198{
199    return cucul_sqrt(v);
200}
201
202Cucul::Sprite * Cucul::load_sprite (char const *f)
203{
204    Cucul::Sprite *s = new Cucul::Sprite();
205    s->sprite = cucul_load_sprite(f);
206    return s;
207}
208
209int     Cucul::get_sprite_frames (Cucul::Sprite const *s)
210{
211    return cucul_get_sprite_frames(s->sprite);
212}
213
214int     Cucul::get_sprite_width (Cucul::Sprite const *s, int v)
215{
216    return cucul_get_sprite_width(s->sprite, v);
217}
218
219int     Cucul::get_sprite_height (Cucul::Sprite const *s, int v)
220{
221    return cucul_get_sprite_height(s->sprite, v);
222}
223
224int     Cucul::get_sprite_dx (Cucul::Sprite const *s, int v)
225{
226    return cucul_get_sprite_dx(s->sprite, v);
227}
228
229int     Cucul::get_sprite_dy (Cucul::Sprite const *s, int v)
230{
231    return cucul_get_sprite_dy(s->sprite, v);
232}
233
234void    Cucul::draw_sprite ( int x, int y, Cucul::Sprite const *s, int v)
235{
236    cucul_draw_sprite(qq, x, y, s->sprite, v);
237}
238
239void    Cucul::free_sprite (Cucul::Sprite *s)
240{
241    cucul_free_sprite(s->sprite);
242}
243
244Cucul::Dither *         Cucul::create_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)
245{
246    Cucul::Dither *d = new Dither();
247    d->dither = cucul_create_dither(v1,v2,v3,v4,v5,v6,v7,v8);
248    return d;
249}
250
251void    Cucul::set_dither_palette (Cucul::Dither *d, unsigned int r[], unsigned int g[], unsigned int b[], unsigned int a[])
252{
253    cucul_set_dither_palette(d->dither, r, g, b, a);
254}
255
256void    Cucul::set_dither_brightness (Cucul::Dither *d, float f)
257{
258    cucul_set_dither_brightness(d->dither, f);
259}
260
261void    Cucul::set_dither_gamma (Cucul::Dither *d, float f)
262{
263    cucul_set_dither_gamma(d->dither, f);
264}
265
266void    Cucul::set_dither_contrast ( Cucul::Dither *d, float f)
267{
268    cucul_set_dither_contrast(d->dither, f);
269}
270
271void    Cucul::set_dither_invert ( Cucul::Dither *d, int i)
272{
273    cucul_set_dither_invert(d->dither, i);
274}
275
276void    Cucul::set_dither_antialias ( Cucul::Dither *d, char const *c)
277{
278    cucul_set_dither_antialias(d->dither, c);
279}
280 
281char const *const *     Cucul::get_dither_antialias_list ( Cucul::Dither const *d)
282{
283    return cucul_get_dither_antialias_list(d->dither);
284}
285
286void    Cucul::set_dither_color ( Cucul::Dither *d, char const *c)
287{
288    cucul_set_dither_color(d->dither, c);
289}
290
291char const *const *     Cucul::get_dither_color_list ( Cucul::Dither const *d)
292{
293    return cucul_get_dither_color_list(d->dither);
294}
295 
296void    Cucul::set_dither_charset ( Cucul::Dither *d, char const *c)
297{
298    cucul_set_dither_charset(d->dither, c);
299}
300
301char const *const *     Cucul::get_dither_charset_list ( Cucul::Dither const *d)
302{
303    return cucul_get_dither_charset_list(d->dither);
304}
305 
306void    Cucul::set_dither_mode ( Cucul::Dither *d, char const *c)
307{
308    cucul_set_dither_mode(d->dither, c);
309}
310
311char const *const *     Cucul::get_dither_mode_list ( Cucul::Dither const *d)
312{
313    return cucul_get_dither_mode_list(d->dither);
314}
315
316void    Cucul::dither_bitmap ( int x, int y, int w, int h,  Cucul::Dither const *d, void *v)
317{
318    cucul_dither_bitmap(qq, x, y, w, h, d->dither, v);
319}
320
321void    Cucul::free_dither ( Cucul::Dither *d)
322{
323    cucul_free_dither(d->dither);
324}
325
326Cucul::Font *   Cucul::load_font (void const *s, unsigned int v)
327{
328    Cucul::Font *f = new Cucul::Font();
329    f->font = cucul_load_font(s, v);
330    return f;
331}
332
333char const *const *     Cucul::get_font_list (void)
334{
335    return cucul_get_font_list();
336}
337
338unsigned int    Cucul::get_font_width ( Cucul::Font *f)
339{
340    return cucul_get_font_width(f->font);
341}
342
343unsigned int    Cucul::get_font_height ( Cucul::Font *f)
344{
345    return cucul_get_font_height(f->font);
346}
347
348void    Cucul::render_canvas (Cucul::Font *f, unsigned char *c, unsigned int x, unsigned int y, unsigned int w)
349{
350    cucul_render_canvas(qq, f->font, c, x,y,w);
351}
352
353void    Cucul::free_font ( Cucul::Font *f)
354{
355    cucul_free_font(f->font);
356}
357
358Cucul::Buffer *         Cucul::create_export (char const *c)
359{
360    Cucul::Buffer *b = new Cucul::Buffer();
361    b->buffer = cucul_create_export(qq, c);
362    return b;
363}
364
365char const *const *     Cucul::get_export_list (void)
366{
367    return cucul_get_export_list();
368}
Note: See TracBrowser for help on using the repository browser.