📄 kjs_css.cpp
字号:
Value CSSRuleConstructor::tryGet(ExecState *exec, const Identifier &p) const{ return DOMObjectLookupGetValue<CSSRuleConstructor,DOMObject>(exec,p,&CSSRuleConstructorTable,this);}Value CSSRuleConstructor::getValueProperty(ExecState *, int token) const{ switch (token) { case UNKNOWN_RULE: return Number(DOM::CSSRule::UNKNOWN_RULE); case STYLE_RULE: return Number(DOM::CSSRule::STYLE_RULE); case CHARSET_RULE: return Number(DOM::CSSRule::CHARSET_RULE); case IMPORT_RULE: return Number(DOM::CSSRule::IMPORT_RULE); case MEDIA_RULE: return Number(DOM::CSSRule::MEDIA_RULE); case FONT_FACE_RULE: return Number(DOM::CSSRule::FONT_FACE_RULE); case PAGE_RULE: return Number(DOM::CSSRule::PAGE_RULE); } return Value();}Value KJS::getCSSRuleConstructor(ExecState *exec){ return cacheGlobalObject<CSSRuleConstructor>( exec, "[[cssRule.constructor]]" );}// -------------------------------------------------------------------------const ClassInfo DOMCSSValue::info = { "CSSValue", 0, &DOMCSSValueTable, 0 };/*@begin DOMCSSValueTable 2 cssText DOMCSSValue::CssText DontDelete|ReadOnly cssValueType DOMCSSValue::CssValueType DontDelete|ReadOnly@end*/DOMCSSValue::DOMCSSValue(ExecState* exec, const DOM::CSSValue& val) : DOMObject(exec->interpreter()->builtinObjectPrototype()), cssValue(val){}DOMCSSValue::~DOMCSSValue(){ ScriptInterpreter::forgetDOMObject(cssValue.handle());}Value DOMCSSValue::tryGet(ExecState *exec, const Identifier &p) const{ if (p == "cssText") return String(cssValue.cssText()); else if (p == "cssValueType") return Number(cssValue.cssValueType()); return DOMObject::tryGet(exec,p);}void DOMCSSValue::tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr){ if (propertyName == "cssText") cssValue.setCssText(value.toString(exec).string()); else DOMObject::tryPut(exec, propertyName, value, attr);}Value KJS::getDOMCSSValue(ExecState *exec, const DOM::CSSValue& v){ DOMObject *ret; if (v.isNull()) return Null(); ScriptInterpreter* interp = static_cast<ScriptInterpreter *>(exec->interpreter()); if ((ret = interp->getDOMObject(v.handle()))) return Value(ret); else { if (v.isCSSValueList()) ret = new DOMCSSValueList(exec,v); else if (v.isCSSPrimitiveValue()) ret = new DOMCSSPrimitiveValue(exec,v); else ret = new DOMCSSValue(exec,v); interp->putDOMObject(v.handle(),ret); return Value(ret); }}// -------------------------------------------------------------------------const ClassInfo CSSValueConstructor::info = { "CSSValueConstructor", 0, &CSSValueConstructorTable, 0 };/*@begin CSSValueConstructorTable 5 CSS_INHERIT CSSValueConstructor::CSS_INHERIT DontDelete|ReadOnly CSS_PRIMITIVE_VALUE CSSValueConstructor::CSS_PRIMITIVE_VALUE DontDelete|ReadOnly CSS_VALUE_LIST CSSValueConstructor::CSS_VALUE_LIST DontDelete|ReadOnly CSS_CUSTOM CSSValueConstructor::CSS_CUSTOM DontDelete|ReadOnly@end*/CSSValueConstructor::CSSValueConstructor(ExecState *exec) : DOMObject(exec->interpreter()->builtinObjectPrototype()){}Value CSSValueConstructor::tryGet(ExecState *exec, const Identifier &p) const{ return DOMObjectLookupGetValue<CSSValueConstructor,DOMObject>(exec,p,&CSSValueConstructorTable,this);}Value CSSValueConstructor::getValueProperty(ExecState *, int token) const{ switch (token) { case CSS_INHERIT: return Number(DOM::CSSValue::CSS_INHERIT); case CSS_PRIMITIVE_VALUE: return Number(DOM::CSSValue::CSS_PRIMITIVE_VALUE); case CSS_VALUE_LIST: return Number(DOM::CSSValue::CSS_VALUE_LIST); case CSS_CUSTOM: return Number(DOM::CSSValue::CSS_CUSTOM); } return Value();}Value KJS::getCSSValueConstructor(ExecState *exec){ return cacheGlobalObject<CSSValueConstructor>( exec, "[[cssValue.constructor]]" );}// -------------------------------------------------------------------------const ClassInfo DOMCSSPrimitiveValue::info = { "CSSPrimitiveValue", 0, &DOMCSSPrimitiveValueTable, 0 };/*@begin DOMCSSPrimitiveValueTable 1 primitiveType DOMCSSPrimitiveValue::PrimitiveType DontDelete|ReadOnly@end@begin DOMCSSPrimitiveValueProtoTable 3 setFloatValue DOMCSSPrimitiveValue::SetFloatValue DontDelete|Function 2 getFloatValue DOMCSSPrimitiveValue::GetFloatValue DontDelete|Function 1 setStringValue DOMCSSPrimitiveValue::SetStringValue DontDelete|Function 2 getStringValue DOMCSSPrimitiveValue::GetStringValue DontDelete|Function 0 getCounterValue DOMCSSPrimitiveValue::GetCounterValue DontDelete|Function 0 getRectValue DOMCSSPrimitiveValue::GetRectValue DontDelete|Function 0 getRGBColorValue DOMCSSPrimitiveValue::GetRGBColorValue DontDelete|Function 0@end*/DEFINE_PROTOTYPE("DOMCSSPrimitiveValue",DOMCSSPrimitiveValueProto)IMPLEMENT_PROTOFUNC_DOM(DOMCSSPrimitiveValueProtoFunc)IMPLEMENT_PROTOTYPE(DOMCSSPrimitiveValueProto,DOMCSSPrimitiveValueProtoFunc)DOMCSSPrimitiveValue::DOMCSSPrimitiveValue(ExecState *exec, const DOM::CSSPrimitiveValue& v) : DOMCSSValue(DOMCSSPrimitiveValueProto::self(exec), v) { }Value DOMCSSPrimitiveValue::tryGet(ExecState *exec, const Identifier &p) const{ if (p=="primitiveType") return Number(static_cast<DOM::CSSPrimitiveValue>(cssValue).primitiveType()); return DOMObject::tryGet(exec,p);}Value DOMCSSPrimitiveValueProtoFunc::tryCall(ExecState *exec, Object &thisObj, const List &args){ KJS_CHECK_THIS( KJS::DOMCSSPrimitiveValue, thisObj ); DOM::CSSPrimitiveValue val = static_cast<DOMCSSPrimitiveValue *>(thisObj.imp())->toCSSPrimitiveValue(); switch (id) { case DOMCSSPrimitiveValue::SetFloatValue: val.setFloatValue(args[0].toInteger(exec),args[1].toNumber(exec)); return Undefined(); case DOMCSSPrimitiveValue::GetFloatValue: return Number(val.getFloatValue(args[0].toInteger(exec))); case DOMCSSPrimitiveValue::SetStringValue: val.setStringValue(args[0].toInteger(exec),args[1].toString(exec).string()); return Undefined(); case DOMCSSPrimitiveValue::GetStringValue: return String(val.getStringValue()); case DOMCSSPrimitiveValue::GetCounterValue: return getDOMCounter(exec,val.getCounterValue()); case DOMCSSPrimitiveValue::GetRectValue: return getDOMRect(exec,val.getRectValue()); case DOMCSSPrimitiveValue::GetRGBColorValue: return getDOMRGBColor(exec,val.getRGBColorValue()); default: return Undefined(); }}// -------------------------------------------------------------------------const ClassInfo CSSPrimitiveValueConstructor::info = { "CSSPrimitiveValueConstructor", 0, &CSSPrimitiveValueConstructorTable, 0 };/*@begin CSSPrimitiveValueConstructorTable 27 CSS_UNKNOWN DOM::CSSPrimitiveValue::CSS_UNKNOWN DontDelete|ReadOnly CSS_NUMBER DOM::CSSPrimitiveValue::CSS_NUMBER DontDelete|ReadOnly CSS_PERCENTAGE DOM::CSSPrimitiveValue::CSS_PERCENTAGE DontDelete|ReadOnly CSS_EMS DOM::CSSPrimitiveValue::CSS_EMS DontDelete|ReadOnly CSS_EXS DOM::CSSPrimitiveValue::CSS_EXS DontDelete|ReadOnly CSS_PX DOM::CSSPrimitiveValue::CSS_PX DontDelete|ReadOnly CSS_CM DOM::CSSPrimitiveValue::CSS_CM DontDelete|ReadOnly CSS_MM DOM::CSSPrimitiveValue::CSS_MM DontDelete|ReadOnly CSS_IN DOM::CSSPrimitiveValue::CSS_IN DontDelete|ReadOnly CSS_PT DOM::CSSPrimitiveValue::CSS_PT DontDelete|ReadOnly CSS_PC DOM::CSSPrimitiveValue::CSS_PC DontDelete|ReadOnly CSS_DEG DOM::CSSPrimitiveValue::CSS_DEG DontDelete|ReadOnly CSS_RAD DOM::CSSPrimitiveValue::CSS_RAD DontDelete|ReadOnly CSS_GRAD DOM::CSSPrimitiveValue::CSS_GRAD DontDelete|ReadOnly CSS_MS DOM::CSSPrimitiveValue::CSS_MS DontDelete|ReadOnly CSS_S DOM::CSSPrimitiveValue::CSS_S DontDelete|ReadOnly CSS_HZ DOM::CSSPrimitiveValue::CSS_HZ DontDelete|ReadOnly CSS_KHZ DOM::CSSPrimitiveValue::CSS_KHZ DontDelete|ReadOnly CSS_DIMENSION DOM::CSSPrimitiveValue::CSS_DIMENSION DontDelete|ReadOnly CSS_STRING DOM::CSSPrimitiveValue::CSS_STRING DontDelete|ReadOnly CSS_URI DOM::CSSPrimitiveValue::CSS_URI DontDelete|ReadOnly CSS_IDENT DOM::CSSPrimitiveValue::CSS_IDENT DontDelete|ReadOnly CSS_ATTR DOM::CSSPrimitiveValue::CSS_ATTR DontDelete|ReadOnly CSS_COUNTER DOM::CSSPrimitiveValue::CSS_COUNTER DontDelete|ReadOnly CSS_RECT DOM::CSSPrimitiveValue::CSS_RECT DontDelete|ReadOnly CSS_RGBCOLOR DOM::CSSPrimitiveValue::CSS_RGBCOLOR DontDelete|ReadOnly@end*/Value CSSPrimitiveValueConstructor::tryGet(ExecState *exec, const Identifier &p) const{ return DOMObjectLookupGetValue<CSSPrimitiveValueConstructor,CSSValueConstructor>(exec,p,&CSSPrimitiveValueConstructorTable,this);}Value CSSPrimitiveValueConstructor::getValueProperty(ExecState *, int token) const{ // We use the token as the value to return directly return Number(token);}Value KJS::getCSSPrimitiveValueConstructor(ExecState *exec){ return cacheGlobalObject<CSSPrimitiveValueConstructor>( exec, "[[cssPrimitiveValue.constructor]]" );}// -------------------------------------------------------------------------const ClassInfo DOMCSSValueList::info = { "CSSValueList", 0, &DOMCSSValueListTable, 0 };/*@begin DOMCSSValueListTable 3 length DOMCSSValueList::Length DontDelete|ReadOnly item DOMCSSValueList::Item DontDelete|Function 1@end*/IMPLEMENT_PROTOFUNC_DOM(DOMCSSValueListFunc) // not really a proto, but doesn't matterDOMCSSValueList::DOMCSSValueList(ExecState *exec, const DOM::CSSValueList& v) : DOMCSSValue(exec, v) { }Value DOMCSSValueList::tryGet(ExecState *exec, const Identifier &p) const{ Value result; DOM::CSSValueList valueList = static_cast<DOM::CSSValueList>(cssValue); if (p == lengthPropertyName) return Number(valueList.length()); else if (p == "item") return lookupOrCreateFunction<DOMCSSValueListFunc>(exec,p,this,DOMCSSValueList::Item,1,DontDelete|Function); bool ok; long unsigned int u = p.toULong(&ok); if (ok) return getDOMCSSValue(exec,valueList.item(u)); return DOMCSSValue::tryGet(exec,p);}Value DOMCSSValueListFunc::tryCall(ExecState *exec, Object &thisObj, const List &args){ KJS_CHECK_THIS( KJS::DOMCSSValueList, thisObj ); DOM::CSSValueList valueList = static_cast<DOMCSSValueList *>(thisObj.imp())->toValueList(); switch (id) { case DOMCSSValueList::Item: return getDOMCSSValue(exec,valueList.item(args[0].toInteger(exec))); default: return Undefined(); }}// -------------------------------------------------------------------------const ClassInfo DOMRGBColor::info = { "RGBColor", 0, &DOMRGBColorTable, 0 };/*@begin DOMRGBColorTable 3 red DOMRGBColor::Red DontDelete|ReadOnly green DOMRGBColor::Green DontDelete|ReadOnly blue DOMRGBColor::Blue DontDelete|ReadOnly@end*/DOMRGBColor::DOMRGBColor(ExecState* exec, const DOM::RGBColor& c) : DOMObject(exec->interpreter()->builtinObjectPrototype()), rgbColor(c){}DOMRGBColor::~DOMRGBColor(){ //rgbColors.remove(rgbColor.handle());}Value DOMRGBColor::tryGet(ExecState *exec, const Identifier &p) const{ return DOMObjectLookupGetValue<DOMRGBColor,DOMObject>(exec, p, &DOMRGBColorTable, this);}Value DOMRGBColor::getValueProperty(ExecState *exec, int token) const{ switch (token) { case Red: return getDOMCSSValue(exec, rgbColor.red()); case Green: return getDOMCSSValue(exec, rgbColor.green()); case Blue: return getDOMCSSValue(exec, rgbColor.blue()); default: return Value(); }}Value KJS::getDOMRGBColor(ExecState *exec, const DOM::RGBColor& c){ // ### implement equals for RGBColor since they're not refcounted objects return Value(new DOMRGBColor(exec, c));}// -------------------------------------------------------------------------const ClassInfo DOMRect::info = { "Rect", 0, &DOMRectTable, 0 };/*@begin DOMRectTable 4 top DOMRect::Top DontDelete|ReadOnly right DOMRect::Right DontDelete|ReadOnly bottom DOMRect::Bottom DontDelete|ReadOnly left DOMRect::Left DontDelete|ReadOnly@end*/DOMRect::DOMRect(ExecState *exec, const DOM::Rect& r) : DOMObject(exec->interpreter()->builtinObjectPrototype()), rect(r){}DOMRect::~DOMRect(){ ScriptInterpreter::forgetDOMObject(rect.handle());}Value DOMRect::tryGet(ExecState *exec, const Identifier &p) const{ return DOMObjectLookupGetValue<DOMRect,DOMObject>(exec, p, &DOMRectTable, this);}Value DOMRect::getValueProperty(ExecState *exec, int token) const{ switch (token) { case Top: return getDOMCSSValue(exec, rect.top()); case Right: return getDOMCSSValue(exec, rect.right()); case Bottom: return getDOMCSSValue(exec, rect.bottom()); case Left: return getDOMCSSValue(exec, rect.left()); default: return Value(); }}Value KJS::getDOMRect(ExecState *exec, const DOM::Rect& r){ return cacheDOMObject<DOM::Rect, KJS::DOMRect>(exec, r);}// -------------------------------------------------------------------------const ClassInfo DOMCounter::info = { "Counter", 0, &DOMCounterTable, 0 };/*@begin DOMCounterTable 3 identifier DOMCounter::identifier DontDelete|ReadOnly listStyle DOMCounter::listStyle DontDelete|ReadOnly separator DOMCounter::separator DontDelete|ReadOnly@end*/DOMCounter::DOMCounter(ExecState *exec, const DOM::Counter& c) : DOMObject(exec->interpreter()->builtinObjectPrototype()), counter(c){}DOMCounter::~DOMCounter(){ ScriptInterpreter::forgetDOMObject(counter.handle());}Value DOMCounter::tryGet(ExecState *exec, const Identifier &p) const{ return DOMObjectLookupGetValue<DOMCounter,DOMObject>(exec, p, &DOMCounterTable, this);}Value DOMCounter::getValueProperty(ExecState *, int token) const{ switch (token) { case identifier: return String(counter.identifier()); case listStyle: return String(counter.listStyle()); case separator: return String(counter.separator()); default: return Value(); }}Value KJS::getDOMCounter(ExecState *exec, const DOM::Counter& c){ return cacheDOMObject<DOM::Counter, KJS::DOMCounter>(exec, c);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -