// This is the SIP interface definition for QCanvas, QCanvasEllipse, // QCanvasItem, QCanvasItemList, QCanvasLine, QCanvasPixmap, // QCanvasPixmapArray, QCanvasPolygon, QCanvasPolygonalItem, QCanvasRectangle, // QCanvasSpline, QCanvasSprite, QCanvasText and QCanvasView. // // Copyright (c) 2007 // Riverbank Computing Limited // // This file is part of PyQt. // // This copy of PyQt is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by the Free // Software Foundation; either version 2, or (at your option) any later // version. // // PyQt is supplied 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 General Public License along with // PyQt; see the file LICENSE. If not, write to the Free Software Foundation, // Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. %ExportedDoc QCanvas (Qt v2.2+) QCanvas is fully implemented. QCanvasEllipse (Qt v2.2+) QCanvasEllipse is fully implemented. QCanvasItem (Qt v2.2+) QCanvasItem is fully implemented. QCanvasItemList (Qt v2.2+) This class isn't implemented. Whenever a QCanvasItemList is the return type of a function or the type of an argument, a Python list of QCanvasItem instances is used instead. QCanvasLine (Qt v2.2+) QCanvasLine is fully implemented. QCanvasPixmap (Qt v2.2+) QCanvasPixmap is fully implemented. QCanvasPixmapArray (Qt v2.2+) QPixmapArray QList<QPixmap> pixmaps QList<QPoint> hotspots The pixmaps argument is a Python list of QPixmap instances, and the hotspots argument is a Python list of QPoint instances. (Qt v2.2.0 - Qt v2.3.1) QPixmapArray QValueList<QPixmap> pixmaps QPointArray hotspots = QPointArray() The pixmaps argument is a Python list of QPixmap instances. (Qt v3+) QCanvasPolygon (Qt v2.2+) QCanvasPolygon is fully implemented. QCanvasPolygonalItem (Qt v2.2+) QCanvasPolygonalItem is fully implemented. QCanvasRectangle (Qt v2.2+) QCanvasRectangle is fully implemented. QCanvasSpline (Qt v3.0+) QCanvasSpline is fully implemented. QCanvasSprite (Qt v2.2+) QCanvasSprite is fully implemented. QCanvasText (Qt v2.2+) QCanvasText is fully implemented. QCanvasView (Qt v2.2+) QCanvasView is fully implemented. %End %If (Qt_2_2_0 -) %MappedType QCanvasItemList { %TypeHeaderCode #include %End %ConvertFromTypeCode // Convert to a Python list of QCanvasItem instances. int i; PyObject *l; // Create the list. if ((l = PyList_New(sipCpp -> count())) == NULL) return NULL; // Get it. i = 0; for (QCanvasItemList::Iterator it = sipCpp -> begin(); it != sipCpp -> end(); ++it) { PyObject *ci; if ((ci = sipConvertFromInstance(*it,sipClass_QCanvasItem,sipTransferObj)) == NULL || PyList_SetItem(l,i,ci) < 0) { Py_XDECREF(ci); Py_DECREF(l); return NULL; } ++i; } return l; %End %ConvertToTypeCode // At the moment this will never be called, so provide a null // implementation. if (sipIsErr == NULL) return PyList_Check(sipPy); PyErr_Format(PyExc_TypeError,"Converting to QCanvasItemList not yet implemented"); *sipIsErr = 1; return 0; %End }; class QCanvasItem : Qt { %TypeHeaderCode #include %End public: QCanvasItem(QCanvas * /TransferThis/); %ConvertToSubClassCode Py_BEGIN_ALLOW_THREADS // Use the numeric type values for compatibility with Qt v2. switch (sipCpp -> rtti()) { case 1: sipClass = sipClass_QCanvasSprite; break; case 2: sipClass = sipClass_QCanvasPolygonalItem; break; case 3: sipClass = sipClass_QCanvasText; break; case 4: sipClass = sipClass_QCanvasPolygon; break; case 5: sipClass = sipClass_QCanvasRectangle; break; case 6: sipClass = sipClass_QCanvasEllipse; break; case 7: sipClass = sipClass_QCanvasLine; break; #if QT_VERSION >= 0x030000 case 8: sipClass = sipClass_QCanvasSpline; break; #endif default: sipClass = 0; } Py_END_ALLOW_THREADS %End double x() const; double y() const; double z() const; virtual void moveBy(double,double); void move(double,double); void setX(double); void setY(double); void setZ(double); bool animated() const; virtual void setAnimated(bool); virtual void setVelocity(double,double); void setXVelocity(double); void setYVelocity(double); double xVelocity() const; double yVelocity() const; virtual void advance(int); virtual bool collidesWith(const QCanvasItem *) const = 0; QCanvasItemList collisions(bool) const; virtual void setCanvas(QCanvas * /GetWrapper/); %MethodCode if (sipCpp -> canvas() != a0) { if (a0) sipTransferTo(sipSelf,a0Wrapper); else sipTransferBack(sipSelf); } Py_BEGIN_ALLOW_THREADS sipSelfWasArg ? sipCpp->QCanvasItem::setCanvas(a0) : sipCpp->setCanvas(a0); Py_END_ALLOW_THREADS %End virtual void draw(QPainter &) = 0; void show(); void hide(); virtual void setVisible(bool); %If (- Qt_3_0_0) bool visible() const; %End %If (Qt_3_0_0 -) bool isVisible() const; %End virtual void setSelected(bool); %If (- Qt_3_0_0) bool selected() const; %End %If (Qt_3_0_0 -) bool isSelected() const; %End virtual void setEnabled(bool); %If (- Qt_3_0_0) bool enabled() const; %End %If (Qt_3_0_0 -) bool isEnabled() const; %End virtual void setActive(bool); %If (- Qt_3_0_0) bool active() const; %End %If (Qt_3_0_0 -) bool isActive() const; %End %If (Qt_3_0_0 -) enum RttiValues { Rtti_Item, Rtti_Sprite, Rtti_PolygonalItem, Rtti_Text, Rtti_Polygon, Rtti_Rectangle, Rtti_Ellipse, Rtti_Line, Rtti_Spline }; %End virtual int rtti() const; virtual QRect boundingRect() const = 0; virtual QRect boundingRectAdvanced() const; QCanvas *canvas() const; protected: %If (Qt_3_0_0 -) void update(); %End private: virtual bool collidesWith(const QCanvasSprite *, const QCanvasPolygonalItem *, const QCanvasRectangle *, const QCanvasEllipse *, const QCanvasText *) const = 0; }; class QCanvas : QObject { %TypeHeaderCode #include %End public: QCanvas(QObject * /TransferThis/ = 0,const char * = 0); QCanvas(int,int); QCanvas(QPixmap,int,int,int,int); %ConvertToSubClassCode static struct class_graph { const char *name; sipWrapperType **type; int yes, no; } graph[] = { {sipName_QCanvasView, &sipClass_QCanvasView, -1, 1}, {sipName_QCanvas, &sipClass_QCanvas, -1, -1}, }; int i = 0; sipClass = NULL; do { struct class_graph *cg = &graph[i]; if (cg->name != NULL && sipCpp->inherits(cg->name)) { sipClass = *cg->type; i = cg->yes; } else i = cg->no; } while (i >= 0); %End virtual void setTiles(QPixmap,int,int,int,int); virtual void setBackgroundPixmap(const QPixmap &); QPixmap backgroundPixmap() const; virtual void setBackgroundColor(const QColor &); QColor backgroundColor() const; virtual void setTile(int,int,int); int tile(int,int) const; int tilesHorizontally() const; int tilesVertically() const; int tileWidth() const; int tileHeight() const; virtual void resize(int,int); int width() const; int height() const; QSize size() const; %If (Qt_3_0_0 -) QRect rect() const; %End bool onCanvas(int,int) const; bool onCanvas(const QPoint &) const; bool validChunk(int,int) const; bool validChunk(const QPoint &) const; int chunkSize() const; virtual void retune(int,int = 100); // These next three are marked as internal in the Qt v2.x // documentation. // bool sameChunk() const; // virtual void setChangedChunk(int,int); // virtual void setChangedChunkContaining(int,int); virtual void setAllChanged(); virtual void setChanged(const QRect &); %If (Qt_3_0_0 -) virtual void setUnchanged(const QRect &); %End QCanvasItemList allItems(); QCanvasItemList collisions(const QPoint &) const; QCanvasItemList collisions(const QRect &) const; QCanvasItemList collisions(const QPointArray &,const QCanvasItem *, bool) const; %If (Qt_3_0_0 -) void drawArea(const QRect &,QPainter *,bool = 0); %End virtual void setAdvancePeriod(int); virtual void setUpdatePeriod(int); virtual void setDoubleBuffering(bool); signals: void resized(); public slots: virtual void advance(); virtual void update(); protected: virtual void drawBackground(QPainter &,const QRect &); virtual void drawForeground(QPainter &,const QRect &); private: %If (Qt_3_1_0 -) QCanvas(const QCanvas &); %End }; class QCanvasView : QScrollView { %TypeHeaderCode #include %End public: %If (- Qt_3_0_0) QCanvasView(QCanvas * = 0,QWidget * /TransferThis/ = 0, const char * = 0,WFlags = 0); %End %If (Qt_3_0_0 -) QCanvasView(QWidget * /TransferThis/ = 0,const char * = 0,WFlags = 0); QCanvasView(QCanvas *,QWidget * /TransferThis/ = 0,const char * = 0, WFlags = 0); %End QCanvas* canvas() const; void setCanvas(QCanvas *); %If (Qt_3_0_0 -) const QWMatrix &worldMatrix() const; const QWMatrix &inverseWorldMatrix() const; bool setWorldMatrix(const QWMatrix &); %End protected: void drawContents(QPainter *,int,int,int,int); QSize sizeHint() const; private: %If (Qt_3_1_0 -) QCanvasView(const QCanvasView &); %End }; class QCanvasPixmap : QPixmap { %TypeHeaderCode #include %End public: QCanvasPixmap(const QString &); QCanvasPixmap(const QImage &); %If (- Qt_3_0_0) QCanvasPixmap(const QPixmap &,QPoint); %End %If (Qt_3_0_0 -) QCanvasPixmap(const QPixmap &,const QPoint &); %End int offsetX() const; int offsetY() const; void setOffset(int,int); private: %If (Qt_3_1_0 -) QCanvasPixmap(const QCanvasPixmap &); %End }; class QCanvasPixmapArray { %TypeHeaderCode #include %End public: QCanvasPixmapArray(); QCanvasPixmapArray(const QString &,int = 0); %If (- Qt_3_0_0) QCanvasPixmapArray(QPtrList,QPtrList); %End %If (Qt_3_0_0 -) QCanvasPixmapArray(QValueList,QPointArray = QPointArray()); %End bool readPixmaps(const QString &,int = 0) /ReleaseGIL/; bool readCollisionMasks(const QString &) /ReleaseGIL/; %If (Qt_3_0_0 -) bool isValid() const; %End QCanvasPixmap *image(int) const; void setImage(int,QCanvasPixmap * /Transfer/); uint count() const; private: %If (Qt_3_1_0 -) QCanvasPixmapArray(const QCanvasPixmapArray &); %End }; class QCanvasSprite : QCanvasItem { %TypeHeaderCode #include %End public: QCanvasSprite(QCanvasPixmapArray *,QCanvas * /TransferThis/); void setSequence(QCanvasPixmapArray *); void move(double,double); virtual void move(double,double,int); void setFrame(int); %If (Qt_3_0_0 -) enum FrameAnimationType { Cycle, Oscillate }; virtual void setFrameAnimation(FrameAnimationType = Cycle,int = 1, int = 0); %End int frame() const; int frameCount() const; %If (- Qt_3_0_0) virtual int rtti() const; %End %If (Qt_3_0_0 -) int rtti() const; %End bool collidesWith(const QCanvasItem *) const; QRect boundingRect() const; %If (Qt_3_0_0 -) int width() const; int height() const; int leftEdge() const; int topEdge() const; int rightEdge() const; int bottomEdge() const; int leftEdge(int) const; int topEdge(int) const; int rightEdge(int) const; int bottomEdge(int) const; QCanvasPixmap *image() const; virtual QCanvasPixmap *imageAdvanced() const; QCanvasPixmap *image(int) const; // This is really virtual, but we want to use the super-class's virtual // handler. Having to do this is really a SIP bug. void advance(int); void draw(QPainter &); %End protected: %If (- Qt_3_0_0) void draw(QPainter &); int width() const; int height() const; int absX() const; int absY() const; int absX2() const; int absY2() const; int absX(int) const; int absY(int) const; int absX2(int) const; int absY2(int) const; QCanvasPixmap *image() const; virtual QCanvasPixmap *imageAdvanced() const; QCanvasPixmap *image(int) const; %End private: %If (Qt_3_1_0 -) QCanvasSprite(const QCanvasSprite &); %End }; class QCanvasPolygonalItem : QCanvasItem { %TypeHeaderCode #include %End public: QCanvasPolygonalItem(QCanvas * /TransferThis/); bool collidesWith(const QCanvasItem *) const; virtual void setPen(QPen); virtual void setBrush(QBrush); QPen pen() const; QBrush brush() const; virtual QPointArray areaPoints() const = 0; virtual QPointArray areaPointsAdvanced() const; QRect boundingRect() const; int rtti() const; protected: void draw(QPainter &); virtual void drawShape(QPainter &) = 0; bool winding() const; void setWinding(bool); %If (Qt_3_1_0 -) void invalidate(); bool isValid() const; %End }; class QCanvasRectangle : QCanvasPolygonalItem { %TypeHeaderCode #include %End public: QCanvasRectangle(QCanvas * /TransferThis/); QCanvasRectangle(const QRect &,QCanvas * /TransferThis/); QCanvasRectangle(int,int,int,int,QCanvas * /TransferThis/); int width() const; int height() const; void setSize(int,int); QSize size() const; QPointArray areaPoints() const; QRect rect() const; bool collidesWith(const QCanvasItem *) const; int rtti() const; protected: void drawShape(QPainter &); QPointArray chunks() const; }; class QCanvasPolygon : QCanvasPolygonalItem { %TypeHeaderCode #include %End public: QCanvasPolygon(QCanvas * /TransferThis/); void setPoints(QPointArray); QPointArray points() const; void moveBy(double,double); QPointArray areaPoints() const; int rtti() const; protected: void drawShape(QPainter &); }; %If (Qt_3_0_0 -) class QCanvasSpline : QCanvasPolygon { %TypeHeaderCode #include %End public: QCanvasSpline(QCanvas * /TransferThis/); void setControlPoints(QPointArray,bool = 1); QPointArray controlPoints() const; bool closed() const; int rtti() const; }; %End class QCanvasLine : QCanvasPolygonalItem { %TypeHeaderCode #include %End public: QCanvasLine(QCanvas * /TransferThis/); void setPoints(int,int,int,int); QPoint startPoint() const; QPoint endPoint() const; int rtti() const; void setPen(QPen); %If (Qt_3_3_0 -) void moveBy(double,double); %End protected: void drawShape(QPainter &); QPointArray areaPoints() const; }; class QCanvasEllipse : QCanvasPolygonalItem { %TypeHeaderCode #include %End public: QCanvasEllipse(QCanvas * /TransferThis/); QCanvasEllipse(int,int,QCanvas * /TransferThis/); QCanvasEllipse(int,int,int,int,QCanvas * /TransferThis/); int width() const; int height() const; void setSize(int,int); void setAngles(int,int); int angleStart() const; int angleLength() const; QPointArray areaPoints() const; bool collidesWith(const QCanvasItem *) const; int rtti() const; protected: void drawShape(QPainter &); }; class QCanvasText : QCanvasItem { %TypeHeaderCode #include %End public: QCanvasText(QCanvas * /TransferThis/); QCanvasText(const QString &,QCanvas * /TransferThis/); QCanvasText(const QString &,QFont,QCanvas * /TransferThis/); void setText(const QString &); void setFont(const QFont &); void setColor(const QColor &); QString text() const; QFont font() const; QColor color() const; void moveBy(double,double); int textFlags() const; void setTextFlags(int); QRect boundingRect() const; bool collidesWith(const QCanvasItem *) const; %If (- Qt_3_0_0) virtual int rtti() const; %End %If (Qt_3_0_0 -) int rtti() const; %End protected: virtual void draw(QPainter &); private: %If (Qt_3_1_0 -) QCanvasText(const QCanvasText &); %End }; %End