Mercurial > MadButterfly
annotate include/mb_shapes.h @ 880:ac3e8492ad74 abs_n_rel_center
Formalize path data for MadButterfly.
Inkscape and other editors would omit 'l' or 'L' after 'm' or 'M'.
MadButterfly can not handle it, now. So, we work around it at SVG
parser.
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Sat, 25 Sep 2010 18:46:37 +0800 |
parents | 586e50f82c1f |
children | a8d20bc8ce40 |
rev | line source |
---|---|
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
492
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:
492
diff
changeset
|
2 // vim: sw=4:ts=8:sts=4 |
101 | 3 /*! \file |
4 * \brief Declare interfaces of shapes. | |
5 * | |
6 * \todo Add ellipse shape. | |
7 * \todo Add circle shape. | |
8 */ | |
5
9c331ec9e210
SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
9 #ifndef __SHAPES_H_ |
9c331ec9e210
SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
10 #define __SHAPES_H_ |
9c331ec9e210
SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
11 |
473
ba64f928542b
Remove mbe_matrix_t type.
Thinker K.F. Li <thinker@branda.to>
parents:
472
diff
changeset
|
12 #include "mb_config.h" |
ba64f928542b
Remove mbe_matrix_t type.
Thinker K.F. Li <thinker@branda.to>
parents:
472
diff
changeset
|
13 |
ba64f928542b
Remove mbe_matrix_t type.
Thinker K.F. Li <thinker@branda.to>
parents:
472
diff
changeset
|
14 #ifdef SH_TEXT |
ba64f928542b
Remove mbe_matrix_t type.
Thinker K.F. Li <thinker@branda.to>
parents:
472
diff
changeset
|
15 #include <pango/pangocairo.h> |
ba64f928542b
Remove mbe_matrix_t type.
Thinker K.F. Li <thinker@branda.to>
parents:
472
diff
changeset
|
16 #endif |
ba64f928542b
Remove mbe_matrix_t type.
Thinker K.F. Li <thinker@branda.to>
parents:
472
diff
changeset
|
17 |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
444
diff
changeset
|
18 #include "mb_graph_engine.h" |
5
9c331ec9e210
SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
19 #include "mb_types.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
|
20 #include "mb_redraw_man.h" |
257
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
21 #include "mb_img_ldr.h" |
5
9c331ec9e210
SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
22 |
101 | 23 /*! \page define_shape How to Define Shapes |
27 | 24 * |
159
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
108
diff
changeset
|
25 * A shape implementation must include |
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
108
diff
changeset
|
26 * - rdman_shape_*_new() |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
33
diff
changeset
|
27 * - clear memory for shape_t member. |
393
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
28 * - mb_obj_init() to initialize shape_t::obj. |
159
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
108
diff
changeset
|
29 * - assign *_free() to \ref shape_t::free. |
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
108
diff
changeset
|
30 * - make new object been managed by a redraw manager. |
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
108
diff
changeset
|
31 * - call rdman_shape_man() |
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
108
diff
changeset
|
32 * - *_free() |
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
108
diff
changeset
|
33 * - assigned to \ref shape_t::free. |
27 | 34 * - *_transform() |
30
e06a4a667ce2
Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents:
27
diff
changeset
|
35 * - *_draw() |
260
29acbd8a0dd0
Integrate sh_image with svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
257
diff
changeset
|
36 * - *_draw() is responsive to define shape. How the shape is filled |
29acbd8a0dd0
Integrate sh_image with svg2code.py.
Thinker K.F. Li <thinker@branda.to>
parents:
257
diff
changeset
|
37 * or stroked is defined by paint. |
108 | 38 * - first member variable of a shape type must be a shape_t. |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
492
diff
changeset
|
39 * |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
33
diff
changeset
|
40 * Must modify |
101 | 41 * - event.c::draw_shape_path() |
42 * - redraw_man.c::clean_shape() | |
43 * - redraw_man.c::draw_shape() | |
257
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
44 * |
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
45 * \section shape_transform Shape Transform |
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
46 * |
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
47 * All shape types must have a shape transform function. It is invoked by |
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
48 * redraw_man.c::clean_shape(). It's task is to update \ref geo_t of the |
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
49 * shape object. In most situtation, it call geo_from_positions() to |
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
50 * update geo_t. |
416
5791263ebe7b
Document for why a shape should be managed by the redraw manager.
Thinker K.F. Li <thinker@branda.to>
parents:
393
diff
changeset
|
51 * |
5791263ebe7b
Document for why a shape should be managed by the redraw manager.
Thinker K.F. Li <thinker@branda.to>
parents:
393
diff
changeset
|
52 * \section rdman_man_shape Make a redraw manager managing a shape. |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
492
diff
changeset
|
53 * |
416
5791263ebe7b
Document for why a shape should be managed by the redraw manager.
Thinker K.F. Li <thinker@branda.to>
parents:
393
diff
changeset
|
54 * It means managing life cycle of a shape to make a redraw manager |
5791263ebe7b
Document for why a shape should be managed by the redraw manager.
Thinker K.F. Li <thinker@branda.to>
parents:
393
diff
changeset
|
55 * managing a shape. Shapes are referenced by a redraw manager to |
5791263ebe7b
Document for why a shape should be managed by the redraw manager.
Thinker K.F. Li <thinker@branda.to>
parents:
393
diff
changeset
|
56 * update output device. So, a redraw manager must make sure all |
5791263ebe7b
Document for why a shape should be managed by the redraw manager.
Thinker K.F. Li <thinker@branda.to>
parents:
393
diff
changeset
|
57 * shapes are valid when they are needed to update output. To make sure |
5791263ebe7b
Document for why a shape should be managed by the redraw manager.
Thinker K.F. Li <thinker@branda.to>
parents:
393
diff
changeset
|
58 * lifecycle of shapes are synchronized with status of a redraw manager, |
5791263ebe7b
Document for why a shape should be managed by the redraw manager.
Thinker K.F. Li <thinker@branda.to>
parents:
393
diff
changeset
|
59 * lifecycle of shapes are managed by associated redraw manager. |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
492
diff
changeset
|
60 * |
27 | 61 */ |
62 | |
101 | 63 /*! \defgroup shapes Shapes |
64 * @{ | |
65 */ | |
30
e06a4a667ce2
Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents:
27
diff
changeset
|
66 |
101 | 67 /*! \defgroup shape_path Shape of Path |
68 * @{ | |
69 */ | |
492
e95598916dfb
Make path data constant.
Thinker K.F. Li <thinker@branda.to>
parents:
473
diff
changeset
|
70 extern shape_t *rdman_shape_path_new(redraw_man_t *rdman, const char *data); |
458
bb4f651090bf
Use cairo to transform and draw arc.
Thinker K.F. Li <thinker@branda.to>
parents:
448
diff
changeset
|
71 extern shape_t *rdman_shape_path_new_from_binary(redraw_man_t *rdman, |
bb4f651090bf
Use cairo to transform and draw arc.
Thinker K.F. Li <thinker@branda.to>
parents:
448
diff
changeset
|
72 char *commands, |
bb4f651090bf
Use cairo to transform and draw arc.
Thinker K.F. Li <thinker@branda.to>
parents:
448
diff
changeset
|
73 co_aix *pnts, |
bb4f651090bf
Use cairo to transform and draw arc.
Thinker K.F. Li <thinker@branda.to>
parents:
448
diff
changeset
|
74 int pnt_cnt, |
bb4f651090bf
Use cairo to transform and draw arc.
Thinker K.F. Li <thinker@branda.to>
parents:
448
diff
changeset
|
75 co_aix *float_args, |
bb4f651090bf
Use cairo to transform and draw arc.
Thinker K.F. Li <thinker@branda.to>
parents:
448
diff
changeset
|
76 int float_arg_cnt); |
12 | 77 extern void sh_path_transform(shape_t *shape); |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
444
diff
changeset
|
78 extern void sh_path_draw(shape_t *shape, mbe_t *cr); |
101 | 79 /* @} */ |
5
9c331ec9e210
SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
80 |
472
4254eaa699d0
Declare functions that should be implemented by Skia graphic engine
Thinker K.F. Li <thinker@branda.to>
parents:
462
diff
changeset
|
81 #ifdef SH_TEXT |
101 | 82 /*! \defgroup shape_text Shape of Text |
83 * @{ | |
84 */ | |
159
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
108
diff
changeset
|
85 extern shape_t *rdman_shape_text_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:
108
diff
changeset
|
86 const char *txt, co_aix x, co_aix y, |
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
108
diff
changeset
|
87 co_aix font_size, |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
444
diff
changeset
|
88 mbe_font_face_t *face,PangoAttrList *attrs); |
293 | 89 /*! \brief Change the content of the text element. |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
492
diff
changeset
|
90 * In the SVG, the content of a text tag can be composed of several tspan inside it. The Madbutterfly parser will collect all content of a |
293 | 91 * text segement as a single string. The attribute of these characters are saved in a seperate data structure. In the program level, we will |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
492
diff
changeset
|
92 * not keep the SVG text tree. Instead, all attributes will be expanded into a list. |
293 | 93 * |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
492
diff
changeset
|
94 * When you change the content of a text element, please remember that the attributes will not be removed by the way. You need to change |
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
492
diff
changeset
|
95 * them seperately. |
293 | 96 * |
97 */ | |
88
dd813dcc232c
New example, calculator.
Thinker K.F. Li <thinker@branda.to>
parents:
73
diff
changeset
|
98 extern void sh_text_set_text(shape_t *shape, const char *txt); |
293 | 99 |
27 | 100 extern void sh_text_transform(shape_t *shape); |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
444
diff
changeset
|
101 extern void sh_text_draw(shape_t *shape, mbe_t *cr); |
101 | 102 /* @} */ |
472
4254eaa699d0
Declare functions that should be implemented by Skia graphic engine
Thinker K.F. Li <thinker@branda.to>
parents:
462
diff
changeset
|
103 #endif |
27 | 104 |
278
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
105 /*! \defgroup mb_text_t Shape of Text |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
106 * @{ |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
107 */ |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
108 #define TEXTSTYLE_BOLD 1 |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
109 #define TEXTSTYLE_ITALIC 2 |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
110 #define TEXTSTYLE_UNDERLINE 4 |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
111 #define TEXTSTYLE_COLOR 8 |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
112 #define TEXTSTYLE_FONT 0x10 |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
113 #define TEXTSTYLE_ALIGN 0x20 |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
114 |
291
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
115 |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
116 #define TEXTALIGN_START 1 |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
117 #define TEXTALIGN_MIDDLE 2 |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
118 #define TEXTALIGN_END 3 |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
119 |
278
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
120 typedef struct { |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
121 int property; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
122 unsigned int color; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
123 unsigned int align; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
124 char *font; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
125 } mb_textstyle_t; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
126 |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
127 typedef struct _textsegment { |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
128 int x; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
129 int y; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
130 mb_textstyle_t style; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
131 int size; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
132 char *buf; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
133 struct _textsegment *next; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
134 } mb_text_segment_t; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
135 |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
136 #define MBTEXT_DIRTY 1 |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
137 |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
138 typedef struct { |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
139 int nseg; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
140 mb_text_segment_t *segs; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
141 int flag; |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
444
diff
changeset
|
142 mbe_surface_t *surface; |
278
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
143 } mb_text_t; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
144 |
293 | 145 /*! \brief Change the style of the text. |
146 * | |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
492
diff
changeset
|
147 * This function can add a couple of attributes to a segment of text or the whole text field. If the @end is -1, the attributes |
293 | 148 * will be applied to the whole text field. The @style should be initialized by using the mb_textstyle_xxx functions. All attributes |
149 * which is not initialized will not be changed. It means that the @style will be added into all existing style instead of reaplcing | |
150 * it. | |
151 */ | |
291
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
152 extern void sh_text_set_style(shape_t *shape,int begin,int end,mb_textstyle_t *format); |
293 | 153 /*! \brief Change the color of the text field |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
492
diff
changeset
|
154 * Change the color of the whole text field. This will removed all existing color attribute. If you want to change part of the text |
293 | 155 * field only, please use the sh_text_set_style instead. |
156 */ | |
292 | 157 extern void sh_text_set_color(shape_t *shape, unsigned color); |
293 | 158 /*! \brief Turn on/off the bold attribute. |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
492
diff
changeset
|
159 * Turn on/off the font weight of the whole text field. This will removed all existing bold setting. If you want to change part of the text |
293 | 160 * field only, please use the sh_text_set_style instead. |
161 */ | |
292 | 162 extern void sh_text_set_bold(shape_t *shape, int bold); |
293 | 163 /*! \brief Turn on/off the italic attribute. |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
492
diff
changeset
|
164 * Turn on/off the italic of the whole text field. This will removed all existing italic setting. If you want to change part of the text |
293 | 165 * field only, please use the sh_text_set_style instead. |
166 */ | |
292 | 167 extern void sh_text_set_italic(shape_t *shape, int italic); |
293 | 168 /*! \brief Turn on/off the underline attribute. |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
492
diff
changeset
|
169 * Turn on/off the underline of the whole text field. This will removed all existing underline setting. If you want to change part of the text |
293 | 170 * field only, please use the sh_text_set_style instead. |
171 */ | |
292 | 172 extern void sh_text_set_underline(shape_t *shape, int underline); |
293 | 173 /*! \brief Change the font of the text field. |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
492
diff
changeset
|
174 * Change the font of the whole text field. This will removed all existing underline setting. If you want to change part of the text |
293 | 175 * field only, please use the sh_text_set_style instead. |
176 */ | |
292 | 177 extern void sh_text_set_font(shape_t *shape, char *family); |
293 | 178 /*! \brief Init the text style data structure. |
179 * | |
180 * This is usually used to initialize the mb_textstyle_t which is allocate in the stack. It will mark all property as undefined. All undefined | |
181 * property will not change when the sh_text_set_style is called. | |
182 * | |
183 */ | |
291
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
184 static inline void mb_textstyle_init(mb_textstyle_t *style) |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
185 { |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
186 style->property = 0; |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
187 } |
462
af4b506ad56f
Add backend layer to seperate the backend with the MBAF. Currently, X is the only backend. If we have more than one backend, we need to modify the Makefile to sleect the backend or implement a backend selection mechanism in the runtime.
wycc@122-116-38-188.HINET-IP.hinet.net
parents:
458
diff
changeset
|
188 /*! \brief Get the dimension of the text |
af4b506ad56f
Add backend layer to seperate the backend with the MBAF. Currently, X is the only backend. If we have more than one backend, we need to modify the Makefile to sleect the backend or implement a backend selection mechanism in the runtime.
wycc@122-116-38-188.HINET-IP.hinet.net
parents:
458
diff
changeset
|
189 */ |
af4b506ad56f
Add backend layer to seperate the backend with the MBAF. Currently, X is the only backend. If we have more than one backend, we need to modify the Makefile to sleect the backend or implement a backend selection mechanism in the runtime.
wycc@122-116-38-188.HINET-IP.hinet.net
parents:
458
diff
changeset
|
190 extern void sh_text_get_size(shape_t *sh, int *w, int *h); |
278
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
191 extern void mb_textstyle_set_font(mb_textstyle_t *style, char *font); |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
192 static inline char *mb_textstyle_get_font(mb_textstyle_t *style) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
193 { |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
194 if (style->property & TEXTSTYLE_FONT) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
195 return style->font; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
196 else |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
197 return NULL; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
198 } |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
199 extern void mb_textstyle_set_bold(mb_textstyle_t *style, int bold); |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
492
diff
changeset
|
200 static inline int mb_textstyle_get_bold(mb_textstyle_t *style) |
278
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
201 { |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
202 return style->property & TEXTSTYLE_BOLD; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
203 } |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
204 extern void mb_textstyle_set_italic(mb_textstyle_t *style, int italic); |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
205 static inline int mb_textstyle_get_italic(mb_textstyle_t *style) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
206 { |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
207 return style->property & TEXTSTYLE_ITALIC; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
208 } |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
209 extern void mb_textstyle_set_underline(mb_textstyle_t *style, int underline); |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
210 static inline int mb_textstyle_get_undeline(mb_textstyle_t *style) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
211 { |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
212 return style->property & TEXTSTYLE_UNDERLINE; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
213 } |
291
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
214 #define TEXTCOLOR_RED(c) (((c)&0xff0000)>>16) |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
215 #define TEXTCOLOR_GREEN(c) (((c)&0xff00)>>8) |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
216 #define TEXTCOLOR_BLUE(c) (((c)&0xff)) |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
217 #define TEXTCOLOR_RGB(r,g,b) (((r)<<16)|((g)<<8)|(b)) |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
218 static inline void mb_textstyle_set_color(mb_textstyle_t *style, unsigned int color) |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
219 { |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
220 style->property |= TEXTSTYLE_COLOR; |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
221 style->color = color; |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
222 } |
278
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
223 static inline unsigned int mb_textstyle_get_color(mb_textstyle_t *style) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
224 { |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
225 if (style->property & TEXTSTYLE_COLOR) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
226 return style->color; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
227 else |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
228 return 0; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
229 } |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
230 |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
231 static inline int mb_textstyle_has_color(mb_textstyle_t *style) |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
232 { |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
233 return style->property & TEXTSTYLE_COLOR; |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
234 } |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
235 extern void mb_textstyle_set_alignment(mb_textstyle_t *style, int alignment); |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
236 extern int mb_textstyle_get_alignment(mb_textstyle_t *style); |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
237 |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
238 |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
239 |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
240 extern void mb_text_set_style(mb_text_t *text, int begin,int end,mb_textstyle_t *style); |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
241 extern void mb_text_get_style(mb_text_t *text, int n,mb_textstyle_t *style); |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
242 extern void mb_text_set_text(mb_text_t *text, char *string,int begin,int end); |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
243 extern void mb_text_get_text(mb_text_t *text, int begin,int end, char *string); |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
244 |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
245 /* @} */ |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
246 |
101 | 247 /*! \defgroup shape_rect Shape of Rectangle |
248 * @{ | |
249 */ | |
159
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
108
diff
changeset
|
250 extern 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:
108
diff
changeset
|
251 co_aix x, co_aix y, |
b90abd31a281
Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents:
108
diff
changeset
|
252 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:
108
diff
changeset
|
253 co_aix rx, co_aix ry); |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
33
diff
changeset
|
254 extern void sh_rect_transform(shape_t *shape); |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
444
diff
changeset
|
255 extern void sh_rect_draw(shape_t *shape, mbe_t *cr); |
40 | 256 extern void sh_rect_set(shape_t *shape, co_aix x, co_aix y, |
257 co_aix w, co_aix h, co_aix rx, co_aix ry); | |
101 | 258 /* @} */ |
257
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
259 |
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
260 /*! \defgroup shape_image Shape of Image |
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
261 * @{ |
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
262 */ |
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
263 extern shape_t *rdman_shape_image_new(redraw_man_t *rdman, |
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
264 co_aix x, co_aix y, |
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
265 co_aix w, co_aix h); |
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
266 extern void sh_image_transform(shape_t *shape); |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
444
diff
changeset
|
267 extern void sh_image_draw(shape_t *shape, mbe_t *cr); |
265
b42ee279669e
Change function name and add comments.
Thinker K.F. Li <thinker@branda.to>
parents:
260
diff
changeset
|
268 extern void sh_image_set_geometry(shape_t *shape, co_aix x, co_aix y, |
b42ee279669e
Change function name and add comments.
Thinker K.F. Li <thinker@branda.to>
parents:
260
diff
changeset
|
269 co_aix w, co_aix h); |
257
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
270 /* @} */ |
393
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
271 |
444
12b117b19c2a
Change title of shape_stext group
Thinker K.F. Li <thinker@branda.to>
parents:
429
diff
changeset
|
272 /*! \defgroup shape_stext Shape of Simple Text |
393
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
273 * @{ |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
274 */ |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
275 |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
276 /*! \defgroup font_face Define font face used to describe style of text. |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
277 * @{ |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
278 */ |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
279 /*! \brief Font face of MadButterfly. |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
280 * |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
444
diff
changeset
|
281 * It actully a mbe_font_face_t, now. But, it can be change for latter. |
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
444
diff
changeset
|
282 * So, programmer should not depend on mbe_font_face_t. |
393
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
283 */ |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
284 typedef struct _mb_font_face mb_font_face_t; |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
285 |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
286 enum MB_FONT_SLANTS { |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
287 MB_FONT_SLANT_DUMMY, |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
288 MB_FONT_SLANT_ROMAN, |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
289 MB_FONT_SLANT_ITALIC, |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
290 MB_FONT_SLANT_OBLIQUE, |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
291 MB_FONT_SLANT_MAX |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
292 }; |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
293 |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
294 extern mb_font_face_t *mb_font_face_query(redraw_man_t *rdman, |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
295 const char *family, |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
296 int slant, |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
297 int weight); |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
298 extern void mb_font_face_free(mb_font_face_t *face); |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
299 /* @} */ |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
300 |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
301 /*! \brief Describe style of a block of text. |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
302 * |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
303 * \ref sh_stext_t describes style of a text by a list of |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
304 * \ref mb_style_blk_t. |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
305 */ |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
306 typedef struct { |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
307 int n_chars; |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
308 mb_font_face_t *face; |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
309 co_aix font_sz; |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
310 } mb_style_blk_t; |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
311 |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
312 extern shape_t *rdman_shape_stext_new(redraw_man_t *rdman, |
429
9d5506968efb
Change the interface of rdman_shape_stext_new().
Thinker K.F. Li <thinker@branda.to>
parents:
416
diff
changeset
|
313 const char *txt, |
9d5506968efb
Change the interface of rdman_shape_stext_new().
Thinker K.F. Li <thinker@branda.to>
parents:
416
diff
changeset
|
314 co_aix x, co_aix y); |
393
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
315 extern void sh_stext_transform(shape_t *shape); |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
444
diff
changeset
|
316 extern void sh_stext_draw(shape_t *shape, mbe_t *cr); |
393
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
317 extern int sh_stext_set_text(shape_t *shape, const char *txt); |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
318 extern int sh_stext_set_style(shape_t *shape, |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
319 const mb_style_blk_t *blks, |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
320 int nblks); |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
321 |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
322 /* @} */ |
101 | 323 /* @} */ |
27 | 324 |
5
9c331ec9e210
SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
325 #endif /* __SHAPES_H_ */ |