efl/src/lib/ecore_x/xlib/ecore_x_drawable.c

120 lines
3.2 KiB
C

#ifdef HAVE_CONFIG_H
# include <config.h>
#endif /* ifdef HAVE_CONFIG_H */
#include "ecore_x_private.h"
/**
* @defgroup Ecore_X_Drawable_Group X Drawable Functions
* @ingroup Ecore_X_Group
*
* Functions that operate on drawables.
*/
/**
* Retrieves the geometry of the given drawable.
* @param d The given drawable.
* @param x Pointer to an integer into which the X position is to be stored.
* @param y Pointer to an integer into which the Y position is to be stored.
* @param w Pointer to an integer into which the width is to be stored.
* @param h Pointer to an integer into which the height is to be stored.
* @ingroup Ecore_X_Drawable_Group
*/
EAPI void
ecore_x_drawable_geometry_get(Ecore_X_Drawable d,
int *x,
int *y,
int *w,
int *h)
{
Window dummy_win;
int ret_x, ret_y;
unsigned int ret_w, ret_h, dummy_border, dummy_depth;
LOGFN(__FILE__, __LINE__, __FUNCTION__);
if (!XGetGeometry(_ecore_x_disp, d, &dummy_win, &ret_x, &ret_y,
&ret_w, &ret_h, &dummy_border, &dummy_depth))
{
ret_x = 0;
ret_y = 0;
ret_w = 0;
ret_h = 0;
}
if (x)
*x = ret_x;
if (y)
*y = ret_y;
if (w)
*w = (int)ret_w;
if (h)
*h = (int)ret_h;
}
/**
* Retrieves the width of the border of the given drawable.
* @param d The given drawable.
* @return The border width of the given drawable.
* @ingroup Ecore_X_Drawable_Group
*/
EAPI int
ecore_x_drawable_border_width_get(Ecore_X_Drawable d)
{
Window dummy_win;
int dummy_x, dummy_y;
unsigned int dummy_w, dummy_h, border_ret, dummy_depth;
LOGFN(__FILE__, __LINE__, __FUNCTION__);
if (!XGetGeometry(_ecore_x_disp, d, &dummy_win, &dummy_x, &dummy_y,
&dummy_w, &dummy_h, &border_ret, &dummy_depth))
border_ret = 0;
return (int)border_ret;
}
/**
* Retrieves the depth of the given drawable.
* @param d The given drawable.
* @return The depth of the given drawable.
* @ingroup Ecore_X_Drawable_Group
*/
EAPI int
ecore_x_drawable_depth_get(Ecore_X_Drawable d)
{
Window dummy_win;
int dummy_x, dummy_y;
unsigned int dummy_w, dummy_h, dummy_border, depth_ret;
LOGFN(__FILE__, __LINE__, __FUNCTION__);
if (!XGetGeometry(_ecore_x_disp, d, &dummy_win, &dummy_x, &dummy_y,
&dummy_w, &dummy_h, &dummy_border, &depth_ret))
depth_ret = 0;
return (int)depth_ret;
}
/**
* Fill the specified rectangle on a drawable.
* @param d The given drawable.
* @param gc The graphic context that controls the fill rules.
* @param x The X coordinate of the top-left corner of the rectangle.
* @param y The Y coordinate of the top-left corner of the rectangle.
* @param width The width of the rectangle.
* @param height The height of the rectangle.
*/
EAPI void
ecore_x_drawable_rectangle_fill(Ecore_X_Drawable d,
Ecore_X_GC gc,
int x,
int y,
int width,
int height)
{
LOGFN(__FILE__, __LINE__, __FUNCTION__);
XFillRectangle(_ecore_x_disp, d, gc, x, y, width, height);
}