Main Page Widgets Namespaces Book

# Gdk::Drawable Class Reference

Drawing Primitives. More...

Inheritance diagram for Gdk::Drawable:

[legend]
List of all members.

## Public Methods

virtual | ~Drawable ()
GdkDrawable* | gobj ()
const GdkDrawable* | gobj () const
GdkDrawable* | gobj_copy ()
void | get_size (int& width, int& height)
| Fills * width and * height with the size of drawable.
int | get_depth () const
| Obtains the bit depth of the drawable, that is, the number of bits that make up a pixel in the drawable's visual.
void | set_colormap (const Glib::RefPtr<Colormap>& colormap)
| Sets the colormap associated with drawable.
Glib::RefPtr<Colormap> | get_colormap ()
| Gets the colormap for drawable, if one is set; returns `0` otherwise.
Glib::RefPtr<Visual> | get_visual ()
| Gets the Gdk::Visual describing the pixel format of drawable.
void | draw_point (const Glib::RefPtr<const GC>& gc, int x, int y)
void | draw_points (const Glib::RefPtr<const GC>& gc, const Glib::ArrayHandle<Point>& points)
void | draw_line (const Glib::RefPtr<const GC>& gc, int x1, int y1, int x2, int y2)
void | draw_lines (const Glib::RefPtr<const GC>& gc, const Glib::ArrayHandle<Point>& points)
void | draw_rectangle (const Glib::RefPtr<const GC>& gc, bool filled, int x, int y, int width, int height)
void | draw_arc (const Glib::RefPtr<const GC>& gc, bool filled, int x, int y, int width, int height, int angle1, int angle2)
void | draw_polygon (const Glib::RefPtr<const GC>& gc, bool filled, const Glib::ArrayHandle<Point>& points)
void | draw_drawable (const Glib::RefPtr<const GC>& gc, const Glib::RefPtr<const Drawable>& src, int xsrc, int ysrc, int xdest, int ydest, int width=-1, int height=-1)
| Copies the width x height region of src at coordinates ( xsrc, ysrc) to coordinates ( xdest, ydest) in drawable.
void | draw_image (const Glib::RefPtr<const GC>& gc, const Glib::RefPtr<const Image>& image, int xsrc, int ysrc, int xdest, int ydest, int width=-1, int height=-1)
void | draw_segments (const Glib::RefPtr<const GC>& gc, GdkSegment* segs, int nsegs)
void | draw_glyphs (const Glib::RefPtr<const GC>& gc, const Glib::RefPtr<const Pango::Font>& font, int x, int y, PangoGlyphString* glyphs)
| This is a low-level function; 99% of text rendering should be done using gdk_draw_layout() instead.
void | draw_layout_line (const Glib::RefPtr<const GC>& gc, int x, int y, const Glib::RefPtr<const Pango::LayoutLine>& line)
| Render a Pango::LayoutLine onto an GDK drawable.
void | draw_layout_line (const Glib::RefPtr<const GC>& gc, int x, int y, const Glib::RefPtr<const Pango::LayoutLine>& line, const Color& foreground, const Color& background)
| Render a Pango::LayoutLine onto a Gdk::Drawable, overriding the layout's normal colors with foreground and/or background.
void | draw_layout (const Glib::RefPtr<const GC>& gc, int x, int y, const Glib::RefPtr<const Pango::Layout>& layout)
| Render a Pango::Layout onto a GDK drawable.
void | draw_layout (const Glib::RefPtr<const GC>& gc, int x, int y, const Glib::RefPtr<const Pango::Layout>& layout, const Color& foreground, const Color& background)
| Render a Pango::Layout onto a Gdk::Drawable, overriding the layout's normal colors with foreground and/or background.
Glib::RefPtr<Image> | get_image (int x, int y, int width, int height) const
| A Gdk::Image stores client-side image data (pixels).
Region | get_clip_region () const
| Computes the region of a drawable that potentially can be written to by drawing primitives.
Region | get_visible_region () const
| Computes the region of a drawable that is potentially visible.
void | draw_rgb_image (const Glib::RefPtr<const GC>& gc, int x, int y, int width, int height, RgbDither dith, const guchar* rgb_buf, int rowstride)
void | draw_rgb_image_dithalign (const Glib::RefPtr<const GC>& gc, int x, int y, int width, int height, RgbDither dith, const guchar* rgb_buf, int rowstride, int xdith, int ydith)
void | draw_rgb_32_image (const Glib::RefPtr<const GC>& gc, int x, int y, int width, int height, RgbDither dith, const guchar* rgb_buf, int rowstride)
void | draw_rgb_32_image_dithalign (const Glib::RefPtr<const GC>& gc, int x, int y, int width, int height, RgbDither dith, const guchar* rgb_buf, int rowstride, int xdith, int ydith)
| Like gdk_draw_rgb_32_image(), but allows you to specify the dither offsets.
void | draw_gray_image (const Glib::RefPtr<const GC>& gc, int x, int y, int width, int height, RgbDither dith, const guchar* rgb_buf, int rowstride)
void | draw_indexed_image (const Glib::RefPtr<const GC>& gc, int x, int y, int width, int height, RgbDither dith, const guchar* rgb_buf, int rowstride, const RgbCmap& cmap)

## Static Public Methods

Glib::RefPtr<Drawable> | create ()

## Protected Methods

| Drawable ()

## Related Functions

(Note that these are not member functions.)
Glib::RefPtr<Gdk::Drawable> | wrap (GdkDrawable* object, bool take_copy=false)

## Detailed Description

Drawing Primitives.

Gdk::Drawable is the base class for all of the objects that accept drawing commands. The available drawables include pixmaps, windows, and bitmaps. Drawable is abstract as there is no such type on the server side.

To use a drawable, create a concrete Drawable of the type you wish to use and a Gdk::GC (graphics context) for that Drawable. With the GC you can draw lines, text, arcs and such.

## Constructor & Destructor Documentation

virtual Gdk::Drawable::~Drawable | ( |  | ) | `[virtual]`

Gdk::Drawable::Drawable | ( |  | ) | `[protected]`

## Member Function Documentation

Glib::RefPtr<Drawable> Gdk::Drawable::create | ( |  | ) | `[static]`

| Reimplemented in Gdk::Pixmap.

void Gdk::Drawable::draw_arc | ( | const Glib::RefPtr<const GC>& | gc,
|  | bool | filled,
|  | int | x,
|  | int | y,
|  | int | width,
|  | int | height,
|  | int | angle1,
|  | int | angle2
| ) |

void Gdk::Drawable::draw_drawable | ( | const Glib::RefPtr<const GC>& | gc,
|  | const Glib::RefPtr<const Drawable>& | src,
|  | int | xsrc,
|  | int | ysrc,
|  | int | xdest,
|  | int | ydest,
|  | int | width = -1,
|  | int | height = -1
| ) |

Copies the width x height region of src at coordinates ( xsrc, ysrc) to coordinates ( xdest, ydest) in drawable.

width and/or height may be given as -1, in which case the entire src drawable will be copied.

Most fields in gc are not used for this operation, but notably the clip mask or clip region will be honored.

The source and destination drawables must have the same visual and colormap, or errors will result. (On X11, failure to match visual/colormap results in a BadMatch error from the X server.) A common cause of this problem is an attempt to draw a bitmap to a color drawable. The way to draw a bitmap is to set the bitmap as a clip mask on your Gdk::GC, then use gdk_draw_rectangle() to draw a rectangle clipped to the bitmap.

Parameters:

  drawable | A Gdk::Drawable.
  gc | A Gdk::GC sharing the drawable's visual and colormap.
  src | Another Gdk::Drawable.
  xsrc | X position in src of rectangle to draw.
  ysrc | Y position in src of rectangle to draw.
  xdest | X position in drawable where the rectangle should be drawn.
  ydest | Y position in drawable where the rectangle should be drawn.
  width | Width of rectangle to draw, or -1 for entire src width.
  height | Height of rectangle to draw, or -1 for entire src height.

void Gdk::Drawable::draw_glyphs | ( | const Glib::RefPtr<const GC>& | gc,
|  | const Glib::RefPtr<const Pango::Font>& | font,
|  | int | x,
|  | int | y,
|  | PangoGlyphString* | glyphs
| ) |

This is a low-level function; 99% of text rendering should be done using gdk_draw_layout() instead.

A glyph is a character in a font. This function draws a sequence of glyphs. To obtain a sequence of glyphs you have to understand a lot about internationalized text handling, which you don't want to understand; thus, use gdk_draw_layout() instead of this function, gdk_draw_layout() handles the details.

Parameters:

  drawable | A Gdk::Drawable.
  gc | A Gdk::GC.
  font | Font to be used.
  x | X coordinate of baseline origin.
  y | Y coordinate of baseline origin.
  glyphs | Glyphs to render.

void Gdk::Drawable::draw_gray_image | ( | const Glib::RefPtr<const GC>& | gc,
|  | int | x,
|  | int | y,
|  | int | width,
|  | int | height,
|  | RgbDither | dith,
|  | const guchar* | rgb_buf,
|  | int | rowstride
| ) |

void Gdk::Drawable::draw_image | ( | const Glib::RefPtr<const GC>& | gc,
|  | const Glib::RefPtr<const Image>& | image,
|  | int | xsrc,
|  | int | ysrc,
|  | int | xdest,
|  | int | ydest,
|  | int | width = -1,
|  | int | height = -1
| ) |

void Gdk::Drawable::draw_indexed_image | ( | const Glib::RefPtr<const GC>& | gc,
|  | int | x,
|  | int | y,
|  | int | width,
|  | int | height,
|  | RgbDither | dith,
|  | const guchar* | rgb_buf,
|  | int | rowstride,
|  | const RgbCmap& | cmap
| ) |

void Gdk::Drawable::draw_layout | ( | const Glib::RefPtr<const GC>& | gc,
|  | int | x,
|  | int | y,
|  | const Glib::RefPtr<const Pango::Layout>& | layout,
|  | const Color& | foreground,
|  | const Color& | background
| ) |

Render a Pango::Layout onto a Gdk::Drawable, overriding the layout's normal colors with foreground and/or background.

foreground and background need not be allocated.

Parameters:

  drawable | The drawable on which to draw string.
  gc | Base graphics context to use.
  x | The X position of the left of the layout (in pixels).
  y | The Y position of the top of the layout (in pixels).
  layout | A Pango::Layout.
  foreground | Foreground override color, or `0` for none.
  background | Background override color, or `0` for none.

void Gdk::Drawable::draw_layout | ( | const Glib::RefPtr<const GC>& | gc,
|  | int | x,
|  | int | y,
|  | const Glib::RefPtr<const Pango::Layout>& | layout
| ) |

Render a Pango::Layout onto a GDK drawable.

Parameters:

  drawable | The drawable on which to draw string.
  gc | Base graphics context to use.
  x | The X position of the left of the layout (in pixels).
  y | The Y position of the top of the layout (in pixels).
  layout | A Pango::Layout.

void Gdk::Drawable::draw_layout_line | ( | const Glib::RefPtr<const GC>& | gc,
|  | int | x,
|  | int | y,
|  | const Glib::RefPtr<const Pango::LayoutLine>& | line,
|  | const Color& | foreground,
|  | const Color& | background
| ) |

Render a Pango::LayoutLine onto a Gdk::Drawable, overriding the layout's normal colors with foreground and/or background.

foreground and background need not be allocated.

Parameters:

  drawable | The drawable on which to draw the line.
  gc | Base graphics to use.
  x | The x position of start of string (in pixels).
  y | The y position of baseline (in pixels).
  line | A Pango::LayoutLine.
  foreground | Foreground override color, or `0` for none.
  background | Background override color, or `0` for none.

void Gdk::Drawable::draw_layout_line | ( | const Glib::RefPtr<const GC>& | gc,
|  | int | x,
|  | int | y,
|  | const Glib::RefPtr<const Pango::LayoutLine>& | line
| ) |

Render a Pango::LayoutLine onto an GDK drawable.

Parameters:

  drawable | The drawable on which to draw the line.
  gc | Base graphics to use.
  x | The x position of start of string (in pixels).
  y | The y position of baseline (in pixels).
  line | A Pango::LayoutLine.

void Gdk::Drawable::draw_line | ( | const Glib::RefPtr<const GC>& | gc,
|  | int | x1,
|  | int | y1,
|  | int | x2,
|  | int | y2
| ) |

void Gdk::Drawable::draw_lines | ( | const Glib::RefPtr<const GC>& | gc,
|  | const Glib::ArrayHandle<Point>& | points
| ) |

void Gdk::Drawable::draw_point | ( | const Glib::RefPtr<const GC>& | gc,
|  | int | x,
|  | int | y
| ) |

void Gdk::Drawable::draw_points | ( | const Glib::RefPtr<const GC>& | gc,
|  | const Glib::ArrayHandle<Point>& | points
| ) |

void Gdk::Drawable::draw_polygon | ( | const Glib::RefPtr<const GC>& | gc,
|  | bool | filled,
|  | const Glib::ArrayHandle<Point>& | points
| ) |

void Gdk::Drawable::draw_rectangle | ( | const Glib::RefPtr<const GC>& | gc,
|  | bool | filled,
|  | int | x,
|  | int | y,
|  | int | width,
|  | int | height
| ) |

void Gdk::Drawable::draw_rgb_32_image | ( | const Glib::RefPtr<const GC>& | gc,
|  | int | x,
|  | int | y,
|  | int | width,
|  | int | height,
|  | RgbDither | dith,
|  | const guchar* | rgb_buf,
|  | int | rowstride
| ) |

void Gdk::Drawable::draw_rgb_32_image_dithalign | ( | const Glib::RefPtr<const GC>& | gc,
|  | int | x,
|  | int | y,
|  | int | width,
|  | int | height,
|  | RgbDither | dith,
|  | const guchar* | rgb_buf,
|  | int | rowstride,
|  | int | xdith,
|  | int | ydith
| ) |

Like gdk_draw_rgb_32_image(), but allows you to specify the dither offsets.

See gdk_draw_rgb_image_dithalign() for more details.

Parameters:

  drawable | A Gdk::Drawable.
  gc | A Gdk::GC.
  x | X coordinate on drawable where image should go.
  y | Y coordinate on drawable where image should go.
  width | Width of area of image to draw.
  height | Height of area of image to draw.
  dith | Dithering mode.
  buf | RGB image data.
  rowstride | Rowstride of RGB image data.
  xdith | X dither offset.
  ydith | Y dither offset.

void Gdk::Drawable::draw_rgb_image | ( | const Glib::RefPtr<const GC>& | gc,
|  | int | x,
|  | int | y,
|  | int | width,
|  | int | height,
|  | RgbDither | dith,
|  | const guchar* | rgb_buf,
|  | int | rowstride
| ) |

void Gdk::Drawable::draw_rgb_image_dithalign | ( | const Glib::RefPtr<const GC>& | gc,
|  | int | x,
|  | int | y,
|  | int | width,
|  | int | height,
|  | RgbDither | dith,
|  | const guchar* | rgb_buf,
|  | int | rowstride,
|  | int | xdith,
|  | int | ydith
| ) |

void Gdk::Drawable::draw_segments | ( | const Glib::RefPtr<const GC>& | gc,
|  | GdkSegment* | segs,
|  | int | nsegs
| ) |

Region Gdk::Drawable::get_clip_region | ( |  | ) |

Computes the region of a drawable that potentially can be written to by drawing primitives.

This region will not take into account the clip region for the GC, and may also not take into account other factors such as if the window is obscured by other windows, but no area outside of this region will be affected by drawing primitives.

Returns:
  A Gdk::Region. This must be freed with gdk_region_destroy() when you are done.

Glib::RefPtr<Colormap> Gdk::Drawable::get_colormap | ( |  | ) |

Gets the colormap for drawable, if one is set; returns `0` otherwise.

Returns:
  The colormap, or `0`.

int Gdk::Drawable::get_depth | ( |  | ) |

Obtains the bit depth of the drawable, that is, the number of bits that make up a pixel in the drawable's visual.

Examples are 8 bits per pixel, 24 bits per pixel, etc.

Returns:
  Number of bits per pixel.

Glib::RefPtr<Image> Gdk::Drawable::get_image | ( | int | x,
|  | int | y,
|  | int | width,
|  | int | height
| ) | const

A Gdk::Image stores client-side image data (pixels).

In contrast, Gdk::Pixmap and Gdk::Window are server-side objects. get_image() obtains the pixels from a server-side drawable as a client-side Gdk::Image. The format of a Gdk::Image depends on the Gdk::Visual of the current display, which makes manipulating Gdk::Image extremely difficult; therefore, in most cases you should use Gdk::Pixbuf::get_from_drawable() instead of this lower-level function. A Gdk::Pixbuf contains image data in a canonicalized RGB format, rather than a display-dependent format. Of course, there's a convenience vs. speed tradeoff here, so you'll want to think about what makes sense for your application.

x, y, width, and height define the region of drawable to obtain as an image.

You would usually copy image data to the client side if you intend to examine the values of individual pixels, for example to darken an image or add a red tint. It would be prohibitively slow to make a round-trip request to the windowing system for each pixel, so instead you get all of them at once, modify them, then copy them all back at once.

If the X server or other windowing system backend is on the local machine, this function may use shared memory to avoid copying the image data.

If the source drawable is a Gdk::Window and partially offscreen or obscured, then the obscured portions of the returned image will contain undefined data.

Parameters:

  x | X coordinate on drawable.
  y | Y coordinate on drawable.
  width | Width of region to get.
  height | Height or region to get.

Returns:
  A Gdk::Image containing the contents of drawable.

void Gdk::Drawable::get_size | ( | int& | width,
|  | int& | height
| ) |

Fills * width and * height with the size of drawable.

width or height can be `0` if you only want the other one.

On the X11 platform, if drawable is a Gdk::Window, the returned size is the size reported in the most-recently-processed configure event, rather than the current size on the X server.

Parameters:

  width | Location to store drawable's width, or `0`.
  height | Location to store drawable's height, or `0`.

Region Gdk::Drawable::get_visible_region | ( |  | ) |

Computes the region of a drawable that is potentially visible.

This does not necessarily take into account if the window is obscured by other windows, but no area outside of this region is visible.

Returns:
  A Gdk::Region. This must be freed with gdk_region_destroy() when you are done.

Glib::RefPtr<Visual> Gdk::Drawable::get_visual | ( |  | ) |

Gets the Gdk::Visual describing the pixel format of drawable.

Returns:
  A Gdk::Visual.

const GdkDrawable* Gdk::Drawable::gobj | ( |  | ) | const`[inline]`

| Reimplemented from Glib::ObjectBase. Reimplemented in Gdk::Pixmap, and Gdk::Window.

GdkDrawable* Gdk::Drawable::gobj | ( |  | ) | `[inline]`

| Reimplemented from Glib::ObjectBase. Reimplemented in Gdk::Pixmap, and Gdk::Window.

GdkDrawable* Gdk::Drawable::gobj_copy | ( |  | ) |

| Reimplemented in Gdk::Pixmap, and Gdk::Window.

void Gdk::Drawable::set_colormap | ( | const Glib::RefPtr<Colormap>& | colormap | ) |

Sets the colormap associated with drawable.

Normally this will happen automatically when the drawable is created; you only need to use this function if the drawable-creating function did not have a way to determine the colormap, and you then use drawable operations that require a colormap. The colormap for all drawables and graphics contexts you intend to use together should match. i.e. when using a Gdk::GC to draw to a drawable, or copying one drawable to another, the colormaps should match.

Parameters:

  colormap | A Gdk::Colormap.

## Friends And Related Function Documentation

Glib::RefPtr<Gdk::Drawable> wrap | ( | GdkDrawable* | object,
|  | bool | take_copy = false
| ) | `[related]`

The documentation for this class was generated from the following file:

- drawable.h