aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quick/items/context2d/qquickcontext2d.cpp3
-rw-r--r--tests/auto/quick/qquickcanvasitem/data/tst_image.qml11
2 files changed, 14 insertions, 0 deletions
diff --git a/src/quick/items/context2d/qquickcontext2d.cpp b/src/quick/items/context2d/qquickcontext2d.cpp
index c948d87cc0..d359077426 100644
--- a/src/quick/items/context2d/qquickcontext2d.cpp
+++ b/src/quick/items/context2d/qquickcontext2d.cpp
@@ -2363,6 +2363,7 @@ static v8::Handle<v8::Value> ctx2d_drawImage(const v8::Arguments &args)
} else if (args[0]->IsObject()) {
QQuickImage *imageItem = qobject_cast<QQuickImage*>(engine->toQObject(args[0]->ToObject()));
QQuickCanvasItem *canvas = qobject_cast<QQuickCanvasItem*>(engine->toQObject(args[0]->ToObject()));
+ QUrl url(engine->toString(args[0]));
QV8Context2DPixelArrayResource *pix = v8_resource_cast<QV8Context2DPixelArrayResource>(args[0]->ToObject()->GetInternalField(0)->ToObject());
if (pix && !pix->image.isNull()) {
@@ -2373,6 +2374,8 @@ static v8::Handle<v8::Value> ctx2d_drawImage(const v8::Arguments &args)
QImage img = canvas->toImage();
if (!img.isNull())
pixmap.take(new QQuickCanvasPixmap(img, canvas->window()));
+ } else if (url.isValid()) {
+ pixmap = r->context->createPixmap(url);
} else {
V8THROW_DOM(DOMEXCEPTION_TYPE_MISMATCH_ERR, "drawImage(), type mismatch");
}
diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_image.qml b/tests/auto/quick/qquickcanvasitem/data/tst_image.qml
index 72b6dcdb00..ca95f2aec1 100644
--- a/tests/auto/quick/qquickcanvasitem/data/tst_image.qml
+++ b/tests/auto/quick/qquickcanvasitem/data/tst_image.qml
@@ -216,6 +216,17 @@ CanvasTestCase {
}
+ property url green: 'green.png'
+
+ function test_url(row) {
+ var canvas = createCanvasObject(row);
+ var ctx = canvas.getContext('2d');
+
+ canvas.loadImage(testCase.green);
+ ctx.drawImage(testCase.green, 0, 0);
+ comparePixel(ctx, 0,0, 0,255,0,255,2);
+ }
+
function test_composite(row) {
var canvas = createCanvasObject(row);
var ctx = canvas.getContext('2d');