21
21
#include "config.h"
23
22
#include "JSCanvasGradient.h"
25
#include <wtf/GetPtr.h>
27
24
#include "CanvasGradient.h"
28
25
#include "PlatformString.h"
30
26
#include <runtime/Error.h>
27
#include <wtf/GetPtr.h>
32
29
using namespace JSC;
34
31
namespace WebCore {
36
ASSERT_CLASS_FITS_IN_CELL(JSCanvasGradient)
33
ASSERT_CLASS_FITS_IN_CELL(JSCanvasGradient);
38
35
/* Hash table for prototype */
46
static const HashTable JSCanvasGradientPrototypeTable =
43
static JSC_CONST_HASHTABLE HashTable JSCanvasGradientPrototypeTable =
47
44
#if ENABLE(PERFECT_HASH_SIZE)
48
45
{ 0, JSCanvasGradientPrototypeTableValues, 0 };
62
59
return getStaticFunctionSlot<JSObject>(exec, &JSCanvasGradientPrototypeTable, this, propertyName, slot);
62
bool JSCanvasGradientPrototype::getOwnPropertyDescriptor(ExecState* exec, const Identifier& propertyName, PropertyDescriptor& descriptor)
64
return getStaticFunctionDescriptor<JSObject>(exec, &JSCanvasGradientPrototypeTable, this, propertyName, descriptor);
65
67
const ClassInfo JSCanvasGradient::s_info = { "CanvasGradient", 0, 0, 0 };
67
JSCanvasGradient::JSCanvasGradient(PassRefPtr<Structure> structure, PassRefPtr<CanvasGradient> impl)
68
: DOMObject(structure)
69
JSCanvasGradient::JSCanvasGradient(NonNullPassRefPtr<Structure> structure, JSDOMGlobalObject* globalObject, PassRefPtr<CanvasGradient> impl)
70
: DOMObjectWithGlobalPointer(structure, globalObject)
73
75
JSCanvasGradient::~JSCanvasGradient()
75
forgetDOMObject(*Heap::heap(this)->globalData(), m_impl.get());
77
forgetDOMObject(*Heap::heap(this)->globalData(), impl());
79
80
JSObject* JSCanvasGradient::createPrototype(ExecState* exec, JSGlobalObject* globalObject)
81
82
return new (exec) JSCanvasGradientPrototype(JSCanvasGradientPrototype::createStructure(globalObject->objectPrototype()));
84
JSValuePtr jsCanvasGradientPrototypeFunctionAddColorStop(ExecState* exec, JSObject*, JSValuePtr thisValue, const ArgList& args)
85
JSValue JSC_HOST_CALL jsCanvasGradientPrototypeFunctionAddColorStop(ExecState* exec, JSObject*, JSValue thisValue, const ArgList& args)
86
if (!thisValue->isObject(&JSCanvasGradient::s_info))
88
if (!thisValue.inherits(&JSCanvasGradient::s_info))
87
89
return throwError(exec, TypeError);
88
90
JSCanvasGradient* castedThisObj = static_cast<JSCanvasGradient*>(asObject(thisValue));
89
91
CanvasGradient* imp = static_cast<CanvasGradient*>(castedThisObj->impl());
90
92
ExceptionCode ec = 0;
91
float offset = args.at(exec, 0)->toFloat(exec);
92
const UString& color = args.at(exec, 1)->toString(exec);
93
float offset = args.at(0).toFloat(exec);
94
const UString& color = args.at(1).toString(exec);
94
96
imp->addColorStop(offset, color, ec);
95
97
setDOMException(exec, ec);
96
98
return jsUndefined();
99
JSC::JSValuePtr toJS(JSC::ExecState* exec, CanvasGradient* object)
101
JSC::JSValue toJS(JSC::ExecState* exec, JSDOMGlobalObject* globalObject, CanvasGradient* object)
101
return getDOMObjectWrapper<JSCanvasGradient>(exec, object);
103
return getDOMObjectWrapper<JSCanvasGradient>(exec, globalObject, object);
103
CanvasGradient* toCanvasGradient(JSC::JSValuePtr value)
105
CanvasGradient* toCanvasGradient(JSC::JSValue value)
105
return value->isObject(&JSCanvasGradient::s_info) ? static_cast<JSCanvasGradient*>(asObject(value))->impl() : 0;
107
return value.inherits(&JSCanvasGradient::s_info) ? static_cast<JSCanvasGradient*>(asObject(value))->impl() : 0;