Bug #: 4154
[WebKit-https.git] / SVGSupport / kdom / css / CSSValue.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 "Ecma.h"
24 #include "CSSValue.h"
25 #include "CSSValueImpl.h"
26 #include "DOMException.h"
27 #include "DOMExceptionImpl.h"
28
29 #include "kdom/data/CSSConstants.h"
30 #include "CSSValue.lut.h"
31 using namespace KDOM;
32 using namespace KJS;
33
34 /*
35 @begin CSSValue::s_hashTable 3
36  cssText        CSSValueConstants::CssText              DontDelete|ReadOnly
37  cssValueType   CSSValueConstants::CssValueType         DontDelete|ReadOnly
38 @end
39 */
40
41 Value CSSValue::getValueProperty(ExecState *, int token) const
42 {
43         switch(token)
44         {
45                 case CSSValueConstants::CssText:
46                         return getDOMString(cssText());
47                 case CSSValueConstants::CssValueType:
48                         return Number(cssValueType());
49                 default:
50                         kdWarning() << "Unhandled token in " << k_funcinfo << " : " << token << endl;
51         }
52
53         return Undefined();
54 }
55
56 void CSSValue::putValueProperty(ExecState *exec, int token, const Value &value, int)
57 {
58         KDOM_ENTER_SAFE
59
60         switch(token)
61         {
62                 case CSSValueConstants::CssText:
63                         setCssText(toDOMString(exec, value));
64                         break;
65                 default:
66                         kdWarning() << "Unhandled token in " << k_funcinfo << " : " << token << endl;
67         }
68
69         KDOM_LEAVE_SAFE(DOMException)
70 }
71
72 CSSValue CSSValue::null;
73
74 CSSValue::CSSValue() : d(0)
75 {
76 }
77
78 CSSValue::CSSValue(CSSValueImpl *i) : d(i)
79 {
80         if(d)
81                 d->ref();
82 }
83
84 CSSValue::CSSValue(const CSSValue &other) : d(0)
85 {
86         (*this) = other;
87 }
88
89 KDOM_IMPL_DTOR_ASSIGN_OP(CSSValue)
90
91 void CSSValue::setCssText(const DOMString &cssText)
92 {
93         if(d)
94                 d->setCssText(cssText);
95 }
96
97 DOMString CSSValue::cssText() const
98 {
99         if(!d)
100                 return DOMString();
101
102         return d->cssText();
103 }
104
105 unsigned short CSSValue::cssValueType() const
106 {
107         if(!d)
108                 return CSS_CUSTOM;
109
110         return d->cssValueType();
111 }
112
113 bool CSSValue::isCSSValueList() const
114 {
115         if(!d)
116                 return false;
117                 
118         return d->isValueList();
119 }
120
121 bool CSSValue::isCSSPrimitiveValue() const
122 {
123         if(!d)
124                 return false;
125                 
126         return d->isPrimitiveValue();
127 }
128
129 // vim:ts=4:noet