1 | <?php header("Content-Type: text/html; charset=utf-8"); ?> |
---|
2 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" |
---|
3 | "http://www.w3.org/TR/xhtml1/DTD/xhtml11.dtd"> |
---|
4 | |
---|
5 | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> |
---|
6 | |
---|
7 | <head> |
---|
8 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
---|
9 | <meta name="GENERATOR" content="vim" /> |
---|
10 | <meta name="Author" content="sam@zoy.org (Sam Hocevar)" /> |
---|
11 | <meta name="Description" content="libcaca - Colour AsCii Art library" /> |
---|
12 | <meta name="Keywords" content="libcaca, ASCII, ASCII ART, console, text mode, ncurses, slang, AAlib" /> |
---|
13 | <title>libcaca - Colour AsCii Art library</title> |
---|
14 | <link rel="icon" type="image/x-icon" href="/favicon.ico" /> |
---|
15 | <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" /> |
---|
16 | <link rel="stylesheet" type="text/css" href="/main.css" /> |
---|
17 | </head> |
---|
18 | |
---|
19 | <body> |
---|
20 | |
---|
21 | <?php include($_SERVER["DOCUMENT_ROOT"]."/header.inc"); ?> |
---|
22 | |
---|
23 | <img src="logo-caca.png" width="128" height="128" |
---|
24 | alt="libcaca logo" style="margin: 20px; float: right;" /> |
---|
25 | |
---|
26 | <h2> Introduction </h2> |
---|
27 | |
---|
28 | <p> The libcaca library is a graphics library that outputs text instead of |
---|
29 | pixels, so that it can work on older video cards or text terminals. It is not |
---|
30 | unlike the famous <a href="http://aa-project.sourceforge.net/aalib/">AAlib</a> |
---|
31 | library, with the following improvements: |
---|
32 | |
---|
33 | <ul> |
---|
34 | <li> Unicode support </li> |
---|
35 | <li> 4096 available colours (some devices can only handle 16) </li> |
---|
36 | <li> dithering of colour images </li> |
---|
37 | <li> advanced text canvas operations (blitting, rotations) </li> |
---|
38 | </ul> |
---|
39 | |
---|
40 | <p> Libcaca works in a text terminal (and should thus work on all Unix |
---|
41 | systems including Mac OS X) using the S-Lang or ncurses libraries. It also |
---|
42 | works natively on DOS and Windows. |
---|
43 | |
---|
44 | <p> Libcaca is <a href="http://www.gnu.org/philosophy/free-sw.html">free |
---|
45 | software</a>, and can be used, modified and distributed under the terms of the |
---|
46 | <a href="http://sam.zoy.org/wtfpl/">Do What The Fuck You Want To Public |
---|
47 | License</a>. The logo on this page is copyrighted by Akira Toriyama so if |
---|
48 | anyone fancies drawing a new logo it would be much appreciated. </p> |
---|
49 | |
---|
50 | <h2> Screenshots </h2> |
---|
51 | |
---|
52 | <p> Here are a few libcaca screenshots. </p> |
---|
53 | |
---|
54 | <table cellspacing="5" border="0"> |
---|
55 | <tr> |
---|
56 | <td align="center"> |
---|
57 | <a href="img/stitch-80x45.png"><img alt="cacaview" |
---|
58 | width="73" height="90" |
---|
59 | src="img/tn-stitch-80x45.jpeg" /></a> |
---|
60 | <br /><small><code>cacaview</code></small> |
---|
61 | </td> |
---|
62 | <td align="center"> |
---|
63 | <a href="img/cacaball-80x50.png"><img alt="cacaball" |
---|
64 | width="101" height="90" |
---|
65 | src="img/tn-cacaball-80x50.jpeg" /></a> |
---|
66 | <br /><small><code>cacaball</code></small> |
---|
67 | </td> |
---|
68 | <td align="center"> |
---|
69 | <a href="img/cacaplas-80x50.png"><img alt="cacaplas" |
---|
70 | width="101" height="90" |
---|
71 | src="img/tn-cacaplas-80x50.jpeg" /></a> |
---|
72 | <br /><small><code>cacaplas</code></small> |
---|
73 | </td> |
---|
74 | <td align="center"> |
---|
75 | <a href="img/truecolor-32x16.png"><img alt="truecolor" |
---|
76 | width="87" height="90" |
---|
77 | src="img/tn-truecolor-32x16.jpeg" /></a> |
---|
78 | <br /><small>TrueColor</small> |
---|
79 | </td> |
---|
80 | <td align="center"> |
---|
81 | <a href="img/unicode-80x24.png"><img alt="unicode" |
---|
82 | width="120" height="75" |
---|
83 | src="img/tn-unicode-80x24.jpeg" /></a> |
---|
84 | <br /><small>Unicode</small> |
---|
85 | </td> |
---|
86 | </tr> |
---|
87 | </table> |
---|
88 | |
---|
89 | <p> See also the various export formats: |
---|
90 | <a href="export.png">PNG</a> (through TGA), |
---|
91 | <a href="export.html">HTML</a>, |
---|
92 | <a href="export.svg">SVG</a>, |
---|
93 | <a href="export.ps">PostScript</a>. |
---|
94 | </p> |
---|
95 | |
---|
96 | <h2> Where is the old libcaca page? </h2> |
---|
97 | |
---|
98 | <p> libcaca is currently undergoing a massive rewrite, and as such all |
---|
99 | previous patches and code examples are broken. Until this is done I have |
---|
100 | decided to put most of this page offline. </p> |
---|
101 | |
---|
102 | <h2> Developers </h2> |
---|
103 | |
---|
104 | <p> The latest libcaca snapshot is <a |
---|
105 | href="libcaca-0.99.beta1.tar.gz">libcaca-0.99.beta1.tar.gz</a>. Please |
---|
106 | download and test it. If you are a developer, please comment on the current |
---|
107 | API and let me know what is missing. </p> |
---|
108 | |
---|
109 | <p> Important links: </p> |
---|
110 | |
---|
111 | <ul> |
---|
112 | <li> Documentation in <a href="doc/">HTML format</a> </li> |
---|
113 | |
---|
114 | <li> Documentation in <a href="libcaca.pdf">PDF format</a> </li> |
---|
115 | |
---|
116 | <li> Mailing-list: <a |
---|
117 | href="mailto:libcaca@lists.zoy.org">libcaca@lists.zoy.org</a> |
---|
118 | (To subscribe, send an email to <a |
---|
119 | href="mailto:ecartis@lists.zoy.org">ecartis@lists.zoy.org</a> |
---|
120 | containing the words "<code>subscribe libcaca</code>". To unsubscribe, just |
---|
121 | use "<code>unsubscribe libcaca</code>".) </li> |
---|
122 | |
---|
123 | <li> Mailing-list <a href="threads.html">archives</a> </li> |
---|
124 | |
---|
125 | <li> Subversion repository: <code>svn://svn.zoy.org/libcaca/trunk</code> </li> |
---|
126 | |
---|
127 | <li> Subversion |
---|
128 | <a href="/cgi-bin/viewcvs.cgi/trunk/?root=libcaca">web interface</a> </li> |
---|
129 | </ul> |
---|
130 | |
---|
131 | <!-- |
---|
132 | <p> Here are my first libcaca attempts. The first image is, |
---|
133 | <code>cacaview</code>, the libcaca image viewer. Then, two |
---|
134 | screenshots of my first port of an application to libcaca: the <a |
---|
135 | href="http://www.videolan.org/vlc/">VLC</a> media player. The last |
---|
136 | screenshots are from <code>cacafire</code> (the libcaca port of aafire) and |
---|
137 | <code>cacaball</code> (a mini metaballs demo). </p> |
---|
138 | |
---|
139 | <table cellspacing="5" border="0"> |
---|
140 | <tr> |
---|
141 | <td align="center"> |
---|
142 | <a href="caca-stitch.png"><img alt="cacaview" |
---|
143 | width="78" height="90" |
---|
144 | src="tn-caca-stitch.jpeg" /><br /><code>cacaview</code></a> |
---|
145 | </td> |
---|
146 | <td align="center"> |
---|
147 | <a href="caca-vlc.png"><img alt="VLC playing the Matrix: Revolutions" |
---|
148 | width="120" height="74" |
---|
149 | src="tn-caca-vlc.jpeg" /><br />VLC media player</a> |
---|
150 | </td> |
---|
151 | <td align="center"> |
---|
152 | <a href="caca-vlc3.png"><img alt="VLC playing a Dolby trailer" |
---|
153 | width="120" height="74" |
---|
154 | src="tn-caca-vlc3.jpeg" /><br />VLC media player</a> |
---|
155 | </td> |
---|
156 | <td align="center"> |
---|
157 | <a href="caca-fire.png"><img alt="cacafire" |
---|
158 | width="120" height="87" |
---|
159 | src="tn-caca-fire.jpeg" /><br /><code>cacafire</code></a> |
---|
160 | </td> |
---|
161 | <td align="center"> |
---|
162 | <a href="caca-ball.png"><img alt="cacaball" |
---|
163 | width="104" height="90" |
---|
164 | src="tn-caca-ball.jpeg" /><br /><code>cacaball</code></a> |
---|
165 | </td> |
---|
166 | </tr> |
---|
167 | </table> |
---|
168 | |
---|
169 | <p> As with all image processing applications, I needed the obligatory <a |
---|
170 | href="http://www-2.cs.cmu.edu/~chuck/lennapg/">Lenna</a> samples. From |
---|
171 | left to right: the currently in development Floyd-Steinberg dithering, the |
---|
172 | antialiasing introduced in libcaca 0.5, the new renderer in libcaca 0.2, no |
---|
173 | dithering, ordered dithering, random dithering. </p> |
---|
174 | |
---|
175 | <table cellspacing="5" border="0"> |
---|
176 | <tr> |
---|
177 | <td align="center"> |
---|
178 | <a href="lenna-fs.png"><img alt="Lenna (Floyd-Steinberg)" |
---|
179 | width="87" height="90" |
---|
180 | src="tn-lenna-fs.jpeg" /><br />Floyd-Steinberg</a> |
---|
181 | </td> |
---|
182 | <td align="center"> |
---|
183 | <a href="lenna-antialias.png"><img alt="Lenna (antialiased)" |
---|
184 | width="97" height="90" |
---|
185 | src="tn-lenna-antialias.jpeg" /><br />antialiasing</a> |
---|
186 | </td> |
---|
187 | <td align="center"> |
---|
188 | <a href="lenna-new.png"><img alt="Lenna (new renderer)" |
---|
189 | width="99" height="90" |
---|
190 | src="tn-lenna-new.jpeg" /><br />new renderer</a> |
---|
191 | </td> |
---|
192 | <td align="center"> |
---|
193 | <a href="lenna-nodither.png"><img alt="Lenna (no dithering)" |
---|
194 | width="99" height="90" |
---|
195 | src="tn-lenna-nodither.jpeg" /><br />no dithering</a> |
---|
196 | </td> |
---|
197 | <td align="center"> |
---|
198 | <a href="lenna-ordered.png"><img alt="Lenna (ordered dithering)" |
---|
199 | width="99" height="90" |
---|
200 | src="tn-lenna-ordered.jpeg" /><br />ordered dithering</a> |
---|
201 | </td> |
---|
202 | <td align="center"> |
---|
203 | <a href="lenna-random.png"><img alt="Lenna (random dithering)" |
---|
204 | width="99" height="90" |
---|
205 | src="tn-lenna-random.jpeg" /><br />random dithering</a> |
---|
206 | </td> |
---|
207 | </tr> |
---|
208 | </table> |
---|
209 | |
---|
210 | <p> Here are a few examples of my libcaca patch for libSDL. Once there is a |
---|
211 | libcaca backend for <a href="http://www.libsdl.org">libSDL</a>, any program |
---|
212 | using SDL can automatically benefit from libcaca’s rendering routines. These |
---|
213 | examples show <a href="http://www.frozen-bubble.org/">Frozen Bubble</a>, the |
---|
214 | <a href="http://sabre.cobite.com/">SABRE</a> flight simulator, and the famous |
---|
215 | <a href="http://www.idsoftware.com/games/doom/">Doom</a>. Frozen Bubble is |
---|
216 | fully playable, but SABRE and Doom aren’t much due to the Ctrl and Shift keys |
---|
217 | not being recognized (see the TODO list about that). </p> |
---|
218 | |
---|
219 | <table cellspacing="5" border="0"> |
---|
220 | <tr> |
---|
221 | <td align="center"> |
---|
222 | <a href="caca-fb.png"><img alt="ASCII art Frozen Bubble" |
---|
223 | width="120" height="90" |
---|
224 | src="tn-caca-fb.jpeg" /><br />Frozen Bubble</a> |
---|
225 | </td> |
---|
226 | <td align="center"> |
---|
227 | <a href="caca-sabre.png"><img alt="the SABRE flight simulator" |
---|
228 | width="120" height="90" |
---|
229 | src="tn-caca-sabre.jpeg" /><br />SABRE</a> |
---|
230 | </td> |
---|
231 | <td align="center"> |
---|
232 | <a href="caca-doom.png"><img alt="the Doom splash screen in ASCII art" |
---|
233 | width="120" height="90" |
---|
234 | src="tn-caca-doom.jpeg" /><br />Doom splash screen</a> |
---|
235 | </td> |
---|
236 | <td align="center"> |
---|
237 | <a href="caca-doom2.png"><img alt="Doom in ASCII art" |
---|
238 | width="120" height="90" |
---|
239 | src="tn-caca-doom2.jpeg" /><br />first Doom level</a> |
---|
240 | </td> |
---|
241 | </tr> |
---|
242 | </table> |
---|
243 | |
---|
244 | <h2> Download libcaca </h2> |
---|
245 | |
---|
246 | <p> Latest libcaca release is <a |
---|
247 | href="libcaca-0.9.tar.gz">libcaca-0.9.tar.gz</a> (216KB) / <a |
---|
248 | href="libcaca-0.9.tar.bz2">libcaca-0.9.tar.bz2</a> (172KB). See the <a |
---|
249 | href="NEWS">NEWS</a> and <a href="ChangeLog">ChangeLog</a> files. </p> |
---|
250 | |
---|
251 | <p> libcaca is already in the Debian sid distribution. Debian woody users or |
---|
252 | sid users in a hurry may use one of the following apt sources: (sorry, sarge |
---|
253 | is not supported yet) </p> |
---|
254 | |
---|
255 | <table class="leftmenu" cellspacing="5" cellpadding="0"> |
---|
256 | <tr> |
---|
257 | <td class="nowrap" valign="top"> |
---|
258 | <code> |
---|
259 | deb http://sam.zoy.org/projects/debian woody main<br /> |
---|
260 | deb-src http://sam.zoy.org/projects/debian woody main<br /> |
---|
261 | <br /> |
---|
262 | deb http://sam.zoy.org/projects/debian sid main<br /> |
---|
263 | deb-src http://sam.zoy.org/projects/debian sid main<br /> |
---|
264 | </code> |
---|
265 | </td> |
---|
266 | </tr> |
---|
267 | </table> |
---|
268 | |
---|
269 | <p> Users of RPM-based distributions (Red Hat, Fedora, Mandrake) may find RPM |
---|
270 | packages on the <a href="http://yarrow.freshrpms.net/rpm.html?id=552">Fresh |
---|
271 | RPMs</a> page. If no package is available, you are encouraged |
---|
272 | to build packages for your system using this SRPM (<a |
---|
273 | href="libcaca-0.9-1.src.rpm">libcaca-0.9-1.src.rpm</a>, 176KB) and this simple |
---|
274 | command line: </p> |
---|
275 | |
---|
276 | <table class="leftmenu" cellspacing="5" cellpadding="0"> |
---|
277 | <tr> |
---|
278 | <td class="nowrap" valign="top"> |
---|
279 | <code>rpm -<!>-rebuild libcaca-0.9-1.src.rpm</code> |
---|
280 | </td> |
---|
281 | </tr> |
---|
282 | </table> |
---|
283 | |
---|
284 | <p> BSD users should see the <a |
---|
285 | href="http://www.netbsd.org/packages/graphics/libcaca/README.html">NetBSD port |
---|
286 | page</a> and the <a href="http://www.freshports.org/graphics/libcaca/">FreeBSD |
---|
287 | port page</a> (I am not aware of an OpenBSD port yet, but <a |
---|
288 | href="http://news.gw.com/openbsd.ports/15502">this email</a> has |
---|
289 | information on it), Gentoo users may find information on the <a |
---|
290 | href="http://gentoo-portage.com/browse-program.php?program=6273">Gentoo |
---|
291 | portage</a> and Slackware users have a package on <a |
---|
292 | href="http://www.linuxpackages.net/pkg_details.php?id=2144">linuxpackages.net</a>. |
---|
293 | </p> |
---|
294 | |
---|
295 | <p> A Windows zip archive containing the libcaca demos can be downloaded here: |
---|
296 | <a href="libcaca-win32-0.9.zip">libcaca-win32-0.9.zip</a> (100KB). </p> |
---|
297 | |
---|
298 | <h2> Patch for libSDL </h2> |
---|
299 | |
---|
300 | <p> This simple patch was quickly hacked from the AAlib video |
---|
301 | driver. Apply it to the libSDL sources and configuree libSDL with |
---|
302 | <code>-<!>-enable-video-caca</code>. Then use the <code>SDL_VIDEODRIVER</code> |
---|
303 | environment variable to run your SDL programs with libcaca output, for |
---|
304 | instance Frozen Bubble: </p> |
---|
305 | |
---|
306 | <table class="leftmenu" cellspacing="5" cellpadding="0"> |
---|
307 | <tr> |
---|
308 | <td class="nowrap" valign="top"> |
---|
309 | <code>SDL_VIDEODRIVER=caca frozen-bubble</code> |
---|
310 | </td> |
---|
311 | </tr> |
---|
312 | </table> |
---|
313 | |
---|
314 | <p> Download <a href="patch-libsdl1.2-libcaca0.7.diff">patch-libsdl1.2-libcaca0.7.diff</a> (to be used with the Debian unstable SDL sources and libcaca 0.7. </p> |
---|
315 | |
---|
316 | <h2> Patches for VLC, xine, mplayer... </h2> |
---|
317 | |
---|
318 | <p> The libcaca patch for the <a href="http://www.videolan.org/vlc/">VLC</a> |
---|
319 | media player was already applied upstream. Check the CVS version. </p> |
---|
320 | |
---|
321 | <p> There is a work in progress for <a href="http://xine.sf.net/">xine</a> |
---|
322 | called cacaxine (see <a href="http://sourceforge.net/mailarchive/forum.php?thread_id=3605187&forum_id=7131">this email</a>). Zeeshan Ali wrote a |
---|
323 | <a href="http://gstreamer.sf.net/">GStreamer</a> plugin. I am not |
---|
324 | aware of an <a href="http://mplayerhq.hu/">MPlayer</a> patch yet (but you |
---|
325 | should not be using MPlayer anyway, because it sucks). </p> |
---|
326 | |
---|
327 | <h2> Documentation </h2> |
---|
328 | |
---|
329 | <p> See the <a href="doc/index.html">HTML documentation</a>. </p> |
---|
330 | |
---|
331 | <h2> Development </h2> |
---|
332 | |
---|
333 | <p> The mailing-list for libcaca users and developers is <a |
---|
334 | href="mailto:libcaca@lists.zoy.org">libcaca@lists.zoy.org</a>. |
---|
335 | To subscribe, send an email to <a |
---|
336 | href="mailto:ecartis@lists.zoy.org">ecartis@lists.zoy.org</a> |
---|
337 | containing the words "<code>subscribe libcaca</code>". To unsubscribe, just |
---|
338 | use "<code>unsubscribe libcaca</code>". </p> |
---|
339 | |
---|
340 | <p> Please report bugs and make suggestions to <a |
---|
341 | href="mailto:libcaca@lists.zoy.org">libcaca@lists.zoy.org</a> and |
---|
342 | don’t forget to check the <a href="threads.html">mailing-list archives</a>. |
---|
343 | </p> |
---|
344 | |
---|
345 | <p> The libcaca development is managed using <a |
---|
346 | href="http://subversion.tigris.org">Subversion</a>. The |
---|
347 | <code>svn://svn.zoy.org/libcaca/</code> repository can be browsed using the <a |
---|
348 | href="/cgi-bin/viewcvs.cgi/trunk/?root=libcaca">web interface</a>, or directly |
---|
349 | with the Subversion client. For instance, to retrieve the main trunk, use this |
---|
350 | command: </p> |
---|
351 | |
---|
352 | <table class="leftmenu" cellspacing="5" cellpadding="0"> |
---|
353 | <tr> |
---|
354 | <td class="nowrap" valign="top"> |
---|
355 | <code>svn co svn://svn.zoy.org/libcaca/trunk libcaca-trunk</code> |
---|
356 | </td> |
---|
357 | </tr> |
---|
358 | </table> |
---|
359 | |
---|
360 | <p> To retrieve a specific tag, e.g. 0.3, use this: </p> |
---|
361 | |
---|
362 | <table class="leftmenu" cellspacing="5" cellpadding="0"> |
---|
363 | <tr> |
---|
364 | <td class="nowrap" valign="top"> |
---|
365 | <code>svn co svn://svn.zoy.org/libcaca/tags/0.3 libcaca-0.3</code> |
---|
366 | </td> |
---|
367 | </tr> |
---|
368 | </table> |
---|
369 | --> |
---|
370 | |
---|
371 | <h2> Why? </h2> |
---|
372 | |
---|
373 | <blockquote><p> |
---|
374 | Que dites-vous ?... C’est inutile ?... Je le sais ! |
---|
375 | <br />Mais on ne se bat pas dans l’espoir du succès ! |
---|
376 | <br />Non ! non, c’est bien plus beau lorsque c’est inutile ! |
---|
377 | <br /><small> -- Edmond Rostand, <i>Cyrano de Bergerac</i> </small> |
---|
378 | </p></blockquote> |
---|
379 | |
---|
380 | <p> I am perfectly aware that libcaca is the waste of time it looks to be. No |
---|
381 | need to tell me about that. I urge you to read Théophile Gautier’s preface to |
---|
382 | <i>Mademoiselle de Maupin</i>, which also gives an excellent explanation for |
---|
383 | the name “libcaca”: </p> |
---|
384 | |
---|
385 | <blockquote><p> |
---|
386 | Il n’y a rien de vraiment beau que ce qui ne peut servir à rien ; tout ce |
---|
387 | qui est utile est laid ; car c’est l’expression de quelque besoin ; et ceux |
---|
388 | de l’homme sont ignobles et dégoûtants, comme sa pauvre et infirme nature. - |
---|
389 | L’endroit le plus utile d’une maison, ce sont les latrines. |
---|
390 | </p></blockquote> |
---|
391 | |
---|
392 | <p> As for the name “libcucul”, please refer to the pioneer of modernist |
---|
393 | Polish fiction: </p> |
---|
394 | |
---|
395 | <blockquote><p> |
---|
396 | Mais contre le cucul, il n’y a pas de refuge. Courez après moi |
---|
397 | si vous voulez, je m’enfuis la gueule entre les mains. Et voilà, |
---|
398 | tralala, Zut à celui qui le lira ! |
---|
399 | <br /><small> -- Witold Gombrowicz, <i>Ferdydurke</i> </small> |
---|
400 | </p></blockquote> |
---|
401 | |
---|
402 | <?php include($_SERVER["DOCUMENT_ROOT"]."/footer.inc"); ?> |
---|
403 | |
---|
404 | </body> |
---|
405 | </html> |
---|