source: trunk/third/libgnomecanvas/libgnomecanvas/gnome-canvas-shape-private.h @ 18323

Revision 18323, 3.0 KB checked in by ghudson, 22 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r18322, which included commits to RCS files with non-trunk default branches.
Line 
1#ifndef GNOME_CANVAS_SHAPE_PRIVATE_H
2#define GNOME_CANVAS_SHAPE_PRIVATE_H
3
4/* Bpath item type for GnomeCanvas widget
5 *
6 * GnomeCanvas is basically a port of the Tk toolkit's most excellent canvas widget.  Tk is
7 * copyrighted by the Regents of the University of California, Sun Microsystems, and other parties.
8 *
9 * Copyright (C) 1998,1999 The Free Software Foundation
10 *
11 * Authors: Federico Mena <federico@nuclecu.unam.mx>
12 *          Raph Levien <raph@acm.org>
13 *          Lauris Kaplinski <lauris@ariman.ee>
14 */
15
16#include <gdk/gdk.h>
17#include <libart_lgpl/art_vpath.h>
18#include <libart_lgpl/art_svp.h>
19#include <libart_lgpl/art_vpath_dash.h>
20#include <libart_lgpl/art_svp_wind.h>
21#include <libgnomecanvas/gnome-canvas.h>
22
23#include <libgnomecanvas/gnome-canvas-path-def.h>
24
25G_BEGIN_DECLS
26
27typedef struct _GnomeCanvasShapePrivGdk GnomeCanvasShapePrivGdk;
28typedef struct _GCBPDrawCtx GCBPDrawCtx;
29
30/* Per canvas private structure, holding necessary data for rendering
31 * temporary masks, which are needed for drawing multipart bpaths.
32 * As canvas cannot multithread, we can be sure, that masks are used
33 * serially, also one set of masks per canvas is sufficent to guarantee,
34 * that masks are created on needed X server. Masks grow as needed.
35 * Full structure is refcounted in Bpath implementation
36 */
37
38struct _GCBPDrawCtx {
39        gint refcount;
40
41        GnomeCanvas * canvas;
42
43        gint width;
44        gint height;
45
46        GdkBitmap * mask;
47        GdkBitmap * clip;
48
49        GdkGC * clear_gc;
50        GdkGC * xor_gc;
51};
52
53/* Per Bpath private structure, holding Gdk specific data */
54
55struct _GnomeCanvasShapePrivGdk {
56        gulong fill_pixel;              /* Color for fill */
57        gulong outline_pixel;           /* Color for outline */
58
59        GdkBitmap *fill_stipple;        /* Stipple for fill */
60        GdkBitmap *outline_stipple;     /* Stipple for outline */
61
62        GdkGC * fill_gc;                /* GC for filling */
63        GdkGC * outline_gc;             /* GC for outline */
64
65        gint len_points;                /* Size of allocated points array */
66        gint num_points;                /* Gdk points in canvas coords */
67        GdkPoint * points;              /* Ivariant: closed paths are before open ones */
68        GSList * closed_paths;          /* List of lengths */
69        GSList * open_paths;            /* List of lengths */
70
71        GCBPDrawCtx * ctx;              /* Pointer to per-canvas drawing context */
72};
73
74struct _GnomeCanvasShapePriv {
75        GnomeCanvasPathDef * path;      /* Our bezier path representation */
76
77        gdouble scale;                  /* CTM scaling (for pen) */
78
79        guint fill_set : 1;             /* Is fill color set? */
80        guint outline_set : 1;          /* Is outline color set? */
81        guint width_pixels : 1;         /* Is outline width specified in pixels or units? */
82
83        double width;                   /* Width of outline, in user coords */
84
85        guint32 fill_rgba;              /* Fill color, RGBA */
86        guint32 outline_rgba;           /* Outline color, RGBA */
87
88        GdkCapStyle cap;                /* Cap style for line */
89        GdkJoinStyle join;              /* Join style for line */
90        ArtWindRule wind;               /* Winding rule */
91        double miterlimit;              /* Miter limit */
92
93        ArtVpathDash dash;              /* Dashing pattern */
94
95        ArtSVP * fill_svp;              /* The SVP for the filled shape */
96        ArtSVP * outline_svp;           /* The SVP for the outline shape */
97
98        GnomeCanvasShapePrivGdk * gdk;  /* Gdk specific things */
99};
100
101G_END_DECLS
102
103#endif
Note: See TracBrowser for help on using the repository browser.