Description
All drawing operations in GDK take a
graphics context (GC) argument.
A graphics context encapsulates information about
the way things are drawn, such as the foreground
color or line width. By using graphics contexts,
the number of arguments to each drawing call is
greatly reduced, and communication overhead is
minimized, since identical arguments do not need
to be passed repeatedly.
Most values of a graphics context can be set at
creation time by using gdk_gc_new_with_values(),
or can be set one-by-one using functions such
as gdk_gc_set_foreground(). A few of the values
in the GC, such as the dash pattern, can only
be set by the latter method.
Details
struct GdkGC
The GdkGC structure represents a graphics context.
It is an opaque structure with no user-visible
elements.
struct GdkGCValues
struct GdkGCValues
{
GdkColor foreground;
GdkColor background;
GdkFont *font;
GdkFunction function;
GdkFill fill;
GdkPixmap *tile;
GdkPixmap *stipple;
GdkPixmap *clip_mask;
GdkSubwindowMode subwindow_mode;
gint ts_x_origin;
gint ts_y_origin;
gint clip_x_origin;
gint clip_y_origin;
gint graphics_exposures;
gint line_width;
GdkLineStyle line_style;
GdkCapStyle cap_style;
GdkJoinStyle join_style;
};
|
The GdkGCValues structure holds a set of values used
to create or modify a graphics context.
enum GdkGCValuesMask
typedef enum
{
GDK_GC_FOREGROUND = 1 << 0,
GDK_GC_BACKGROUND = 1 << 1,
GDK_GC_FONT = 1 << 2,
GDK_GC_FUNCTION = 1 << 3,
GDK_GC_FILL = 1 << 4,
GDK_GC_TILE = 1 << 5,
GDK_GC_STIPPLE = 1 << 6,
GDK_GC_CLIP_MASK = 1 << 7,
GDK_GC_SUBWINDOW = 1 << 8,
GDK_GC_TS_X_ORIGIN = 1 << 9,
GDK_GC_TS_Y_ORIGIN = 1 << 10,
GDK_GC_CLIP_X_ORIGIN = 1 << 11,
GDK_GC_CLIP_Y_ORIGIN = 1 << 12,
GDK_GC_EXPOSURES = 1 << 13,
GDK_GC_LINE_WIDTH = 1 << 14,
GDK_GC_LINE_STYLE = 1 << 15,
GDK_GC_CAP_STYLE = 1 << 16,
GDK_GC_JOIN_STYLE = 1 << 17
} GdkGCValuesMask;
|
A set of bit flags used to indicate which fields
GdkGCValues structure are set.
enum GdkFunction
typedef enum
{
GDK_COPY,
GDK_INVERT,
GDK_XOR,
GDK_CLEAR,
GDK_AND,
GDK_AND_REVERSE,
GDK_AND_INVERT,
GDK_NOOP,
GDK_OR,
GDK_EQUIV,
GDK_OR_REVERSE,
GDK_COPY_INVERT,
GDK_OR_INVERT,
GDK_NAND,
GDK_NOR,
GDK_SET
} GdkFunction;
|
Determines how the bit values for the source pixels are combined with
the bit values for destination pixels to produce the final result. The
sixteen values here correspond to the 16 different possible 2x2 truth
tables. Only a couple of these values are usually useful; for colored
images, only GDK_COPY, GDK_XOR and GDK_INVERT are generally
useful. For bitmaps, GDK_AND and GDK_OR are also useful.
gdk_gc_new ()
GdkGC* gdk_gc_new (GdkDrawable *drawable); |
Create a new graphics context with default values.
gdk_gc_new_with_values ()
Create a new GC with the given initial values.
gdk_gc_get_screen ()
Gets the GdkScreen for which gc was created
gdk_gc_ref ()
GdkGC* gdk_gc_ref (GdkGC *gc); |
Warning |
gdk_gc_ref is deprecated and should not be used in newly-written code.
|
Deprecated function; use g_object_ref() instead.
gdk_gc_unref ()
void gdk_gc_unref (GdkGC *gc); |
Warning |
gdk_gc_unref is deprecated and should not be used in newly-written code.
|
Deprecated function; use g_object_unref() instead.
gdk_gc_destroy
#define gdk_gc_destroy gdk_gc_unref
|
Warning |
gdk_gc_destroy is deprecated and should not be used in newly-written code.
|
Identical to gdk_gc_unref(). This function is obsolete
and should not be used.
gdk_gc_set_values ()
Sets attributes of a graphics context in bulk. For each flag set in
values_mask, the corresponding field will be read from values and
set as the new value for gc. If you're only setting a few values
on gc, calling individual "setter" functions is likely more
convenient.
gdk_gc_get_values ()
void gdk_gc_get_values (GdkGC *gc,
GdkGCValues *values); |
Retrieves the current values from a graphics context.
gdk_gc_set_foreground ()
void gdk_gc_set_foreground (GdkGC *gc,
GdkColor *color); |
Sets the foreground color for a graphics context.
gdk_gc_set_background ()
void gdk_gc_set_background (GdkGC *gc,
GdkColor *color); |
Sets the background color for a graphics context.
gdk_gc_set_rgb_fg_color ()
void gdk_gc_set_rgb_fg_color (GdkGC *gc,
GdkColor *color); |
Set the foreground color of a GC using an unallocated color. The
pixel value for the color will be determined using GdkRGB. If the
colormap for the GC has not previously been initialized for GdkRGB,
then for pseudo-color colormaps (colormaps with a small modifiable
number of colors), a colorcube will be allocated in the colormap.
Calling this function for a GC without a colormap is an error.
gdk_gc_set_rgb_bg_color ()
void gdk_gc_set_rgb_bg_color (GdkGC *gc,
GdkColor *color); |
Set the background color of a GC using an unallocated color. The
pixel value for the color will be determined using GdkRGB. If the
colormap for the GC has not previously been initialized for GdkRGB,
then for pseudo-color colormaps (colormaps with a small modifiable
number of colors), a colorcube will be allocated in the colormap.
Calling this function for a GC without a colormap is an error.
gdk_gc_set_font ()
void gdk_gc_set_font (GdkGC *gc,
GdkFont *font); |
Warning |
gdk_gc_set_font is deprecated and should not be used in newly-written code.
|
Sets the font for a graphics context. (Note that
all text-drawing functions in GDK take a font
argument; the value set here is used when that
argument is NULL.)
gdk_gc_set_function ()
void gdk_gc_set_function (GdkGC *gc,
GdkFunction function); |
Determines how the current pixel values and the
pixel values being drawn are combined to produce
the final pixel values.
gdk_gc_set_fill ()
void gdk_gc_set_fill (GdkGC *gc,
GdkFill fill); |
Set the fill mode for a graphics context.
enum GdkFill
typedef enum
{
GDK_SOLID,
GDK_TILED,
GDK_STIPPLED,
GDK_OPAQUE_STIPPLED
} GdkFill;
|
Determines how primitives are drawn.
gdk_gc_set_tile ()
void gdk_gc_set_tile (GdkGC *gc,
GdkPixmap *tile); |
Set a tile pixmap for a graphics context.
This will only be used if the fill mode
is GDK_TILED.
gdk_gc_set_stipple ()
void gdk_gc_set_stipple (GdkGC *gc,
GdkPixmap *stipple); |
Set the stipple bitmap for a graphics context. The
stipple will only be used if the fill mode is
GDK_STIPPLED or GDK_OPAQUE_STIPPLED.
gdk_gc_set_ts_origin ()
void gdk_gc_set_ts_origin (GdkGC *gc,
gint x,
gint y); |
Set the origin when using tiles or stipples with
the GC. The tile or stipple will be aligned such
that the upper left corner of the tile or stipple
will coincide with this point.
gdk_gc_set_clip_origin ()
void gdk_gc_set_clip_origin (GdkGC *gc,
gint x,
gint y); |
Sets the origin of the clip mask. The coordinates are
interpreted relative to the upper-left corner of
the destination drawable of the current operation.
gdk_gc_set_clip_mask ()
void gdk_gc_set_clip_mask (GdkGC *gc,
GdkBitmap *mask); |
Sets the clip mask for a graphics context from a bitmap.
The clip mask is interpreted relative to the clip
origin. (See gdk_gc_set_clip_origin()).
gdk_gc_set_clip_rectangle ()
void gdk_gc_set_clip_rectangle (GdkGC *gc,
GdkRectangle *rectangle); |
Sets the clip mask for a graphics context from a
rectangle. The clip mask is interpreted relative to the clip
origin. (See gdk_gc_set_clip_origin()).
gdk_gc_set_clip_region ()
void gdk_gc_set_clip_region (GdkGC *gc,
GdkRegion *region); |
Sets the clip mask for a graphics context from a region structure.
The clip mask is interpreted relative to the clip origin. (See
gdk_gc_set_clip_origin()).
gdk_gc_set_subwindow ()
Sets how drawing with this GC on a window will affect child
windows of that window.
enum GdkSubwindowMode
typedef enum
{
GDK_CLIP_BY_CHILDREN = 0,
GDK_INCLUDE_INFERIORS = 1
} GdkSubwindowMode;
|
Determines how drawing onto a window will affect child
windows of that window.
gdk_gc_set_exposures ()
void gdk_gc_set_exposures (GdkGC *gc,
gboolean exposures); |
Sets whether copying non-visible portions of a drawable
using this graphics context generate exposure events
for the corresponding regions of the destination
drawable. (See gdk_draw_drawable()).
gdk_gc_set_line_attributes ()
Sets various attributes of how lines are drawn. See
the corresponding members of GdkGCValues for full
explanations of the arguments.
enum GdkLineStyle
typedef enum
{
GDK_LINE_SOLID,
GDK_LINE_ON_OFF_DASH,
GDK_LINE_DOUBLE_DASH
} GdkLineStyle;
|
Determines how lines are drawn.
enum GdkCapStyle
typedef enum
{
GDK_CAP_NOT_LAST,
GDK_CAP_BUTT,
GDK_CAP_ROUND,
GDK_CAP_PROJECTING
} GdkCapStyle;
|
Determines how the end of lines are drawn.
enum GdkJoinStyle
typedef enum
{
GDK_JOIN_MITER,
GDK_JOIN_ROUND,
GDK_JOIN_BEVEL
} GdkJoinStyle;
|
Determines how the joins between segments of a polygon are drawn.
gdk_gc_set_dashes ()
void gdk_gc_set_dashes (GdkGC *gc,
gint dash_offset,
gint8 dash_list[],
gint n); |
Sets the way dashed-lines are drawn. Lines will be
drawn with alternating on and off segments of the
lengths specified in dash_list. The manner in
which the on and off segments are drawn is determined
by the line_style value of the GC. (This can
be changed with gdk_gc_set_line_attributes())
gdk_gc_copy ()
void gdk_gc_copy (GdkGC *dst_gc,
GdkGC *src_gc); |
Copy the set of values from one graphics context
onto another graphics context.
gdk_gc_set_colormap ()
void gdk_gc_set_colormap (GdkGC *gc,
GdkColormap *colormap); |
Sets the colormap for the GC to the given colormap. The depth
of the colormap's visual must match the depth of the drawable
for which the GC was created.
gdk_gc_get_colormap ()
Retrieves the colormap for a given GC, if it exists.
A GC will have a colormap if the drawable for which it was created
has a colormap, or if a colormap was set explicitely with
gdk_gc_set_colormap.
gdk_gc_offset ()
void gdk_gc_offset (GdkGC *gc,
gint x_offset,
gint y_offset); |
Offset attributes such as the clip and tile-stipple origins
of the GC so that drawing at x - x_offset, y - y_offset with
the offset GC has the same effect as drawing at x, y with the original
GC.