support url type qml property as a source for Context2D::drawImage()
authorTasuku Suzuki <stasuku@gmail.com>
Thu, 25 Apr 2013 14:58:54 +0000 (23:58 +0900)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Mon, 10 Jun 2013 10:21:06 +0000 (12:21 +0200)
Change-Id: I66445dafd64f6c47fe1098fadd83bf3af301e58d
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
src/quick/items/context2d/qquickcontext2d.cpp
tests/auto/quick/qquickcanvasitem/data/tst_image.qml

index c948d87..d359077 100644 (file)
@@ -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");
         }
index 72b6dcd..ca95f2a 100644 (file)
@@ -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');