00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _KJS_CSS_H_
00024 #define _KJS_CSS_H_
00025
00026 #include <dom/dom_node.h>
00027 #include <dom/dom_doc.h>
00028 #include <kjs/object.h>
00029 #include <dom/css_value.h>
00030 #include <dom/css_stylesheet.h>
00031 #include <dom/css_rule.h>
00032 #include "kjs_binding.h"
00033
00034 namespace KJS {
00035
00036 class DOMCSSStyleDeclaration : public DOMObject {
00037 public:
00038 DOMCSSStyleDeclaration(ExecState *exec, const DOM::CSSStyleDeclaration& s);
00039 virtual ~DOMCSSStyleDeclaration();
00040 virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
00041 virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
00042 virtual bool hasProperty(ExecState *exec, const Identifier &propertyName) const;
00043 virtual const ClassInfo *classInfo() const { return &info; }
00044 static const ClassInfo info;
00045 enum { CssText, Length, ParentRule,
00046 GetPropertyValue, GetPropertyCSSValue, RemoveProperty, GetPropertyPriority,
00047 SetProperty, Item };
00048 DOM::CSSStyleDeclaration toStyleDecl() const { return styleDecl; }
00049 protected:
00050 DOM::CSSStyleDeclaration styleDecl;
00051 };
00052
00053 Value getDOMCSSStyleDeclaration(ExecState *exec, const DOM::CSSStyleDeclaration& n);
00054
00055 class DOMStyleSheet : public DOMObject {
00056 public:
00057
00058 DOMStyleSheet(ExecState *, const DOM::StyleSheet& ss);
00059
00060 DOMStyleSheet(const Object& proto, const DOM::StyleSheet& ss) : DOMObject(proto), styleSheet(ss) { }
00061 virtual ~DOMStyleSheet();
00062 virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
00063 Value getValueProperty(ExecState *exec, int token) const;
00064 virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
00065 virtual bool toBoolean(ExecState *) const { return true; }
00066 virtual const ClassInfo* classInfo() const { return &info; }
00067 static const ClassInfo info;
00068 enum { Type, Disabled, OwnerNode, ParentStyleSheet, Href, Title, Media };
00069 protected:
00070 DOM::StyleSheet styleSheet;
00071 };
00072
00073 Value getDOMStyleSheet(ExecState *exec, const DOM::StyleSheet& ss);
00074
00075 class DOMStyleSheetList : public DOMObject {
00076 public:
00077 DOMStyleSheetList(ExecState *, const DOM::StyleSheetList& ssl, const DOM::Document& doc);
00078 virtual ~DOMStyleSheetList();
00079 virtual Value tryGet(ExecState *exec,const Identifier &propertyName) const;
00080 virtual Value call(ExecState *exec, Object &thisObj, const List &args);
00081 Value tryCall(ExecState *exec, Object &thisObj, const List &args);
00082 virtual bool implementsCall() const { return true; }
00083
00084 virtual const ClassInfo* classInfo() const { return &info; }
00085 virtual bool toBoolean(ExecState* ) const { return true; }
00086 static const ClassInfo info;
00087 DOM::StyleSheetList toStyleSheetList() const { return styleSheetList; }
00088 enum { Item, Length };
00089 private:
00090 DOM::StyleSheetList styleSheetList;
00091 DOM::Document m_doc;
00092 };
00093
00094
00095 Value getDOMStyleSheetList(ExecState *exec, const DOM::StyleSheetList& ss, const DOM::Document& doc);
00096
00097 class DOMMediaList : public DOMObject {
00098 public:
00099 DOMMediaList(ExecState *, const DOM::MediaList& ml);
00100 virtual ~DOMMediaList();
00101 virtual Value tryGet(ExecState *exec,const Identifier &propertyName) const;
00102 virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
00103 virtual const ClassInfo* classInfo() const { return &info; }
00104 virtual bool toBoolean(ExecState* ) const { return true; }
00105 static const ClassInfo info;
00106 enum { MediaText, Length,
00107 Item, DeleteMedium, AppendMedium };
00108 DOM::MediaList toMediaList() const { return mediaList; }
00109 private:
00110 DOM::MediaList mediaList;
00111 };
00112
00113 Value getDOMMediaList(ExecState *exec, const DOM::MediaList& ss);
00114
00115 class DOMCSSStyleSheet : public DOMStyleSheet {
00116 public:
00117 DOMCSSStyleSheet(ExecState *exec, const DOM::CSSStyleSheet& ss);
00118 virtual ~DOMCSSStyleSheet();
00119 virtual Value tryGet(ExecState *exec,const Identifier &propertyName) const;
00120
00121 virtual const ClassInfo* classInfo() const { return &info; }
00122 static const ClassInfo info;
00123 enum { OwnerRule, CssRules, Rules,
00124 InsertRule, DeleteRule, AddRule, RemoveRule };
00125 DOM::CSSStyleSheet toCSSStyleSheet() const { return static_cast<DOM::CSSStyleSheet>(styleSheet); }
00126 };
00127
00128 class DOMCSSRuleList : public DOMObject {
00129 public:
00130 DOMCSSRuleList(ExecState *, const DOM::CSSRuleList& rl);
00131 virtual ~DOMCSSRuleList();
00132 virtual Value tryGet(ExecState *exec,const Identifier &propertyName) const;
00133
00134 virtual const ClassInfo* classInfo() const { return &info; }
00135 static const ClassInfo info;
00136 enum { Item, Length };
00137 DOM::CSSRuleList toCSSRuleList() const { return cssRuleList; }
00138 protected:
00139 DOM::CSSRuleList cssRuleList;
00140 };
00141
00142 Value getDOMCSSRuleList(ExecState *exec, const DOM::CSSRuleList& rl);
00143
00144 class DOMCSSRule : public DOMObject {
00145 public:
00146 DOMCSSRule(ExecState *, const DOM::CSSRule& r);
00147 virtual ~DOMCSSRule();
00148 virtual Value tryGet(ExecState *exec,const Identifier &propertyName) const;
00149 Value getValueProperty(ExecState *exec, int token) const;
00150 virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
00151 void putValueProperty(ExecState *exec, int token, const Value& value, int attr);
00152 virtual const ClassInfo* classInfo() const;
00153 static const ClassInfo info;
00154 static const ClassInfo style_info, media_info, fontface_info, page_info, import_info, charset_info;
00155 enum { ParentStyleSheet, Type, CssText, ParentRule,
00156 Style_SelectorText, Style_Style,
00157 Media_Media, Media_InsertRule, Media_DeleteRule, Media_CssRules,
00158 FontFace_Style, Page_SelectorText, Page_Style,
00159 Import_Href, Import_Media, Import_StyleSheet, Charset_Encoding };
00160 DOM::CSSRule toCSSRule() const { return cssRule; }
00161 protected:
00162 DOM::CSSRule cssRule;
00163 };
00164
00165 Value getDOMCSSRule(ExecState *exec, const DOM::CSSRule& r);
00166
00170 DOM::CSSRule toCSSRule(const Value&);
00171
00172
00173 class CSSRuleConstructor : public DOMObject {
00174 public:
00175 CSSRuleConstructor(ExecState *);
00176 virtual Value tryGet(ExecState *exec,const Identifier &propertyName) const;
00177 Value getValueProperty(ExecState *exec, int token) const;
00178
00179 virtual const ClassInfo* classInfo() const { return &info; }
00180 static const ClassInfo info;
00181 enum { UNKNOWN_RULE, STYLE_RULE, CHARSET_RULE, IMPORT_RULE, MEDIA_RULE, FONT_FACE_RULE, PAGE_RULE };
00182 };
00183
00184 Value getCSSRuleConstructor(ExecState *exec);
00185
00186 class DOMCSSValue : public DOMObject {
00187 public:
00188 DOMCSSValue(ExecState *, const DOM::CSSValue& v);
00189 DOMCSSValue(const Object& proto, const DOM::CSSValue& v) : DOMObject(proto), cssValue(v) { }
00190 virtual ~DOMCSSValue();
00191 virtual Value tryGet(ExecState *exec,const Identifier &propertyName) const;
00192 virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
00193 virtual const ClassInfo* classInfo() const { return &info; }
00194 static const ClassInfo info;
00195 enum { CssText, CssValueType };
00196 protected:
00197 DOM::CSSValue cssValue;
00198 };
00199
00200 Value getDOMCSSValue(ExecState *exec, const DOM::CSSValue& v);
00201
00202
00203 class CSSValueConstructor : public DOMObject {
00204 public:
00205 CSSValueConstructor(ExecState *exec);
00206 virtual Value tryGet(ExecState *exec,const Identifier &propertyName) const;
00207 Value getValueProperty(ExecState *exec, int token) const;
00208
00209 virtual const ClassInfo* classInfo() const { return &info; }
00210 static const ClassInfo info;
00211 enum { CSS_VALUE_LIST, CSS_PRIMITIVE_VALUE, CSS_CUSTOM, CSS_INHERIT };
00212 };
00213
00214 Value getCSSValueConstructor(ExecState *exec);
00215
00216 class DOMCSSPrimitiveValue : public DOMCSSValue {
00217 public:
00218 DOMCSSPrimitiveValue(ExecState *exec, const DOM::CSSPrimitiveValue& v);
00219 virtual Value tryGet(ExecState *exec,const Identifier &propertyName) const;
00220
00221 virtual const ClassInfo* classInfo() const { return &info; }
00222 static const ClassInfo info;
00223 DOM::CSSPrimitiveValue toCSSPrimitiveValue() const { return static_cast<DOM::CSSPrimitiveValue>(cssValue); }
00224 enum { PrimitiveType, SetFloatValue, GetFloatValue, SetStringValue, GetStringValue,
00225 GetCounterValue, GetRectValue, GetRGBColorValue };
00226 };
00227
00228
00229 class CSSPrimitiveValueConstructor : public CSSValueConstructor {
00230 public:
00231 CSSPrimitiveValueConstructor(ExecState *exec) : CSSValueConstructor(exec) { }
00232 virtual Value tryGet(ExecState *exec,const Identifier &propertyName) const;
00233 Value getValueProperty(ExecState *exec, int token) const;
00234
00235 virtual const ClassInfo* classInfo() const { return &info; }
00236 static const ClassInfo info;
00237 };
00238
00239 Value getCSSPrimitiveValueConstructor(ExecState *exec);
00240
00241 class DOMCSSValueList : public DOMCSSValue {
00242 public:
00243 DOMCSSValueList(ExecState *exec, const DOM::CSSValueList& v);
00244 virtual Value tryGet(ExecState *exec,const Identifier &propertyName) const;
00245
00246 virtual const ClassInfo* classInfo() const { return &info; }
00247 static const ClassInfo info;
00248 enum { Item, Length };
00249 DOM::CSSValueList toValueList() const { return static_cast<DOM::CSSValueList>(cssValue); }
00250 };
00251
00252 class DOMRGBColor : public DOMObject {
00253 public:
00254 DOMRGBColor(ExecState*, const DOM::RGBColor& c);
00255 ~DOMRGBColor();
00256 virtual Value tryGet(ExecState *exec,const Identifier &propertyName) const;
00257 Value getValueProperty(ExecState *exec, int token) const;
00258
00259 virtual const ClassInfo* classInfo() const { return &info; }
00260 static const ClassInfo info;
00261 enum { Red, Green, Blue };
00262 protected:
00263 DOM::RGBColor rgbColor;
00264 };
00265
00266 Value getDOMRGBColor(ExecState *exec, const DOM::RGBColor& c);
00267
00268 class DOMRect : public DOMObject {
00269 public:
00270 DOMRect(ExecState *, const DOM::Rect& r);
00271 ~DOMRect();
00272 virtual Value tryGet(ExecState *exec,const Identifier &propertyName) const;
00273 Value getValueProperty(ExecState *exec, int token) const;
00274
00275 virtual const ClassInfo* classInfo() const { return &info; }
00276 static const ClassInfo info;
00277 enum { Top, Right, Bottom, Left };
00278 protected:
00279 DOM::Rect rect;
00280 };
00281
00282 Value getDOMRect(ExecState *exec, const DOM::Rect& r);
00283
00284 class DOMCounter : public DOMObject {
00285 public:
00286 DOMCounter(ExecState *, const DOM::Counter& c);
00287 ~DOMCounter();
00288 virtual Value tryGet(ExecState *exec,const Identifier &propertyName) const;
00289 Value getValueProperty(ExecState *exec, int token) const;
00290
00291 virtual const ClassInfo* classInfo() const { return &info; }
00292 static const ClassInfo info;
00293 enum { identifier, listStyle, separator };
00294 protected:
00295 DOM::Counter counter;
00296 };
00297
00298 Value getDOMCounter(ExecState *exec, const DOM::Counter& c);
00299
00300 }
00301
00302 #endif