/* * Copyright 2007 Richard J. Moore * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License version 2 as * published by the Free Software Foundation * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include #include "../backportglobal.h" Q_DECLARE_METATYPE(QPolygonF) Q_DECLARE_METATYPE(QPainterPath) Q_DECLARE_METATYPE(QPainterPath*) Q_DECLARE_METATYPE(QPicture) Q_DECLARE_METATYPE(QVector) Q_DECLARE_METATYPE(QPaintDevice*) Q_DECLARE_METATYPE(QPaintEngine*) DECLARE_POINTER_METATYPE(QPainter) static QScriptValue newPainter(QScriptEngine *eng, QPainter *p) { return QScript::wrapPointer(eng, p); } ///////////////////////////////////////////////////////////// static QScriptValue ctor(QScriptContext *ctx, QScriptEngine *eng) { if (ctx->argumentCount() > 0) { QPaintDevice *device = qscriptvalue_cast(ctx->argument(0)); return newPainter(eng, new QPainter(device)); } else { return newPainter(eng, new QPainter()); } } ///////////////////////////////////////////////////////////// static QScriptValue background(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, background); return qScriptValueFromValue(eng, self->background()); } ///////////////////////////////////////////////////////////// static QScriptValue backgroundMode(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, backgroundMode); return QScriptValue(eng, static_cast(self->backgroundMode())); } ///////////////////////////////////////////////////////////// static QScriptValue begin(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, begin); QWidget *device = qscriptvalue_cast(ctx->argument(0)); if (!device) { return ctx->throwError(QScriptContext::TypeError, "QPainter.prototype.begin: argument is not a QWidget"); } return QScriptValue(eng, self->begin(device)); } ///////////////////////////////////////////////////////////// static QScriptValue boundingRect(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, boundingRect); QRect result; if (ctx->argumentCount() == 3) { result = self->boundingRect(qscriptvalue_cast(ctx->argument(0)), ctx->argument(1).toInt32(), ctx->argument(2).toString()); } else if (ctx->argumentCount() == 6) { result = self->boundingRect(ctx->argument(0).toInt32(), ctx->argument(1).toInt32(), ctx->argument(2).toInt32(), ctx->argument(3).toInt32(), ctx->argument(4).toInt32(), ctx->argument(5).toString()); } return qScriptValueFromValue(eng, result); } ///////////////////////////////////////////////////////////// static QScriptValue brush(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, brush); return qScriptValueFromValue(eng, self->brush()); } ///////////////////////////////////////////////////////////// static QScriptValue brushOrigin(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, brushOrigin); return qScriptValueFromValue(eng, self->brushOrigin()); } ///////////////////////////////////////////////////////////// static QScriptValue clipPath(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, clipPath); return qScriptValueFromValue(eng, self->clipPath()); } ///////////////////////////////////////////////////////////// static QScriptValue clipRegion(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, clipRegion); return qScriptValueFromValue(eng, self->clipRegion()); } ///////////////////////////////////////////////////////////// static QScriptValue combinedMatrix(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, combinedMatrix); return qScriptValueFromValue(eng, self->combinedMatrix()); } ///////////////////////////////////////////////////////////// static QScriptValue combinedTransform(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, combinedTransform); return qScriptValueFromValue(eng, self->combinedTransform()); } ///////////////////////////////////////////////////////////// static QScriptValue compositionMode(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, compositionMode); return QScriptValue(eng, static_cast(self->compositionMode())); } ///////////////////////////////////////////////////////////// static QScriptValue drawArc(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, drawArc); if (ctx->argumentCount() == 6) { // drawArc(x, y, height, width, startAngle, spanAngle) self->drawArc(ctx->argument(0).toInt32(), ctx->argument(1).toInt32(), ctx->argument(2).toInt32(), ctx->argument(3).toInt32(), ctx->argument(4).toInt32(), ctx->argument(5).toInt32()); } else if (ctx->argumentCount() == 3) { // drawArc(rectangle, startAngle, spanAngle) self->drawArc(qscriptvalue_cast(ctx->argument(0)), ctx->argument(1).toInt32(), ctx->argument(2).toInt32()); } return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue drawChord(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, drawChord); if (ctx->argumentCount() == 6) { // x, y, height, width, startAngle, spanAngle self->drawChord(ctx->argument(0).toInt32(), ctx->argument(1).toInt32(), ctx->argument(2).toInt32(), ctx->argument(3).toInt32(), ctx->argument(4).toInt32(), ctx->argument(5).toInt32()); } else if (ctx->argumentCount() == 3) { // rectangle, startAngle, spanAngle self->drawChord(qscriptvalue_cast(ctx->argument(0)), ctx->argument(1).toInt32(), ctx->argument(2).toInt32()); } return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue drawConvexPolygon(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, drawConvexPolygon); self->drawConvexPolygon(qscriptvalue_cast(ctx->argument(0))); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue drawEllipse(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, drawEllipse); if (ctx->argumentCount() == 4) { // drawEllipse(x, y, width, height) self->drawEllipse(ctx->argument(0).toInt32(), ctx->argument(1).toInt32(), ctx->argument(2).toInt32(), ctx->argument(3).toInt32()); } else if (ctx->argumentCount() == 1) { // drawEllipse(rect) self->drawEllipse(qscriptvalue_cast(ctx->argument(0))); } return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue drawImage(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, drawImage); if (ctx->argumentCount() == 2) { // target, image QScriptValue arg0 = ctx->argument(0); QImage image = qscriptvalue_cast(ctx->argument(1)); if (arg0.property("width").isValid()) { self->drawImage(qscriptvalue_cast(arg0), image); } else { self->drawImage(qscriptvalue_cast(arg0), image); } } else if (ctx->argumentCount() == 3) { // x, y, image self->drawImage(ctx->argument(0).toInt32(), ctx->argument(1).toInt32(), qscriptvalue_cast(ctx->argument(2))); } else if (ctx->argumentCount() == 5) { // x, y, width, height, image self->drawImage(QRect(ctx->argument(0).toInt32(), ctx->argument(1).toInt32(), ctx->argument(2).toInt32(), ctx->argument(3).toInt32()), qscriptvalue_cast(ctx->argument(4))); } return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue drawLine(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, drawLine); if (ctx->argumentCount() == 4) { // x1, y1, x2, y2 self->drawLine(ctx->argument(0).toInt32(), ctx->argument(1).toInt32(), ctx->argument(2).toInt32(), ctx->argument(3).toInt32()); } else if (ctx->argumentCount() == 2) { // p1, p2 self->drawLine(qscriptvalue_cast(ctx->argument(0)), qscriptvalue_cast(ctx->argument(1))); } else if (ctx->argumentCount() == 1) { // line self->drawLine(qscriptvalue_cast(ctx->argument(0))); } return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue drawLines(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, drawLines); return ctx->throwError("QPainter.prototype.drawLines is not implemented"); // self->drawLines(qscriptvalue_cast >(ctx->argument(0))); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue drawPath(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, drawPath); self->drawPath(qscriptvalue_cast(ctx->argument(0))); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue drawPicture(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, drawPicture); if (ctx->argumentCount() == 2) { self->drawPicture(qscriptvalue_cast(ctx->argument(0)), qscriptvalue_cast(ctx->argument(1))); } else if (ctx->argumentCount() == 3) { self->drawPicture(ctx->argument(0).toInt32(), ctx->argument(1).toInt32(), qscriptvalue_cast(ctx->argument(2))); } return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue drawPie(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, drawPie); if (ctx->argumentCount() == 6) { // x, y, height, width, startAngle, spanAngle self->drawPie(ctx->argument(0).toInt32(), ctx->argument(1).toInt32(), ctx->argument(2).toInt32(), ctx->argument(3).toInt32(), ctx->argument(4).toInt32(), ctx->argument(5).toInt32()); } else if (ctx->argumentCount() == 3) { // rectangle, startAngle, spanAngle self->drawPie(qscriptvalue_cast(ctx->argument(0)), ctx->argument(1).toInt32(), ctx->argument(2).toInt32()); } return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue drawPixmap(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, drawPixmap); if (ctx->argumentCount() == 2) { // target, pixmap QScriptValue arg0 = ctx->argument(0); QPixmap pixmap = qscriptvalue_cast(ctx->argument(1)); if (arg0.property("width").isValid()) { self->drawPixmap(qscriptvalue_cast(arg0), pixmap, QRectF(0, 0, pixmap.width(), pixmap.height())); } else { self->drawPixmap(qscriptvalue_cast(arg0), pixmap); } } else if (ctx->argumentCount() == 3) { // x, y, pixmap self->drawPixmap(ctx->argument(0).toInt32(), ctx->argument(1).toInt32(), qscriptvalue_cast(ctx->argument(2))); } else if (ctx->argumentCount() == 5) { // x, y, width, height, pixmap self->drawPixmap(ctx->argument(0).toInt32(), ctx->argument(1).toInt32(), ctx->argument(2).toInt32(), ctx->argument(3).toInt32(), qscriptvalue_cast(ctx->argument(4))); } return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue drawPoint(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, drawPoint); if (ctx->argumentCount() == 2) { // drawPoint(x, y) self->drawPoint(ctx->argument(0).toInt32(), ctx->argument(1).toInt32()); } else if (ctx->argumentCount() == 1) { // drawPoint(point) self->drawPoint(qscriptvalue_cast(ctx->argument(0))); } return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue drawPoints(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, drawPoints); self->drawPoints(qscriptvalue_cast(ctx->argument(0))); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue drawPolygon(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, drawPolygon); // ### fillRule (2nd argument) self->drawPolygon(qscriptvalue_cast(ctx->argument(0))); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue drawPolyline(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, drawPolyline); self->drawPolyline(qscriptvalue_cast(ctx->argument(0))); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue drawRect(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, drawRect); if (ctx->argumentCount() == 4) { // x, y, width, height self->drawRect(ctx->argument(0).toInt32(), ctx->argument(1).toInt32(), ctx->argument(2).toInt32(), ctx->argument(3).toInt32()); } else if (ctx->argumentCount() == 1) { // rect self->drawRect(qscriptvalue_cast(ctx->argument(0))); } return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue drawRects(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, drawRects); self->drawRects(qscriptvalue_cast >(ctx->argument(0))); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue drawRoundRect(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, drawRoundRect); // ### xRnd, yRnd if (ctx->argumentCount() >= 4) { self->drawRoundRect(ctx->argument(0).toInt32(), ctx->argument(1).toInt32(), ctx->argument(2).toInt32(), ctx->argument(3).toInt32()); } else { self->drawRoundRect(qscriptvalue_cast(ctx->argument(0))); } return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue drawText(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, drawText); if (ctx->argumentCount() == 3) { // x, y, text self->drawText(ctx->argument(0).toInt32(), ctx->argument(1).toInt32(), ctx->argument(2).toString()); } else if (ctx->argumentCount() == 2) { QScriptValue arg0 = ctx->argument(0); if (arg0.property("width").isValid()) { self->drawText(qscriptvalue_cast(arg0), ctx->argument(1).toString()); } else { self->drawText(qscriptvalue_cast(arg0), ctx->argument(1).toString()); } } return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue drawTiledPixmap(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, drawTiledPixmap); if (ctx->argumentCount() >= 5) { // x, y, width, height, pixmap, sx, sy self->drawTiledPixmap(ctx->argument(0).toInt32(), ctx->argument(1).toInt32(), ctx->argument(2).toInt32(), ctx->argument(3).toInt32(), qscriptvalue_cast(ctx->argument(4)), ctx->argument(5).toInt32(), ctx->argument(6).toInt32()); } else { // rect, pixmap, position self->drawTiledPixmap(qscriptvalue_cast(ctx->argument(0)), qscriptvalue_cast(ctx->argument(1)), qscriptvalue_cast(ctx->argument(2))); } return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue end(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, end); return QScriptValue(eng, self->end()); } ///////////////////////////////////////////////////////////// static QScriptValue eraseRect(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, eraseRect); if (ctx->argumentCount() == 4) { // x, y, width, height self->eraseRect(ctx->argument(0).toInt32(), ctx->argument(1).toInt32(), ctx->argument(2).toInt32(), ctx->argument(3).toInt32()); } else if (ctx->argumentCount() == 1) { // rect self->eraseRect(qscriptvalue_cast(ctx->argument(0))); } return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue fillPath(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, fillPath); QPainterPath *path = qscriptvalue_cast(ctx->argument(0)); if (!path) { return ctx->throwError(QScriptContext::TypeError, "QPainter.prototype.fillPath: argument is not a PainterPath"); } self->fillPath(*path, qscriptvalue_cast(ctx->argument(1))); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue fillRect(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, fillRect); if (ctx->argumentCount() == 5) { // x, y, width, height, brush self->fillRect(ctx->argument(0).toInt32(), ctx->argument(1).toInt32(), ctx->argument(2).toInt32(), ctx->argument(3).toInt32(), qscriptvalue_cast(ctx->argument(4))); } else if (ctx->argumentCount() == 2) { // rect, brush self->fillRect(qscriptvalue_cast(ctx->argument(0)), qscriptvalue_cast(ctx->argument(1))); } return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue font(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, font); return qScriptValueFromValue(eng, self->font()); } ///////////////////////////////////////////////////////////// static QScriptValue hasClipping(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, hasClipping); return QScriptValue(eng, self->hasClipping()); } ///////////////////////////////////////////////////////////// static QScriptValue isActive(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, isActive); return QScriptValue(eng, self->isActive()); } ///////////////////////////////////////////////////////////// static QScriptValue layoutDirection(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, layoutDirection); return QScriptValue(eng, static_cast(self->layoutDirection())); } ///////////////////////////////////////////////////////////// static QScriptValue opacity(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, opacity); return QScriptValue(eng, self->opacity()); } ///////////////////////////////////////////////////////////// static QScriptValue pen(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, pen); return qScriptValueFromValue(eng, self->pen()); } ///////////////////////////////////////////////////////////// static QScriptValue renderHints(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, renderHints); return QScriptValue(eng, static_cast(self->renderHints())); } ///////////////////////////////////////////////////////////// static QScriptValue resetMatrix(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, resetMatrix); self->resetMatrix(); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue resetTransform(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, resetTransform); self->resetTransform(); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue restore(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, restore); self->restore(); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue rotate(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, rotate); self->rotate(ctx->argument(0).toNumber()); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue save(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, save); self->save(); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue scale(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, scale); self->scale(ctx->argument(0).toNumber(), ctx->argument(1).toNumber()); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue setBackground(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, setBackground); self->setBackground(qscriptvalue_cast(ctx->argument(0))); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue setBackgroundMode(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, setBackgroundMode); self->setBackgroundMode(static_cast(ctx->argument(0).toInt32())); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue setBrush(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, setBrush); self->setBrush(qscriptvalue_cast(ctx->argument(0))); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue setBrushOrigin(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, setBrushOrigin); self->setBrushOrigin(qscriptvalue_cast(ctx->argument(0))); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue setClipPath(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, setClipPath); // ### ClipOperation self->setClipPath(qscriptvalue_cast(ctx->argument(0))); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue setClipRect(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, setClipRect); // ### ClipOperation if (ctx->argumentCount() >= 4) { // x, y, width, height [, operation] self->setClipRect(ctx->argument(0).toInt32(), ctx->argument(1).toInt32(), ctx->argument(2).toInt32(), ctx->argument(3).toInt32()); } else if (ctx->argumentCount() >= 1) { // rect [, operation] self->setClipRect(qscriptvalue_cast(ctx->argument(0))); } return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue setClipRegion(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, setClipRegion); // ### ClipOperation self->setClipRegion(qscriptvalue_cast(ctx->argument(0))); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue setClipping(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, setClipping); self->setClipping(ctx->argument(0).toBoolean()); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue setCompositionMode(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, setCompositionMode); self->setCompositionMode(static_cast(ctx->argument(0).toInt32())); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue setFont(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, setFont); self->setFont(qscriptvalue_cast(ctx->argument(0))); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue setLayoutDirection(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, setLayoutDirection); self->setLayoutDirection(static_cast(ctx->argument(0).toInt32())); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue setOpacity(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, setOpacity); self->setOpacity(ctx->argument(0).toNumber()); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue setPen(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, setPen); self->setPen(qscriptvalue_cast(ctx->argument(0))); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue setRenderHint(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, setRenderHint); self->setRenderHint(static_cast(ctx->argument(0).toInt32()), ctx->argument(1).toBoolean()); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue setRenderHints(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, setRenderHints); self->setRenderHints(static_cast(ctx->argument(0).toInt32()), ctx->argument(1).toBoolean()); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue setTransform(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, setTransform); self->setTransform(qscriptvalue_cast(ctx->argument(0))); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue setViewTransformEnabled(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, setViewTransformEnabled); self->setViewTransformEnabled(ctx->argument(0).toBoolean()); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue setViewport(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, setViewport); if (ctx->argumentCount() == 4) { // x, y, width, height self->setViewport(ctx->argument(0).toInt32(), ctx->argument(1).toInt32(), ctx->argument(2).toInt32(), ctx->argument(3).toInt32()); } else if (ctx->argumentCount() == 1) { // rect self->setViewport(qscriptvalue_cast(ctx->argument(0))); } return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue setWindow(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, setWindow); if (ctx->argumentCount() == 4) { // x, y, width, height self->setWindow(ctx->argument(0).toInt32(), ctx->argument(1).toInt32(), ctx->argument(2).toInt32(), ctx->argument(3).toInt32()); } else if (ctx->argumentCount() == 1) { // rect self->setWindow(qscriptvalue_cast(ctx->argument(0))); } return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue setWorldMatrix(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, setWorldMatrix); self->setWorldMatrix(qscriptvalue_cast(ctx->argument(0)), ctx->argument(1).toBoolean()); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue setWorldMatrixEnabled(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, setWorldMatrixEnabled); self->setWorldMatrixEnabled(ctx->argument(0).toBoolean()); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue setWorldTransform(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, setWorldTransform); self->setWorldTransform(qscriptvalue_cast(ctx->argument(0)), ctx->argument(1).toBoolean()); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue shear(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, shear); self->shear(ctx->argument(0).toNumber(), ctx->argument(1).toNumber()); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue strokePath(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, strokePath); QPainterPath *path = qscriptvalue_cast(ctx->argument(0)); if (!path) { return ctx->throwError(QScriptContext::TypeError, "QPainter.prototype.strokePath: argument is not a PainterPath"); } self->strokePath(*path, qscriptvalue_cast(ctx->argument(1))); return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue testRenderHint(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, testRenderHint); return QScriptValue(eng, self->testRenderHint(static_cast(ctx->argument(0).toInt32()))); } ///////////////////////////////////////////////////////////// static QScriptValue transform(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, transform); return qScriptValueFromValue(eng, self->transform()); } ///////////////////////////////////////////////////////////// static QScriptValue translate(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, translate); if (ctx->argumentCount() == 2) { // dx, dy self->translate(ctx->argument(0).toNumber(), ctx->argument(1).toNumber()); } else if (ctx->argumentCount() == 1) { // offset self->translate(qscriptvalue_cast(ctx->argument(0))); } return eng->undefinedValue(); } ///////////////////////////////////////////////////////////// static QScriptValue viewTransformEnabled(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, viewTransformEnabled); return QScriptValue(eng, self->viewTransformEnabled()); } ///////////////////////////////////////////////////////////// static QScriptValue viewport(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, viewport); return qScriptValueFromValue(eng, self->viewport()); } ///////////////////////////////////////////////////////////// static QScriptValue window(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, window); return qScriptValueFromValue(eng, self->window()); } ///////////////////////////////////////////////////////////// static QScriptValue worldMatrix(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, worldMatrix); return qScriptValueFromValue(eng, self->worldMatrix()); } ///////////////////////////////////////////////////////////// static QScriptValue worldMatrixEnabled(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, worldMatrixEnabled); return QScriptValue(eng, self->worldMatrixEnabled()); } ///////////////////////////////////////////////////////////// static QScriptValue worldTransform(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, worldTransform); return qScriptValueFromValue(eng, self->worldTransform()); } ///////////////////////////////////////////////////////////// static QScriptValue toString(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QPainter, toString); return QScriptValue(eng, "QPainter"); } ///////////////////////////////////////////////////////////// QScriptValue constructPainterClass(QScriptEngine *eng) { QScriptValue proto = newPainter(eng, new QPainter()); QScriptValue::PropertyFlags getter = QScriptValue::PropertyGetter; QScriptValue::PropertyFlags setter = QScriptValue::PropertySetter; proto.setProperty("background", eng->newFunction(background), getter); proto.setProperty("background", eng->newFunction(setBackground), setter); proto.setProperty("backgroundMode", eng->newFunction(backgroundMode), getter); proto.setProperty("backgroundMode", eng->newFunction(setBackgroundMode), setter); proto.setProperty("brush", eng->newFunction(brush), getter); proto.setProperty("setBrush", eng->newFunction(setBrush), setter); proto.setProperty("brushOrigin", eng->newFunction(brushOrigin), getter); proto.setProperty("brushOrigin", eng->newFunction(setBrushOrigin), setter); proto.setProperty("clipping", eng->newFunction(hasClipping), getter); proto.setProperty("clipping", eng->newFunction(setClipping), getter); proto.setProperty("clipPath", eng->newFunction(clipPath), getter); proto.setProperty("clipPath", eng->newFunction(setClipPath), setter); proto.setProperty("clipRegion", eng->newFunction(clipRegion), getter); proto.setProperty("clipRegion", eng->newFunction(setClipRegion), setter); proto.setProperty("compositionMode", eng->newFunction(compositionMode), getter); proto.setProperty("compositionMode", eng->newFunction(setCompositionMode), setter); proto.setProperty("font", eng->newFunction(font), getter); proto.setProperty("font", eng->newFunction(setFont), setter); proto.setProperty("layoutDirection", eng->newFunction(layoutDirection), getter); proto.setProperty("layoutDirection", eng->newFunction(setLayoutDirection), setter); proto.setProperty("opacity", eng->newFunction(opacity), getter); proto.setProperty("opacity", eng->newFunction(setOpacity), setter); proto.setProperty("pen", eng->newFunction(pen), getter); proto.setProperty("pen", eng->newFunction(setPen), setter); proto.setProperty("renderHints", eng->newFunction(renderHints), getter); proto.setProperty("renderHints", eng->newFunction(setRenderHints), setter); proto.setProperty("transform", eng->newFunction(transform), getter); proto.setProperty("transform", eng->newFunction(setTransform), getter); proto.setProperty("viewport", eng->newFunction(viewport), getter); proto.setProperty("viewport", eng->newFunction(setViewport), setter); proto.setProperty("viewTransformEnabled", eng->newFunction(viewTransformEnabled), getter); proto.setProperty("viewTransformEnabled", eng->newFunction(setViewTransformEnabled), setter); proto.setProperty("window", eng->newFunction(window), getter); proto.setProperty("window", eng->newFunction(setWindow), setter); proto.setProperty("worldMatrix", eng->newFunction(worldMatrix), getter); proto.setProperty("worldMatrix", eng->newFunction(setWorldMatrix), setter); proto.setProperty("worldTransform", eng->newFunction(worldTransform), getter); proto.setProperty("worldTransform", eng->newFunction(setWorldTransform), setter); proto.setProperty("worldMatrixEnabled", eng->newFunction(worldMatrixEnabled), getter); proto.setProperty("worldMatrixEnabled", eng->newFunction(setWorldMatrixEnabled), setter); proto.setProperty("combinedMatrix", eng->newFunction(combinedMatrix), getter); proto.setProperty("combinedTransform", eng->newFunction(combinedTransform), getter); proto.setProperty("isActive", eng->newFunction(isActive), getter); ADD_METHOD(proto, begin); ADD_METHOD(proto, end); ADD_METHOD(proto, boundingRect); ADD_METHOD(proto, drawChord); ADD_METHOD(proto, drawConvexPolygon); ADD_METHOD(proto, drawArc); ADD_METHOD(proto, drawEllipse); ADD_METHOD(proto, drawImage); ADD_METHOD(proto, drawLine); ADD_METHOD(proto, drawLines); ADD_METHOD(proto, drawPath); ADD_METHOD(proto, drawPicture); ADD_METHOD(proto, drawPie); ADD_METHOD(proto, drawPixmap); ADD_METHOD(proto, drawPoint); ADD_METHOD(proto, drawPoints); ADD_METHOD(proto, drawPolygon); ADD_METHOD(proto, drawPolyline); ADD_METHOD(proto, drawRect); ADD_METHOD(proto, drawRects); ADD_METHOD(proto, drawRoundRect); ADD_METHOD(proto, drawText); ADD_METHOD(proto, drawTiledPixmap); ADD_METHOD(proto, eraseRect); ADD_METHOD(proto, fillPath); ADD_METHOD(proto, fillRect); ADD_METHOD(proto, resetMatrix); ADD_METHOD(proto, resetTransform); ADD_METHOD(proto, restore); ADD_METHOD(proto, rotate); ADD_METHOD(proto, save); ADD_METHOD(proto, scale); ADD_METHOD(proto, setClipRect); ADD_METHOD(proto, setRenderHint); ADD_METHOD(proto, shear); ADD_METHOD(proto, strokePath); ADD_METHOD(proto, testRenderHint); ADD_METHOD(proto, toString); ADD_METHOD(proto, translate); QScript::registerPointerMetaType(eng, proto); qScriptRegisterSequenceMetaType >(eng); QScriptValue ctorFun = eng->newFunction(ctor, proto); ADD_ENUM_VALUE(ctorFun, QPainter, Antialiasing); ADD_ENUM_VALUE(ctorFun, QPainter, TextAntialiasing); ADD_ENUM_VALUE(ctorFun, QPainter, SmoothPixmapTransform); ADD_ENUM_VALUE(ctorFun, QPainter, HighQualityAntialiasing); eng->setDefaultPrototype(qMetaTypeId(), proto); return ctorFun; }