So, here we are. (Sorry, was somewhat busy the last days)
Now that we discussed the outlines of liblitz' future, we now need to
start with some specifics.
The first decision that has to be made is regarding text handling. I
would opt for dropping char* for strings and use some more
sophisticated structure instead. This would have several benefits:
a) one could use a gapped array internally for text, so that insertions
work in constant time.
b) as many operations on UTF-8 characters change their byte-length,
this would also work in constant time and wouldn't need any
reallocations most of the time
c) we wouldn't need two distinct sets of string manipulation functions,
one for gapped-array text, and one for char*-text
Of course random access in constant time would be quite lost, but on
the one hand, constant-time random access is seldom needed, and on the
other hand, a better access time than O(log(n)) still can be achieved
with some buffering.
Then, how to get rid of all the Xlib crap from drawing routines?
Liblitz should provide better geometrical primitives drawing routines,
for example for filled and un-filled rectangles, and for text.
blitz_drawlabel and friends should be replaced by a label widget.
Atm, the label drawing routines can't be really used for the text
widget for example, as they do spacing at the left and right and text
shortening themselves, which interferes with the text widget's routines.
Should every widget have a BlitzDraw thing? This would allow to set
fonts and colours on a per-widget basis, and would eliminated much
copying/changing properties of the window's BlitzDraw. I suppose dpy
and screen can be incorporated into BlitzDraw too, or will that
interfere with Xinerama support in the future?
Greetings,
Denis
This archive was generated by hypermail 2.2.0 : Sun Jul 13 2008 - 16:07:13 UTC