source: www/index.html @ 1826

Last change on this file since 1826 was 1826, checked in by Sam Hocevar, 13 years ago
  • Add a canvas rotation example.
  • Property svn:keywords set to Id
File size: 13.0 KB
Line 
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" class="caca" />
25
26<h2> Introduction </h2>
27
28<p> <i>libcaca</i> is a graphics library that outputs text instead of pixels,
29so that it can work on older video cards or text terminals. It is not unlike
30the famous <a href="http://aa-project.sourceforge.net/aalib/">AAlib</a>
31library, with the following improvements: </p>
32
33<ul>
34  <li> Unicode support </li>
35  <li> 2048 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
41systems including Mac OS X) using the S-Lang or ncurses libraries. It also
42works natively on DOS and Windows. </p>
43
44<p> Libcaca was written by Sam Hocevar &lt;<a
45href="mailto:sam@zoy.org">sam@zoy.org</a>&gt; and Jean-Yves Lamoureux
46&lt;<a href="mailto:jylam@lnxscene.org">jylam@lnxscene.org</a>&gt;. It is
47<a href="http://www.gnu.org/philosophy/free-sw.html">free software</a>,
48and can be used, modified and distributed under the terms of the <a
49href="http://sam.zoy.org/wtfpl/">Do What The Fuck You Want To Public
50License</a>. </p>
51
52<h2> News </h2>
53
54<p> <b>30 Sep 2007</b>: libcaca 0.99.beta12 </p>
55<p> <b>16 Nov 2006</b>: libcaca 0.99.beta11 </p>
56<p> <b>16 Nov 2006</b>: <a href="/toilet.html">TOIlet</a> 0.1 </p>
57<p> <b>12 Nov 2006</b>: libcaca 0.99.beta10 </p>
58<p> <b>6 Nov 2006</b>: libcaca 0.99.beta9 </p>
59<p> <b>22 Oct 2006</b>: libcaca 0.99.beta8 </p>
60<!-- old news
61<p> <b>4 Oct 2006</b>: libcaca 0.99.beta7 </p>
62-->
63
64<h2> Screenshots </h2>
65
66<p> Here are a few <i>libcaca</i> screenshots. </p>
67
68<table cellspacing="5" border="0">
69  <tr>
70    <td align="center">
71      <a href="img/stitch-80x45.png"><img alt="cacaview"
72         width="73" height="90"
73         src="img/tn-stitch-80x45.jpeg" /></a>
74      <br /><small><code>cacaview</code></small>
75    </td>
76    <td align="center">
77      <a href="img/cacaball-80x50.png"><img alt="cacaball"
78         width="101" height="90"
79         src="img/tn-cacaball-80x50.jpeg" /></a>
80      <br /><small><code>cacaball</code></small>
81    </td>
82    <td align="center">
83      <a href="img/cacaplas-80x50.png"><img alt="cacaplas"
84         width="101" height="90"
85         src="img/tn-cacaplas-80x50.jpeg" /></a>
86      <br /><small><code>cacaplas</code></small>
87    </td>
88    <td align="center">
89      <a href="img/truecolor-32x16.png"><img alt="truecolor"
90         width="87" height="90"
91         src="img/tn-truecolor-32x16.jpeg" /></a>
92      <br /><small>TrueColor</small>
93    </td>
94    <td align="center">
95      <a href="img/unicode-80x24.png"><img alt="unicode"
96         width="120" height="75"
97         src="img/tn-unicode-80x24.jpeg" /></a>
98      <br /><small>Unicode</small>
99    </td>
100  </tr>
101  <tr>
102    <td align="center">
103      <a href="img/swallow-80x32.png"><img alt="swallow"
104         width="120" height="81"
105         src="img/tn-swallow-80x32.jpeg" /></a>
106      <br /><small>swallowing applications</small>
107    </td>
108    <td align="center">
109      <a href="img/rotate.png"><img alt="rotation"
110         width="120" height="81"
111         src="img/tn-rotate.jpeg" /></a>
112      <br /><small>canvas rotation</small>
113    </td>
114  </tr>
115</table>
116
117<p> See also the various export formats, generated from an old
118  <a href="lc-mw1.ans">ANSI file</a>:
119  <a href="export.png">PNG</a> (through TGA),
120  <a href="export.html">HTML</a>,
121  <a href="export.svg">SVG</a>,
122  <a href="export.ps">PostScript</a>.
123</p>
124
125<!--
126<p> Here are my first libcaca attempts. The first image is,
127<code>cacaview</code>, the libcaca image viewer. Then, two
128screenshots of my first port of an application to libcaca: the <a
129href="http://www.videolan.org/vlc/">VLC</a> media player. The last
130screenshots are from <code>cacafire</code> (the libcaca port of aafire) and
131<code>cacaball</code> (a mini metaballs demo). </p>
132
133<table cellspacing="5" border="0">
134  <tr>
135    <td align="center">
136      <a href="caca-stitch.png"><img alt="cacaview"
137         width="78" height="90"
138         src="tn-caca-stitch.jpeg" /><br /><code>cacaview</code></a>
139    </td>
140    <td align="center">
141      <a href="caca-vlc.png"><img alt="VLC playing the Matrix: Revolutions"
142         width="120" height="74"
143         src="tn-caca-vlc.jpeg" /><br />VLC media player</a>
144    </td>
145    <td align="center">
146      <a href="caca-vlc3.png"><img alt="VLC playing a Dolby trailer"
147         width="120" height="74"
148         src="tn-caca-vlc3.jpeg" /><br />VLC media player</a>
149    </td>
150    <td align="center">
151      <a href="caca-fire.png"><img alt="cacafire"
152         width="120" height="87"
153         src="tn-caca-fire.jpeg" /><br /><code>cacafire</code></a>
154    </td>
155    <td align="center">
156      <a href="caca-ball.png"><img alt="cacaball"
157         width="104" height="90"
158         src="tn-caca-ball.jpeg" /><br /><code>cacaball</code></a>
159    </td>
160  </tr>
161</table>
162
163<p> As with all image processing applications, I needed the obligatory <a
164href="http://www-2.cs.cmu.edu/~chuck/lennapg/">Lenna</a> samples. From
165left to right: the currently in development Floyd-Steinberg dithering, the
166antialiasing introduced in libcaca 0.5, the new renderer in libcaca 0.2, no
167dithering, ordered dithering, random dithering. </p>
168
169<table cellspacing="5" border="0">
170  <tr>
171    <td align="center">
172      <a href="lenna-fs.png"><img alt="Lenna (Floyd-Steinberg)"
173         width="87" height="90"
174         src="tn-lenna-fs.jpeg" /><br />Floyd-Steinberg</a>
175    </td>
176    <td align="center">
177      <a href="lenna-antialias.png"><img alt="Lenna (antialiased)"
178         width="97" height="90"
179         src="tn-lenna-antialias.jpeg" /><br />antialiasing</a>
180    </td>
181    <td align="center">
182      <a href="lenna-new.png"><img alt="Lenna (new renderer)"
183         width="99" height="90"
184         src="tn-lenna-new.jpeg" /><br />new renderer</a>
185    </td>
186    <td align="center">
187      <a href="lenna-nodither.png"><img alt="Lenna (no dithering)"
188         width="99" height="90"
189         src="tn-lenna-nodither.jpeg" /><br />no dithering</a>
190    </td>
191    <td align="center">
192      <a href="lenna-ordered.png"><img alt="Lenna (ordered dithering)"
193         width="99" height="90"
194         src="tn-lenna-ordered.jpeg" /><br />ordered dithering</a>
195    </td>
196    <td align="center">
197      <a href="lenna-random.png"><img alt="Lenna (random dithering)"
198         width="99" height="90"
199         src="tn-lenna-random.jpeg" /><br />random dithering</a>
200    </td>
201  </tr>
202</table>
203
204<p> Here are a few examples of my libcaca patch for libSDL. Once there is a
205libcaca backend for <a href="http://www.libsdl.org">libSDL</a>, any program
206using SDL can automatically benefit from libcaca’s rendering routines. These
207examples show <a href="http://www.frozen-bubble.org/">Frozen Bubble</a>, the
208<a href="http://sabre.cobite.com/">SABRE</a> flight simulator, and the famous
209<a href="http://www.idsoftware.com/games/doom/">Doom</a>. Frozen Bubble is
210fully playable, but SABRE and Doom aren’t much due to the Ctrl and Shift keys
211not being recognized (see the TODO list about that). </p>
212
213<table cellspacing="5" border="0">
214  <tr>
215    <td align="center">
216      <a href="caca-fb.png"><img alt="ASCII art Frozen Bubble"
217         width="120" height="90"
218         src="tn-caca-fb.jpeg" /><br />Frozen Bubble</a>
219    </td>
220    <td align="center">
221      <a href="caca-sabre.png"><img alt="the SABRE flight simulator"
222         width="120" height="90"
223         src="tn-caca-sabre.jpeg" /><br />SABRE</a>
224    </td>
225    <td align="center">
226      <a href="caca-doom.png"><img alt="the Doom splash screen in ASCII art"
227         width="120" height="90"
228         src="tn-caca-doom.jpeg" /><br />Doom splash screen</a>
229    </td>
230    <td align="center">
231      <a href="caca-doom2.png"><img alt="Doom in ASCII art"
232         width="120" height="90"
233         src="tn-caca-doom2.jpeg" /><br />first Doom level</a>
234    </td>
235  </tr>
236</table>
237
238<h2> Download libcaca </h2>
239
240<p> libcaca is already in the Debian sid distribution. Debian woody users or
241sid users in a hurry may use one of the following apt sources: (sorry, sarge
242is not supported yet) </p>
243
244<table class="leftmenu" cellspacing="5" cellpadding="0">
245  <tr>
246    <td class="nowrap" valign="top">
247      <code>
248        deb http://sam.zoy.org/projects/debian woody main<br />
249        deb-src http://sam.zoy.org/projects/debian woody main<br />
250        <br />
251        deb http://sam.zoy.org/projects/debian sid main<br />
252        deb-src http://sam.zoy.org/projects/debian sid main<br />
253      </code>
254    </td>
255  </tr>
256</table>
257
258<p> Users of RPM-based distributions (Red Hat, Fedora, Mandrake) may find RPM
259packages on the <a href="http://yarrow.freshrpms.net/rpm.html?id=552">Fresh
260RPMs</a> page. If no package is available, you are encouraged
261to build packages for your system using this SRPM (<a
262href="libcaca-0.9-1.src.rpm">libcaca-0.9-1.src.rpm</a>, 176KB) and this simple
263command line: </p>
264
265<table class="leftmenu" cellspacing="5" cellpadding="0">
266  <tr>
267    <td class="nowrap" valign="top">
268      <code>rpm -<!>-rebuild libcaca-0.9-1.src.rpm</code>
269    </td>
270  </tr>
271</table>
272
273<p> BSD users should see the <a
274href="http://www.netbsd.org/packages/graphics/libcaca/README.html">NetBSD port
275page</a> and the <a href="http://www.freshports.org/graphics/libcaca/">FreeBSD
276port page</a> (I am not aware of an OpenBSD port yet, but <a
277href="http://news.gw.com/openbsd.ports/15502">this email</a> has
278information on it), Gentoo users may find information on the <a
279href="http://gentoo-portage.com/browse-program.php?program=6273">Gentoo
280portage</a> and Slackware users have a package on <a
281href="http://www.linuxpackages.net/pkg_details.php?id=2144">linuxpackages.net</a>.
282</p>
283
284<h2> Patch for libSDL </h2>
285
286<p> This simple patch was quickly hacked from the AAlib video
287driver. Apply it to the libSDL sources and configuree libSDL with
288<code>-<!>-enable-video-caca</code>. Then use the <code>SDL_VIDEODRIVER</code>
289environment variable to run your SDL programs with libcaca output, for
290instance Frozen Bubble: </p>
291
292<table class="leftmenu" cellspacing="5" cellpadding="0">
293  <tr>
294    <td class="nowrap" valign="top">
295      <code>SDL_VIDEODRIVER=caca frozen-bubble</code>
296    </td>
297  </tr>
298</table>
299
300<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>
301
302<h2> Patches for VLC, xine, mplayer... </h2>
303
304<p> The libcaca patch for the <a href="http://www.videolan.org/vlc/">VLC</a>
305media player was already applied upstream. Check the CVS version. </p>
306
307<p> There is a work in progress for <a href="http://xine.sf.net/">xine</a>
308called cacaxine (see <a href="http://sourceforge.net/mailarchive/forum.php?thread_id=3605187&amp;forum_id=7131">this email</a>). Zeeshan Ali wrote a
309<a href="http://gstreamer.sf.net/">GStreamer</a> plugin. I am not
310aware of an <a href="http://mplayerhq.hu/">MPlayer</a> patch yet (but you
311should not be using MPlayer anyway, because it sucks). </p>
312
313<h2> Development </h2>
314
315-->
316
317<h2> Why? </h2>
318
319<blockquote><p>
320Que dites-vous ?... C’est inutile ?... Je le sais !
321<br />Mais on ne se bat pas dans l’espoir du succès !
322<br />Non ! non, c’est bien plus beau lorsque c’est inutile !
323<br /><small> -- Edmond Rostand, <i>Cyrano de Bergerac</i> </small>
324</p></blockquote>
325
326<p> I am perfectly aware that <i>libcaca</i> is the waste of time it looks to
327be. No need to tell me about that. I urge you to read Théophile Gautier’s
328preface to <i>Mademoiselle de Maupin</i>, which also gives an excellent
329explanation for the name “libcaca”: </p>
330
331<blockquote><p>
332Il n’y a rien de vraiment beau que ce qui ne peut servir à rien ; tout ce
333qui est utile est laid ; car c’est l’expression de quelque besoin ; et ceux
334de l’homme sont ignobles et dégoûtants, comme sa pauvre et infirme nature. -
335L’endroit le plus utile d’une maison, ce sont les latrines.
336</p></blockquote>
337
338<p> As for the name “libcucul”, please refer to the pioneer of modernist
339Polish fiction: </p>
340
341<blockquote><p>
342Mais contre le cucul, il n’y a pas de refuge. Courez après moi
343si vous voulez, je m’enfuis la gueule entre les mains. Et voilà,
344tralala, Zut à celui qui le lira !
345<br /><small> -- Witold Gombrowicz, <i>Ferdydurke</i> </small>
346</p></blockquote>
347
348<?php $rev = '$Id: index.html 1826 2007-09-30 14:10:12Z sam $';
349      include($_SERVER['DOCUMENT_ROOT'].'/footer.inc'); ?>
350
351</body>
352</html>
Note: See TracBrowser for help on using the repository browser.