Add Xlib surface getter functions.

Add the following five functions:

cairo_public Display *
cairo_xlib_surface_get_display (cairo_surface_t *surface);

cairo_public Drawable
cairo_xlib_surface_get_drawable (cairo_surface_t *surface);

cairo_public Screen *
cairo_xlib_surface_get_screen (cairo_surface_t *surface);

cairo_public Visual *
cairo_xlib_surface_get_visual (cairo_surface_t *surface);

cairo_public int
cairo_xlib_surface_get_depth (cairo_surface_t *surface);
This commit is contained in:
Robert O'Callahan 2006-05-04 03:59:56 -07:00 committed by Carl Worth
parent 68915fdfcb
commit 4a4603d551
2 changed files with 81 additions and 0 deletions

View file

@ -2009,6 +2009,72 @@ cairo_xlib_surface_set_drawable (cairo_surface_t *abstract_surface,
surface->height = height;
}
static cairo_bool_t _is_valid_xlib_surface (cairo_surface_t *abstract_surface)
{
return _cairo_surface_is_xlib (abstract_surface) &&
abstract_surface->status == CAIRO_STATUS_SUCCESS;
}
Drawable
cairo_xlib_surface_get_drawable (cairo_surface_t *abstract_surface)
{
cairo_xlib_surface_t *surface = (cairo_xlib_surface_t *)abstract_surface;
/* XXX: How do we want to handle this error case? */
if (! _is_valid_xlib_surface (abstract_surface))
return 0;
return surface->drawable;
}
Display *
cairo_xlib_surface_get_display (cairo_surface_t *abstract_surface)
{
cairo_xlib_surface_t *surface = (cairo_xlib_surface_t *)abstract_surface;
/* XXX: How do we want to handle this error case? */
if (! _is_valid_xlib_surface (abstract_surface))
return NULL;
return surface->dpy;
}
Screen *
cairo_xlib_surface_get_screen (cairo_surface_t *abstract_surface)
{
cairo_xlib_surface_t *surface = (cairo_xlib_surface_t *)abstract_surface;
/* XXX: How do we want to handle this error case? */
if (! _is_valid_xlib_surface (abstract_surface))
return NULL;
return surface->screen;
}
Visual *
cairo_xlib_surface_get_visual (cairo_surface_t *abstract_surface)
{
cairo_xlib_surface_t *surface = (cairo_xlib_surface_t *)abstract_surface;
/* XXX: How do we want to handle this error case? */
if (! _is_valid_xlib_surface (abstract_surface))
return NULL;
return surface->visual;
}
int
cairo_xlib_surface_get_depth (cairo_surface_t *abstract_surface)
{
cairo_xlib_surface_t *surface = (cairo_xlib_surface_t *)abstract_surface;
/* XXX: How do we want to handle this error case? */
if (! _is_valid_xlib_surface (abstract_surface))
return -1;
return surface->depth;
}
typedef struct _cairo_xlib_surface_font_private {
Display *dpy;
GlyphSet glyphset;

View file

@ -70,6 +70,21 @@ cairo_xlib_surface_set_drawable (cairo_surface_t *surface,
int width,
int height);
cairo_public Drawable
cairo_xlib_surface_get_drawable (cairo_surface_t *surface);
cairo_public Display *
cairo_xlib_surface_get_display (cairo_surface_t *surface);
cairo_public Screen *
cairo_xlib_surface_get_screen (cairo_surface_t *surface);
cairo_public Visual *
cairo_xlib_surface_get_visual (cairo_surface_t *surface);
cairo_public int
cairo_xlib_surface_get_depth (cairo_surface_t *abstract_surface);
CAIRO_END_DECLS
#else /* CAIRO_HAS_XLIB_SURFACE */