66
JSValuePtr JSCanvasRenderingContext2D::strokeStyle(ExecState* exec) const
66
JSValue JSCanvasRenderingContext2D::strokeStyle(ExecState* exec) const
68
68
return toJS(exec, impl()->strokeStyle());
71
void JSCanvasRenderingContext2D::setStrokeStyle(ExecState* exec, JSValuePtr value)
71
void JSCanvasRenderingContext2D::setStrokeStyle(ExecState* exec, JSValue value)
73
73
impl()->setStrokeStyle(toHTMLCanvasStyle(exec, value));
76
JSValuePtr JSCanvasRenderingContext2D::fillStyle(ExecState* exec) const
76
JSValue JSCanvasRenderingContext2D::fillStyle(ExecState* exec) const
78
78
return toJS(exec, impl()->fillStyle());
81
void JSCanvasRenderingContext2D::setFillStyle(ExecState* exec, JSValuePtr value)
81
void JSCanvasRenderingContext2D::setFillStyle(ExecState* exec, JSValue value)
83
83
impl()->setFillStyle(toHTMLCanvasStyle(exec, value));
86
JSValuePtr JSCanvasRenderingContext2D::setFillColor(ExecState* exec, const ArgList& args)
86
JSValue JSCanvasRenderingContext2D::setFillColor(ExecState* exec, const ArgList& args)
88
88
CanvasRenderingContext2D* context = impl();
95
95
// 5 args = c, m, y, k, a
96
96
switch (args.size()) {
98
if (args.at(exec, 0).isString())
99
context->setFillColor(asString(args.at(exec, 0))->value());
98
if (args.at(0).isString())
99
context->setFillColor(asString(args.at(0))->value());
101
context->setFillColor(args.at(exec, 0).toFloat(exec));
101
context->setFillColor(args.at(0).toFloat(exec));
104
if (args.at(exec, 0).isString())
105
context->setFillColor(asString(args.at(exec, 0))->value(), args.at(exec, 1).toFloat(exec));
104
if (args.at(0).isString())
105
context->setFillColor(asString(args.at(0))->value(), args.at(1).toFloat(exec));
107
context->setFillColor(args.at(exec, 0).toFloat(exec), args.at(exec, 1).toFloat(exec));
107
context->setFillColor(args.at(0).toFloat(exec), args.at(1).toFloat(exec));
110
context->setFillColor(args.at(exec, 0).toFloat(exec), args.at(exec, 1).toFloat(exec),
111
args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec));
110
context->setFillColor(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
111
args.at(2).toFloat(exec), args.at(3).toFloat(exec));
114
context->setFillColor(args.at(exec, 0).toFloat(exec), args.at(exec, 1).toFloat(exec),
115
args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec), args.at(exec, 4).toFloat(exec));
114
context->setFillColor(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
115
args.at(2).toFloat(exec), args.at(3).toFloat(exec), args.at(4).toFloat(exec));
118
118
return throwError(exec, SyntaxError);
132
132
// 5 args = c, m, y, k, a
133
133
switch (args.size()) {
135
if (args.at(exec, 0).isString())
136
context->setStrokeColor(asString(args.at(exec, 0))->value());
135
if (args.at(0).isString())
136
context->setStrokeColor(asString(args.at(0))->value());
138
context->setStrokeColor(args.at(exec, 0).toFloat(exec));
138
context->setStrokeColor(args.at(0).toFloat(exec));
141
if (args.at(exec, 0).isString())
142
context->setStrokeColor(asString(args.at(exec, 0))->value(), args.at(exec, 1).toFloat(exec));
141
if (args.at(0).isString())
142
context->setStrokeColor(asString(args.at(0))->value(), args.at(1).toFloat(exec));
144
context->setStrokeColor(args.at(exec, 0).toFloat(exec), args.at(exec, 1).toFloat(exec));
144
context->setStrokeColor(args.at(0).toFloat(exec), args.at(1).toFloat(exec));
147
context->setStrokeColor(args.at(exec, 0).toFloat(exec), args.at(exec, 1).toFloat(exec),
148
args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec));
147
context->setStrokeColor(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
148
args.at(2).toFloat(exec), args.at(3).toFloat(exec));
151
context->setStrokeColor(args.at(exec, 0).toFloat(exec), args.at(exec, 1).toFloat(exec),
152
args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec), args.at(exec, 4).toFloat(exec));
151
context->setStrokeColor(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
152
args.at(2).toFloat(exec), args.at(3).toFloat(exec), args.at(4).toFloat(exec));
155
155
return throwError(exec, SyntaxError);
158
158
return jsUndefined();
161
JSValuePtr JSCanvasRenderingContext2D::strokeRect(ExecState* exec, const ArgList& args)
161
JSValue JSCanvasRenderingContext2D::strokeRect(ExecState* exec, const ArgList& args)
163
163
CanvasRenderingContext2D* context = impl();
165
165
if (args.size() <= 4)
166
context->strokeRect(args.at(exec, 0).toFloat(exec), args.at(exec, 1).toFloat(exec),
167
args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec));
166
context->strokeRect(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
167
args.at(2).toFloat(exec), args.at(3).toFloat(exec));
169
context->strokeRect(args.at(exec, 0).toFloat(exec), args.at(exec, 1).toFloat(exec),
170
args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec), args.at(exec, 4).toFloat(exec));
169
context->strokeRect(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
170
args.at(2).toFloat(exec), args.at(3).toFloat(exec), args.at(4).toFloat(exec));
172
172
return jsUndefined();
175
JSValuePtr JSCanvasRenderingContext2D::drawImage(ExecState* exec, const ArgList& args)
175
JSValue JSCanvasRenderingContext2D::drawImage(ExecState* exec, const ArgList& args)
177
177
CanvasRenderingContext2D* context = impl();
192
192
HTMLImageElement* imgElt = static_cast<HTMLImageElement*>(static_cast<JSHTMLElement*>(o)->impl());
193
193
switch (args.size()) {
195
context->drawImage(imgElt, args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec));
195
context->drawImage(imgElt, args.at(1).toFloat(exec), args.at(2).toFloat(exec));
198
context->drawImage(imgElt, args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec),
199
args.at(exec, 3).toFloat(exec), args.at(exec, 4).toFloat(exec), ec);
198
context->drawImage(imgElt, args.at(1).toFloat(exec), args.at(2).toFloat(exec),
199
args.at(3).toFloat(exec), args.at(4).toFloat(exec), ec);
200
200
setDOMException(exec, ec);
203
context->drawImage(imgElt, FloatRect(args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec),
204
args.at(exec, 3).toFloat(exec), args.at(exec, 4).toFloat(exec)),
205
FloatRect(args.at(exec, 5).toFloat(exec), args.at(exec, 6).toFloat(exec),
206
args.at(exec, 7).toFloat(exec), args.at(exec, 8).toFloat(exec)), ec);
203
context->drawImage(imgElt, FloatRect(args.at(1).toFloat(exec), args.at(2).toFloat(exec),
204
args.at(3).toFloat(exec), args.at(4).toFloat(exec)),
205
FloatRect(args.at(5).toFloat(exec), args.at(6).toFloat(exec),
206
args.at(7).toFloat(exec), args.at(8).toFloat(exec)), ec);
207
207
setDOMException(exec, ec);
213
213
HTMLCanvasElement* canvas = static_cast<HTMLCanvasElement*>(static_cast<JSHTMLElement*>(o)->impl());
214
214
switch (args.size()) {
216
context->drawImage(canvas, args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec));
216
context->drawImage(canvas, args.at(1).toFloat(exec), args.at(2).toFloat(exec));
219
context->drawImage(canvas, args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec),
220
args.at(exec, 3).toFloat(exec), args.at(exec, 4).toFloat(exec), ec);
219
context->drawImage(canvas, args.at(1).toFloat(exec), args.at(2).toFloat(exec),
220
args.at(3).toFloat(exec), args.at(4).toFloat(exec), ec);
221
221
setDOMException(exec, ec);
224
context->drawImage(canvas, FloatRect(args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec),
225
args.at(exec, 3).toFloat(exec), args.at(exec, 4).toFloat(exec)),
226
FloatRect(args.at(exec, 5).toFloat(exec), args.at(exec, 6).toFloat(exec),
227
args.at(exec, 7).toFloat(exec), args.at(exec, 8).toFloat(exec)), ec);
224
context->drawImage(canvas, FloatRect(args.at(1).toFloat(exec), args.at(2).toFloat(exec),
225
args.at(3).toFloat(exec), args.at(4).toFloat(exec)),
226
FloatRect(args.at(5).toFloat(exec), args.at(6).toFloat(exec),
227
args.at(7).toFloat(exec), args.at(8).toFloat(exec)), ec);
228
228
setDOMException(exec, ec);
249
249
if (!o->inherits(&JSHTMLImageElement::s_info))
250
250
return throwError(exec, TypeError);
251
251
context->drawImageFromRect(static_cast<HTMLImageElement*>(static_cast<JSHTMLElement*>(o)->impl()),
252
args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec),
253
args.at(exec, 3).toFloat(exec), args.at(exec, 4).toFloat(exec),
254
args.at(exec, 5).toFloat(exec), args.at(exec, 6).toFloat(exec),
255
args.at(exec, 7).toFloat(exec), args.at(exec, 8).toFloat(exec),
256
args.at(exec, 9).toString(exec));
252
args.at(1).toFloat(exec), args.at(2).toFloat(exec),
253
args.at(3).toFloat(exec), args.at(4).toFloat(exec),
254
args.at(5).toFloat(exec), args.at(6).toFloat(exec),
255
args.at(7).toFloat(exec), args.at(8).toFloat(exec),
256
args.at(9).toString(exec));
257
257
return jsUndefined();
260
JSValuePtr JSCanvasRenderingContext2D::setShadow(ExecState* exec, const ArgList& args)
260
JSValue JSCanvasRenderingContext2D::setShadow(ExecState* exec, const ArgList& args)
262
262
CanvasRenderingContext2D* context = impl();
264
264
switch (args.size()) {
266
context->setShadow(args.at(exec, 0).toFloat(exec), args.at(exec, 1).toFloat(exec),
267
args.at(exec, 2).toFloat(exec));
266
context->setShadow(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
267
args.at(2).toFloat(exec));
270
if (args.at(exec, 3).isString())
271
context->setShadow(args.at(exec, 0).toFloat(exec), args.at(exec, 1).toFloat(exec),
272
args.at(exec, 2).toFloat(exec), asString(args.at(exec, 3))->value());
270
if (args.at(3).isString())
271
context->setShadow(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
272
args.at(2).toFloat(exec), asString(args.at(3))->value());
274
context->setShadow(args.at(exec, 0).toFloat(exec), args.at(exec, 1).toFloat(exec),
275
args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec));
274
context->setShadow(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
275
args.at(2).toFloat(exec), args.at(3).toFloat(exec));
278
if (args.at(exec, 3).isString())
279
context->setShadow(args.at(exec, 0).toFloat(exec), args.at(exec, 1).toFloat(exec),
280
args.at(exec, 2).toFloat(exec), asString(args.at(exec, 3))->value(),
281
args.at(exec, 4).toFloat(exec));
278
if (args.at(3).isString())
279
context->setShadow(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
280
args.at(2).toFloat(exec), asString(args.at(3))->value(),
281
args.at(4).toFloat(exec));
283
context->setShadow(args.at(exec, 0).toFloat(exec), args.at(exec, 1).toFloat(exec),
284
args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec),
285
args.at(exec, 4).toFloat(exec));
283
context->setShadow(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
284
args.at(2).toFloat(exec), args.at(3).toFloat(exec),
285
args.at(4).toFloat(exec));
288
context->setShadow(args.at(exec, 0).toFloat(exec), args.at(exec, 1).toFloat(exec),
289
args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec),
290
args.at(exec, 4).toFloat(exec), args.at(exec, 5).toFloat(exec),
291
args.at(exec, 6).toFloat(exec));
288
context->setShadow(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
289
args.at(2).toFloat(exec), args.at(3).toFloat(exec),
290
args.at(4).toFloat(exec), args.at(5).toFloat(exec),
291
args.at(6).toFloat(exec));
294
context->setShadow(args.at(exec, 0).toFloat(exec), args.at(exec, 1).toFloat(exec),
295
args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec),
296
args.at(exec, 4).toFloat(exec), args.at(exec, 5).toFloat(exec),
297
args.at(exec, 6).toFloat(exec), args.at(exec, 7).toFloat(exec));
294
context->setShadow(args.at(0).toFloat(exec), args.at(1).toFloat(exec),
295
args.at(2).toFloat(exec), args.at(3).toFloat(exec),
296
args.at(4).toFloat(exec), args.at(5).toFloat(exec),
297
args.at(6).toFloat(exec), args.at(7).toFloat(exec));
300
300
return throwError(exec, SyntaxError);
303
303
return jsUndefined();
306
JSValuePtr JSCanvasRenderingContext2D::createPattern(ExecState* exec, const ArgList& args)
306
JSValue JSCanvasRenderingContext2D::createPattern(ExecState* exec, const ArgList& args)
308
308
CanvasRenderingContext2D* context = impl();
310
JSValuePtr value = args.at(exec, 0);
310
JSValue value = args.at(0);
311
311
if (!value.isObject())
312
312
return throwError(exec, TypeError);
313
313
JSObject* o = asObject(value);
315
315
if (o->inherits(&JSHTMLImageElement::s_info)) {
316
316
ExceptionCode ec;
317
JSValuePtr pattern = toJS(exec,
317
JSValue pattern = toJS(exec,
318
318
context->createPattern(static_cast<HTMLImageElement*>(static_cast<JSHTMLElement*>(o)->impl()),
319
valueToStringWithNullCheck(exec, args.at(exec, 1)), ec).get());
319
valueToStringWithNullCheck(exec, args.at(1)), ec).get());
320
320
setDOMException(exec, ec);
323
323
if (o->inherits(&JSHTMLCanvasElement::s_info)) {
324
324
ExceptionCode ec;
325
JSValuePtr pattern = toJS(exec,
325
JSValue pattern = toJS(exec,
326
326
context->createPattern(static_cast<HTMLCanvasElement*>(static_cast<JSHTMLElement*>(o)->impl()),
327
valueToStringWithNullCheck(exec, args.at(exec, 1)), ec).get());
327
valueToStringWithNullCheck(exec, args.at(1)), ec).get());
328
328
setDOMException(exec, ec);
342
342
ExceptionCode ec = 0;
343
343
if (args.size() >= 7)
344
context->putImageData(toImageData(args.at(exec, 0)), args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec),
345
args.at(exec, 3).toFloat(exec), args.at(exec, 4).toFloat(exec), args.at(exec, 5).toFloat(exec), args.at(exec, 6).toFloat(exec), ec);
344
context->putImageData(toImageData(args.at(0)), args.at(1).toFloat(exec), args.at(2).toFloat(exec),
345
args.at(3).toFloat(exec), args.at(4).toFloat(exec), args.at(5).toFloat(exec), args.at(6).toFloat(exec), ec);
347
context->putImageData(toImageData(args.at(exec, 0)), args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec), ec);
347
context->putImageData(toImageData(args.at(0)), args.at(1).toFloat(exec), args.at(2).toFloat(exec), ec);
349
349
setDOMException(exec, ec);
350
350
return jsUndefined();
353
JSValuePtr JSCanvasRenderingContext2D::fillText(ExecState* exec, const ArgList& args)
353
JSValue JSCanvasRenderingContext2D::fillText(ExecState* exec, const ArgList& args)
355
355
CanvasRenderingContext2D* context = impl();