[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libcaca] Re: Time to think about an API freeze
Sam Hocevar wrote:
From the top of my head and the currently rather anmaintained TODO
list, here are my plans. Not everything is really essential:
I-just-woke-up-and-I-need-a-coffee comments :
Throwing a silly idea, on several drivers (libcaca related, so), there's
a way to change the character set. I'm thinking here about graphical
drivers (X11, OpenGL, mostly), but also some text drivers (conio,
kernel, as VGA font is easily alterable). It remains a problem for the
other drivers (SLang, ncurses, win32, network), as there's no way (to
me) to change it. It was my silly idea of the day.
- allow to select the characters that will be used for bitmap
in fact it fits perfectly with idea of framebuffer driver. Like network
driver, which uses ANSI exporter to get a displayable representation of
the current canvas, the framebuffer driver could use a bitmap output.
And it'll pave the way for more generic formats, such as png, jpg, etc
(although I don't think that's the goal of libcucul/caca to handle such
- bitmap output support (will require one or several custom fonts),
maybe should be in libcaca.
One big lack in libcaca is that it doesn't handle grayscale only
outputs. It makes a grayscale image look quite ugly compared to aalib.
Think about ASCII output, for example, or B&W devices (old monitors,
mainly, but printers, and tiny LCD displays, too).
- support for more than 16 colours, maybe truecolor, maybe less
Good luck man, you'll transform a pure ascii sprite (\_o<) to unicode
one (/▔o<), and appart from having a generic UTF8 font with limited
characters set dealing with all known ascii "rotations", it'll be hard.
Not to mention all drivers can't support unicode.
- ASCII/ANSI art loading functions (maybe load them as sprites)
- old school ASCII-art handling functions, for instance mirroring
routines that are able to change "\_o< !" into "! >o_/" or even
into "/▔o< ¡" with Unicode support added.
We already talked about this, I'll keep the think I'm working on secret
for now, but yes, it'll be difficult without having a libcaca driven
event loop. Or it'll just suck. Ideas are welcome.
- text edit widget with cursor support (I'm unsure about this, it
seems pretty difficult)
Again, that'll be quite straightforward for graphical drivers (X11,
OpenGL, Framebuffer), but nearly impossible on text ones. More infos are
- support for double width glyphs (also needs some libcaca changes)
- Unicode support for GL
Needs a font, we'll really need to embbed one in the core.
- and Jylam wants a framebuffer output
The "just" word is maybe a bit misused. Talking about python binding for
example it'll take hours, there's now a lot of work, and two separate
libraries to work on. I guess that's the same problem for Perl one, but
anyway, it needs to be done. I was just talking about "just" word :)
- [THIS PLACE FOR RENT - YOUR IDEA HERE]
Speaking of the language bindings, here is a list of what would be
nice to have, though it can wait long after the API freeze:
- Perl (already here, just needs an update)
- Python (already here, just needs an update)
- C++ (given how object-oriented we now are, it will be a walk in the
I can handle this one if noone else is interrested.
- C# (it's the next big thing, believe me)
It'll be a walk in the park as well, I'll take care about this one for sure.
PHP bindings looks to be a pain is the ass to write, not to mention PHP3
(forget this one?), PHP4, PHP5, PHP6 (not released yet IRRC)
- PHP (together with the HTML output it would allow for nice web
- maybe Ruby, maybe Java
Feel free :)
So we need a real documentation. I mean, we already have a doxygen one,
but we need some PDF's, 1 or more Powerpoint slides for Imagina, a bunch
of technology evangelist (we maybe know a fat one, but until we get
$100.000,00 we won't be able to hire him) (and for that we'll need to
take a .com domain and add a blog for each developper)
And I want both test programs and documentation for each language
we have bindings for. I enjoy libcaca being slightly provocative,
technically impressive, and rather useless yet totally essential. Having
a professional documentation would add to the ambiguity.
My conclusion : there's a lot of work, but API in itself seems quite
stable, I guess a release is not that far, talking about days or weeks.
This is the libcaca mailing-list, see http://sam.zoy.org/libcaca/
Trouble unsubscribing? Please contact <firstname.lastname@example.org>
List archives are at http://sam.zoy.org/libcaca/threads.html