fix font style handling policy.
@@ -49,10 +49,16 @@ | ||
49 | 49 | box->content_edge.c.bottom = 0; |
50 | 50 | } |
51 | 51 | |
52 | +LOCAL VOID cssrendering_basebox_setuserdata(cssrendering_basebox_t *box, VP data) | |
53 | +{ | |
54 | + box->userdata = data; | |
55 | +} | |
56 | + | |
52 | 57 | LOCAL VOID cssrendering_basebox_initialize(cssrendering_basebox_t *box, CSSRENDERING_BOX_TYPE type) |
53 | 58 | { |
54 | 59 | treebase_node_initialize(&box->base); |
55 | 60 | box->type = type; |
61 | + box->userdata = NULL; | |
56 | 62 | } |
57 | 63 | |
58 | 64 | LOCAL VOID cssrendering_basebox_finalize(cssrendering_basebox_t *box) |
@@ -60,6 +66,13 @@ | ||
60 | 66 | treebase_node_finalize(&box->base); |
61 | 67 | } |
62 | 68 | |
69 | +/* cssrendering_linebox */ | |
70 | + | |
71 | +EXPORT VOID cssrendering_linebox_setuserdata(cssrendering_linebox_t *box, VP data) | |
72 | +{ | |
73 | + cssrendering_basebox_setuserdata(&box->base, data); | |
74 | +} | |
75 | + | |
63 | 76 | EXPORT VOID cssrendering_linebox_initialize(cssrendering_linebox_t *box) |
64 | 77 | { |
65 | 78 | cssrendering_basebox_initialize(&box->base, CSSRENDEREING_BOX_TYPE_LINE); |
@@ -77,6 +90,11 @@ | ||
77 | 90 | cssrendering_basebox_appendchild(&box->base, &child->base); |
78 | 91 | } |
79 | 92 | |
93 | +EXPORT VOID cssrendering_anonymousbox_setuserdata(cssrendering_anonymousbox_t *box, VP data) | |
94 | +{ | |
95 | + cssrendering_basebox_setuserdata(&box->base, data); | |
96 | +} | |
97 | + | |
80 | 98 | EXPORT VOID cssrendering_anonymousbox_initialize(cssrendering_anonymousbox_t *box) |
81 | 99 | { |
82 | 100 | cssrendering_basebox_initialize(&box->base, CSSRENDEREING_BOX_TYPE_ANONYMOUS); |
@@ -99,6 +117,11 @@ | ||
99 | 117 | cssrendering_basebox_appendchild(&box->base, &child->base); |
100 | 118 | } |
101 | 119 | |
120 | +EXPORT VOID cssrendering_blockbox_setuserdata(cssrendering_blockbox_t *box, VP data) | |
121 | +{ | |
122 | + cssrendering_basebox_setuserdata(&box->base, data); | |
123 | +} | |
124 | + | |
102 | 125 | EXPORT VOID cssrendering_blockbox_initialize(cssrendering_blockbox_t *box) |
103 | 126 | { |
104 | 127 | cssrendering_basebox_initialize(&box->base, CSSRENDEREING_BOX_TYPE_BLOCK); |
@@ -134,6 +157,7 @@ | ||
134 | 157 | result->data.text.fragment = &(box->l.text); |
135 | 158 | result->data.text.blstart.x = traversal->origin.x + box->base.content_edge.c.left; |
136 | 159 | result->data.text.blstart.y = traversal->origin.y + box->base.content_edge.c.top + box->l.baseline; |
160 | + result->data.text.nodedata = box->base.userdata; | |
137 | 161 | break; |
138 | 162 | } |
139 | 163 | } else { |
@@ -25,6 +25,7 @@ | ||
25 | 25 | */ |
26 | 26 | |
27 | 27 | #include <basic.h> |
28 | +#include <btron/dp.h> | |
28 | 29 | |
29 | 30 | #include "cssmetric.h" |
30 | 31 | #include <coll/treebase.h> |
@@ -56,6 +57,7 @@ | ||
56 | 57 | treebase_node_t base; |
57 | 58 | CSSRENDERING_BOX_TYPE type; |
58 | 59 | cssmetric_rectangle_t content_edge; |
60 | + VP userdata; | |
59 | 61 | }; |
60 | 62 | typedef struct cssrendering_basebox_t_ cssrendering_basebox_t; |
61 | 63 |
@@ -103,6 +105,7 @@ | ||
103 | 105 | struct { |
104 | 106 | cssrendering_textfragment_t *fragment; |
105 | 107 | cssmetric_point_t blstart; /* baseline start */ |
108 | + VP nodedata; | |
106 | 109 | } text; |
107 | 110 | } data; |
108 | 111 | }; |
@@ -110,14 +113,17 @@ | ||
110 | 113 | |
111 | 114 | IMPORT VOID cssrendering_linebox_initialize(cssrendering_linebox_t *box); |
112 | 115 | IMPORT VOID cssrendering_linebox_finalize(cssrendering_linebox_t *box); |
116 | +IMPORT VOID cssrendering_linebox_setuserdata(cssrendering_linebox_t *box, VP data); | |
113 | 117 | |
114 | 118 | IMPORT VOID cssrendering_anonymousbox_initialize(cssrendering_anonymousbox_t *box); |
115 | 119 | IMPORT VOID cssrendering_anonymousbox_finalize(cssrendering_anonymousbox_t *box); |
116 | 120 | IMPORT VOID cssrendering_anonymousbox_appendchild(cssrendering_anonymousbox_t *box, cssrendering_linebox_t *child); |
121 | +IMPORT VOID cssrendering_anonymousbox_setuserdata(cssrendering_anonymousbox_t *box, VP data); | |
117 | 122 | |
118 | 123 | IMPORT VOID cssrendering_blockbox_initialize(cssrendering_blockbox_t *box); |
119 | 124 | IMPORT VOID cssrendering_blockbox_finalize(cssrendering_blockbox_t *box); |
120 | 125 | IMPORT VOID cssrendering_blockbox_appendanonymouschild(cssrendering_blockbox_t *box, cssrendering_anonymousbox_t *child); |
126 | +IMPORT VOID cssrendering_blockbox_setuserdata(cssrendering_blockbox_t *box, VP data); | |
121 | 127 | |
122 | 128 | IMPORT VOID cssrendering_drawtraversal_initialize(cssrendering_drawtraversal_t *traversal, cssrendering_blockbox_t *root); |
123 | 129 | IMPORT VOID cssrendering_drawtraversal_finalize(cssrendering_drawtraversal_t *traversal); |