Mercurial > MadButterfly
annotate include/mb_shapes.h @ 1528:b7d70341ee57
Insert layer with unique name
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Wed, 31 Aug 2011 22:23:04 +0800 |
parents | bae104d8d247 |
children |
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. |
1062
a8d20bc8ce40
Rename rdman_shape_man() to rdman_man_shape() to mean managing a shape
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
31 * - call rdman_man_shape() |
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
|
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); |
1370
bae104d8d247
Add clone functions for shape types
Thinker K.F. Li <thinker@codemud.net>
parents:
1062
diff
changeset
|
77 extern shape_t *rdman_shape_path_clone(redraw_man_t *rdman, |
bae104d8d247
Add clone functions for shape types
Thinker K.F. Li <thinker@codemud.net>
parents:
1062
diff
changeset
|
78 const shape_t *src_path); |
12 | 79 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
|
80 extern void sh_path_draw(shape_t *shape, mbe_t *cr); |
101 | 81 /* @} */ |
5
9c331ec9e210
SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
82 |
472
4254eaa699d0
Declare functions that should be implemented by Skia graphic engine
Thinker K.F. Li <thinker@branda.to>
parents:
462
diff
changeset
|
83 #ifdef SH_TEXT |
101 | 84 /*! \defgroup shape_text Shape of Text |
85 * @{ | |
86 */ | |
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
|
87 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
|
88 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
|
89 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
|
90 mbe_font_face_t *face,PangoAttrList *attrs); |
293 | 91 /*! \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
|
92 * 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 | 93 * 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
|
94 * not keep the SVG text tree. Instead, all attributes will be expanded into a list. |
293 | 95 * |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
492
diff
changeset
|
96 * 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
|
97 * them seperately. |
293 | 98 * |
99 */ | |
88
dd813dcc232c
New example, calculator.
Thinker K.F. Li <thinker@branda.to>
parents:
73
diff
changeset
|
100 extern void sh_text_set_text(shape_t *shape, const char *txt); |
293 | 101 |
27 | 102 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
|
103 extern void sh_text_draw(shape_t *shape, mbe_t *cr); |
101 | 104 /* @} */ |
472
4254eaa699d0
Declare functions that should be implemented by Skia graphic engine
Thinker K.F. Li <thinker@branda.to>
parents:
462
diff
changeset
|
105 #endif |
27 | 106 |
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
|
107 /*! \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
|
108 * @{ |
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 */ |
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_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
|
111 #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
|
112 #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
|
113 #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
|
114 #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
|
115 #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
|
116 |
291
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
117 |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
118 #define TEXTALIGN_START 1 |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
119 #define TEXTALIGN_MIDDLE 2 |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
120 #define TEXTALIGN_END 3 |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
121 |
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
|
122 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
|
123 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
|
124 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
|
125 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
|
126 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
|
127 } 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
|
128 |
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 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
|
130 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
|
131 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
|
132 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
|
133 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
|
134 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
|
135 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
|
136 } 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
|
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 #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
|
139 |
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 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
|
141 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
|
142 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
|
143 int flag; |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
444
diff
changeset
|
144 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
|
145 } 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
|
146 |
293 | 147 /*! \brief Change the style of the text. |
148 * | |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
492
diff
changeset
|
149 * 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 | 150 * will be applied to the whole text field. The @style should be initialized by using the mb_textstyle_xxx functions. All attributes |
151 * which is not initialized will not be changed. It means that the @style will be added into all existing style instead of reaplcing | |
152 * it. | |
153 */ | |
291
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
154 extern void sh_text_set_style(shape_t *shape,int begin,int end,mb_textstyle_t *format); |
293 | 155 /*! \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
|
156 * 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 | 157 * field only, please use the sh_text_set_style instead. |
158 */ | |
292 | 159 extern void sh_text_set_color(shape_t *shape, unsigned color); |
293 | 160 /*! \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
|
161 * 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 | 162 * field only, please use the sh_text_set_style instead. |
163 */ | |
292 | 164 extern void sh_text_set_bold(shape_t *shape, int bold); |
293 | 165 /*! \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
|
166 * 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 | 167 * field only, please use the sh_text_set_style instead. |
168 */ | |
292 | 169 extern void sh_text_set_italic(shape_t *shape, int italic); |
293 | 170 /*! \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
|
171 * 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 | 172 * field only, please use the sh_text_set_style instead. |
173 */ | |
292 | 174 extern void sh_text_set_underline(shape_t *shape, int underline); |
293 | 175 /*! \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
|
176 * 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 | 177 * field only, please use the sh_text_set_style instead. |
178 */ | |
292 | 179 extern void sh_text_set_font(shape_t *shape, char *family); |
293 | 180 /*! \brief Init the text style data structure. |
181 * | |
182 * 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 | |
183 * property will not change when the sh_text_set_style is called. | |
184 * | |
185 */ | |
291
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
186 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
|
187 { |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
188 style->property = 0; |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
189 } |
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
|
190 /*! \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
|
191 */ |
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
|
192 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
|
193 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
|
194 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
|
195 { |
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 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
|
197 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
|
198 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
|
199 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
|
200 } |
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 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
|
202 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
|
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 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
|
205 } |
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 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
|
207 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
|
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 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
|
210 } |
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 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
|
212 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
|
213 { |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
214 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
|
215 } |
291
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
216 #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
|
217 #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
|
218 #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
|
219 #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
|
220 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
|
221 { |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
222 style->property |= TEXTSTYLE_COLOR; |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
223 style->color = color; |
137a73822d48
Add sh_text_set_style support to change the style of text element.
wycc
parents:
280
diff
changeset
|
224 } |
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
|
225 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
|
226 { |
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 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
|
228 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
|
229 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
|
230 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
|
231 } |
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 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
|
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 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
|
236 } |
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 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
|
238 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
|
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 |
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 |
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_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
|
243 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
|
244 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
|
245 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
|
246 |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
247 /* @} */ |
a90fd749af82
Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents:
197
diff
changeset
|
248 |
101 | 249 /*! \defgroup shape_rect Shape of Rectangle |
250 * @{ | |
251 */ | |
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
|
252 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
|
253 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
|
254 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
|
255 co_aix rx, co_aix ry); |
1370
bae104d8d247
Add clone functions for shape types
Thinker K.F. Li <thinker@codemud.net>
parents:
1062
diff
changeset
|
256 extern shape_t *rdman_shape_rect_clone(redraw_man_t *rdman, |
bae104d8d247
Add clone functions for shape types
Thinker K.F. Li <thinker@codemud.net>
parents:
1062
diff
changeset
|
257 const shape_t *src_rect); |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
33
diff
changeset
|
258 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
|
259 extern void sh_rect_draw(shape_t *shape, mbe_t *cr); |
40 | 260 extern void sh_rect_set(shape_t *shape, co_aix x, co_aix y, |
261 co_aix w, co_aix h, co_aix rx, co_aix ry); | |
101 | 262 /* @} */ |
257
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
263 |
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
264 /*! \defgroup shape_image Shape of Image |
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
265 * @{ |
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
266 */ |
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
267 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
|
268 co_aix x, co_aix y, |
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
269 co_aix w, co_aix h); |
1370
bae104d8d247
Add clone functions for shape types
Thinker K.F. Li <thinker@codemud.net>
parents:
1062
diff
changeset
|
270 extern shape_t *rdman_shape_image_clone(redraw_man_t *rdman, |
bae104d8d247
Add clone functions for shape types
Thinker K.F. Li <thinker@codemud.net>
parents:
1062
diff
changeset
|
271 const shape_t *src_img); |
257
50d253d0fcba
Simple image loader and image shape.
Thinker K.F. Li <thinker@branda.to>
parents:
197
diff
changeset
|
272 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
|
273 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
|
274 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
|
275 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
|
276 /* @} */ |
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
|
277 |
444
12b117b19c2a
Change title of shape_stext group
Thinker K.F. Li <thinker@branda.to>
parents:
429
diff
changeset
|
278 /*! \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
|
279 * @{ |
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 */ |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
281 |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
282 /*! \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
|
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 */ |
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 /*! \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
|
286 * |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
444
diff
changeset
|
287 * 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
|
288 * 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
|
289 */ |
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 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
|
291 |
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 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
|
293 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
|
294 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
|
295 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
|
296 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
|
297 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
|
298 }; |
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 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
|
301 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
|
302 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
|
303 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
|
304 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
|
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 |
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 /*! \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
|
308 * |
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 * \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
|
310 * \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
|
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 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
|
313 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
|
314 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
|
315 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
|
316 } 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
|
317 |
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 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
|
319 const char *txt, |
9d5506968efb
Change the interface of rdman_shape_stext_new().
Thinker K.F. Li <thinker@branda.to>
parents:
416
diff
changeset
|
320 co_aix x, co_aix y); |
1370
bae104d8d247
Add clone functions for shape types
Thinker K.F. Li <thinker@codemud.net>
parents:
1062
diff
changeset
|
321 extern shape_t *rdman_shape_stext_clone(redraw_man_t *rdman, |
bae104d8d247
Add clone functions for shape types
Thinker K.F. Li <thinker@codemud.net>
parents:
1062
diff
changeset
|
322 const shape_t *_src_txt); |
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
|
323 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
|
324 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
|
325 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
|
326 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
|
327 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
|
328 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
|
329 |
27774b93521e
Add sh_stext_t to implement a simple version of text shape.
Thinker K.F. Li <thinker@branda.to>
parents:
356
diff
changeset
|
330 /* @} */ |
101 | 331 /* @} */ |
27 | 332 |
5
9c331ec9e210
SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
333 #endif /* __SHAPES_H_ */ |