From kde-commits Tue Nov 04 21:52:11 2008 From: Harri Porten Date: Tue, 04 Nov 2008 21:52:11 +0000 To: kde-commits Subject: branches/KDE/4.1/kdelibs/khtml Message-Id: <1225835531.333189.25450.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=122583554432734 SVN commit 880185 by porten: Merged revision 880184: Implement createImageData() canvas function. M +9 -0 ecma/kjs_context2d.cpp M +1 -1 ecma/kjs_context2d.h M +16 -0 html/html_canvasimpl.cpp M +1 -0 html/html_canvasimpl.h --- branches/KDE/4.1/kdelibs/khtml/ecma/kjs_context2d.cpp #880184:880185 @@ -121,6 +121,7 @@ # pixel ops. getImageData Context2D::GetImageData DontDelete|Function 4 putImageData Context2D::PutImageData DontDelete|Function 3 + createImageData Context2D::CreateImageData DontDelete|Function 2 @end */ @@ -473,6 +474,14 @@ ctx->putImageData(id.get(), args[1]->toFloat(exec), args[2]->toFloat(exec), exception); break; } + case Context2D::CreateImageData: { + KJS_REQUIRE_ARGS(2); + KJS_CHECK_FLOAT_ARGS(0, 1); + CanvasImageDataImpl* id = ctx->createImageData(args[0]->toFloat(exec), + args[1]->toFloat(exec), + exception); + return getWrapper(exec, id); + } } --- branches/KDE/4.1/kdelibs/khtml/ecma/kjs_context2d.h #880184:880185 @@ -105,7 +105,7 @@ BeginPath, ClosePath, MoveTo, LineTo, QuadraticCurveTo, BezierCurveTo, ArcTo, Rect, Arc, Fill, Stroke, Clip, IsPointInPath, // paths DrawImage, // do we want backwards compat for drawImageFromRect? - GetImageData, PutImageData // pixel ops. ewww. + GetImageData, PutImageData, CreateImageData // pixel ops. ewww. }; }; --- branches/KDE/4.1/kdelibs/khtml/html/html_canvasimpl.cpp #880184:880185 @@ -1584,4 +1584,20 @@ p.drawImage(x, y, id->data); } +CanvasImageDataImpl* CanvasContext2DImpl::createImageData(float sw, float sh, int& exceptionCode) +{ + int w = qRound(qAbs(sw)); + int h = qRound(qAbs(sh)); + + if (w == 0 || h == 0) { + exceptionCode = DOMException::INDEX_SIZE_ERR; + return 0; + } + + CanvasImageDataImpl* id = new CanvasImageDataImpl(w, h); + id->data.fill(Qt::transparent); + + return id; +} + // kate: indent-width 4; replace-tabs on; tab-width 4; space-indent on; --- branches/KDE/4.1/kdelibs/khtml/html/html_canvasimpl.h #880184:880185 @@ -282,6 +282,7 @@ // Pixel ops CanvasImageDataImpl* getImageData(float sx, float sy, float sw, float sh, int& exceptionCode); void putImageData(CanvasImageDataImpl* data, float dx, float dy, int& exceptionCode); + CanvasImageDataImpl* createImageData(float sw, float sh, int& exceptionCode); private: friend class HTMLCanvasElementImpl;