OSDN Git Service

Merge branch 'master' into sandbox
[modchxj/mod_chxj.git] / include / chxj_css.h
1 /*
2  * Copyright (C) 2005-2008 Atsushi Konno All rights reserved.
3  * Copyright (C) 2005 QSDN,Inc. All rights reserved.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 #ifndef __CHXJ_CSS_H__
18 #define __CHXJ_CSS_H__
19
20 #include <libcroco/libcroco.h>
21
22
23 /**
24  * CSS property.
25  */
26 typedef struct __css_property_t {
27   struct __css_property_t *next;
28   struct __css_property_t **ref;
29   char *name;
30   char *value;
31 } css_property_t;
32
33
34 /**
35  * CSS selector.
36  */
37 typedef struct __css_selector_t {
38   struct __css_selector_t *next;
39   struct __css_selector_t **ref;
40   /* has tag or/and class or/and id */
41   char *name;
42   enum Combinator combinator;
43   css_property_t property_head;
44 } css_selector_t;
45
46
47 /**
48  * CSS stylesheet.
49  * Manager of css_selector_t.
50  */
51 typedef struct __css_stylesheet_t {
52   css_selector_t selector_head;
53 } css_stylesheet_t;
54
55
56 /**
57  * CSS current_stylesheet.
58  */
59 typedef struct __css_current_stylesheet_t {
60   struct __css_property_t property_head;
61   struct __css_current_stylesheet_t *next;
62   struct __css_current_stylesheet_t **ref;
63 } css_current_stylesheet_t;
64
65
66 /**
67  * CSS current_stylesheet_stack_t.
68  */
69 typedef struct __css_current_stylesheet_stack_t {
70   css_current_stylesheet_t *stylesheet_head;
71   css_current_stylesheet_t *stylesheet_tail;
72 } css_current_stylesheet_stack_t;
73
74
75 extern void chxj_css_stylesheet_dump(css_stylesheet_t *stylesheet);
76 extern CRStyleSheet *chxj_css_stylesheet_to_croco_stylesheet(css_stylesheet_t *sheet);
77 #endif
78 /*
79  * vim:ts=2 et
80  */