kjs_views.cpp
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 #include "ecma/kjs_views.h"
00022 #include "ecma/kjs_css.h"
00023 #include "kjs_views.lut.h"
00024 
00025 using namespace KJS;
00026 
00027 
00028 
00029 const ClassInfo DOMAbstractView::info = { "AbstractView", 0, &DOMAbstractViewTable, 0 };
00030 
00031 
00032 
00033 
00034 
00035 
00036 IMPLEMENT_PROTOFUNC_DOM(DOMAbstractViewFunc)
00037 
00038 DOMAbstractView::DOMAbstractView(ExecState *exec, DOM::AbstractView av)
00039   : DOMObject(exec->interpreter()->builtinObjectPrototype()), abstractView(av) {}
00040 
00041 DOMAbstractView::~DOMAbstractView()
00042 {
00043   ScriptInterpreter::forgetDOMObject(abstractView.handle());
00044 }
00045 
00046 Value DOMAbstractView::tryGet(ExecState *exec, const Identifier &p) const
00047 {
00048   if ( p == "document" )
00049     return getDOMNode(exec,abstractView.document());
00050   else if ( p == "getComputedStyle" )
00051     return lookupOrCreateFunction<DOMAbstractViewFunc>(exec,p,this,DOMAbstractView::GetComputedStyle,2,DontDelete|Function);
00052   else
00053     return DOMObject::tryGet(exec,p);
00054 }
00055 
00056 Value DOMAbstractViewFunc::tryCall(ExecState *exec, Object &thisObj, const List &args)
00057 {
00058   KJS_CHECK_THIS( KJS::DOMAbstractView, thisObj );
00059   DOM::AbstractView abstractView = static_cast<DOMAbstractView *>(thisObj.imp())->toAbstractView();
00060   switch (id) {
00061     case DOMAbstractView::GetComputedStyle: {
00062         DOM::Node arg0 = toNode(args[0]);
00063         if (arg0.nodeType() != DOM::Node::ELEMENT_NODE)
00064           return Undefined(); 
00065         else
00066           return getDOMCSSStyleDeclaration(exec,abstractView.getComputedStyle(static_cast<DOM::Element>(arg0),
00067                                                                               args[1].toString(exec).string()));
00068       }
00069   }
00070   return Undefined();
00071 }
00072 
00073 Value KJS::getDOMAbstractView(ExecState *exec, DOM::AbstractView av)
00074 {
00075   return cacheDOMObject<DOM::AbstractView, DOMAbstractView>(exec, av);
00076 }
00077 
00078 DOM::AbstractView KJS::toAbstractView (const Value& val)
00079 {
00080   Object obj = Object::dynamicCast(val);
00081   if (obj.isNull() || !obj.inherits(&DOMAbstractView::info))
00082     return DOM::AbstractView ();
00083 
00084   const DOMAbstractView  *dobj = static_cast<const DOMAbstractView *>(obj.imp());
00085   return dobj->toAbstractView ();
00086 }
 
This file is part of the documentation for khtml Library Version 3.2.0.