diff --git a/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb_fixes.c b/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb_fixes.c deleted file mode 100644 index 555eab892d..0000000000 --- a/legacy/ecore/src/lib/ecore_x/xcb/ecore_xcb_fixes.c +++ /dev/null @@ -1,571 +0,0 @@ -#include "ecore_xcb_private.h" - -/** - * @defgroup Ecore_X_Fixes_Group X Fixes Extension Functions - * - * Functions related to the X Fixes extension. - */ - -#ifdef ECORE_XCB_FIXES -static int _xfixes_available = 0; -static xcb_xfixes_query_version_cookie_t _ecore_xcb_xfixes_init_cookie; -#endif /* ECORE_XCB_FIXES */ - -/* To avoid round trips, the initialization is separated in 2 - functions: _ecore_xcb_xfixes_init and - _ecore_xcb_xfixes_init_finalize. The first one gets the cookies and - the second one gets the replies and set the atoms. */ - -void -_ecore_x_xfixes_init(const xcb_query_extension_reply_t *reply) -{ -#ifdef ECORE_XCB_FIXES - if (reply && (reply->present)) - _ecore_xcb_xfixes_init_cookie = xcb_xfixes_query_version_unchecked(_ecore_xcb_conn, 4, 0); - -#endif /* ECORE_XCB_FIXES */ -} /* _ecore_x_xfixes_init */ - -void -_ecore_x_xfixes_init_finalize(void) -{ -#ifdef ECORE_XCB_FIXES - xcb_xfixes_query_version_reply_t *reply; - - reply = xcb_xfixes_query_version_reply(_ecore_xcb_conn, - _ecore_xcb_xfixes_init_cookie, NULL); - - if (reply) - { - if (reply->major_version >= 3) - _xfixes_available = 1; - - free(reply); - } - -#endif /* ECORE_XCB_FIXES */ -} /* _ecore_x_xfixes_init_finalize */ - -/** - * Return whether the X server supports the Fixes Extension. - * @return 1 if the X Fixes Extension is available, 0 otherwise. - * - * Return 1 if the X server supports the Fixes Extension version 3.0, - * 0 otherwise. - * @ingroup Ecore_X_Fixes_Group - */ -EAPI int -ecore_x_xfixes_query(void) -{ -#ifdef ECORE_XCB_FIXES - return _xfixes_available; -#else /* ifdef ECORE_XCB_FIXES */ - return 0; -#endif /* ECORE_XCB_FIXES */ -} /* ecore_x_xfixes_query */ - -/** - * Create a region from rectangles. - * @param rects The rectangles used to initialize the region. - * @param num The number of rectangles. - * @return The newly created region. - * - * Create a region initialized to the specified list of rectangles - * @p rects. The rectangles may be specified in any order, their union - * becomes the region. - * @ingroup Ecore_X_Fixes_Group - */ -EAPI Ecore_X_Region -ecore_x_region_new(Ecore_X_Rectangle *rects, - int num) -{ - Ecore_X_Region region = XCB_NONE; - -#ifdef ECORE_XCB_FIXES - region = xcb_generate_id(_ecore_xcb_conn); - xcb_xfixes_create_region(_ecore_xcb_conn, region, num, (xcb_rectangle_t *)rects); -#endif /* ECORE_XCB_FIXES */ - - return region; -} /* ecore_x_region_new */ - -/** - * Create a region from a pixmap. - * @param bitmap The bitmap used to initialize the region. - * @return The newly created region. - * - * Creates a region initialized to the set of 'one' pixels in @p bitmap - * (which must be of depth 1, else Match error). - * @ingroup Ecore_X_Fixes_Group - */ -EAPI Ecore_X_Region -ecore_x_region_new_from_bitmap(Ecore_X_Pixmap bitmap) -{ - Ecore_X_Region region = XCB_NONE; - -#ifdef ECORE_XCB_FIXES - region = xcb_generate_id(_ecore_xcb_conn); - xcb_xfixes_create_region_from_bitmap(_ecore_xcb_conn, region, bitmap); -#endif /* ECORE_XCB_FIXES */ - - return region; -} /* ecore_x_region_new_from_bitmap */ - -/** - * Create a region from a window. - * @param window The window used to initialize the region. - * @param type The type of the region. - * @return The newly created region. - * - * Creates a region initialized to the specified @p window region. See - * the Shape extension for the definition of Bounding and Clip - * regions. - * @ingroup Ecore_X_Fixes_Group - */ -EAPI Ecore_X_Region -ecore_x_region_new_from_window(Ecore_X_Window window, - Ecore_X_Region_Type type) -{ - Ecore_X_Region region = XCB_NONE; - -#ifdef ECORE_XCB_FIXES - region = xcb_generate_id(_ecore_xcb_conn); - xcb_xfixes_create_region_from_window(_ecore_xcb_conn, region, window, type); -#endif /* ECORE_XCB_FIXES */ - - return region; -} /* ecore_x_region_new_from_window */ - -/** - * Create a region from a graphic context. - * @param gc The graphic context used to initialize the region. - * @return The newly created region. - * - * Creates a region initialized from the clip list of @p gc. - * @ingroup Ecore_X_Fixes_Group - */ -EAPI Ecore_X_Region -ecore_x_region_new_from_gc(Ecore_X_GC gc) -{ - Ecore_X_Region region = XCB_NONE; - -#ifdef ECORE_XCB_FIXES - region = xcb_generate_id(_ecore_xcb_conn); - xcb_xfixes_create_region_from_gc(_ecore_xcb_conn, region, gc); -#endif /* ECORE_XCB_FIXES */ - - return region; -} /* ecore_x_region_new_from_gc */ - -/** - * Create a region from a picture. - * @param picture The picture used to initialize the region. - * @return The newly created region. - * - * Creates a region initialized from the clip list of @p picture. - * @ingroup Ecore_X_Fixes_Group - */ -EAPI Ecore_X_Region -ecore_x_region_new_from_picture(Ecore_X_Picture picture) -{ - Ecore_X_Region region = XCB_NONE; - -#ifdef ECORE_XCB_FIXES - region = xcb_generate_id(_ecore_xcb_conn); - xcb_xfixes_create_region_from_picture(_ecore_xcb_conn, region, picture); -#endif /* ECORE_XCB_FIXES */ - - return region; -} /* ecore_x_region_new_from_picture */ - -/** - * Destroy a region. - * @param region The region to destroy. - * - * Destroy the specified @p region. - * @ingroup Ecore_X_Fixes_Group - */ -EAPI void -ecore_x_region_free(Ecore_X_Region region) -{ -#ifdef ECORE_XCB_FIXES - xcb_xfixes_destroy_region(_ecore_xcb_conn, region); -#endif /* ECORE_XCB_FIXES */ -} /* ecore_x_region_free */ - -/** - * Set the content of a region. - * @param region The region to destroy. - * @param rects The rectangles used to set the region. - * @param num The number of rectangles. - * - * Replace the current contents of @p region with the region formed - * by the union of the rectangles @p rects. - * @ingroup Ecore_X_Fixes_Group - */ -EAPI void -ecore_x_region_set(Ecore_X_Region region, - Ecore_X_Rectangle *rects, - int num) -{ -#ifdef ECORE_XCB_FIXES - xcb_xfixes_set_region(_ecore_xcb_conn, region, num, (xcb_rectangle_t *)rects); -#endif /* ECORE_XCB_FIXES */ -} /* ecore_x_region_set */ - -/** - * Copy the content of a region. - * @param dest The destination region. - * @param source The source region. - * - * Replace the contents of @p dest with the contents of @p source. - * @ingroup Ecore_X_Fixes_Group - */ -EAPI void -ecore_x_region_copy(Ecore_X_Region dest, - Ecore_X_Region source) -{ -#ifdef ECORE_XCB_FIXES - xcb_xfixes_copy_region(_ecore_xcb_conn, source, dest); -#endif /* ECORE_XCB_FIXES */ -} /* ecore_x_region_copy */ - -/** - * Make the union of two regions. - * @param dest The destination region. - * @param source1 The first source region. - * @param source2 The second source region. - * - * Replace the contents of @p dest with the union of @p source1 and - * @p source2. - * @ingroup Ecore_X_Fixes_Group - */ -EAPI void -ecore_x_region_combine(Ecore_X_Region dest, - Ecore_X_Region source1, - Ecore_X_Region source2) -{ -#ifdef ECORE_XCB_FIXES - xcb_xfixes_union_region(_ecore_xcb_conn, source1, source2, dest); -#endif /* ECORE_XCB_FIXES */ -} /* ecore_x_region_combine */ - -/** - * Make the intersection of two regions. - * @param dest The destination region. - * @param source1 The first source region. - * @param source2 The second source region. - * - * Replace the contents of @p dest with the intersection of @p source1 and - * @p source2. - * @ingroup Ecore_X_Fixes_Group - */ -EAPI void -ecore_x_region_intersect(Ecore_X_Region dest, - Ecore_X_Region source1, - Ecore_X_Region source2) -{ -#ifdef ECORE_XCB_FIXES - xcb_xfixes_intersect_region(_ecore_xcb_conn, source1, source2, dest); -#endif /* ECORE_XCB_FIXES */ -} /* ecore_x_region_intersect */ - -/** - * Make the subtraction of two regions. - * @param dest The destination region. - * @param source1 The first source region. - * @param source2 The second source region. - * - * Replace the contents of @p dest with the subtraction of @p source1 by - * @p source2. - * @ingroup Ecore_X_Fixes_Group - */ -EAPI void -ecore_x_region_subtract(Ecore_X_Region dest, - Ecore_X_Region source1, - Ecore_X_Region source2) -{ -#ifdef ECORE_XCB_FIXES - xcb_xfixes_subtract_region(_ecore_xcb_conn, source1, source2, dest); -#endif /* ECORE_XCB_FIXES */ -} /* ecore_x_region_subtract */ - -/** - * Make the subtraction of regions by bounds. - * @param dest The destination region. - * @param bounds The bounds. - * @param source The source region. - * - * The @p source region is subtracted from the region specified by - * @p bounds. The result is placed in @p dest, replacing its - * contents. - * @ingroup Ecore_X_Fixes_Group - */ -EAPI void -ecore_x_region_invert(Ecore_X_Region dest, - Ecore_X_Rectangle *bounds, - Ecore_X_Region source) -{ -#ifdef ECORE_XCB_FIXES - xcb_rectangle_t rect; - - rect.x = bounds->x; - rect.y = bounds->y; - rect.width = bounds->width; - rect.height = bounds->height; - xcb_xfixes_invert_region(_ecore_xcb_conn, source, rect, dest); -#endif /* ECORE_XCB_FIXES */ -} /* ecore_x_region_invert */ - -/** - * Translate a region. - * @param region The region to translate. - * @param dx The horizontal translation. - * @param dy The vertical translation. - * - * The @p region is translated by @p dx and @p dy in place. - * @ingroup Ecore_X_Fixes_Group - */ -EAPI void -ecore_x_region_translate(Ecore_X_Region region, - int dx, - int dy) -{ -#ifdef ECORE_XCB_FIXES - xcb_xfixes_translate_region(_ecore_xcb_conn, region, dx, dy); -#endif /* ECORE_XCB_FIXES */ -} /* ecore_x_region_translate */ - -/** - * Extent a region. - * @param dest The destination region. - * @param source The source region. - * - * The extents of the @p source region are placed in @p dest. - * @ingroup Ecore_X_Fixes_Group - */ -EAPI void -ecore_x_region_extents(Ecore_X_Region dest, - Ecore_X_Region source) -{ -#ifdef ECORE_XCB_FIXES - xcb_xfixes_region_extents(_ecore_xcb_conn, source, dest); -#endif /* ECORE_XCB_FIXES */ -} /* ecore_x_region_extents */ - -/** - * Sends the XFixesFetchRegion request. - * @param region Requested region. - * @ingroup Ecore_X_Fixes_Group - */ -EAPI void -ecore_x_region_fetch_prefetch(Ecore_X_Region region) -{ -#ifdef ECORE_XCB_FIXES - xcb_xfixes_fetch_region_cookie_t cookie; - - cookie = xcb_xfixes_fetch_region_unchecked(_ecore_xcb_conn, region); - _ecore_xcb_cookie_cache(cookie.sequence); -#endif /* ECORE_XCB_FIXES */ -} /* ecore_x_region_fetch_prefetch */ - -/** - * Gets the reply of the XFixesFetchRegion request sent by ecore_xcb_region_fetch_prefetch(). - * @ingroup Ecore_X_Fixes_Group - */ -EAPI void -ecore_x_region_fetch_fetch(void) -{ -#ifdef ECORE_XCB_FIXES - xcb_xfixes_fetch_region_cookie_t cookie; - xcb_xfixes_fetch_region_reply_t *reply; - - cookie.sequence = _ecore_xcb_cookie_get(); - reply = xcb_xfixes_fetch_region_reply(_ecore_xcb_conn, cookie, NULL); - _ecore_xcb_reply_cache(reply); -#endif /* ECORE_XCB_FIXES */ -} /* ecore_x_region_fetch_fetch */ - -/** - * Return the rectangles that compose a region. - * @param region The region (Unused). - * @param num The number of returned rectangles. - * @param bounds The returned bounds of the region. - * @return The returned rectangles. - * - * The @p region passed to ecore_xcb_region_fetch_prefetch() is - * returned as a list of rectagles in XY-banded order. - * - * To use this function, you must call before, and in order, - * ecore_xcb_region_fetch_prefetch(), which sends the XFixesFetchRegion request, - * then ecore_xcb_region_fetch_fetch(), which gets the reply. - * @ingroup Ecore_X_Fixes_Group - */ -EAPI Ecore_X_Rectangle * -ecore_x_region_fetch(Ecore_X_Region region __UNUSED__, - int *num, - Ecore_X_Rectangle *bounds) -{ - Ecore_X_Rectangle extents = { 0, 0, 0, 0}; - Ecore_X_Rectangle *rects = NULL; -#ifdef ECORE_XCB_FIXES - int n; - xcb_xfixes_fetch_region_reply_t *reply; - - reply = _ecore_xcb_reply_get(); - if (!reply) - { - if (num) - *num = 0; - - if (bounds) - *bounds = extents; - - return NULL; - } - - n = xcb_xfixes_fetch_region_rectangles_length(reply); - rects = (Ecore_X_Rectangle *)malloc(n * sizeof(Ecore_X_Rectangle)); - if (!rects) - { - if (num) - *num = 0; - - if (bounds) - *bounds = extents; - - return NULL; - } - - if (num) - *num = n; - - if (bounds) - { - bounds->x = reply->extents.x; - bounds->y = reply->extents.y; - bounds->width = reply->extents.width; - bounds->height = reply->extents.height; - } - - memcpy(rects, - xcb_xfixes_fetch_region_rectangles(reply), - sizeof(Ecore_X_Rectangle) * n); - - return rects; -#else /* ifdef ECORE_XCB_FIXES */ - if (num) - *num = 0; - - if (bounds) - *bounds = extents; - - return NULL; -#endif /* ECORE_XCB_FIXES */ -} /* ecore_x_region_fetch */ - -/** - * Expand a region. - * @param dest The destination region. - * @param source The source region. - * @param left The number of pixels to add on the left. - * @param right The number of pixels to add on the right. - * @param top The number of pixels to add at the top. - * @param bottom The number of pixels to add at the bottom. - * - * Put in @p dest the area specified by expanding each rectangle in - * the @p source region by the specified number of pixels to the - * @p left, @p right, @p top and @p bottom. - * @ingroup Ecore_X_Fixes_Group - */ -EAPI void -ecore_x_region_expand(Ecore_X_Region dest, - Ecore_X_Region source, - unsigned int left, - unsigned int right, - unsigned int top, - unsigned int bottom) -{ -#ifdef ECORE_XCB_FIXES - xcb_xfixes_expand_region(_ecore_xcb_conn, source, dest, left, right, top, bottom); -#endif /* ECORE_XCB_FIXES */ -} /* ecore_x_region_expand */ - -/** - * Change clip-mask in a graphic context to the specified region. - * @param region The region to change. - * @param gc The clip-mask graphic context. - * @param x_origin The horizontal translation. - * @param y_origin The vertical translation. - * - * Changes clip-mask in @p gc to the specified @p region and - * sets the clip origin with the values of @p x_origin and @p y_origin. - * Output will be clippped to remain contained within the region. The - * clip origin is interpreted relative to the origin of whatever - * destination drawable is specified in a graphics request. The - * region is interpreted relative to the clip origin. Future changes - * to region have no effect on the gc clip-mask. - * @ingroup Ecore_X_Fixes_Group - */ -EAPI void -ecore_x_region_gc_clip_set(Ecore_X_Region region, - Ecore_X_GC gc, - int x_origin, - int y_origin) -{ -#ifdef ECORE_XCB_FIXES - xcb_xfixes_set_gc_clip_region(_ecore_xcb_conn, gc, region, x_origin, y_origin); -#endif /* ECORE_XCB_FIXES */ -} /* ecore_x_region_gc_clip_set */ - -/** - * Change the shape extension of a window. - * @param region The region. - * @param dest The window whose shape is changed. - * @param type The kind of shape. - * @param x_offset The horizontal offset. - * @param y_offset The vertical offset. - * - * Set the specified Shape extension region of @p window to @p region, - * offset by @p x_offset and @p y_offset. Future changes to region - * have no effect on the window shape. - * @ingroup Ecore_X_Fixes_Group - */ -EAPI void -ecore_x_region_window_shape_set(Ecore_X_Region region, - Ecore_X_Window dest, - Ecore_X_Shape_Type type, - int x_offset, - int y_offset) -{ -#ifdef ECORE_XCB_FIXES - xcb_xfixes_set_window_shape_region(_ecore_xcb_conn, dest, type, x_offset, y_offset, region); -#endif /* ECORE_XCB_FIXES */ -} /* ecore_x_region_window_shape_set */ - -/** - * Change clip-mask in picture to the specified region. - * @param region The region. - * @param picture The picture. - * @param x_origin The X coordinate of the origin. - * @param y_origin The Y coordinate of the origin. - * - * Changes clip-mask in picture to the specified @p region - * and sets the clip origin. Input and output will be clipped to - * remain contained within the region. The clip origin is interpreted - * relative to the origin of the drawable associated with @p picture. The - * region is interpreted relative to the clip origin. Future changes - * to region have no effect on the picture clip-mask. - * @ingroup Ecore_X_Fixes_Group - */ -EAPI void -ecore_x_region_picture_clip_set(Ecore_X_Region region, - Ecore_X_Picture picture, - int x_origin, - int y_origin) -{ -#ifdef ECORE_XCB_FIXES - xcb_xfixes_set_picture_clip_region(_ecore_xcb_conn, picture, region, x_origin, y_origin); -#endif /* ECORE_XCB_FIXES */ -} /* ecore_x_region_picture_clip_set */ -