/* * Cogl * * An object oriented GL/GLES Abstraction/Utility Layer * * Copyright (C) 2010 Intel Corporation. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see . * * */ #ifndef __COGL_TEXTURE_PIXMAP_X11_H #define __COGL_TEXTURE_PIXMAP_X11_H #include #ifdef COGL_ENABLE_EXPERIMENTAL_API typedef enum { COGL_TEXTURE_PIXMAP_X11_DAMAGE_RAW_RECTANGLES, COGL_TEXTURE_PIXMAP_X11_DAMAGE_DELTA_RECTANGLES, COGL_TEXTURE_PIXMAP_X11_DAMAGE_BOUNDING_BOX, COGL_TEXTURE_PIXMAP_X11_DAMAGE_NON_EMPTY } CoglTexturePixmapX11ReportLevel; /** * cogl_texture_pixmap_x11_new: * @pixmap: A X11 pixmap ID * @automatic_updates: Whether to automatically copy the contents of * the pixmap to the texture. * * Creates a texture that contains the contents of @pixmap. If * @automatic_updates is %TRUE then Cogl will attempt to listen for * damage events on the pixmap and automatically update the texture * when it changes. * * Return value: a CoglHandle to a texture * * Since: 1.2 * Stability: Unstable */ CoglHandle cogl_texture_pixmap_x11_new (guint32 pixmap, gboolean automatic_updates); /** * cogl_texture_pixmap_x11_update_area: * @handle: A CoglHandle to a CoglTexturePixmapX11 instance * @x: x coordinate of the area to update * @y: y coordinate of the area to update * @width: width of the area to update * @height: height of the area to update * * Forces an update of the texture pointed to by @handle so that it is * refreshed with the contents of the pixmap that was given to * cogl_texture_pixmap_x11_new(). * * Since: 1.2 * Stability: Unstable */ void cogl_texture_pixmap_x11_update_area (CoglHandle handle, int x, int y, int width, int height); /** * cogl_texture_pixmap_x11_is_using_tfp_extension: * @handle: A CoglHandle to a CoglTexturePixmapX11 instance * * Return value: whether the texture is using the * GLX_EXT_texture_from_pixmap or similar extension to copy the * contents of the pixmap to the texture. This extension is usually * implemented as zero-copy so it implies the updates are working * efficiently. * * Since: 1.2 * Stability: Unstable */ gboolean cogl_texture_pixmap_x11_is_using_tfp_extension (CoglHandle handle); /** * cogl_texture_pixmap_x11_set_damage_object: * @handle: A CoglHandle * @damage: A X11 Damage object or 0 * @report_level: The report level which describes how to interpret * the damage events. This should match the level that the damage * object was created with. * * Sets the damage object that will be used to track automatic updates * to the texture. Damage tracking can be disabled by passing 0 for * @damage. Otherwise this damage will replace the one used if %TRUE * was passed for automatic_updates to cogl_texture_pixmap_x11_new(). * * Note that Cogl will subtract from the damage region as it processes * damage events. */ void cogl_texture_pixmap_x11_set_damage_object (CoglHandle handle, guint32 damage, CoglTexturePixmapX11ReportLevel report_level); /** * cogl_is_texture_pixmap_x11: * @handle: A CoglHandle * * Return value: whether @handle points to a CoglTexturePixmapX11 * instance. * * Since: 1.2 * Stability: Unstable */ gboolean cogl_is_texture_pixmap_x11 (CoglHandle handle); /* All of the cogl-texture-pixmap-x11 API is currently experimental so we suffix the actual symbols with _EXP to ensure ABI compatibility. A bunch of defines translates the symbols documented above into the real symbols */ CoglHandle cogl_texture_pixmap_x11_new_EXP (guint32 pixmap, gboolean automatic_updates); #define cogl_texture_pixmap_x11_new cogl_texture_pixmap_x11_new_EXP void cogl_texture_pixmap_x11_update_area_EXP (CoglHandle handle, int x, int y, int width, int height); #define cogl_texture_pixmap_x11_update_area \ cogl_texture_pixmap_x11_update_area_EXP gboolean cogl_texture_pixmap_x11_is_using_tfp_extension_EXP (CoglHandle handle); #define cogl_texture_pixmap_x11_is_using_tfp_extension \ cogl_texture_pixmap_x11_is_using_tfp_extension_EXP gboolean cogl_is_texture_pixmap_x11_EXP (CoglHandle handle); #define cogl_is_texture_pixmap_x11 \ cogl_is_texture_pixmap_x11_EXP void cogl_texture_pixmap_x11_set_damage_object_EXP (CoglHandle handle, guint32 damage, CoglTexturePixmapX11ReportLevel report_level); #define cogl_texture_pixmap_x11_set_damage_object \ cogl_texture_pixmap_x11_set_damage_object_EXP #endif /* COGL_ENABLE_EXPERIMENTAL_API */ #endif /* __COGL_TEXTURE_PIXMAP_X11_H */