diff options
author | Maxime Coste <mawww@kakoune.org> | 2021-01-28 19:59:10 +1100 |
---|---|---|
committer | Thomas E. Dickey <dickey@invisible-island.net> | 2022-07-09 10:11:46 -0400 |
commit | cac2fd528dd0ba9ed2308f6dda4598993c51cf64 (patch) | |
tree | 336215416a6f1d0fce4418d5fea179bcf19e89ca | |
parent | 10b53d1fa37615e81d1e3b6e4d2d2e25e4342c15 (diff) | |
download | xorg-lib-libXft-cac2fd528dd0ba9ed2308f6dda4598993c51cf64.tar.gz |
Introduce a _XftCompositeString helper function
Dispatch to XRenderCompositeString{8,16,32} based off the given width.
Signed-off-by: Maxime Coste <mawww@kakoune.org>
Signed-off-by: Thomas E. Dickey <dickey@invisible-island.net>
-rw-r--r-- | src/xftrender.c | 61 |
1 files changed, 43 insertions, 18 deletions
diff --git a/src/xftrender.c b/src/xftrender.c index dd605c3..227ae7e 100644 --- a/src/xftrender.c +++ b/src/xftrender.c @@ -26,6 +26,47 @@ #define NUM_ELT_LOCAL 128 /* + * Dispatch glyph drawing to the correct XRenderCompositeString function + */ +static void +_XftCompositeString (Display *dpy, + int op, + Picture src, + Picture dst, + XRenderPictFormat *format, + GlyphSet glyphset, + int srcx, + int srcy, + int dstx, + int dsty, + int charwidth, + unsigned int *chars, + int nchars) +{ + if (nchars == 0) + return; + + switch (charwidth) { + case 1: + default: + XRenderCompositeString8 (dpy, op, + src, dst, format, glyphset, + srcx, srcy, dstx, dsty, (char*)chars, nchars); + break; + case 2: + XRenderCompositeString16(dpy, op, + src, dst, format, glyphset, + srcx, srcy, dstx, dsty, (unsigned short*)chars, nchars); + break; + case 4: + XRenderCompositeString32(dpy, op, + src, dst, format, glyphset, + srcx, srcy, dstx, dsty, (unsigned int*)chars, nchars); + break; + } +} + +/* * Use the Render extension to draw the glyphs */ @@ -114,24 +155,8 @@ XftGlyphRender (Display *dpy, case 4: char32[i] = (unsigned int) wire; break; } } - switch (width) { - case 1: - default: - XRenderCompositeString8 (dpy, op, - src, dst, font->format, font->glyphset, - srcx, srcy, x, y, char8, nglyphs); - break; - case 2: - XRenderCompositeString16(dpy, op, - src, dst, font->format, font->glyphset, - srcx, srcy, x, y, char16, nglyphs); - break; - case 4: - XRenderCompositeString32(dpy, op, - src, dst, font->format, font->glyphset, - srcx, srcy, x, y, char32, nglyphs); - break; - } + _XftCompositeString(dpy, op, src, dst, font->format, font->glyphset, + srcx, srcy, x, y, width, chars, nglyphs); if (chars != char_local) free (chars); bail1: |