~ubuntu-branches/ubuntu/karmic/webkit/karmic-proposed

« back to all changes in this revision

Viewing changes to WebCore/bindings/js/JSCanvasRenderingContext2DCustom.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Gustavo Noronha Silva
  • Date: 2009-05-15 18:30:58 UTC
  • mfrom: (1.1.8 upstream)
  • Revision ID: james.westby@ubuntu.com-20090515183058-50q5exjo9b1kxy9s
Tags: 1.1.7-1
* New upstream release
* debian/libwebkit-1.0-2.symbols:
- updated with the new symbols in 1.1.7
* debian/libwebkit-dev.install, debian/libwebkit-dev.links,
  debian/rules:
- Build, and ship gtk-doc documentation (Closes: #526683)
* debian/copyright:
- updated.

Show diffs side-by-side

added added

removed removed

Lines of Context:
40
40
 
41
41
namespace WebCore {
42
42
 
43
 
static JSValuePtr toJS(ExecState* exec, CanvasStyle* style)
 
43
static JSValue toJS(ExecState* exec, CanvasStyle* style)
44
44
{
45
45
    if (style->canvasGradient())
46
46
        return toJS(exec, style->canvasGradient());
49
49
    return jsString(exec, style->color());
50
50
}
51
51
 
52
 
static PassRefPtr<CanvasStyle> toHTMLCanvasStyle(ExecState*, JSValuePtr value)
 
52
static PassRefPtr<CanvasStyle> toHTMLCanvasStyle(ExecState*, JSValue value)
53
53
{
54
54
    if (value.isString())
55
55
        return CanvasStyle::create(asString(value)->value());
63
63
    return 0;
64
64
}
65
65
 
66
 
JSValuePtr JSCanvasRenderingContext2D::strokeStyle(ExecState* exec) const
 
66
JSValue JSCanvasRenderingContext2D::strokeStyle(ExecState* exec) const
67
67
{
68
68
    return toJS(exec, impl()->strokeStyle());        
69
69
}
70
70
 
71
 
void JSCanvasRenderingContext2D::setStrokeStyle(ExecState* exec, JSValuePtr value)
 
71
void JSCanvasRenderingContext2D::setStrokeStyle(ExecState* exec, JSValue value)
72
72
{
73
73
    impl()->setStrokeStyle(toHTMLCanvasStyle(exec, value));
74
74
}
75
75
 
76
 
JSValuePtr JSCanvasRenderingContext2D::fillStyle(ExecState* exec) const
 
76
JSValue JSCanvasRenderingContext2D::fillStyle(ExecState* exec) const
77
77
{
78
78
    return toJS(exec, impl()->fillStyle());
79
79
}
80
80
 
81
 
void JSCanvasRenderingContext2D::setFillStyle(ExecState* exec, JSValuePtr value)
 
81
void JSCanvasRenderingContext2D::setFillStyle(ExecState* exec, JSValue value)
82
82
{
83
83
    impl()->setFillStyle(toHTMLCanvasStyle(exec, value));
84
84
}
85
85
 
86
 
JSValuePtr JSCanvasRenderingContext2D::setFillColor(ExecState* exec, const ArgList& args)
 
86
JSValue JSCanvasRenderingContext2D::setFillColor(ExecState* exec, const ArgList& args)
87
87
{
88
88
    CanvasRenderingContext2D* context = impl();
89
89
 
95
95
    // 5 args = c, m, y, k, a
96
96
    switch (args.size()) {
97
97
        case 1:
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());
100
100
            else
101
 
                context->setFillColor(args.at(exec, 0).toFloat(exec));
 
101
                context->setFillColor(args.at(0).toFloat(exec));
102
102
            break;
103
103
        case 2:
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));
106
106
            else
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));
108
108
            break;
109
109
        case 4:
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));
112
112
            break;
113
113
        case 5:
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));
116
116
            break;
117
117
        default:
118
118
            return throwError(exec, SyntaxError);
120
120
    return jsUndefined();
121
121
}    
122
122
 
123
 
JSValuePtr JSCanvasRenderingContext2D::setStrokeColor(ExecState* exec, const ArgList& args)
 
123
JSValue JSCanvasRenderingContext2D::setStrokeColor(ExecState* exec, const ArgList& args)
124
124
125
125
    CanvasRenderingContext2D* context = impl();
126
126
 
132
132
    // 5 args = c, m, y, k, a
133
133
    switch (args.size()) {
134
134
        case 1:
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());
137
137
            else
138
 
                context->setStrokeColor(args.at(exec, 0).toFloat(exec));
 
138
                context->setStrokeColor(args.at(0).toFloat(exec));
139
139
            break;
140
140
        case 2:
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));
143
143
            else
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));
145
145
            break;
146
146
        case 4:
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));
149
149
            break;
150
150
        case 5:
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));
153
153
            break;
154
154
        default:
155
155
            return throwError(exec, SyntaxError);
158
158
    return jsUndefined();
159
159
}
160
160
 
161
 
JSValuePtr JSCanvasRenderingContext2D::strokeRect(ExecState* exec, const ArgList& args)
 
161
JSValue JSCanvasRenderingContext2D::strokeRect(ExecState* exec, const ArgList& args)
162
162
163
163
    CanvasRenderingContext2D* context = impl();
164
164
    
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));
168
168
    else
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));
171
171
 
172
172
    return jsUndefined();    
173
173
}
174
174
 
175
 
JSValuePtr JSCanvasRenderingContext2D::drawImage(ExecState* exec, const ArgList& args)
 
175
JSValue JSCanvasRenderingContext2D::drawImage(ExecState* exec, const ArgList& args)
176
176
177
177
    CanvasRenderingContext2D* context = impl();
178
178
 
182
182
    //     drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh)
183
183
    // Composite operation is specified with globalCompositeOperation.
184
184
    // The img parameter can be a <img> or <canvas> element.
185
 
    JSValuePtr value = args.at(exec, 0);
 
185
    JSValue value = args.at(0);
186
186
    if (!value.isObject())
187
187
        return throwError(exec, TypeError);
188
188
    JSObject* o = asObject(value);
192
192
        HTMLImageElement* imgElt = static_cast<HTMLImageElement*>(static_cast<JSHTMLElement*>(o)->impl());
193
193
        switch (args.size()) {
194
194
            case 3:
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));
196
196
                break;
197
197
            case 5:
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);
201
201
                break;
202
202
            case 9:
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);
208
208
                break;
209
209
            default:
213
213
        HTMLCanvasElement* canvas = static_cast<HTMLCanvasElement*>(static_cast<JSHTMLElement*>(o)->impl());
214
214
        switch (args.size()) {
215
215
            case 3:
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));
217
217
                break;
218
218
            case 5:
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);
222
222
                break;
223
223
            case 9:
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);
229
229
                break;
230
230
            default:
237
237
    return jsUndefined();    
238
238
}
239
239
 
240
 
JSValuePtr JSCanvasRenderingContext2D::drawImageFromRect(ExecState* exec, const ArgList& args)
 
240
JSValue JSCanvasRenderingContext2D::drawImageFromRect(ExecState* exec, const ArgList& args)
241
241
242
242
    CanvasRenderingContext2D* context = impl();
243
243
    
244
 
    JSValuePtr value = args.at(exec, 0);
 
244
    JSValue value = args.at(0);
245
245
    if (!value.isObject())
246
246
        return throwError(exec, TypeError);
247
247
    JSObject* o = asObject(value);
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();    
258
258
}
259
259
 
260
 
JSValuePtr JSCanvasRenderingContext2D::setShadow(ExecState* exec, const ArgList& args)
 
260
JSValue JSCanvasRenderingContext2D::setShadow(ExecState* exec, const ArgList& args)
261
261
262
262
    CanvasRenderingContext2D* context = impl();
263
263
 
264
264
    switch (args.size()) {
265
265
        case 3:
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));
268
268
            break;
269
269
        case 4:
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());
273
273
            else
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));
276
276
            break;
277
277
        case 5:
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));
282
282
            else
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));
286
286
            break;
287
287
        case 7:
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));
292
292
            break;
293
293
        case 8:
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));
298
298
            break;
299
299
        default:
300
300
            return throwError(exec, SyntaxError);
303
303
    return jsUndefined();    
304
304
}
305
305
 
306
 
JSValuePtr JSCanvasRenderingContext2D::createPattern(ExecState* exec, const ArgList& args)
 
306
JSValue JSCanvasRenderingContext2D::createPattern(ExecState* exec, const ArgList& args)
307
307
308
308
    CanvasRenderingContext2D* context = impl();
309
309
 
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);
314
314
 
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);
321
321
        return pattern;
322
322
    }
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);
329
329
        return pattern;
330
330
    }
332
332
    return jsUndefined();
333
333
}
334
334
 
335
 
JSValuePtr JSCanvasRenderingContext2D::putImageData(ExecState* exec, const ArgList& args)
 
335
JSValue JSCanvasRenderingContext2D::putImageData(ExecState* exec, const ArgList& args)
336
336
{
337
337
    // putImageData has two variants
338
338
    // putImageData(ImageData, x, y)
341
341
 
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);
346
346
    else
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);
348
348
 
349
349
    setDOMException(exec, ec);
350
350
    return jsUndefined();
351
351
}
352
352
 
353
 
JSValuePtr JSCanvasRenderingContext2D::fillText(ExecState* exec, const ArgList& args)
 
353
JSValue JSCanvasRenderingContext2D::fillText(ExecState* exec, const ArgList& args)
354
354
355
355
    CanvasRenderingContext2D* context = impl();
356
356
 
362
362
        return throwError(exec, SyntaxError);
363
363
    
364
364
    if (args.size() == 4)
365
 
        context->fillText(args.at(exec, 0).toString(exec), args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec));
 
365
        context->fillText(args.at(0).toString(exec), args.at(1).toFloat(exec), args.at(2).toFloat(exec), args.at(3).toFloat(exec));
366
366
    else
367
 
        context->fillText(args.at(exec, 0).toString(exec), args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec));
 
367
        context->fillText(args.at(0).toString(exec), args.at(1).toFloat(exec), args.at(2).toFloat(exec));
368
368
    return jsUndefined();
369
369
}
370
370
 
371
 
JSValuePtr JSCanvasRenderingContext2D::strokeText(ExecState* exec, const ArgList& args)
 
371
JSValue JSCanvasRenderingContext2D::strokeText(ExecState* exec, const ArgList& args)
372
372
373
373
    CanvasRenderingContext2D* context = impl();
374
374
 
380
380
        return throwError(exec, SyntaxError);
381
381
    
382
382
    if (args.size() == 4)
383
 
        context->strokeText(args.at(exec, 0).toString(exec), args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec), args.at(exec, 3).toFloat(exec));
 
383
        context->strokeText(args.at(0).toString(exec), args.at(1).toFloat(exec), args.at(2).toFloat(exec), args.at(3).toFloat(exec));
384
384
    else
385
 
        context->strokeText(args.at(exec, 0).toString(exec), args.at(exec, 1).toFloat(exec), args.at(exec, 2).toFloat(exec));
 
385
        context->strokeText(args.at(0).toString(exec), args.at(1).toFloat(exec), args.at(2).toFloat(exec));
386
386
    return jsUndefined();
387
387
}
388
388