summaryrefslogtreecommitdiffstats
path: root/doc/src/snippets/code/doc_src_porting4-canvas.qdoc
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/snippets/code/doc_src_porting4-canvas.qdoc')
-rw-r--r--doc/src/snippets/code/doc_src_porting4-canvas.qdoc116
1 files changed, 116 insertions, 0 deletions
diff --git a/doc/src/snippets/code/doc_src_porting4-canvas.qdoc b/doc/src/snippets/code/doc_src_porting4-canvas.qdoc
new file mode 100644
index 0000000..e386607
--- /dev/null
+++ b/doc/src/snippets/code/doc_src_porting4-canvas.qdoc
@@ -0,0 +1,116 @@
+//! [0]
+item->scene().sceneRect().intersects(item->sceneBoundingRect());
+//! [0]
+
+
+//! [1]
+class TileScene : public QGraphicsScene
+{
+public:
+ ...
+
+ void setTiles(const QPixmap &pixmap, int h, int v,
+ int tileHeight, int tileWidth);
+ void setTile(int x, int y, int tilenum);
+
+private:
+ QRect tileRect(int x, int y) const;
+ QRect tileRect(int tileNum) const;
+
+ QVector<QVector<int> > tiles;
+ QPixmap tilePixmap;
+ int tileW, tileH;
+ int hTiles, vTiles;
+};
+//! [1]
+
+
+//! [2]
+void TileScene::setTiles(const QPixmap &pixmap, int h, int v,
+ int tileHeight, int tileWidth)
+{
+ tilePixmap = pixmap;
+ tileW = tileWidth;
+ tileH = tileHeight;
+ hTiles = h;
+ vTiles = v;
+
+ tiles.resize(v);
+ for (int y = 0; y < v; ++y)
+ tiles[y].resize(h);
+}
+//! [2]
+
+
+//! [3]
+void TileScene::setTile(int x, int y, int tilenum)
+{
+ tiles[y][x] = tilenum;
+ update(tileRect(x, y));
+}
+//! [3]
+
+
+//! [4]
+QRect TileScene::tileRect(int x, int y) const
+{
+ return QRect(x * tileW, y * tileH, tileW, tileH);
+}
+//! [4]
+
+
+//! [5]
+QRect TileScene::tileRect(int tileNum) const
+{
+ int numHTiles = tilePixmap.width() / tileW;
+ int numVTiles = tilePixmap.height() / tileH;
+ return tileRect(tileNum % numHTiles, tileNum / numHTiles);
+}
+//! [5]
+
+
+//! [6]
+void drawBackground(QPainter *painter, const QRectF &exposed)
+{
+ for (int y = 0; y < vTiles; ++y) {
+ for (int x = 0; x < hTiles; ++x) {
+ QRect destRect = tileRect(x, y);
+ if (exposed.intersects(destRect)) {
+ painter->drawPixmap(destRect, tilePixmap,
+ tileRect(tiles[y][x]));
+ }
+ }
+ }
+}
+//! [6]
+
+
+//! [7]
+ // Before
+ Q3CanvasEllipse ellipse(10, 10);
+
+ // After
+ QGraphicsEllipseItem ellipse(-5, -5, 10, 10);
+//! [7]
+
+
+//! [8]
+static QPainterPath fromControlPoints(const Q3PointArray &pa)
+{
+ QPainterPath path;
+ path.moveTo(pa[0]);
+ for (int i = 1; i < pa.size(); i += 3)
+ path.cubicTo(pa[i], pa[(i + 1) % pa.size()], pa[(i + 2) % pa.size()]);
+ return path;
+}
+//! [8]
+
+
+//! [9]
+wildcardPath.replace("%1", "*");
+QFileInfo fi(wildcardPath);
+
+QList<QPixmap> frames;
+foreach (QString entry, QDir(fi.path(), fi.fileName()).entryList())
+ frames << QPixmap(fi.path() + "/" + entry);
+//! [9]