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