summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJamey Sharp <jamey@minilop.net>2006-10-14 19:05:52 -0700
committerJamey Sharp <jamey@minilop.net>2006-10-14 19:05:52 -0700
commite09eb3ae2f7f98255ee722cc1c7555ff6f8c7b8b (patch)
tree92e5c2c9afc4d98c2c4def7e4d1ff696f00fac2e
parente8cc999b0433aa5b227c5fcc93413ec017d0db8a (diff)
Simplify xcb_render_util_composite_text, add xcb_render_util_composite_text_checked.
-rw-r--r--renderutil/glyph.c85
-rw-r--r--renderutil/xcb_renderutil.h11
2 files changed, 70 insertions, 26 deletions
diff --git a/renderutil/glyph.c b/renderutil/glyph.c
index da8c53f..dc6624f 100644
--- a/renderutil/glyph.c
+++ b/renderutil/glyph.c
@@ -198,6 +198,18 @@ xcb_render_util_change_glyphset (
stream->current_glyphset = glyphset;
}
+typedef xcb_void_cookie_t
+(*xcb_render_composite_glyphs_func) (xcb_connection_t *c,
+ uint8_t op,
+ xcb_render_picture_t src,
+ xcb_render_picture_t dst,
+ xcb_render_pictformat_t mask_format,
+ xcb_render_glyphset_t glyphset,
+ int16_t src_x,
+ int16_t src_y,
+ uint32_t glyphcmds_len,
+ const uint8_t *glyphcmds);
+
xcb_void_cookie_t
xcb_render_util_composite_text (
@@ -210,45 +222,66 @@ xcb_render_util_composite_text (
int16_t src_y,
xcb_render_util_composite_text_stream_t *stream )
{
- xcb_void_cookie_t reply = { 0 };
- uint32_t stream_len = CURRENT_LEN(stream);
+ xcb_render_composite_glyphs_func f;
switch (stream->glyph_size)
{
case 1:
- reply = xcb_render_composite_glyphs_8 (
- xc, op, src, dst, mask_format,
- stream->initial_glyphset,
- src_x, src_y,
- stream_len,
- (uint8_t *)stream->stream
- );
+ f = xcb_render_composite_glyphs_8;
break;
case 2:
- reply = xcb_render_composite_glyphs_16 (
- xc, op, src, dst, mask_format,
- stream->initial_glyphset,
- src_x, src_y,
- stream_len,
- (uint8_t *)stream->stream
- );
+ f = xcb_render_composite_glyphs_16;
break;
case 4:
- reply = xcb_render_composite_glyphs_32 (
- xc, op, src, dst, mask_format,
- stream->initial_glyphset,
- src_x, src_y,
- stream_len,
- (uint8_t *)stream->stream
- );
+ f = xcb_render_composite_glyphs_32;
break;
default: /* uninitialized */
- break;
+ return xcb_no_operation(xc);
}
- return reply;
+ return f(
+ xc, op, src, dst, mask_format,
+ stream->initial_glyphset,
+ src_x, src_y,
+ CURRENT_LEN(stream),
+ (uint8_t *)stream->stream
+ );
}
-/* FIXME: xcb_render_util_composite_text_checked */
+xcb_void_cookie_t
+xcb_render_util_composite_text_checked (
+ xcb_connection_t *xc,
+ uint8_t op,
+ xcb_render_picture_t src,
+ xcb_render_picture_t dst,
+ xcb_render_pictformat_t mask_format,
+ int16_t src_x,
+ int16_t src_y,
+ xcb_render_util_composite_text_stream_t *stream )
+{
+ xcb_render_composite_glyphs_func f;
+
+ switch (stream->glyph_size)
+ {
+ case 1:
+ f = xcb_render_composite_glyphs_8_checked;
+ break;
+ case 2:
+ f = xcb_render_composite_glyphs_16_checked;
+ break;
+ case 4:
+ f = xcb_render_composite_glyphs_32_checked;
+ break;
+ default: /* uninitialized */
+ return xcb_no_operation_checked(xc);
+ }
+ return f(
+ xc, op, src, dst, mask_format,
+ stream->initial_glyphset,
+ src_x, src_y,
+ CURRENT_LEN(stream),
+ (uint8_t *)stream->stream
+ );
+}
void
xcb_render_util_composite_text_free (
diff --git a/renderutil/xcb_renderutil.h b/renderutil/xcb_renderutil.h
index 33592a2..2026585 100644
--- a/renderutil/xcb_renderutil.h
+++ b/renderutil/xcb_renderutil.h
@@ -125,6 +125,17 @@ xcb_render_util_composite_text (
int16_t src_y,
xcb_render_util_composite_text_stream_t *stream );
+xcb_void_cookie_t
+xcb_render_util_composite_text_checked (
+ xcb_connection_t *xc,
+ uint8_t op,
+ xcb_render_picture_t src,
+ xcb_render_picture_t dst,
+ xcb_render_pictformat_t mask_format,
+ int16_t src_x,
+ int16_t src_y,
+ xcb_render_util_composite_text_stream_t *stream );
+
void
xcb_render_util_composite_text_free (
xcb_render_util_composite_text_stream_t *stream );