diff options
Diffstat (limited to 'renderutil')
-rw-r--r-- | renderutil/Makefile.am | 14 | ||||
-rw-r--r-- | renderutil/cache.c | 234 | ||||
-rw-r--r-- | renderutil/glyph.c | 287 | ||||
-rw-r--r-- | renderutil/util.c | 251 | ||||
-rw-r--r-- | renderutil/xcb-renderutil.pc.in | 11 | ||||
-rw-r--r-- | renderutil/xcb_renderutil.h | 142 |
6 files changed, 0 insertions, 939 deletions
diff --git a/renderutil/Makefile.am b/renderutil/Makefile.am deleted file mode 100644 index aaf0f48..0000000 --- a/renderutil/Makefile.am +++ /dev/null @@ -1,14 +0,0 @@ - -MAINTAINERCLEANFILES = Makefile.in - -lib_LTLIBRARIES = libxcb-render-util.la - -xcbinclude_HEADERS = xcb_renderutil.h - -libxcb_render_util_la_SOURCES = cache.c util.c glyph.c -libxcb_render_util_la_CPPFLAGS = $(XCB_CFLAGS) $(XCB_RENDER_CFLAGS) -libxcb_render_util_la_LIBADD = $(XCB_LIBS) $(XCB_RENDER_LIBS) - -pkgconfig_DATA = xcb-renderutil.pc - -EXTRA_DIST=xcb-renderutil.pc.in diff --git a/renderutil/cache.c b/renderutil/cache.c deleted file mode 100644 index 96acbe8..0000000 --- a/renderutil/cache.c +++ /dev/null @@ -1,234 +0,0 @@ -/* Copyright © 2006 Jamey Sharp. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the names of the authors or their - * institutions shall not be used in advertising or otherwise to promote the - * sale, use or other dealings in this Software without prior written - * authorization from the authors. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif -#include "xcb_renderutil.h" -#include <stdlib.h> -#include <pthread.h> - -typedef struct connection_cache { - struct connection_cache *next; /* keep a linked list */ - xcb_connection_t *c; /* which display this is */ - xcb_render_query_version_reply_t *version; - xcb_render_query_pict_formats_reply_t *formats; -} connection_cache; - -static struct { - pthread_mutex_t lock; - connection_cache *head; /* start of the list */ - connection_cache *cur; /* most recently used */ -} connections = { PTHREAD_MUTEX_INITIALIZER }; - -/* - * If the server is missing support for any of the required depths on - * any screen, tell the application that Render is not present. - */ - -#define DEPTH_MASK(d) (1 << ((d) - 1)) - -/* - * Render requires support for depth 1, 4, 8, 24 and 32 pixmaps - */ - -#define REQUIRED_DEPTHS (DEPTH_MASK(1) | \ - DEPTH_MASK(4) | \ - DEPTH_MASK(8) | \ - DEPTH_MASK(24) | \ - DEPTH_MASK(32)) - -/* Test each depth not explicitly advertised to see if pixmap creation - * succeeds: if it does, that depth is usable. */ -static int -pixmap_depths_usable (xcb_connection_t *c, uint32_t missing, xcb_pixmap_t pixmap, xcb_drawable_t root) -{ - xcb_void_cookie_t create_cookie[32] = { { 0 } }; - xcb_void_cookie_t free_cookie[32] = { { 0 } }; - int d; - int success = 1; - for (d = 1; d <= 32; d++) - if (missing & DEPTH_MASK(d)) - { - create_cookie[d - 1] = xcb_create_pixmap_checked (c, d, pixmap, root, 1, 1); - free_cookie[d - 1] = xcb_free_pixmap_checked (c, pixmap); - if (!create_cookie[d - 1].sequence || !free_cookie[d - 1].sequence) - { - success = 0; - break; - } - } - for (d = 0; d < 32; d++) - if (create_cookie[d].sequence || free_cookie[d].sequence) - { - xcb_generic_error_t *create_error = xcb_request_check (c, create_cookie[d]); - xcb_generic_error_t *free_error = xcb_request_check (c, free_cookie[d]); - success = success && !create_error; - free(create_error); - free(free_error); - } - return success; -} - -static int -has_required_depths (xcb_connection_t *c) -{ - xcb_screen_iterator_t screens; - xcb_pixmap_t pixmap = { -1 }; - for (screens = xcb_setup_roots_iterator(xcb_get_setup(c)); screens.rem; xcb_screen_next(&screens)) - { - xcb_depth_iterator_t depths; - uint32_t missing = REQUIRED_DEPTHS; - xcb_drawable_t root; - - for (depths = xcb_screen_allowed_depths_iterator(screens.data); depths.rem; xcb_depth_next(&depths)) - missing &= ~DEPTH_MASK(depths.data->depth); - if (!missing) - continue; - - /* - * Ok, this is ugly. It should be sufficient at this - * point to just return false, but Xinerama is broken at - * this point and only advertises depths which have an - * associated visual. Of course, the other depths still - * work, but the only way to find out is to try them. - */ - if (pixmap == -1) - pixmap = xcb_generate_id(c); - root = screens.data->root; - if (!pixmap_depths_usable (c, missing, pixmap, root)) - return 0; - } - return 1; -} - -static connection_cache * -find_or_create_display (xcb_connection_t *c) -{ - connection_cache *info; - xcb_render_query_version_cookie_t version_cookie; - xcb_render_query_pict_formats_cookie_t formats_cookie; - int present; - - /* - * look for display in list - */ - for (info = connections.head; info; info = info->next) - if (info->c == c) { - connections.cur = info; /* cache most recently used */ - return info; - } - - /* - * don't already have this display: add it. - */ - info = malloc (sizeof (connection_cache)); - if (!info) - return NULL; - info->c = c; - - version_cookie = xcb_render_query_version(c, 0, 10); - formats_cookie = xcb_render_query_pict_formats(c); - xcb_flush(c); - present = has_required_depths (c); - info->version = xcb_render_query_version_reply(c, version_cookie, 0); - info->formats = xcb_render_query_pict_formats_reply(c, formats_cookie, 0); - - if (!present || !info->version || !info->formats) - { - free(info->version); - info->version = 0; - free(info->formats); - info->formats = 0; - } - /* Check for the lack of sub-pixel data */ - else if (info->version->major_version == 0 && info->version->minor_version < 6) - info->formats->num_subpixel = 0; - - /* - * now, chain it onto the list - */ - info->next = connections.head; - connections.head = info; - connections.cur = info; - - return info; -} - -static connection_cache * -find_display (xcb_connection_t *c) -{ - connection_cache *info; - - /* - * see if this was the most recently accessed display - */ - if ((info = connections.cur) && info->c == c) - return info; - - pthread_mutex_lock(&connections.lock); - info = find_or_create_display (c); - pthread_mutex_unlock(&connections.lock); - return info; -} - -const xcb_render_query_version_reply_t * -xcb_render_util_query_version (xcb_connection_t *c) -{ - connection_cache *info = find_display (c); - if (!info) - return 0; - return info->version; -} - -const xcb_render_query_pict_formats_reply_t * -xcb_render_util_query_formats (xcb_connection_t *c) -{ - connection_cache *info = find_display (c); - if (!info) - return 0; - return info->formats; -} - -int -xcb_render_util_disconnect (xcb_connection_t *c) -{ - connection_cache **prev, *cur = NULL; - pthread_mutex_lock(&connections.lock); - for(prev = &connections.head; *prev; prev = &(*prev)->next) - if((*prev)->c == c) - { - cur = *prev; - *prev = cur->next; - if(cur == connections.cur) - connections.cur = NULL; /* flush cache */ - free(cur->version); - free(cur->formats); - free(cur); - break; - } - pthread_mutex_unlock(&connections.lock); - return cur != NULL; -} diff --git a/renderutil/glyph.c b/renderutil/glyph.c deleted file mode 100644 index 1721cad..0000000 --- a/renderutil/glyph.c +++ /dev/null @@ -1,287 +0,0 @@ -/* Copyright © 2006 Ian Osgood - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the names of the authors or their - * institutions shall not be used in advertising or otherwise to promote the - * sale, use or other dealings in this Software without prior written - * authorization from the authors. - */ - -#include <stdlib.h> -#include <string.h> - -#include "xcb_renderutil.h" - -typedef struct _glyph_header_t { - uint8_t count; - uint8_t pad0[3]; - int16_t dx, dy; -} _glyph_header_t; - -/* implementation of the opaque stream */ -struct xcb_render_util_composite_text_stream_t { - /* state info */ - uint32_t glyph_size; /* 0 for unset, 1/2/4 for 8/16/32 */ - xcb_render_glyphset_t initial_glyphset; - xcb_render_glyphset_t current_glyphset; - - /* dynamically allocated stream */ - /* contents are 32-bit aligned, network byte order */ - size_t stream_len; - uint32_t *stream; - uint32_t *current; -}; - -#define CURRENT_LEN(s) (((char *)s->current - (char *)s->stream)) - -xcb_render_util_composite_text_stream_t * -xcb_render_util_composite_text_stream ( - xcb_render_glyphset_t initial_glyphset, - uint32_t total_glyphs, - uint32_t total_glyphset_changes ) -{ - xcb_render_util_composite_text_stream_t *stream; - size_t size = 32; - - /* assume worst case: each glyph has its own dx,dy */ - if (total_glyphs || total_glyphset_changes) { - size = total_glyphs * 3 * sizeof(uint32_t) - + total_glyphset_changes * 3 * sizeof(uint32_t); - } - - stream = malloc(sizeof(xcb_render_util_composite_text_stream_t)); - - stream->glyph_size = 0; - stream->initial_glyphset = initial_glyphset; - stream->current_glyphset = initial_glyphset; - - stream->stream_len = size; - stream->stream = malloc(size); - stream->current = stream->stream; - - return stream; -} - -static void -_grow_stream( xcb_render_util_composite_text_stream_t *stream, size_t increase ) -{ - size_t current_len = CURRENT_LEN(stream); - if (current_len + increase > stream->stream_len) { - uint32_t *s = realloc(stream->stream, 2 * stream->stream_len); - if (s != NULL) { - stream->stream_len *= 2; - stream->stream = s; - stream->current = stream->stream + (current_len>>2); - } - } -} - -void -xcb_render_util_glyphs_8 ( - xcb_render_util_composite_text_stream_t *stream, - int16_t dx, - int16_t dy, - uint32_t count, - const uint8_t *glyphs ) -{ - _glyph_header_t header = { count, {0,0,0}, dx, dy }; - - if (count > 252) return; /* FIXME */ - - if (stream->glyph_size != sizeof(*glyphs)) { - if (stream->glyph_size != 0) - return; - stream->glyph_size = sizeof(*glyphs); - } - _grow_stream(stream, sizeof(header) + count+3); - - memcpy(stream->current, &header, sizeof(header)); - stream->current += 2; - - memcpy(stream->current, glyphs, header.count); - stream->current += ((int)header.count+3)>>2; -} - -void -xcb_render_util_glyphs_16 ( - xcb_render_util_composite_text_stream_t *stream, - int16_t dx, - int16_t dy, - uint32_t count, - const uint16_t *glyphs ) -{ - _glyph_header_t header = { count, {0,0,0}, dx, dy }; - - if (count > 254) return; /* FIXME */ - - if (stream->glyph_size != sizeof(*glyphs)) { - if (stream->glyph_size != 0) - return; - stream->glyph_size = sizeof(*glyphs); - } - _grow_stream(stream, sizeof(header) + count*sizeof(*glyphs)+1); - - memcpy(stream->current, &header, sizeof(header)); - stream->current += 2; - - memcpy(stream->current, glyphs, header.count*sizeof(*glyphs)); - stream->current += ((int)header.count*sizeof(*glyphs)+3)>>2; -} - -void -xcb_render_util_glyphs_32 ( - xcb_render_util_composite_text_stream_t *stream, - int16_t dx, - int16_t dy, - uint32_t count, - const uint32_t *glyphs ) -{ - _glyph_header_t header = { count, {0,0,0}, dx, dy }; - - if (count > 254) return; /* FIXME */ - - if (stream->glyph_size != sizeof(*glyphs)) { - if (stream->glyph_size != 0) - return; - stream->glyph_size = sizeof(*glyphs); - } - _grow_stream(stream, sizeof(header) + count*sizeof(*glyphs)+1); - - memcpy(stream->current, &header, sizeof(header)); - stream->current += 2; - - memcpy(stream->current, glyphs, header.count*sizeof(*glyphs)); - stream->current += header.count; -} - -/* note: these glyph arrays must be swapped to network byte order */ - -void -xcb_render_util_change_glyphset ( - xcb_render_util_composite_text_stream_t *stream, - xcb_render_glyphset_t glyphset ) -{ - static _glyph_header_t header = { 255, {0,0,0}, 0, 0 }; - - if (glyphset == stream->current_glyphset) - return; - - _grow_stream(stream, 3*sizeof(uint32_t)); - - memcpy(stream->current, &header, sizeof(header)); - stream->current += 2; - - *stream->current = glyphset; - stream->current++; - - 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 ( - 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; - break; - case 2: - f = xcb_render_composite_glyphs_16; - break; - case 4: - f = xcb_render_composite_glyphs_32; - break; - default: /* uninitialized */ - return xcb_no_operation(xc); - } - return f( - xc, op, src, dst, mask_format, - stream->initial_glyphset, - src_x, src_y, - CURRENT_LEN(stream), - (uint8_t *)stream->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 ) -{ - 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 ( - xcb_render_util_composite_text_stream_t *stream ) -{ - free(stream->stream); - free(stream); -} diff --git a/renderutil/util.c b/renderutil/util.c deleted file mode 100644 index 2d8840d..0000000 --- a/renderutil/util.c +++ /dev/null @@ -1,251 +0,0 @@ -/* Copyright © 2000 Keith Packard - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#include "xcb_renderutil.h" - -xcb_render_pictvisual_t * -xcb_render_util_find_visual_format (const xcb_render_query_pict_formats_reply_t *formats, - const xcb_visualid_t visual) -{ - xcb_render_pictscreen_iterator_t screens; - xcb_render_pictdepth_iterator_t depths; - xcb_render_pictvisual_iterator_t visuals; - if (!formats) - return 0; - for (screens = xcb_render_query_pict_formats_screens_iterator(formats); screens.rem; xcb_render_pictscreen_next(&screens)) - for (depths = xcb_render_pictscreen_depths_iterator(screens.data); depths.rem; xcb_render_pictdepth_next(&depths)) - for (visuals = xcb_render_pictdepth_visuals_iterator(depths.data); visuals.rem; xcb_render_pictvisual_next(&visuals)) - if (visuals.data->visual == visual) - return visuals.data; - return 0; -} - -xcb_render_pictforminfo_t * -xcb_render_util_find_format (const xcb_render_query_pict_formats_reply_t *formats, - unsigned long mask, - const xcb_render_pictforminfo_t *template, - int count) -{ - xcb_render_pictforminfo_iterator_t i; - if (!formats) - return 0; - for (i = xcb_render_query_pict_formats_formats_iterator(formats); i.rem; xcb_render_pictforminfo_next(&i)) - { - if (mask & XCB_PICT_FORMAT_ID) - if (template->id != i.data->id) - continue; - if (mask & XCB_PICT_FORMAT_TYPE) - if (template->type != i.data->type) - continue; - if (mask & XCB_PICT_FORMAT_DEPTH) - if (template->depth != i.data->depth) - continue; - if (mask & XCB_PICT_FORMAT_RED) - if (template->direct.red_shift != i.data->direct.red_shift) - continue; - if (mask & XCB_PICT_FORMAT_RED_MASK) - if (template->direct.red_mask != i.data->direct.red_mask) - continue; - if (mask & XCB_PICT_FORMAT_GREEN) - if (template->direct.green_shift != i.data->direct.green_shift) - continue; - if (mask & XCB_PICT_FORMAT_GREEN_MASK) - if (template->direct.green_mask != i.data->direct.green_mask) - continue; - if (mask & XCB_PICT_FORMAT_BLUE) - if (template->direct.blue_shift != i.data->direct.blue_shift) - continue; - if (mask & XCB_PICT_FORMAT_BLUE_MASK) - if (template->direct.blue_mask != i.data->direct.blue_mask) - continue; - if (mask & XCB_PICT_FORMAT_ALPHA) - if (template->direct.alpha_shift != i.data->direct.alpha_shift) - continue; - if (mask & XCB_PICT_FORMAT_ALPHA_MASK) - if (template->direct.alpha_mask != i.data->direct.alpha_mask) - continue; - if (mask & XCB_PICT_FORMAT_COLORMAP) - if (template->colormap != i.data->colormap) - continue; - if (count-- == 0) - return i.data; - } - return 0; -} - -xcb_render_pictforminfo_t * -xcb_render_util_find_standard_format (const xcb_render_query_pict_formats_reply_t *formats, - xcb_pict_standard_t format) -{ - static const struct { - xcb_render_pictforminfo_t templ; - unsigned long mask; - } standardFormats[] = { - /* XCB_PICT_STANDARD_ARGB_32 */ - { - { - 0, /* id */ - XCB_RENDER_PICT_TYPE_DIRECT, /* type */ - 32, /* depth */ - { 0 }, /* pad */ - { /* direct */ - 16, /* direct.red */ - 0xff, /* direct.red_mask */ - 8, /* direct.green */ - 0xff, /* direct.green_mask */ - 0, /* direct.blue */ - 0xff, /* direct.blue_mask */ - 24, /* direct.alpha */ - 0xff, /* direct.alpha_mask */ - }, - 0, /* colormap */ - }, - XCB_PICT_FORMAT_TYPE | - XCB_PICT_FORMAT_DEPTH | - XCB_PICT_FORMAT_RED | - XCB_PICT_FORMAT_RED_MASK | - XCB_PICT_FORMAT_GREEN | - XCB_PICT_FORMAT_GREEN_MASK | - XCB_PICT_FORMAT_BLUE | - XCB_PICT_FORMAT_BLUE_MASK | - XCB_PICT_FORMAT_ALPHA | - XCB_PICT_FORMAT_ALPHA_MASK, - }, - /* XCB_PICT_STANDARD_RGB_24 */ - { - { - 0, /* id */ - XCB_RENDER_PICT_TYPE_DIRECT, /* type */ - 24, /* depth */ - { 0 }, /* pad */ - { /* direct */ - 16, /* direct.red */ - 0xff, /* direct.red_MASK */ - 8, /* direct.green */ - 0xff, /* direct.green_MASK */ - 0, /* direct.blue */ - 0xff, /* direct.blue_MASK */ - 0, /* direct.alpha */ - 0x00, /* direct.alpha_MASK */ - }, - 0, /* colormap */ - }, - XCB_PICT_FORMAT_TYPE | - XCB_PICT_FORMAT_DEPTH | - XCB_PICT_FORMAT_RED | - XCB_PICT_FORMAT_RED_MASK | - XCB_PICT_FORMAT_GREEN | - XCB_PICT_FORMAT_GREEN_MASK | - XCB_PICT_FORMAT_BLUE | - XCB_PICT_FORMAT_BLUE_MASK | - XCB_PICT_FORMAT_ALPHA_MASK, - }, - /* XCB_PICT_STANDARD_A_8 */ - { - { - 0, /* id */ - XCB_RENDER_PICT_TYPE_DIRECT, /* type */ - 8, /* depth */ - { 0 }, /* pad */ - { /* direct */ - 0, /* direct.red */ - 0x00, /* direct.red_MASK */ - 0, /* direct.green */ - 0x00, /* direct.green_MASK */ - 0, /* direct.blue */ - 0x00, /* direct.blue_MASK */ - 0, /* direct.alpha */ - 0xff, /* direct.alpha_MASK */ - }, - 0, /* colormap */ - }, - XCB_PICT_FORMAT_TYPE | - XCB_PICT_FORMAT_DEPTH | - XCB_PICT_FORMAT_RED_MASK | - XCB_PICT_FORMAT_GREEN_MASK | - XCB_PICT_FORMAT_BLUE_MASK | - XCB_PICT_FORMAT_ALPHA | - XCB_PICT_FORMAT_ALPHA_MASK, - }, - /* XCB_PICT_STANDARD_A_4 */ - { - { - 0, /* id */ - XCB_RENDER_PICT_TYPE_DIRECT, /* type */ - 4, /* depth */ - { 0 }, /* pad */ - { /* direct */ - 0, /* direct.red */ - 0x00, /* direct.red_MASK */ - 0, /* direct.green */ - 0x00, /* direct.green_MASK */ - 0, /* direct.blue */ - 0x00, /* direct.blue_MASK */ - 0, /* direct.alpha */ - 0x0f, /* direct.alpha_MASK */ - }, - 0, /* colormap */ - }, - XCB_PICT_FORMAT_TYPE | - XCB_PICT_FORMAT_DEPTH | - XCB_PICT_FORMAT_RED_MASK | - XCB_PICT_FORMAT_GREEN_MASK | - XCB_PICT_FORMAT_BLUE_MASK | - XCB_PICT_FORMAT_ALPHA | - XCB_PICT_FORMAT_ALPHA_MASK, - }, - /* XCB_PICT_STANDARD_A_1 */ - { - { - 0, /* id */ - XCB_RENDER_PICT_TYPE_DIRECT, /* type */ - 1, /* depth */ - { 0 }, /* pad */ - { /* direct */ - 0, /* direct.red */ - 0x00, /* direct.red_MASK */ - 0, /* direct.green */ - 0x00, /* direct.green_MASK */ - 0, /* direct.blue */ - 0x00, /* direct.blue_MASK */ - 0, /* direct.alpha */ - 0x01, /* direct.alpha_MASK */ - }, - 0, /* colormap */ - }, - XCB_PICT_FORMAT_TYPE | - XCB_PICT_FORMAT_DEPTH | - XCB_PICT_FORMAT_RED_MASK | - XCB_PICT_FORMAT_GREEN_MASK | - XCB_PICT_FORMAT_BLUE_MASK | - XCB_PICT_FORMAT_ALPHA | - XCB_PICT_FORMAT_ALPHA_MASK, - }, - }; - - if (format < 0 || format >= sizeof(standardFormats) / sizeof(*standardFormats)) - return 0; - - return xcb_render_util_find_format (formats, - standardFormats[format].mask, - &standardFormats[format].templ, - 0); -} diff --git a/renderutil/xcb-renderutil.pc.in b/renderutil/xcb-renderutil.pc.in deleted file mode 100644 index cbad815..0000000 --- a/renderutil/xcb-renderutil.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: XCB RenderUtil library -Description: XCB RENDER-extension utilities library -Version: @PACKAGE_VERSION@ -Requires: xcb xcb-render -Libs: -L${libdir} -lxcb-render-util @LIBS@ -Cflags: -I${includedir} diff --git a/renderutil/xcb_renderutil.h b/renderutil/xcb_renderutil.h deleted file mode 100644 index 6eb5923..0000000 --- a/renderutil/xcb_renderutil.h +++ /dev/null @@ -1,142 +0,0 @@ -/* Copyright © 2006 Jamey Sharp. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the names of the authors or their - * institutions shall not be used in advertising or otherwise to promote the - * sale, use or other dealings in this Software without prior written - * authorization from the authors. - */ - -#ifndef XCB_RENDERUTIL -#define XCB_RENDERUTIL -#include <xcb/render.h> - -typedef enum xcb_pict_format_t { - XCB_PICT_FORMAT_ID = (1 << 0), - XCB_PICT_FORMAT_TYPE = (1 << 1), - XCB_PICT_FORMAT_DEPTH = (1 << 2), - XCB_PICT_FORMAT_RED = (1 << 3), - XCB_PICT_FORMAT_RED_MASK = (1 << 4), - XCB_PICT_FORMAT_GREEN = (1 << 5), - XCB_PICT_FORMAT_GREEN_MASK = (1 << 6), - XCB_PICT_FORMAT_BLUE = (1 << 7), - XCB_PICT_FORMAT_BLUE_MASK = (1 << 8), - XCB_PICT_FORMAT_ALPHA = (1 << 9), - XCB_PICT_FORMAT_ALPHA_MASK = (1 << 10), - XCB_PICT_FORMAT_COLORMAP = (1 << 11) -} xcb_pict_format_t; - -typedef enum xcb_pict_standard_t { - XCB_PICT_STANDARD_ARGB_32, - XCB_PICT_STANDARD_RGB_24, - XCB_PICT_STANDARD_A_8, - XCB_PICT_STANDARD_A_4, - XCB_PICT_STANDARD_A_1 -} xcb_pict_standard_t; - - -xcb_render_pictvisual_t * -xcb_render_util_find_visual_format (const xcb_render_query_pict_formats_reply_t *formats, - const xcb_visualid_t visual); - -xcb_render_pictforminfo_t * -xcb_render_util_find_format (const xcb_render_query_pict_formats_reply_t *formats, - unsigned long mask, - const xcb_render_pictforminfo_t *template, - int count); - -xcb_render_pictforminfo_t * -xcb_render_util_find_standard_format (const xcb_render_query_pict_formats_reply_t *formats, - xcb_pict_standard_t format); - -const xcb_render_query_version_reply_t * -xcb_render_util_query_version (xcb_connection_t *c); - -const xcb_render_query_pict_formats_reply_t * -xcb_render_util_query_formats (xcb_connection_t *c); - -int -xcb_render_util_disconnect (xcb_connection_t *c); - -/* wrappers for xcb_render_composite_glyphs_8/16/32 */ - -typedef struct xcb_render_util_composite_text_stream_t xcb_render_util_composite_text_stream_t; - -xcb_render_util_composite_text_stream_t * -xcb_render_util_composite_text_stream ( - xcb_render_glyphset_t initial_glyphset, - uint32_t total_glyphs, - uint32_t total_glyphset_changes ); - -void -xcb_render_util_glyphs_8 ( - xcb_render_util_composite_text_stream_t *stream, - int16_t dx, - int16_t dy, - uint32_t count, - const uint8_t *glyphs ); - -void -xcb_render_util_glyphs_16 ( - xcb_render_util_composite_text_stream_t *stream, - int16_t dx, - int16_t dy, - uint32_t count, - const uint16_t *glyphs ); - -void -xcb_render_util_glyphs_32 ( - xcb_render_util_composite_text_stream_t *stream, - int16_t dx, - int16_t dy, - uint32_t count, - const uint32_t *glyphs ); - -void -xcb_render_util_change_glyphset ( - xcb_render_util_composite_text_stream_t *stream, - xcb_render_glyphset_t glyphset ); - -xcb_void_cookie_t -xcb_render_util_composite_text ( - 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_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 ); - -#endif /* XCB_RENDERUTIL */ |