| | 1 | [[Image(source:/www/logo-caca.png, align=right, border=2, alt="libcaca logo")]] |
| | 2 | |
| | 3 | == Introduction == |
| | 4 | |
| | 5 | libcaca is a graphics library that outputs text instead of pixels, so that it can work on older video cards or text terminals. It is not unlike the famous [http://aa-project.sourceforge.net/aalib/ AAlib] library, with the following improvements: |
| | 6 | |
| | 7 | * Unicode support |
| | 8 | * 2048 available colours (some devices can only handle 16) |
| | 9 | * dithering of colour images |
| | 10 | * advanced text canvas operations (blitting, rotations) |
| | 11 | |
| | 12 | Libcaca works in a text terminal (and should thus work on all Unix systems including Mac OS X) using the S-Lang or ncurses libraries. It also works natively on DOS and Windows. |
| | 13 | |
| | 14 | Libcaca was written by Sam Hocevar and Jean-Yves Lamoureux. It is free software, and can be used, modified and distributed under the terms of the [http://sam.zoy.org/wtfpl/ Do What The Fuck You Want To Public License]. |
| | 15 | |
| | 16 | [[Image(source:/www/img/sample.png, align=right, border=2)]] |
| | 17 | |
| | 18 | == Screenshots == |
| | 19 | |
| | 20 | {{{ |
| | 21 | #!comment |
| | 22 | Change those fucking screenshots to proper Trac stuff when 0.11 is in Debian: |
| | 23 | [[Image(source:/www/img/tn-stitch-80x45.jpeg, link=/img/stitch-80x45.png)]] |
| | 24 | }}} |
| | 25 | |
| | 26 | Here are a few libcaca screenshots. |
| | 27 | |
| | 28 | {{{ |
| | 29 | #!html |
| | 30 | <table cellspacing="5" border="0"> |
| | 31 | <tr> |
| | 32 | <td align="center"> |
| | 33 | <a href="/browser/www/img/stitch-80x45.png"><img alt="cacaview" |
| | 34 | width="73" height="90" |
| | 35 | src="/browser/www/img/tn-stitch-80x45.jpeg?format=raw" /></a> |
| | 36 | <br /><small><code>cacaview</code></small> |
| | 37 | </td> |
| | 38 | <td align="center"> |
| | 39 | <a href="/browser/www/img/cacaball-80x50.png"><img alt="cacaball" |
| | 40 | width="101" height="90" |
| | 41 | src="/browser/www/img/tn-cacaball-80x50.jpeg?format=raw" /></a> |
| | 42 | <br /><small><code>cacaball</code></small> |
| | 43 | </td> |
| | 44 | <td align="center"> |
| | 45 | <a href="/browser/www/img/cacaplas-80x50.png"><img alt="cacaplas" |
| | 46 | width="101" height="90" |
| | 47 | src="/browser/www/img/tn-cacaplas-80x50.jpeg?format=raw" /></a> |
| | 48 | <br /><small><code>cacaplas</code></small> |
| | 49 | </td> |
| | 50 | <td align="center"> |
| | 51 | <a href="/browser/www/img/truecolor-32x16.png"><img alt="truecolor" |
| | 52 | width="87" height="90" |
| | 53 | src="/browser/www/img/tn-truecolor-32x16.jpeg?format=raw" /></a> |
| | 54 | <br /><small>TrueColor</small> |
| | 55 | </td> |
| | 56 | <td align="center"> |
| | 57 | </td> |
| | 58 | </tr> |
| | 59 | <tr> |
| | 60 | <td align="center"> |
| | 61 | <a href="/browser/www/img/unicode-80x24.png"><img alt="unicode" |
| | 62 | width="120" height="75" |
| | 63 | src="/browser/www/img/tn-unicode-80x24.jpeg?format=raw" /></a> |
| | 64 | <br /><small>Unicode</small> |
| | 65 | </td> |
| | 66 | <td align="center"> |
| | 67 | <a href="/browser/www/img/swallow-80x32.png"><img alt="swallow" |
| | 68 | width="120" height="81" |
| | 69 | src="/browser/www/img/tn-swallow-80x32.jpeg?format=raw" /></a> |
| | 70 | <br /><small>swallowing applications</small> |
| | 71 | </td> |
| | 72 | <td align="center"> |
| | 73 | <a href="/browser/www/img/rotate.png"><img alt="rotation" |
| | 74 | width="75" height="90" |
| | 75 | src="/browser/www/img/tn-rotate.jpeg?format=raw" /></a> |
| | 76 | <br /><small>canvas rotation</small> |
| | 77 | </td> |
| | 78 | <td align="center"> |
| | 79 | <a href="/browser/www/img/export.png"><img alt="rotation" |
| | 80 | width="78" height="90" |
| | 81 | src="/browser/www/img/tn-export.jpeg?format=raw" /></a> |
| | 82 | <br /><small>ANSI to PNG</small> |
| | 83 | </td> |
| | 84 | <td align="center"> |
| | 85 | </td> |
| | 86 | </tr> |
| | 87 | </table> |
| | 88 | }}} |
| | 89 | |
| | 98 | |
| | 99 | == Why? == |
| | 100 | |
| | 101 | {{{ |
| | 102 | #!html |
| | 103 | <blockquote><p> |
| | 104 | Que dites-vous ?... C’est inutile ?... Je le sais ! |
| | 105 | <br />Mais on ne se bat pas dans l’espoir du succès ! |
| | 106 | <br />Non ! non, c’est bien plus beau lorsque c’est inutile ! |
| | 107 | <br /><small> -- Edmond Rostand, <i>Cyrano de Bergerac</i> </small> |
| | 108 | </p></blockquote> |
| | 109 | }}} |
| | 110 | |
| | 111 | I am perfectly aware that libcaca is the waste of time it looks to be. No need to tell me about that. I urge you to read Théophile Gautier’s preface to ''Mademoiselle de Maupin'', which also gives an excellent explanation for the name “libcaca”: |
| | 112 | |
| | 113 | {{{ |
| | 114 | #!html |
| | 115 | <blockquote><p> |
| | 116 | Il n’y a rien de vraiment beau que ce qui ne peut servir à rien ; tout ce |
| | 117 | qui est utile est laid ; car c’est l’expression de quelque besoin ; et ceux |
| | 118 | de l’homme sont ignobles et dégoûtants, comme sa pauvre et infirme nature. - |
| | 119 | L’endroit le plus utile d’une maison, ce sont les latrines. |
| | 120 | </p></blockquote> |
| | 121 | }}} |
| | 122 | |
| | 123 | As for the name “libcucul”, please refer to the pioneer of modernist Polish fiction: |
| | 124 | |
| | 125 | {{{ |
| | 126 | #!html |
| | 127 | <blockquote><p> |
| | 128 | Mais contre le cucul, il n’y a pas de refuge. Courez après moi |
| | 129 | si vous voulez, je m’enfuis la gueule entre les mains. Et voilà, |
| | 130 | tralala, Zut à celui qui le lira ! |
| | 131 | <br /><small> -- Witold Gombrowicz, <i>Ferdydurke</i> </small> |
| | 132 | </p></blockquote> |
| | 133 | }}} |