Mercurial > MadButterfly
annotate src/shape_rect.c @ 1332:a0d3a4f8e99d
Siwtch components and timelines with context menu
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Mon, 31 Jan 2011 16:42:15 +0800 |
parents | a8d20bc8ce40 |
children | bae104d8d247 |
rev | line source |
---|---|
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
448
diff
changeset
|
1 // -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 4; -*- |
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
448
diff
changeset
|
2 // vim: sw=4:ts=8:sts=4 |
33
d82749f77108
Fix bug of demo and remove *_fill() and *_stroke().
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
3 #include <stdio.h> |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
4 #include <stdlib.h> |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
5 #include <string.h> |
186
530bb7728546
Move header files to $(top_srcdir)/include/ and prefixed with 'mb_'.
Thinker K.F. Li <thinker@branda.to>
parents:
185
diff
changeset
|
6 #include "mb_types.h" |
530bb7728546
Move header files to $(top_srcdir)/include/ and prefixed with 'mb_'.
Thinker K.F. Li <thinker@branda.to>
parents:
185
diff
changeset
|
7 #include "mb_shapes.h" |
33
d82749f77108
Fix bug of demo and remove *_fill() and *_stroke().
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
8 |
d82749f77108
Fix bug of demo and remove *_fill() and *_stroke().
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
9 typedef struct _sh_rect { |
d82749f77108
Fix bug of demo and remove *_fill() and *_stroke().
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
10 shape_t shape; |
d82749f77108
Fix bug of demo and remove *_fill() and *_stroke().
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
11 co_aix x, y; |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
12 co_aix w, h; |
33
d82749f77108
Fix bug of demo and remove *_fill() and *_stroke().
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
13 co_aix rx, ry; |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
14 co_aix poses[12][2]; |
866
9a7ac4487849
Allocate sh_rect_t objects from an elmpool
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
15 |
9a7ac4487849
Allocate sh_rect_t objects from an elmpool
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
16 redraw_man_t *rdman; /*!< \brief This is used by sh_rect_free() */ |
33
d82749f77108
Fix bug of demo and remove *_fill() and *_stroke().
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
17 } sh_rect_t; |
d82749f77108
Fix bug of demo and remove *_fill() and *_stroke().
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
18 |
866
9a7ac4487849
Allocate sh_rect_t objects from an elmpool
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
19 int _sh_rect_size = sizeof(sh_rect_t); |
9a7ac4487849
Allocate sh_rect_t objects from an elmpool
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
20 |
73
9ab15ebc9061
Observer for mouse events
Thinker K.F. Li <thinker@branda.to>
parents:
40
diff
changeset
|
21 static void sh_rect_free(shape_t *shape) { |
866
9a7ac4487849
Allocate sh_rect_t objects from an elmpool
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
22 sh_rect_t *rect = (sh_rect_t *)shape; |
9a7ac4487849
Allocate sh_rect_t objects from an elmpool
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
23 |
9a7ac4487849
Allocate sh_rect_t objects from an elmpool
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
24 elmpool_elm_free(rect->rdman->sh_rect_pool, rect); |
73
9ab15ebc9061
Observer for mouse events
Thinker K.F. Li <thinker@branda.to>
parents:
40
diff
changeset
|
25 } |
9ab15ebc9061
Observer for mouse events
Thinker K.F. Li <thinker@branda.to>
parents:
40
diff
changeset
|
26 |
159
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
73
diff
changeset
|
27 shape_t *rdman_shape_rect_new(redraw_man_t *rdman, |
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
73
diff
changeset
|
28 co_aix x, co_aix y, co_aix w, co_aix h, |
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
73
diff
changeset
|
29 co_aix rx, co_aix ry) { |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
30 sh_rect_t *rect; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
31 |
866
9a7ac4487849
Allocate sh_rect_t objects from an elmpool
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
32 rect = (sh_rect_t *)elmpool_elm_alloc(rdman->sh_rect_pool); |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
33 if(rect == NULL) |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
34 return NULL; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
35 |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
36 memset(rect, 0, sizeof(sh_rect_t)); |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
37 |
224
29e1b2bffe4c
X backend only sent EVT_MOUSE_MOVE_RAW to MadButterfly.
Thinker K.F. Li <thinker@branda.to>
parents:
196
diff
changeset
|
38 mb_obj_init(rect, MBO_RECT); |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
39 rect->x = x; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
40 rect->y = y; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
41 rect->w = w; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
42 rect->h = h; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
43 rect->rx = rx; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
44 rect->ry = ry; |
73
9ab15ebc9061
Observer for mouse events
Thinker K.F. Li <thinker@branda.to>
parents:
40
diff
changeset
|
45 rect->shape.free = sh_rect_free; |
866
9a7ac4487849
Allocate sh_rect_t objects from an elmpool
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
46 rect->rdman = rdman; |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
47 |
1062
a8d20bc8ce40
Rename rdman_shape_man() to rdman_man_shape() to mean managing a shape
Thinker K.F. Li <thinker@codemud.net>
parents:
866
diff
changeset
|
48 rdman_man_shape(rdman, (shape_t *)rect); |
159
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
73
diff
changeset
|
49 |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
50 return (shape_t *)rect; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
51 } |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
52 |
40 | 53 void sh_rect_set(shape_t *shape, co_aix x, co_aix y, |
54 co_aix w, co_aix h, co_aix rx, co_aix ry) { | |
55 sh_rect_t *rect = (sh_rect_t *)shape; | |
56 | |
57 rect->x = x; | |
58 rect->y = y; | |
59 rect->w = w; | |
60 rect->h = h; | |
61 rect->rx = rx; | |
62 rect->ry = ry; | |
63 } | |
64 | |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
65 void sh_rect_transform(shape_t *shape) { |
34
07c523c799f4
Fix bug of relative path command
Thinker K.F. Li <thinker@branda.to>
parents:
33
diff
changeset
|
66 sh_rect_t *rect = (sh_rect_t *)shape; |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
67 co_aix x, y, w, h, rx, ry; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
68 co_aix (*poses)[2]; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
69 co_aix width; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
70 area_t *area; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
71 int i; |
34
07c523c799f4
Fix bug of relative path command
Thinker K.F. Li <thinker@branda.to>
parents:
33
diff
changeset
|
72 |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
73 x = rect->x; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
74 y = rect->y; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
75 w = rect->w; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
76 h = rect->h; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
77 rx = rect->rx; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
78 ry = rect->ry; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
79 |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
80 poses = rect->poses; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
81 |
36
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
82 if(rect->rx != 0 && rect->ry != 0) { |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
83 poses[0][0] = x + w - rx; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
84 poses[0][1] = y; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
85 poses[1][0] = x + w; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
86 poses[1][1] = y; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
87 poses[2][0] = x + w; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
88 poses[2][1] = y + ry; |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
448
diff
changeset
|
89 |
36
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
90 poses[3][0] = x + w; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
91 poses[3][1] = y + h - ry; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
92 poses[4][0] = x + w; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
93 poses[4][1] = y + h; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
94 poses[5][0] = x + w - rx; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
95 poses[5][1] = y + h; |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
448
diff
changeset
|
96 |
36
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
97 poses[6][0] = x + rx; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
98 poses[6][1] = y + h; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
99 poses[7][0] = x; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
100 poses[7][1] = y + h; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
101 poses[8][0] = x; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
102 poses[8][1] = y + h - ry; |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
448
diff
changeset
|
103 |
36
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
104 poses[9][0] = x; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
105 poses[9][1] = y + ry; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
106 poses[10][0] = x; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
107 poses[10][1] = y; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
108 poses[11][0] = x + rx; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
109 poses[11][1] = y; |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
110 |
36
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
111 for(i = 0; i < 12; i++) |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
112 coord_trans_pos(shape->coord, &poses[i][0], &poses[i][1]); |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
113 |
36
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
114 geo_from_positions(shape->geo, 12, poses); |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
115 } else { |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
116 poses[0][0] = x; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
117 poses[0][1] = y; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
118 poses[1][0] = x + w; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
119 poses[1][1] = y; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
120 poses[2][0] = x + w; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
121 poses[2][1] = y + h; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
122 poses[3][0] = x; |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
123 poses[3][1] = y + h; |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
124 |
36
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
125 for(i = 0; i < 4; i++) |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
126 coord_trans_pos(shape->coord, &poses[i][0], &poses[i][1]); |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
127 |
36
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
128 geo_from_positions(shape->geo, 4, poses); |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
129 } |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
130 |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
131 if(shape->stroke) { |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
132 area = shape->geo->cur_area; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
133 width = shape->stroke_width; |
270
cd6af7da32c9
Fix the problem that clean_canvas() can not clean canvas cleanly.
Thinker K.F. Li <thinker@branda.to>
parents:
224
diff
changeset
|
134 area->x -= width / 2 + 0.5; |
cd6af7da32c9
Fix the problem that clean_canvas() can not clean canvas cleanly.
Thinker K.F. Li <thinker@branda.to>
parents:
224
diff
changeset
|
135 area->y -= width / 2 + 0.5; |
cd6af7da32c9
Fix the problem that clean_canvas() can not clean canvas cleanly.
Thinker K.F. Li <thinker@branda.to>
parents:
224
diff
changeset
|
136 area->w += width + 1; |
cd6af7da32c9
Fix the problem that clean_canvas() can not clean canvas cleanly.
Thinker K.F. Li <thinker@branda.to>
parents:
224
diff
changeset
|
137 area->h += width + 1; |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
138 } |
34
07c523c799f4
Fix bug of relative path command
Thinker K.F. Li <thinker@branda.to>
parents:
33
diff
changeset
|
139 } |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
140 |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
270
diff
changeset
|
141 void sh_rect_draw(shape_t *shape, mbe_t *cr) { |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
142 sh_rect_t *rect = (sh_rect_t *)shape; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
143 int i; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
144 co_aix (*poses)[2]; |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
145 |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
146 poses = rect->poses; |
36
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
147 if(rect->rx != 0 && rect->ry != 0) { |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
270
diff
changeset
|
148 mbe_move_to(cr, poses[11][0], poses[11][1]); |
36
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
149 for(i = 0; i < 12; i += 3) { |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
270
diff
changeset
|
150 mbe_line_to(cr, poses[i][0], poses[i][1]); |
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
270
diff
changeset
|
151 mbe_curve_to(cr, |
36
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
152 poses[i + 1][0], poses[i + 1][1], |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
153 poses[i + 1][0], poses[i + 1][1], |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
154 poses[i + 2][0], poses[i + 2][1]); |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
155 } |
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
156 } else { |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
270
diff
changeset
|
157 mbe_move_to(cr, poses[3][0], poses[3][1]); |
36
51a20f240ce3
short-cut for no-rounded rectangle
Thinker K.F. Li <thinker@branda.to>
parents:
35
diff
changeset
|
158 for(i = 0; i < 4; i++) |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
270
diff
changeset
|
159 mbe_line_to(cr, poses[i][0], poses[i][1]); |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
160 } |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
34
diff
changeset
|
161 } |