~valavanisalex/ubuntu/precise/inkscape/fix-943984

« back to all changes in this revision

Viewing changes to inkscape-0.47pre1/src/libcroco/cr-simple-sel.h

  • Committer: Bazaar Package Importer
  • Author(s): Bryce Harrington
  • Date: 2009-07-02 17:09:45 UTC
  • mfrom: (1.1.9 upstream)
  • Revision ID: james.westby@ubuntu.com-20090702170945-nn6d6zswovbwju1t
Tags: 0.47~pre1-0ubuntu1
* New upstream release.
  - Don't constrain maximization on small resolution devices (pre0)
    (LP: #348842)
  - Fixes segfault on startup (pre0)
    (LP: #391149)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* -*- Mode: C; indent-tabs-mode:nil; c-basic-offset: 8-*- */
 
2
 
 
3
/*
 
4
 * This file is part of The Croco Library
 
5
 *
 
6
 * This program is free software; you can redistribute it and/or
 
7
 * modify it under the terms of version 2.1 of the GNU Lesser General Public
 
8
 * License as published by the Free Software Foundation.
 
9
 *
 
10
 * This program is distributed in the hope that it will be useful,
 
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
13
 * GNU General Public License for more details.
 
14
 *
 
15
 * You should have received a copy of the GNU Lesser General Public License
 
16
 * along with this program; if not, write to the Free Software
 
17
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 
18
 * USA
 
19
 *
 
20
 * Author: Dodji Seketeli
 
21
 * See COPYRIGHTS file for copyright information.
 
22
 */
 
23
 
 
24
 
 
25
#ifndef __CR_SEL_H__
 
26
#define __CR_SEL_H__
 
27
 
 
28
#include <stdio.h>
 
29
#include <glib.h>
 
30
#include "cr-additional-sel.h"
 
31
#include "cr-parsing-location.h"
 
32
 
 
33
G_BEGIN_DECLS
 
34
 
 
35
/**
 
36
 *@file
 
37
 *the declaration of the #CRSimpleSel class.
 
38
 *
 
39
 */
 
40
enum Combinator
 
41
{
 
42
        NO_COMBINATOR,
 
43
        COMB_WS,/*whitesape*/
 
44
        COMB_PLUS,
 
45
        COMB_GT/*greater than*/
 
46
} ;
 
47
 
 
48
enum SimpleSelectorType
 
49
{
 
50
        NO_SELECTOR_TYPE = 0,
 
51
        UNIVERSAL_SELECTOR = 1,
 
52
        TYPE_SELECTOR = 1 << 1
 
53
} ;
 
54
 
 
55
typedef struct _CRSimpleSel CRSimpleSel ;
 
56
 
 
57
/**
 
58
 *The abstraction of a css2 simple selection list
 
59
 *as defined by the right part of the "selector" production in the 
 
60
 *appendix D.1 of the css2 spec.
 
61
 *It is basically a list of simple selector, each
 
62
 *simple selector being separated by a combinator.
 
63
 *
 
64
 *In the libcroco's implementation, each simple selector 
 
65
 *is made of at most two parts:
 
66
 *
 
67
 *1/An element name or 'type selector' (which can hold a '*' and
 
68
 *then been called 'universal selector')
 
69
 *
 
70
 *2/An additional selector that "specializes" the preceding type or
 
71
 *universal selector. The additionnal selector can be either
 
72
 *an id selector, or a class selector, or an attribute selector.
 
73
 */
 
74
struct _CRSimpleSel
 
75
{
 
76
        enum SimpleSelectorType type_mask ;
 
77
        gboolean is_case_sentive ;
 
78
        CRString * name ;
 
79
        /**
 
80
         *The combinator that separates
 
81
         *this simple selector from the previous
 
82
         *one.
 
83
         */
 
84
        enum Combinator combinator ;
 
85
 
 
86
        /**
 
87
         *The additional selector list of the
 
88
         *current simple selector.
 
89
         *An additional selector may
 
90
         *be a class selector, an id selector,
 
91
         *or an attribute selector.
 
92
         *Note that this field is a linked list.
 
93
         */
 
94
        CRAdditionalSel *add_sel ;
 
95
 
 
96
        /*
 
97
         *the specificity as specified by
 
98
         *chapter 6.4.3 of the spec.
 
99
         */
 
100
        gulong specificity ;
 
101
 
 
102
        CRSimpleSel *next ;
 
103
        CRSimpleSel *prev ;
 
104
        CRParsingLocation location ;
 
105
} ;
 
106
 
 
107
CRSimpleSel * cr_simple_sel_new (void) ;
 
108
 
 
109
CRSimpleSel * cr_simple_sel_append_simple_sel (CRSimpleSel *a_this, 
 
110
                                               CRSimpleSel *a_sel) ;
 
111
 
 
112
CRSimpleSel * cr_simple_sel_prepend_simple_sel (CRSimpleSel *a_this, 
 
113
                                                CRSimpleSel *a_sel) ;
 
114
 
 
115
guchar * cr_simple_sel_to_string (CRSimpleSel *a_this) ;
 
116
 
 
117
guchar * cr_simple_sel_one_to_string (CRSimpleSel * a_this) ;
 
118
 
 
119
enum CRStatus cr_simple_sel_dump (CRSimpleSel *a_this, FILE *a_fp) ;
 
120
 
 
121
enum CRStatus cr_simple_sel_dump_attr_sel_list (CRSimpleSel *a_this) ;
 
122
 
 
123
enum CRStatus cr_simple_sel_compute_specificity (CRSimpleSel *a_this) ;
 
124
 
 
125
void cr_simple_sel_destroy (CRSimpleSel *a_this) ;
 
126
 
 
127
G_END_DECLS
 
128
 
 
129
 
 
130
#endif /*__CR_SIMPLE_SEL_H__*/