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 | |
---|
25 | G_BEGIN_DECLS |
---|
26 | |
---|
27 | typedef struct _GnomeCanvasShapePrivGdk GnomeCanvasShapePrivGdk; |
---|
28 | typedef 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 | |
---|
38 | struct _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 | |
---|
55 | struct _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 | |
---|
74 | struct _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 | |
---|
101 | G_END_DECLS |
---|
102 | |
---|
103 | #endif |
---|