[Xcb] xcb_image_text_8 Transparent Background
Peter Harris
pharris at opentext.com
Tue Jan 4 14:49:48 PST 2011
On 2011-01-02 04:05, Cinolt wrote:
> After trying to use xcb_poly_text_8, I seem to be facing a similar
> problem as is described here:
> http://lists.freedesktop.org/archives/xcb/2007-January/002533.html
>
> I define a structure:
>
> struct
> {
> char *chars;
> int nchars;
> int delta;
> xcb_font_t font;
> } item;
This has to go on the wire, so pointers and unsized types like "int" are
definitely wrong.
It should be something like (untested):
struct {
uint8_t nchars;
int8_t delta;
char text[];
} item;
Allocating an item of the correct size is left as an exercise for the
reader (although I believe C99 makes this easy).
Nobody uses the font switch option, because it's usually easier to just
ChangeGC in between PolyText requests than to build up a compound
PolyText request.
> cookie_text = xcb_poly_text_8_checked(c, w, gc, 16, 16, 1, (const
> uint8_t*)&item);
Should be (2 + item.nchars), not 1. It's a total length of the buffer
you've passed in.
Or 2*nitems + summation(item[i].nchars) if you pass in an array of
items. Note that all of the items must be contiguous in memory.
> and get the output 16, which in X11/X.h is defined as BadLength. Are
> there any examples at all of a working implementation of this function?
Most people use Pango or similar in combination with the RENDER
extension in order to get anti-aliased fonts and better unicode support.
Core X font rendering does not support anti-aliasing (and, though it
supports almost any glyph set, predates unicode).
Peter Harris
--
Open Text Connectivity Solutions Group
Peter Harris http://connectivity.opentext.com/
Research and Development Phone: +1 905 762 6001
pharris at opentext.com Toll Free: 1 877 359 4866
More information about the Xcb
mailing list