## Documentation

Table of Contents
Class Inheritance Tree
Widget Screenshots
Package groups

## Index

Package: GC

- Goto spec source

# Description

    package Gdk.GC is

A graphic context is a structure that describes all the attributes used by the drawing functions in Gdk.

The colors, line styles, Fill styles and so on are defined through this structure.

On X11 systems, this structure is stored directly on the XServer, which speeds up the transfer of the drawing attributes a lot. Instead of transferring all of them every time you call one of the drawing functions, you simply specify which GC you want to use.

Thus, it is recommended to create as many GCs as you need, instead of creating a single one that is modified every time you need to modify one of the attributes.

On Unix machines, you should have a look at the external utility 'xgc' which demonstrates all the basic settings of the graphic contexts.

Binding from C File version 1.3.6

<testgtk>create_gc.adb</testgtk> <see>Gtk.GC</see>

# Types

### Gdk_GC

- Goto declaration in source

    subtype Gdk_GC is Gdk.Gdk_GC;

A graphic context that contain all the information to draw graphics on the screen. Creating these GC is more efficient than passing a lot of parameters to each of the drawing functions, since these GC are stored on the server side and do not need to be pass through the network.

### Gdk_GC_Values

- Goto declaration in source

    type Gdk_GC_Values is new Gdk.C_Proxy;

A structure used on the client side to store the same information as the GC. Creating a GC from this structure is more efficient than calling a lot of functions to modify the GC directly, since there is a single call to the server.

### Gdk_Cap_Style

- Goto declaration in source

    type Gdk_Cap_Style is (Cap_Not_Last, Cap_Butt, Cap_Round, Cap_Projecting);

### Gdk_Fill

- Goto declaration in source

    type Gdk_Fill is (Solid, Tiled, Stippled, Opaque_Stippled);

### Gdk_Function

- Goto declaration in source

    type Gdk_Function is
         (Copy,
          Invert,
          Gdk_Xor,
          Clear,
          Gdk_And,
          And_Reverse,
          And_Invert,
          Noop,
          Gdk_Or,
          Equiv,
          Or_Reverse,
          Copy_Invert,
          Or_Invert,
          Nand,
          Set);

### Gdk_Join_Style

- Goto declaration in source

    type Gdk_Join_Style is (Join_Miter, Join_Round, Join_Bevel);

### Gdk_Line_Style

- Goto declaration in source

    type Gdk_Line_Style is (Line_Solid, Line_On_Off_Dash, Line_Double_Dash);

### Gdk_Subwindow_Mode

- Goto declaration in source

    type Gdk_Subwindow_Mode is (Clip_By_Children, Include_Inferiors);

### Gdk_GC_Values_Mask

- Goto declaration in source

    type Gdk_GC_Values_Mask is mod 2 ** 32;

# Constants & Global variables

### GC_Foreground

- Goto declaration in source

(Gdk_GC_Values_Mask)

    GC_Foreground    : constant Gdk_GC_Values_Mask := 2 ** 0;

### GC_Background

- Goto declaration in source

(Gdk_GC_Values_Mask)

    GC_Background    : constant Gdk_GC_Values_Mask := 2 ** 1;

### GC_Font

- Goto declaration in source

(Gdk_GC_Values_Mask)

    GC_Font          : constant Gdk_GC_Values_Mask := 2 ** 2;

### GC_Function

- Goto declaration in source

(Gdk_GC_Values_Mask)

    GC_Function      : constant Gdk_GC_Values_Mask := 2 ** 3;

### GC_Fill

- Goto declaration in source

(Gdk_GC_Values_Mask)

    GC_Fill          : constant Gdk_GC_Values_Mask := 2 ** 4;

### GC_Tile

- Goto declaration in source

(Gdk_GC_Values_Mask)

    GC_Tile          : constant Gdk_GC_Values_Mask := 2 ** 5;

### GC_Stipple

- Goto declaration in source

(Gdk_GC_Values_Mask)

    GC_Stipple       : constant Gdk_GC_Values_Mask := 2 ** 6;

### GC_Clip_Mask

- Goto declaration in source

(Gdk_GC_Values_Mask)

    GC_Clip_Mask     : constant Gdk_GC_Values_Mask := 2 ** 7;

### GC_Subwindow

- Goto declaration in source

(Gdk_GC_Values_Mask)

    GC_Subwindow     : constant Gdk_GC_Values_Mask := 2 ** 8;

### GC_Ts_X_Origin

- Goto declaration in source

(Gdk_GC_Values_Mask)

    GC_Ts_X_Origin   : constant Gdk_GC_Values_Mask := 2 ** 9;

### GC_Tx_Y_Origin

- Goto declaration in source

(Gdk_GC_Values_Mask)

    GC_Tx_Y_Origin   : constant Gdk_GC_Values_Mask := 2 ** 10;

### GC_Clip_X_Origin

- Goto declaration in source

(Gdk_GC_Values_Mask)

    GC_Clip_X_Origin : constant Gdk_GC_Values_Mask := 2 ** 11;

### GC_Clip_Y_Origin

- Goto declaration in source

(Gdk_GC_Values_Mask)

    GC_Clip_Y_Origin : constant Gdk_GC_Values_Mask := 2 ** 12;

### GC_Exposures

- Goto declaration in source

(Gdk_GC_Values_Mask)

    GC_Exposures     : constant Gdk_GC_Values_Mask := 2 ** 13;

### GC_Line_Width

- Goto declaration in source

(Gdk_GC_Values_Mask)

    GC_Line_Width    : constant Gdk_GC_Values_Mask := 2 ** 14;

### GC_Line_Style

- Goto declaration in source

(Gdk_GC_Values_Mask)

    GC_Line_Style    : constant Gdk_GC_Values_Mask := 2 ** 15;

### GC_Cap_Style

- Goto declaration in source

(Gdk_GC_Values_Mask)

    GC_Cap_Style     : constant Gdk_GC_Values_Mask := 2 ** 16;

### GC_Join_Style

- Goto declaration in source

(Gdk_GC_Values_Mask)

    GC_Join_Style    : constant Gdk_GC_Values_Mask := 2 ** 17;

### Null_GC

- Goto declaration in source

(Gdk_GC)

    Null_GC : constant Gdk_GC := null;

### Null_GC_Values

- Goto declaration in source

(Gdk_GC_Values)

    Null_GC_Values : constant Gdk_GC_Values := null;

# Subprograms & Entries

### Gdk_New

- Goto spec in source

    procedure Gdk_New (GC: out Gdk_GC;Drawable: Gdk.Gdk_Drawable);

Create a new graphic context. The window must have been realized first (so that it is associated with some resources on the Xserver). The GC can then be used for any window that has the same root window, and same color depth as Window. See the manual page for XCreateGC on Unix systems for more information.

### Gdk_New

- Goto spec in source

    procedure Gdk_New (GC: out Gdk_GC;Drawable: Gdk.Gdk_Drawable;Values: Gdk_GC_Values;Values_Mask: Gdk_GC_Values_Mask);

Create a new graphic context. It is directly created with the values set in Values, and whose associated field has been set in Values_Mask. This is faster than calling the simple Gdk_New function and each of other functions in this package, since each of them requires a call to the server.

### Get_Type

- Goto spec in source
- Goto body in source

    function Get_Type return Glib.GType;

Return the internal value associated with Gdk_GC.

### Destroy

- Goto spec in source
- Goto body in source

    procedure Destroy (GC: Gdk_GC);

Free the memory allocated on the server for the graphic context. Graphic contexts are never freed automatically by GtkAda, this is the user responsibility to do so. This procedure is deprecated. Use Unref instead.

### Ref

- Goto spec in source
- Goto body in source

    procedure Ref (GC: Gdk_GC);

Increment the reference counting for the graphic context.

### Unref

- Goto spec in source
- Goto body in source

    procedure Unref (GC: Gdk_GC);

Decrement the reference counting for the graphic context. When this reaches 0, the graphic context is destroyed.

### Get_Values

- Goto spec in source
- Goto body in source

    procedure Get_Values (GC: Gdk_GC;Values: Gdk_GC_Values);

Get the values set in the GC. This copies the values from the server to client, allowing faster modifications. Values can then be copied back to the server by creating a new graphic context with the function Gdk_New above. Values should have been allocated first with a call to Gdk_New.

### Set_Values

- Goto spec in source
- Goto body in source

    procedure Set_Values (GC: Gdk_GC;Values: Gdk_GC_Values;Mask: Gdk_GC_Values_Mask);

Set the values in the GC. Mask indicates which values should be taken from Values and set in GC.

### Set_Foreground

- Goto spec in source

    procedure Set_Foreground (GC: Gdk_GC;Color: Gdk.Color.Gdk_Color);

Set the foreground color for the graphic context. This color is the one that is used by most drawing functions.

### Set_Background

- Goto spec in source

    procedure Set_Background (GC: Gdk_GC;Color: Gdk.Color.Gdk_Color);

Set the background color for the graphic context.

### Set_Font

- Goto spec in source

    procedure Set_Font (GC: Gdk_GC;Font: Gdk.Font.Gdk_Font);

Set the font used by the graphic context. This font is used by the function Gdk.Drawable.Draw_Text.

### Set_Function

- Goto spec in source

    procedure Set_Function (GC: Gdk_GC;Func: Gdk_Function);

Set the function in the graphic context. This function specifies how the points are put on the screen, ie if GtkAda how GtkAda should mix the point already on the screen and the new point being put. Note that setting the function to Gdk_Xor is not the right way to do animation. You should instead save the background pixmap, put the image, and then restore the background. In general, there are three basic steps to drawing: reading the source pixels, reading the destination pixels, and writing the destination pixels. Some functions only perform the third step (Set and Clear), some do not need the middle step (Copy), whereas most require the three steps, and thus can be much slower.

### Set_Fill

- Goto spec in source

    procedure Set_Fill (GC: Gdk_GC;Fill: Gdk_Fill);

Set the pattern used for filling the polygons.

### Set_Tile

- Goto spec in source
- Goto body in source

    procedure Set_Tile (GC: Gdk_GC;Tile: Gdk.Gdk_Pixmap);

### Set_Stipple

- Goto spec in source
- Goto body in source

    procedure Set_Stipple (GC: Gdk_GC;Stipple: Gdk.Gdk_Pixmap);

### Set_Ts_Origin

- Goto spec in source

    procedure Set_Ts_Origin (GC: Gdk_GC;X, Y: Gint);

Set the Tile and Stipple origin in the graphic context.

### Set_Clip_Origin

- Goto spec in source

    procedure Set_Clip_Origin (GC: Gdk_GC;X, Y: Gint);

Set the origin of the clip mask. See the functions Set_Clip_Rectangle, Set_Clip_Region and Gdk.Bitmap.Set_Clip_Mask for more explanation.

### Set_Clip_Mask

- Goto spec in source
- Goto body in source

    procedure Set_Clip_Mask (GC: Gdk.GC.Gdk_GC;Mask: Gdk.Gdk_Bitmap);

If Mask is set to Null_Bitmap, then no clip_mask is used for drawing. Points will be drawn through this GC only where the bits are set to 1 in the mask. See also the function Set_Clip_Origin for how to move the mask inside the GC.

### Set_Clip_Rectangle

- Goto spec in source
- Goto body in source

    procedure Set_Clip_Rectangle (GC: Gdk_GC;Rectangle: Gdk.Rectangle.Gdk_Rectangle);

### Set_Clip_Rectangle

- Goto spec in source
- Goto body in source

    procedure Set_Clip_Rectangle (GC: Gdk_GC;Rectangle: Gdk.Rectangle.Gdk_Rectangle_Access := null);

Set the clip rectangle. Only the points that are drawn inside this rectangle will be displayed on the screen. The clip origin is modified automatically. See Set_Clip_Mask to delete the current clip mask.

### Set_Clip_Region

- Goto spec in source
- Goto body in source

    procedure Set_Clip_Region (GC: Gdk_GC;Region: Gdk.Region.Gdk_Region);

Define a clip region on the screen. This is just like Set_Clip_Rectangle, except that a region is a more complex region, that can be the intersection or union of multiple rectangles. Note that the Clip_Origin can have an influence on this function.

### Set_Subwindow

- Goto spec in source

    procedure Set_Subwindow (GC: Gdk_GC;Mode: Gdk_Subwindow_Mode);

Set the subwindow mode for the graphic context. This specifies whether the drawing routines should be clipped to the specific window they are drawn into, or if they should extend to subwindows as well.

### Set_Exposures

- Goto spec in source

    procedure Set_Exposures (GC: Gdk_GC;Exposures: Boolean);

Exposures indicates whether you want "expose" and "noexpose" events to be reported when calling Copy_Area and Copy_Plane with this GC. You should disable this if you don't need the event and want to optimize your application. If Exposures is True, then any call to Copy_Area or Draw_Pixmap will generate an expose event. Otherwise, these will generate a no_expose event.

### Set_Line_Attributes

- Goto spec in source

    procedure Set_Line_Attributes (GC: Gdk_GC;Line_Width: Gint;Line_Style: Gdk_Line_Style;Cap_Style: Gdk_Cap_Style;Join_Style: Gdk_Join_Style);

Set the line attributes for this GC. Line_Width is the width of the line. If its value is 0, the line is as thin as possible, possibly even more so than if the width is 1. It is also faster to draw a line with width 0 than any other line width. Line_Style specifies whether the line should be solid or dashed. With Line_On_Off_Dash, the colors are alternatively the foreground color, and blank. With Line_Double_Dash, the colors are alternatively the foreground and background colors. Cap_Style specifies how the line should end, either flat or rounded. Join_Style specifies how two consecutive lines drawn by Draw_Lines are connected.

### Set_Dashes

- Goto spec in source

    procedure Set_Dashes (Gc: Gdk_GC;Dash_Offset: Gint;Dash_List: Guchar_Array);

Specify the dash pattern when the line's style is anything but solid. The values in the array alternatively give the length (in pixels) of the plain dash, the empty dash, the second plain dash, ... None of these values can be 0. If there is an odd number of items in Dash_List, this is equivalent to giving the array concatenated with itself. Dash_Offset specifies the phase of the pattern to start with.

### Copy

- Goto spec in source
- Goto body in source

    procedure Copy (Dst_GC: Gdk_GC;Src_GC: Gdk_GC);

Copy a Src_GC to Dst_GC.

### Set_Colormap

- Goto spec in source
- Goto body in source

    procedure Set_Colormap (Gc: Gdk_GC;Colormap: Gdk.Gdk_Colormap);

### Get_Colormap

- Goto spec in source
- Goto body in source

    function Get_Colormap (Gc: Gdk_GC) return Gdk.Gdk_Colormap;

### Set_Rgb_Fg_Color

- Goto spec in source
- Goto body in source

    procedure Set_Rgb_Fg_Color (Gc: Gdk_GC;Color: Gdk.Color.Gdk_Color);

### Set_Rgb_Bg_Color

- Goto spec in source
- Goto body in source

    procedure Set_Rgb_Bg_Color (Gc: Gdk_GC;Color: Gdk.Color.Gdk_Color);

### Gdk_New

- Goto spec in source

    function Gdk_New return Gdk_GC_Values;

Allocate a new Values structure on the client. Note that this function allocates a C structure, and thus needs to be freed with a call to Free below.

### Free

- Goto spec in source
- Goto body in source

    procedure Free (Values: Gdk_GC_Values);

Free the C structure associated with Values.

### Set_Foreground

- Goto spec in source

    procedure Set_Foreground (Values: Gdk_GC_Values;Color: Gdk.Color.Gdk_Color);

Same as Set_Foreground, but on the client side

### Set_Background

- Goto spec in source

    procedure Set_Background (Values: Gdk_GC_Values;Color: Gdk.Color.Gdk_Color);

Same as Set_Background, but on the client side

### Set_Font

- Goto spec in source

    procedure Set_Font (Values: Gdk_GC_Values;Font: Gdk.Font.Gdk_Font);

Same as Set_Font, but on the client side

### Set_Function

- Goto spec in source

    procedure Set_Function (Values: Gdk_GC_Values;Func: Gdk_Function);

Same as Set_Function, but on the client side

### Set_Fill

- Goto spec in source

    procedure Set_Fill (Values: Gdk_GC_Values;Fill: Gdk_Fill);

Same as Set_Fill, but on the client side

### Set_Ts_Origin

- Goto spec in source

    procedure Set_Ts_Origin (Values: Gdk_GC_Values;X, Y: Gint);

Same as Set_Ts_Origin, but on the client side

### Set_Clip_Origin

- Goto spec in source

    procedure Set_Clip_Origin (Values: Gdk_GC_Values;X, Y: Gint);

Same as Set_Clip_Origin, but on the client side

### Set_Subwindow

- Goto spec in source

    procedure Set_Subwindow (Values: Gdk_GC_Values;Mode: Gdk_Subwindow_Mode);

Same as Set_Subwindow, but on the client side

### Set_Exposures

- Goto spec in source

    procedure Set_Exposures (Values: Gdk_GC_Values;Exposures: Boolean);

Same as Set_Exposures, but on the client side

### Set_Line_Attributes

- Goto spec in source

    procedure Set_Line_Attributes (Values: Gdk_GC_Values;Line_Width: Gint;Line_Style: Gdk_Line_Style;Cap_Style: Gdk_Cap_Style;Join_Style: Gdk_Join_Style);

Same as Set_Line_Attributes, but on the client side