annotate src/shape_rect.c @ 1172:178b126edd2c

Implement the correct normal tween. We will duplicate the node in the start scene. Insted of deleting all nodes which is not in the stop scene, we should delete the object which is not in the start scene instead. If we delete objecvt the the stop scene, the object should appear until we reach the stop scene.
author wycc
date Thu, 30 Dec 2010 11:50:02 +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
Thinker K.F. Li <thinker@branda.to>
parents: 36
diff changeset
53 void sh_rect_set(shape_t *shape, co_aix x, co_aix y,
Thinker K.F. Li <thinker@branda.to>
parents: 36
diff changeset
54 co_aix w, co_aix h, co_aix rx, co_aix ry) {
Thinker K.F. Li <thinker@branda.to>
parents: 36
diff changeset
55 sh_rect_t *rect = (sh_rect_t *)shape;
Thinker K.F. Li <thinker@branda.to>
parents: 36
diff changeset
56
Thinker K.F. Li <thinker@branda.to>
parents: 36
diff changeset
57 rect->x = x;
Thinker K.F. Li <thinker@branda.to>
parents: 36
diff changeset
58 rect->y = y;
Thinker K.F. Li <thinker@branda.to>
parents: 36
diff changeset
59 rect->w = w;
Thinker K.F. Li <thinker@branda.to>
parents: 36
diff changeset
60 rect->h = h;
Thinker K.F. Li <thinker@branda.to>
parents: 36
diff changeset
61 rect->rx = rx;
Thinker K.F. Li <thinker@branda.to>
parents: 36
diff changeset
62 rect->ry = ry;
Thinker K.F. Li <thinker@branda.to>
parents: 36
diff changeset
63 }
Thinker K.F. Li <thinker@branda.to>
parents: 36
diff changeset
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 }