1/* Copyright © 2006 Jamey Sharp.
2 *
3 * Permission is hereby granted, free of charge, to any person obtaining a
4 * copy of this software and associated documentation files (the "Software"),
5 * to deal in the Software without restriction, including without limitation
6 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
7 * and/or sell copies of the Software, and to permit persons to whom the
8 * Software is furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
17 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
18 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 *
20 * Except as contained in this notice, the names of the authors or their
21 * institutions shall not be used in advertising or otherwise to promote the
22 * sale, use or other dealings in this Software without prior written
23 * authorization from the authors.
24 */
25
26#ifndef XCB_RENDERUTIL
27#define XCB_RENDERUTIL
28#include <xcb/render.h>
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
34typedef enum xcb_pict_format_t {
35 XCB_PICT_FORMAT_ID = (1 << 0),
36 XCB_PICT_FORMAT_TYPE = (1 << 1),
37 XCB_PICT_FORMAT_DEPTH = (1 << 2),
38 XCB_PICT_FORMAT_RED = (1 << 3),
39 XCB_PICT_FORMAT_RED_MASK = (1 << 4),
40 XCB_PICT_FORMAT_GREEN = (1 << 5),
41 XCB_PICT_FORMAT_GREEN_MASK = (1 << 6),
42 XCB_PICT_FORMAT_BLUE = (1 << 7),
43 XCB_PICT_FORMAT_BLUE_MASK = (1 << 8),
44 XCB_PICT_FORMAT_ALPHA = (1 << 9),
45 XCB_PICT_FORMAT_ALPHA_MASK = (1 << 10),
46 XCB_PICT_FORMAT_COLORMAP = (1 << 11)
47} xcb_pict_format_t;
48
49typedef enum xcb_pict_standard_t {
50 XCB_PICT_STANDARD_ARGB_32,
51 XCB_PICT_STANDARD_RGB_24,
52 XCB_PICT_STANDARD_A_8,
53 XCB_PICT_STANDARD_A_4,
54 XCB_PICT_STANDARD_A_1
55} xcb_pict_standard_t;
56
57
58xcb_render_pictvisual_t *
59xcb_render_util_find_visual_format (const xcb_render_query_pict_formats_reply_t *formats,
60 const xcb_visualid_t visual);
61
62xcb_render_pictforminfo_t *
63xcb_render_util_find_format (const xcb_render_query_pict_formats_reply_t *formats,
64 unsigned long mask,
65 const xcb_render_pictforminfo_t *ptemplate,
66 int count);
67
68xcb_render_pictforminfo_t *
69xcb_render_util_find_standard_format (const xcb_render_query_pict_formats_reply_t *formats,
70 xcb_pict_standard_t format);
71
72const xcb_render_query_version_reply_t *
73xcb_render_util_query_version (xcb_connection_t *c);
74
75const xcb_render_query_pict_formats_reply_t *
76xcb_render_util_query_formats (xcb_connection_t *c);
77
78int
79xcb_render_util_disconnect (xcb_connection_t *c);
80
81/* wrappers for xcb_render_composite_glyphs_8/16/32 */
82
83typedef struct xcb_render_util_composite_text_stream_t xcb_render_util_composite_text_stream_t;
84
85xcb_render_util_composite_text_stream_t *
86xcb_render_util_composite_text_stream (
87 xcb_render_glyphset_t initial_glyphset,
88 uint32_t total_glyphs,
89 uint32_t total_glyphset_changes );
90
91void
92xcb_render_util_glyphs_8 (
93 xcb_render_util_composite_text_stream_t *stream,
94 int16_t dx,
95 int16_t dy,
96 uint32_t count,
97 const uint8_t *glyphs );
98
99void
100xcb_render_util_glyphs_16 (
101 xcb_render_util_composite_text_stream_t *stream,
102 int16_t dx,
103 int16_t dy,
104 uint32_t count,
105 const uint16_t *glyphs );
106
107void
108xcb_render_util_glyphs_32 (
109 xcb_render_util_composite_text_stream_t *stream,
110 int16_t dx,
111 int16_t dy,
112 uint32_t count,
113 const uint32_t *glyphs );
114
115void
116xcb_render_util_change_glyphset (
117 xcb_render_util_composite_text_stream_t *stream,
118 xcb_render_glyphset_t glyphset );
119
120xcb_void_cookie_t
121xcb_render_util_composite_text (
122 xcb_connection_t *xc,
123 uint8_t op,
124 xcb_render_picture_t src,
125 xcb_render_picture_t dst,
126 xcb_render_pictformat_t mask_format,
127 int16_t src_x,
128 int16_t src_y,
129 xcb_render_util_composite_text_stream_t *stream );
130
131xcb_void_cookie_t
132xcb_render_util_composite_text_checked (
133 xcb_connection_t *xc,
134 uint8_t op,
135 xcb_render_picture_t src,
136 xcb_render_picture_t dst,
137 xcb_render_pictformat_t mask_format,
138 int16_t src_x,
139 int16_t src_y,
140 xcb_render_util_composite_text_stream_t *stream );
141
142void
143xcb_render_util_composite_text_free (
144 xcb_render_util_composite_text_stream_t *stream );
145
146#ifdef __cplusplus
147}
148#endif
149
150#endif /* XCB_RENDERUTIL */
151