source: libcaca/trunk/doc/migrating.dox @ 1369

Last change on this file since 1369 was 1369, checked in by Sam Hocevar, 14 years ago
  • Documentation updates.
  • Property svn:keywords set to Id
File size: 7.1 KB
Line 
1/* $Id: migrating.dox 1369 2006-11-12 18:23:29Z sam $ */
2
3/** \page migrating Migrating from libcaca 0.x to the 1.0 API
4
5 This section will guide you through the migration of a \e libcaca 0.x
6 application to the latest API version.
7
8 \section foo1 Overview
9
10 The most important changes in the 1.0 API of \e libcaca are the
11 \e libcaca / \e libcucul split and the object-oriented design. See these
12 two examples for a rough idea of what changed:
13
14<table border="0"><tr><td valign="top">
15\code
16#include <caca.h>
17
18/* libcaca program - 0.x API */
19int main(void)
20{
21    /* Initialise libcaca */
22    caca_init();
23    /* Set window title */
24    caca_set_window_title("Window");
25    /* Choose drawing colours */
26    caca_set_color(CACA_COLOR_BLACK,
27                   CACA_COLOR_WHITE);
28    /* Draw a string at (0, 0) */
29    caca_putstr(0, 0, "Hello world!");
30    /* Refresh display */
31    caca_refresh();
32    /* Wait for a key press event */
33    caca_wait_event(CACA_EVENT_KEY_PRESS);
34    /* Clean up library */
35    caca_end();
36
37    return 0;
38}
39\endcode
40</td><td>
41\code
42#include <cucul.h>
43#include <caca.h>
44
45/* libcaca program - 1.0 API */
46int main(void)
47{
48    /* Initialise libcaca */
49    cucul_canvas_t *cv;
50    caca_display_t *dp;
51    cv = cucul_create_canvas(0, 0);
52    dp = caca_create_display(cv);
53    /* Set window title */
54    caca_set_display_title(dp, "Window");
55    /* Choose drawing colours */
56    cucul_set_color_ansi(cv, CUCUL_BLACK,
57                             CUCUL_WHITE);
58    /* Draw a string at (0, 0) */
59    cucul_put_str(cv, 0, 0, "Hello world!");
60    /* Refresh display */
61    caca_refresh_display();
62    /* Wait for a key press event */
63    caca_get_event(dp, CACA_EVENT_KEY_PRESS,
64                   NULL, -1);
65    /* Clean up library */
66    caca_free_display(dp);
67    cucul_free_canvas(cv);
68
69    return 0;
70}
71\endcode
72</td></tr></table>
73
74 Note the following important things:
75
76 - Functions now take an object handle as their first argument.
77 - All input/output functions start with \b caca_ and all
78   drawing and text handling functions start with \b cucul_ .
79
80 \section foo2 Migration strategy
81
82 You have two ways to migrate your application to use \e libcaca 1.x:
83
84 - Port your code using the function equivalence list. This is the preferred
85   way because new functions are thread safe and offer much more features
86   to both the programmer and the end user.
87 - Use the legacy compatibility layer.
88
89 Using the compatibility layer is as easy as adding the following three lines:
90
91<table border="0"><tr><td valign="top">
92\code
93#include <caca.h>
94
95/* libcaca program - 0.x API */
96...
97\endcode
98</td><td>
99\code
100#include <caca.h>
101#ifdef CACA_API_VERSION_1
102#   include <caca0.h>
103#endif
104
105/* libcaca program - 0.x API */
106...
107\endcode
108</td></tr></table>
109
110 \section foo3 Function equivalence list
111
112 \subsection bar1 Basic functions
113
114 - \b caca_init(): use cucul_create_canvas() to create a \e libcucul canvas,
115   followed by caca_create_display() to attach a \e libcaca display to it.
116 - \b caca_set_delay(): use caca_set_display_time().
117 - \b caca_get_feature(): deprecated.
118 - \b caca_set_feature(): deprecated, see cucul_set_dither_antialias(),
119   cucul_set_dither_color() and cucul_set_dither_mode() instead.
120 - \b caca_get_feature_name(): deprecated, see cucul_get_dither_mode_list(),
121   cucul_get_dither_antialias_list() and cucul_get_dither_color_list()
122   instead.
123 - \b caca_get_rendertime(): use caca_get_display_time().
124 - \b caca_get_width(): use cucul_get_canvas_width().
125 - \b caca_get_height(): use cucul_get_canvas_height().
126 - \b caca_set_window_title(): use caca_set_display_title().
127 - \b caca_get_window_width(): use caca_get_display_width().
128 - \b caca_get_window_height(): use caca_get_display_height().
129 - \b caca_refresh(): use caca_refresh_display().
130 - \b caca_end(): use caca_free_display() to detach the \e libcaca display,
131   followed by cucul_free_canvas() to free the underlying \e libcucul canvas.
132
133 \subsection bar2 Event handling
134
135 - \b caca_get_event(): unchanged, but the event information retrieval
136   changed a lot.
137 - \b caca_wait_event(): use caca_get_event() with a \c timeout argument
138   of \b -1.
139 - \b caca_get_mouse_x(): unchanged.
140 - \b caca_get_mouse_y(): unchanged.
141
142 \subsection bar3 Character printing
143
144 - \b caca_set_color(): use cucul_set_color_ansi() or cucul_set_color_argb().
145 - \b caca_get_fg_color(): use cucul_get_attr().
146 - \b caca_get_bg_color(): use cucul_get_attr().
147 - \b caca_get_color_name(): this function is now deprecated due to major
148   uselessness.
149 - \b caca_putchar(): use cucul_put_char().
150 - \b caca_putstr(): use cucul_put_str().
151 - \b caca_printf(): use cucul_printf().
152 - \b caca_clear(): use cucul_clear_canvas().
153
154 \subsection bar4 Primitives drawing
155
156 These functions are almost unchanged, except for Unicode support and the
157 fact that they now act on a given canvas.
158
159 - \b caca_draw_line(): use cucul_draw_line().
160 - \b caca_draw_polyline(): use cucul_draw_polyline().
161 - \b caca_draw_thin_line(): use cucul_draw_thin_line().
162 - \b caca_draw_thin_polyline(): use cucul_draw_thin_polyline().
163
164 - \b caca_draw_circle(): use cucul_draw_circle().
165 - \b caca_draw_ellipse(): use cucul_draw_ellipse().
166 - \b caca_draw_thin_ellipse(): use cucul_draw_thin_ellipse().
167 - \b caca_fill_ellipse(): use cucul_fill_ellipse().
168
169 - \b caca_draw_box(): use cucul_draw_box().
170 - \b caca_draw_thin_box(): use cucul_draw_thin_box() or cucul_draw_cp437_box().
171 - \b caca_fill_box(): use cucul_fill_box().
172
173 - \b caca_draw_triangle(): use cucul_draw_triangle().
174 - \b caca_draw_thin_triangle(): use cucul_draw_thin_triangle().
175 - \b caca_fill_triangle(): use cucul_fill_triangle().
176
177 \subsection bar5 Mathematical functions
178
179 - \b caca_rand(): use cucul_rand(). The second argument is different, make
180   sure you take that into account.
181 - \b caca_sqrt(): this function is now deprecated, use your system's
182   \b sqrt() call instead.
183
184 \subsection bar6 Sprite handling
185
186 The newly introduced canvases can have several frames. Sprites are hence
187 completely deprecated.
188
189 - \b caca_load_sprite(): use cucul_import_file().
190 - \b caca_get_sprite_frames(): use cucul_get_canvas_frame_count().
191 - \b caca_get_sprite_width(): use cucul_get_canvas_width().
192 - \b caca_get_sprite_height(): use cucul_get_canvas_height().
193 - \b caca_get_sprite_dx(): use cucul_get_canvas_handle_x().
194 - \b caca_get_sprite_dy(): use cucul_get_canvas_handle_y().
195 - \b caca_draw_sprite(): use cucul_set_canvas_frame() and cucul_blit().
196 - \b caca_free_sprite(): use cucul_free_canvas().
197
198 \subsection bar7 Bitmap handling
199
200 Bitmaps have been renamed to dithers, because these objects do not in fact
201 store any pixels, they just have information on how bitmaps will be dithered.
202
203 - \b caca_create_bitmap(): use cucul_create_dither().
204 - \b caca_set_bitmap_palette(): use cucul_set_dither_palette().
205 - \b caca_draw_bitmap(): use cucul_dither_bitmap().
206 - \b caca_free_bitmap(): use cucul_free_dither().
207
208 \section foo4 Compilation
209
210 The \c caca-config utility is deprecated in favour of the standard
211 \c pkg-config interface:
212
213\code
214gcc -c foobar.c -o foobar.o `pkg-config --cflags caca`
215gcc foobar.o -o foobar `pkg-config --libs caca`
216\endcode
217
218 \c caca-config is still provided as a convenience tool but may be removed
219 in the future.
220
221*/
Note: See TracBrowser for help on using the repository browser.