Graphics Contexts
objects to encapsulate drawing properties.
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.
The #GdkGC structure represents a graphics context.
It is an opaque structure with no user-visible
elements.
@dummy_var:
The #GdkGCValues structure holds a set of values used
to create or modify a graphics context.
#GdkColor foreground;
the foreground color.
#GdkColor background;
the background color.
#GdkFont *font;
the default font..
#GdkFunction function;
the bitwise operation used when drawing.
#GdkFill fill;
the fill style.
#GdkPixmap *tile;
the tile pixmap.
#GdkPixmap *stipple;
the stipple bitmap.
#GdkPixmap *clip_mask;
the clip mask bitmap.
#GdkSubwindowMode subwindow_mode;
the subwindow mode.
#gint ts_x_origin;
the x origin of the tile or stipple.
#gint ts_y_origin;
the y origin of the tile or stipple.
#gint clip_x_origin;
the x origin of the clip mask.
#gint clip_y_origin;
the y origin of the clip mask.
#gint graphics_exposures;
whether graphics exposures are enabled.
#gint line_width;
the line width
#GdkLineStyle line_style;
the way dashed lines are drawn
#GdkCapStyle cap_style;
the way the ends of lines are drawn
#GdkJoinStyle join_style;
the way joins between lines are drawn
@foreground:
@background:
@font:
@function:
@fill:
@tile:
@stipple:
@clip_mask:
@subwindow_mode:
@ts_x_origin:
@ts_y_origin:
@clip_x_origin:
@clip_y_origin:
@graphics_exposures:
@line_width:
@line_style:
@cap_style:
@join_style:
A set of bit flags used to indicate which fields
#GdkGCValues structure are set.
@GDK_GC_FOREGROUND:
@GDK_GC_BACKGROUND:
@GDK_GC_FONT:
@GDK_GC_FUNCTION:
@GDK_GC_FILL:
@GDK_GC_TILE:
@GDK_GC_STIPPLE:
@GDK_GC_CLIP_MASK:
@GDK_GC_SUBWINDOW:
@GDK_GC_TS_X_ORIGIN:
@GDK_GC_TS_Y_ORIGIN:
@GDK_GC_CLIP_X_ORIGIN:
@GDK_GC_CLIP_Y_ORIGIN:
@GDK_GC_EXPOSURES:
@GDK_GC_LINE_WIDTH:
@GDK_GC_LINE_STYLE:
@GDK_GC_CAP_STYLE:
@GDK_GC_JOIN_STYLE:
Determines how primitives are drawn.
GDK_SOLID
draw with the foreground color.
GDK_TILED
draw with a tiled pixmap.
GDK_STIPPLED
draw using the stipple bitmap. Pixels corresponding
to bits in the stipple bitmap that are set will be drawn in the
foreground color; pixels corresponding to bits that are
not set will be left untouched.
GDK_OPAQUE_STIPPLED
draw using the stipple bitmap. Pixels corresponding
to bits in the stipple bitmap that are set will be drawn in the
foreground color; pixels corresponding to bits that are
not set will be drawn with the background color.
@GDK_SOLID:
@GDK_TILED:
@GDK_STIPPLED:
@GDK_OPAQUE_STIPPLED:
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_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_SET:
Determines how lines are drawn.
GDK_LINE_SOLID
lines are drawn solid.
GDK_LINE_ON_OFF_DASH
even segments are drawn; odd segments are not drawn.
GDK_LINE_DOUBLE_DASH
even segments are normally. Odd segments are drawn
in the background color if the fill style is %GDK_SOLID,
or in the background color masked by the stipple if the
fill style is %GDK_STIPPLED.
@GDK_LINE_SOLID:
@GDK_LINE_ON_OFF_DASH:
@GDK_LINE_DOUBLE_DASH:
Determines how the end of lines are drawn.
GDK_CAP_NOT_LAST
the same as %GDK_CAP_BUTT for lines of non-zero width.
for zero width lines, the final point on the line
will not be drawn.
GDK_CAP_BUTT
the ends of the lines are drawn squared off and extending
to the coordinates of the end point.
GDK_CAP_ROUND
the ends of the lines are drawn as semicircles with the
diameter equal to the line width and centered at the
end point.
GDK_CAP_PROJECTING
the ends of the lines are drawn squared off and extending
half the width of the line beyond the end point.
@GDK_CAP_NOT_LAST:
@GDK_CAP_BUTT:
@GDK_CAP_ROUND:
@GDK_CAP_PROJECTING:
Determines how the joins between segments of a polygon are drawn.
GDK_JOIN_MITER
the sides of each line are extended to meet at an angle.
GDK_JOIN_ROUND
the sides of the two lines are joined by a circular arc.
GDK_JOIN_BEVEL
the sides of the two lines are joined by a straight line which
makes an equal angle with each line.
@GDK_JOIN_MITER:
@GDK_JOIN_ROUND:
@GDK_JOIN_BEVEL:
Create a new graphics context with default values.
@window: a #GdkDrawable. The created GC must always be used
with drawables of the same depth as this one.
@Returns: the new graphics context.
Create a new GC with the given initial values.
@window: a #GdkDrawable. The created GC must always be used
with drawables of the same depth as this one.
@values: a structure containing initial values for the GC.
@values_mask: a bit mask indicating which fields in @values
are set.
@Returns: the new graphics context.
Increase the reference count on a graphics context.
@gc: a #GdkGC.
@Returns: @gc.
Decrease the reference count on a graphics context. If
the resulting reference count is zero, the graphics
context will be destroyed.
@gc: a #GdkGC.
Identical to gdk_gc_unref(). This function is obsolete
and should not be used.
@gc: a #GdkGC.
Retrieves the current values from a graphics context.
@gc: a #GdkGC.
@values: the #GdkGCValues structure in which to store the results.
Sets the foreground color for a graphics context.
@gc: a #GdkGC.
@color: the new foreground color.
Sets the background color for a graphics context.
@gc: a #GdkGC.
@color: the new background color.
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.)
@gc: a #GdkGC.
@font: the new font.
Determines how the current pixel values and the
pixel values being drawn are combined to produce
the final pixel values.
@gc: a #GdkGC.
@function:
Set the fill mode for a graphics context.
@gc: a #GdkGC.
@fill: the new fill mode.
Set a tile pixmap for a graphics context.
This will only be used if the fill mode
is %GDK_TILED.
@gc: a #GdkGC.
@tile: the new tile pixmap.
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.
@gc: a #GdkGC.
@stipple: the new stipple bitmap.
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.
@gc: a #GdkGC.
@x: the x-coordinate of the origin.
@y: the y-coordinate of the origin.
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.
@gc: a #GdkGC.
@x: the x-coordinate of the origin.
@y: the y-coordinate of the origin.
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()).
@gc: the #GdkGC.
@mask: a bitmap.
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()).
@gc: a #GdkGC.
@rectangle: the rectangle to clip to.
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()).
@gc: a #GdkGC.
@region: the #GdkRegion.
Sets how drawing with this GC on a window will affect child
windows of that window.
@gc: a #GdkGC.
@mode: the subwindow mode.
Determines how drawing onto a window will affect child
windows of that window.
GDK_CLIP_BY_CHILDREN
only draw onto the window itself.
GDK_INCLUDE_INFERIORS
Draw onto the window and child windows.
@GDK_CLIP_BY_CHILDREN:
@GDK_INCLUDE_INFERIORS:
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_pixmap()).
@gc: a #GdkGC.
@exposures: if %TRUE, exposure events will be generated.
Sets various attributes of how lines are drawn. See
the corresponding members of GdkGCValues for full
explanations of the arguments.
@gc: a #GdkGC.
@line_width: the width of lines.
@line_style: the dash-style for lines.
@cap_style: the manner in which the ends of lines are drawn.
@join_style: the in which lines are joined together.
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)
@gc: a #GdkGC.
@dash_offset: the
@dash_list: an array of dash lengths.
@n: the number of elements in @dash_list.
Copy the set of values from one graphics context
onto another graphics context.
@dst_gc: the destination graphics context.
@src_gc: the source graphics context.