summaryrefslogtreecommitdiff
path: root/include/libcss/computed.h
blob: 843795ee5f2c717f2ac786bddf99b323efc5820e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
/*
 * This file is part of LibCSS
 * Licensed under the MIT License,
 *                http://www.opensource.org/licenses/mit-license.php
 * Copyright 2009 John-Mark Bell <jmb@netsurf-browser.org>
 */

#ifndef libcss_computed_h_
#define libcss_computed_h_

#ifdef __cplusplus
extern "C"
{
#endif

#include <libwapcaplet/libwapcaplet.h>

#include <libcss/errors.h>
#include <libcss/functypes.h>
#include <libcss/properties.h>
#include <libcss/types.h>
  
struct css_hint;
struct css_select_handler;

typedef struct css_computed_counter {
	lwc_string *name;
	css_fixed value;
} css_computed_counter;

typedef struct css_computed_clip_rect {
	css_fixed top;
	css_fixed right;
	css_fixed bottom;
	css_fixed left;

	css_unit tunit;
	css_unit runit;
	css_unit bunit;
	css_unit lunit;

	bool top_auto;
	bool right_auto;
	bool bottom_auto;
	bool left_auto;
} css_computed_clip_rect;

enum css_computed_content_type {
	CSS_COMPUTED_CONTENT_NONE		= 0,
	CSS_COMPUTED_CONTENT_STRING		= 1,
	CSS_COMPUTED_CONTENT_URI		= 2,
	CSS_COMPUTED_CONTENT_COUNTER		= 3,
	CSS_COMPUTED_CONTENT_COUNTERS		= 4,
	CSS_COMPUTED_CONTENT_ATTR		= 5,
	CSS_COMPUTED_CONTENT_OPEN_QUOTE		= 6,
	CSS_COMPUTED_CONTENT_CLOSE_QUOTE	= 7,
	CSS_COMPUTED_CONTENT_NO_OPEN_QUOTE	= 8,
	CSS_COMPUTED_CONTENT_NO_CLOSE_QUOTE	= 9
};

typedef struct css_computed_content_item {
	uint8_t type;
	union {
		lwc_string *string;
		lwc_string *uri;
		lwc_string *attr;
		struct {
			lwc_string *name;
			uint8_t style;
		} counter;
		struct {
			lwc_string *name;
			lwc_string *sep;
			uint8_t style;
		} counters;
	} data;	
} css_computed_content_item;
  
css_error css_computed_style_create(css_allocator_fn alloc, void *pw,
		css_computed_style **result);
css_error css_computed_style_destroy(css_computed_style *style);

css_error css_computed_style_initialise(css_computed_style *style,
		struct css_select_handler *handler, void *pw);

css_error css_computed_style_compose(const css_computed_style *parent,
		const css_computed_style *child,
		css_error (*compute_font_size)(void *pw,
				const struct css_hint *parent, 
				struct css_hint *size),
		void *pw,
		css_computed_style *result);

/******************************************************************************
 * Property accessors below here                                              *
 ******************************************************************************/
  
uint8_t css_computed_letter_spacing(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);

uint8_t css_computed_outline_color(
		const css_computed_style *style, css_color *color);
  
uint8_t css_computed_outline_width(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_border_spacing(
		const css_computed_style *style, 
		css_fixed *hlength, css_unit *hunit,
		css_fixed *vlength, css_unit *vunit);
  
uint8_t css_computed_word_spacing(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_counter_increment(
		const css_computed_style *style, 
		const css_computed_counter **counters);
  
uint8_t css_computed_counter_reset(
		const css_computed_style *style, 
		const css_computed_counter **counters);
  
uint8_t css_computed_cursor(
		const css_computed_style *style, 
		lwc_string ***urls);

uint8_t css_computed_clip(
		const css_computed_style *style, 
		css_computed_clip_rect *rect);
  
uint8_t css_computed_content(
		const css_computed_style *style, 
		const css_computed_content_item **content);
  
uint8_t css_computed_vertical_align(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_font_size(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_border_top_width(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_border_right_width(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_border_bottom_width(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_border_left_width(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_background_image(
		const css_computed_style *style, 
		lwc_string **url);
  
uint8_t css_computed_color(
		const css_computed_style *style, 
		css_color *color);
  
uint8_t css_computed_list_style_image(
		const css_computed_style *style, 
		lwc_string **url);
  
uint8_t css_computed_quotes(
		const css_computed_style *style, 
		lwc_string ***quotes);
  
uint8_t css_computed_top(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_right(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_bottom(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_left(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_border_top_color(
		const css_computed_style *style, 
		css_color *color);
  
uint8_t css_computed_border_right_color(
		const css_computed_style *style, 
		css_color *color);
  
uint8_t css_computed_border_bottom_color(
		const css_computed_style *style, 
		css_color *color);
  
uint8_t css_computed_border_left_color(
		const css_computed_style *style, 
		css_color *color);
  
uint8_t css_computed_height(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_line_height(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_background_color(
		const css_computed_style *style, 
		css_color *color);
  
uint8_t css_computed_z_index(
		const css_computed_style *style, 
		int32_t *z_index);
  
uint8_t css_computed_margin_top(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_margin_right(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_margin_bottom(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_margin_left(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_background_attachment(
		const css_computed_style *style);
  
uint8_t css_computed_border_collapse(
		const css_computed_style *style);
  
uint8_t css_computed_caption_side(
		const css_computed_style *style);
  
uint8_t css_computed_direction(
		const css_computed_style *style);
  
uint8_t css_computed_max_height(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_max_width(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_width(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_empty_cells(
		const css_computed_style *style);
  
uint8_t css_computed_float(
		const css_computed_style *style);
  
uint8_t css_computed_font_style(
		const css_computed_style *style);
  
uint8_t css_computed_min_height(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_min_width(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_background_repeat(
		const css_computed_style *style);
  
uint8_t css_computed_clear(
		const css_computed_style *style);
  
uint8_t css_computed_padding_top(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_padding_right(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_padding_bottom(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_padding_left(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_overflow(
		const css_computed_style *style);
  
uint8_t css_computed_position(
		const css_computed_style *style);
  
uint8_t css_computed_opacity(
		const css_computed_style *style, 
		css_fixed *opacity);
  
uint8_t css_computed_text_transform(
		const css_computed_style *style);
  
uint8_t css_computed_text_indent(
		const css_computed_style *style, 
		css_fixed *length, css_unit *unit);
  
uint8_t css_computed_white_space(
		const css_computed_style *style);
  
uint8_t css_computed_background_position(
		const css_computed_style *style, 
		css_fixed *hlength, css_unit *hunit,
		css_fixed *vlength, css_unit *vunit);
  
uint8_t css_computed_display(
		const css_computed_style *style, bool root);
  
uint8_t css_computed_display_static(
		const css_computed_style *style);
  
uint8_t css_computed_font_variant(
		const css_computed_style *style);
  
uint8_t css_computed_text_decoration(
		const css_computed_style *style);
  
uint8_t css_computed_font_family(
		const css_computed_style *style, 
		lwc_string ***names);
  
uint8_t css_computed_border_top_style(
		const css_computed_style *style);
  
uint8_t css_computed_border_right_style(
		const css_computed_style *style);
  
uint8_t css_computed_border_bottom_style(
		const css_computed_style *style);
  
uint8_t css_computed_border_left_style(
		const css_computed_style *style);
  
uint8_t css_computed_font_weight(
		const css_computed_style *style);
  
uint8_t css_computed_list_style_type(
		const css_computed_style *style);
  
uint8_t css_computed_outline_style(
		const css_computed_style *style);
  
uint8_t css_computed_table_layout(
		const css_computed_style *style);
  
uint8_t css_computed_unicode_bidi(
		const css_computed_style *style);
  
uint8_t css_computed_visibility(
		const css_computed_style *style);
  
uint8_t css_computed_list_style_position(
		const css_computed_style *style);
  
uint8_t css_computed_text_align(
		const css_computed_style *style);

uint8_t css_computed_page_break_after(
		const css_computed_style *style);

uint8_t css_computed_page_break_before(
		const css_computed_style *style);

uint8_t css_computed_page_break_inside(
		const css_computed_style *style);

uint8_t css_computed_orphans(
		const css_computed_style *style, 
		int32_t *orphans);

uint8_t css_computed_widows(
		const css_computed_style *style, 
		int32_t *widows);

#ifdef __cplusplus
}
#endif

#endif