2 * Copyright (C) 2005-2008 Atsushi Konno All rights reserved.
3 * Copyright (C) 2005 QSDN,Inc. All rights reserved.
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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 #ifndef __CHXJ_CSS_H__
18 #define __CHXJ_CSS_H__
21 #include <libcroco/libcroco.h>
27 typedef struct __css_property_t {
28 struct __css_property_t *next;
29 struct __css_property_t **ref;
38 typedef struct __css_selector_t {
39 struct __css_selector_t *next;
40 struct __css_selector_t **ref;
41 /* has tag or/and class or/and id */
43 enum Combinator combinator;
44 css_property_t property_head;
50 * Manager of css_selector_t.
52 typedef struct __css_stylesheet_t {
53 css_selector_t selector_head;
58 * CSS current_stylesheet.
60 typedef struct __css_current_stylesheet_t {
61 struct __css_property_t property_head;
62 struct __css_current_stylesheet_t *next;
63 struct __css_current_stylesheet_t **ref;
64 } css_current_stylesheet_t;
68 * CSS current_stylesheet_stack_t.
70 typedef struct __css_current_stylesheet_stack_t {
71 css_current_stylesheet_t *stylesheet_head;
72 css_current_stylesheet_t *stylesheet_tail;
73 } css_current_stylesheet_stack_t;
75 #include "chxj_apache.h"
76 extern css_stylesheet_t *chxj_css_parse_from_uri(request_rec *r, apr_pool_t *pool, css_stylesheet_t *old_stylesheet, const char *uri);
77 extern void chxj_css_stylesheet_dump(css_stylesheet_t *stylesheet);
78 extern css_selector_t *chxj_css_find_selector(Doc *doc, css_stylesheet_t *stylesheet, Node *node);
79 extern css_stylesheet_t *chxj_find_pseudo_selectors(Doc *doc, css_stylesheet_t *stylesheet);
80 extern css_stylesheet_t *chxj_css_parse_style_attr(Doc *doc, css_stylesheet_t *old_stylesheet, char *tag_name, char *class_name, char *id_name, char *style_attr_value);
81 extern css_stylesheet_t *chxj_css_parse_style_value(Doc *doc, css_stylesheet_t *old_stylesheet, char *style_attr_value);