Bug #: 4154
[WebKit-https.git] / SVGSupport / kdom / css / StyleSheet.cpp
1 /*
2     Copyright (C) 2004 Nikolas Zimmermann <wildfox@kde.org>
3                                   2004 Rob Buis <buis@kde.org>
4
5     This file is part of the KDE project
6
7     This library is free software; you can redistribute it and/or
8     modify it under the terms of the GNU Library General Public
9     License as published by the Free Software Foundation; either
10     version 2 of the License, or (at your option) any later version.
11
12     This library is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15     Library General Public License for more details.
16
17     You should have received a copy of the GNU Library General Public License
18     along with this library; see the file COPYING.LIB.  If not, write to
19     the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20     Boston, MA 02111-1307, USA.
21 */
22
23 #include "Node.h"
24 #include "Ecma.h"
25 #include "MediaList.h"
26 #include "StyleSheet.h"
27 #include "StyleSheetImpl.h"
28
29 #include "kdom/data/CSSConstants.h"
30 #include "StyleSheet.lut.h"
31 using namespace KDOM;
32 using namespace KJS;
33
34 /*
35 @begin StyleSheet::s_hashTable 9
36  type                           StyleSheetConstants::Type                               DontDelete|ReadOnly
37  disabled                       StyleSheetConstants::Disabled                   DontDelete
38  ownerNode                      StyleSheetConstants::OwnerNode                  DontDelete|ReadOnly
39  parentStyleSheet       StyleSheetConstants::ParentStyleSheet   DontDelete|ReadOnly
40  href                           StyleSheetConstants::Href                               DontDelete|ReadOnly
41  title                          StyleSheetConstants::Title                              DontDelete|ReadOnly
42  media                          StyleSheetConstants::Media                              DontDelete|ReadOnly
43 @end
44 */
45
46 Value StyleSheet::getValueProperty(ExecState *exec, int token) const
47 {
48         switch(token)
49         {
50                 case StyleSheetConstants::Type:
51                         return getDOMString(type());
52                 case StyleSheetConstants::Disabled:
53                         return KJS::Boolean(disabled());
54                 case StyleSheetConstants::OwnerNode:
55                         return getDOMNode(exec, ownerNode());
56                 case StyleSheetConstants::ParentStyleSheet:
57                         return safe_cache<StyleSheet>(exec, parentStyleSheet());
58                 case StyleSheetConstants::Href:
59                         return getDOMString(href());
60                 case StyleSheetConstants::Title:
61                         return getDOMString(title());
62                 case StyleSheetConstants::Media:
63                         return safe_cache<MediaList>(exec, media());
64                 default:
65                         kdWarning() << "Unhandled token in " << k_funcinfo << " : " << token << endl;
66         }
67
68         return Undefined();
69 };
70
71 void StyleSheet::putValueProperty(ExecState *exec, int token, const Value &value, int)
72 {
73         switch(token)
74         {
75                 case StyleSheetConstants::Disabled:
76                         setDisabled(value.toBoolean(exec));
77                         break;
78                 default:
79                         kdWarning() << "Unhandled token in " << k_funcinfo << " : " << token << endl;
80         }
81 }
82
83 StyleSheet StyleSheet::null;
84
85 StyleSheet::StyleSheet() : d(0)
86 {
87 }
88
89 StyleSheet::StyleSheet(StyleSheetImpl *i) : d(i)
90 {
91         if(d)
92                 d->ref();
93 }
94
95 StyleSheet::StyleSheet(const StyleSheet &other) : d(0)
96 {
97         (*this) = other;
98 }
99
100 KDOM_IMPL_DTOR_ASSIGN_OP(StyleSheet)
101
102 DOMString StyleSheet::type() const
103 {
104         return DOMString();
105 }
106
107 void StyleSheet::setDisabled(bool disabled)
108 {
109         if(d)
110                 d->setDisabled(disabled);
111 }
112
113 bool StyleSheet::disabled() const
114 {
115         if(!d)
116                 return false;
117
118         return d->disabled();
119 }
120
121 Node StyleSheet::ownerNode() const
122 {
123         if(!d)
124                 return Node::null;
125
126         return d->ownerNode();
127 }
128
129 StyleSheet StyleSheet::parentStyleSheet() const
130 {
131         if(!d)
132                 return StyleSheet::null;
133
134         return StyleSheet(d->parentStyleSheet());
135 }
136
137 DOMString StyleSheet::href() const
138 {
139         if(!d)
140                 return DOMString();
141
142         return d->href();
143 }
144
145 DOMString StyleSheet::title() const
146 {
147         if(!d)
148                 return DOMString();
149         
150         return d->title();
151 }
152
153 MediaList StyleSheet::media() const
154 {
155         if(!d)
156                 return MediaList::null;
157
158         return MediaList(d->media());
159 }
160
161 bool StyleSheet::isCSSStyleSheet() const
162 {
163         if(!d)
164                 return false;
165
166         return d->isCSSStyleSheet();
167 }
168
169 // vim:ts=4:noet