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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
#ifndef __SP_CANVAS_BPATH_H__
#define __SP_CANVAS_BPATH_H__
/*
* Simple bezier bpath CanvasItem for inkscape
*
* Authors:
* Lauris Kaplinski <lauris@ximian.com>
*
* Copyright (C) 2001 Lauris Kaplinski and Ximian, Inc.
*
* Released under GNU GPL
*
*/
#include <glib/gtypes.h>
#include <display/sp-canvas.h>
struct SPCanvasBPath;
struct SPCanvasBPathClass;
struct SPCurve;
#define SP_TYPE_CANVAS_BPATH (sp_canvas_bpath_get_type ())
#define SP_CANVAS_BPATH(obj) (GTK_CHECK_CAST ((obj), SP_TYPE_CANVAS_BPATH, SPCanvasBPath))
#define SP_CANVAS_BPATH_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), SP_TYPE_CANVAS_BPATH, SPCanvasBPathClass))
#define SP_IS_CANVAS_BPATH(obj) (GTK_CHECK_TYPE ((obj), SP_TYPE_CANVAS_BPATH))
#define SP_IS_CANVAS_BPATH_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), SP_TYPE_CANVAS_BPATH))
#define bpath_liv
class Shape;
/* stroke-linejoin */
typedef enum {
SP_STROKE_LINEJOIN_MITER,
SP_STROKE_LINEJOIN_ROUND,
SP_STROKE_LINEJOIN_BEVEL
} SPStrokeJoinType;
/* stroke-linecap */
typedef enum {
SP_STROKE_LINECAP_BUTT,
SP_STROKE_LINECAP_ROUND,
SP_STROKE_LINECAP_SQUARE
} SPStrokeCapType;
/* fill-rule */
/* clip-rule */
typedef enum {
SP_WIND_RULE_NONZERO,
SP_WIND_RULE_INTERSECT,
SP_WIND_RULE_EVENODD,
SP_WIND_RULE_POSITIVE
} SPWindRule;
struct SPCanvasBPath {
SPCanvasItem item;
/* Line def */
SPCurve *curve;
Geom::Matrix affine;
/* Fill attributes */
guint32 fill_rgba;
SPWindRule fill_rule;
/* Line attributes */
guint32 stroke_rgba;
gdouble stroke_width;
gdouble dashes[2];
SPStrokeJoinType stroke_linejoin;
SPStrokeCapType stroke_linecap;
gdouble stroke_miterlimit;
/* State */
Shape *fill_shp;
Shape *stroke_shp;
};
struct SPCanvasBPathClass {
SPCanvasItemClass parent_class;
};
GtkType sp_canvas_bpath_get_type (void);
SPCanvasItem *sp_canvas_bpath_new (SPCanvasGroup *parent, SPCurve *curve);
void sp_canvas_bpath_set_bpath (SPCanvasBPath *cbp, SPCurve *curve);
void sp_canvas_bpath_set_fill (SPCanvasBPath *cbp, guint32 rgba, SPWindRule rule);
void sp_canvas_bpath_set_stroke (SPCanvasBPath *cbp, guint32 rgba, gdouble width, SPStrokeJoinType join, SPStrokeCapType cap, double dash=0, double gap=0);
/*
* FIXME: The following code should actually be in a separate file called display/canvas-text.h. It
* temporarily had to be moved here because of linker errors.
*/
struct SPItem;
struct SPDesktop;
#define SP_TYPE_CANVASTEXT (sp_canvastext_get_type ())
#define SP_CANVASTEXT(obj) (GTK_CHECK_CAST ((obj), SP_TYPE_CANVASTEXT, SPCanvasText))
#define SP_IS_CANVASTEXT(obj) (GTK_CHECK_TYPE ((obj), SP_TYPE_CANVASTEXT))
struct SPCanvasText : public SPCanvasItem{
SPItem *item; // the item to which this line belongs in some sense; may be NULL for some users
guint32 rgba;
SPDesktop *desktop; // the desktop to which this text is attached; needed for coordinate transforms (TODO: these should be eliminated)
gchar* text;
Geom::Point s;
Geom::Matrix affine;
double fontsize;
double anchor_x;
double anchor_y;
};
struct SPCanvasTextClass : public SPCanvasItemClass{};
GtkType sp_canvastext_get_type (void);
SPCanvasItem *sp_canvastext_new(SPCanvasGroup *parent, SPDesktop *desktop, Geom::Point pos, gchar const *text);
void sp_canvastext_set_rgba32 (SPCanvasText *ct, guint32 rgba);
void sp_canvastext_set_coords (SPCanvasText *ct, gdouble x0, gdouble y0);
void sp_canvastext_set_coords (SPCanvasText *ct, const Geom::Point start);
void sp_canvastext_set_text (SPCanvasText *ct, gchar const* new_text);
void sp_canvastext_set_number_as_text (SPCanvasText *ct, int num);
void sp_canvastext_set_fontsize (SPCanvasText *ct, double size);
void sp_canvastext_set_anchor (SPCanvasText *ct, double anchor_x, double anchor_y);
#endif
/*
Local Variables:
mode:c++
c-file-style:"stroustrup"
c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
indent-tabs-mode:nil
fill-column:99
End:
*/
// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
|