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