From f617dbeeedbc4e8f6ce7f81995ab217036094cfa Mon Sep 17 00:00:00 2001 From: Tasuku Suzuki Date: Thu, 25 Apr 2013 23:58:54 +0900 Subject: [PATCH] support url type qml property as a source for Context2D::drawImage() Change-Id: I66445dafd64f6c47fe1098fadd83bf3af301e58d Reviewed-by: Alan Alpert --- src/quick/items/context2d/qquickcontext2d.cpp | 3 +++ tests/auto/quick/qquickcanvasitem/data/tst_image.qml | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/quick/items/context2d/qquickcontext2d.cpp b/src/quick/items/context2d/qquickcontext2d.cpp index c948d87..d359077 100644 --- a/src/quick/items/context2d/qquickcontext2d.cpp +++ b/src/quick/items/context2d/qquickcontext2d.cpp @@ -2363,6 +2363,7 @@ static v8::Handle ctx2d_drawImage(const v8::Arguments &args) } else if (args[0]->IsObject()) { QQuickImage *imageItem = qobject_cast(engine->toQObject(args[0]->ToObject())); QQuickCanvasItem *canvas = qobject_cast(engine->toQObject(args[0]->ToObject())); + QUrl url(engine->toString(args[0])); QV8Context2DPixelArrayResource *pix = v8_resource_cast(args[0]->ToObject()->GetInternalField(0)->ToObject()); if (pix && !pix->image.isNull()) { @@ -2373,6 +2374,8 @@ static v8::Handle 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 72b6dcd..ca95f2a 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'); -- 2.7.4