File: gnome-canvas-shape-private.h

package info (click to toggle)
libgnomecanvas 2.30.3-4
  • links: PTS
  • area: main
  • in suites: bookworm, bullseye, buster
  • size: 4,768 kB
  • sloc: ansic: 15,401; sh: 11,067; makefile: 212
file content (103 lines) | stat: -rw-r--r-- 3,091 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#ifndef GNOME_CANVAS_SHAPE_PRIVATE_H
#define GNOME_CANVAS_SHAPE_PRIVATE_H

/* Bpath item type for GnomeCanvas widget
 *
 * GnomeCanvas is basically a port of the Tk toolkit's most excellent canvas widget.  Tk is
 * copyrighted by the Regents of the University of California, Sun Microsystems, and other parties.
 *
 * Copyright (C) 1998,1999 The Free Software Foundation
 *
 * Authors: Federico Mena <federico@nuclecu.unam.mx>
 *          Raph Levien <raph@acm.org>
 *          Lauris Kaplinski <lauris@ariman.ee>
 */

#include <gdk/gdk.h>
#include <libart_lgpl/art_vpath.h>
#include <libart_lgpl/art_svp.h>
#include <libart_lgpl/art_vpath_dash.h>
#include <libart_lgpl/art_svp_wind.h>
#include <libgnomecanvas/gnome-canvas.h>

#include <libgnomecanvas/gnome-canvas-path-def.h>

G_BEGIN_DECLS

typedef struct _GnomeCanvasShapePrivGdk GnomeCanvasShapePrivGdk;
typedef struct _GCBPDrawCtx GCBPDrawCtx;

/* Per canvas private structure, holding necessary data for rendering
 * temporary masks, which are needed for drawing multipart bpaths.
 * As canvas cannot multithread, we can be sure, that masks are used
 * serially, also one set of masks per canvas is sufficent to guarantee,
 * that masks are created on needed X server. Masks grow as needed.
 * Full structure is refcounted in Bpath implementation
 */

struct _GCBPDrawCtx {
	gint refcount;

	GnomeCanvas * canvas;

	gint width;
	gint height;

	GdkBitmap * mask;
	GdkBitmap * clip;

	GdkGC * clear_gc;
	GdkGC * xor_gc;
};

/* Per Bpath private structure, holding Gdk specific data */

struct _GnomeCanvasShapePrivGdk {
	gulong fill_pixel;		/* Color for fill */
	gulong outline_pixel;		/* Color for outline */

	GdkBitmap *fill_stipple;	/* Stipple for fill */
	GdkBitmap *outline_stipple;	/* Stipple for outline */

	GdkGC * fill_gc;		/* GC for filling */
	GdkGC * outline_gc;		/* GC for outline */

	gint len_points;		/* Size of allocated points array */
	gint num_points;		/* Gdk points in canvas coords */
	GdkPoint * points;		/* Ivariant: closed paths are before open ones */
	GSList * closed_paths;		/* List of lengths */
	GSList * open_paths;		/* List of lengths */

	GCBPDrawCtx * ctx;		/* Pointer to per-canvas drawing context */
};

struct _GnomeCanvasShapePriv {
	GnomeCanvasPathDef * path;      /* Our bezier path representation */

	gdouble scale;			/* CTM scaling (for pen) */

	guint fill_set : 1;		/* Is fill color set? */
	guint outline_set : 1;		/* Is outline color set? */
	guint width_pixels : 1;		/* Is outline width specified in pixels or units? */

	double width;			/* Width of outline, in user coords */

	guint32 fill_rgba;		/* Fill color, RGBA */
	guint32 outline_rgba;		/* Outline color, RGBA */

	GdkCapStyle cap;		/* Cap style for line */
	GdkJoinStyle join;		/* Join style for line */
	ArtWindRule wind;		/* Winding rule */
	double miterlimit;		/* Miter limit */

	ArtVpathDash dash;		/* Dashing pattern */

	ArtSVP * fill_svp;		/* The SVP for the filled shape */
	ArtSVP * outline_svp;		/* The SVP for the outline shape */

	GnomeCanvasShapePrivGdk * gdk;	/* Gdk specific things */
};

G_END_DECLS

#endif