/* * isometricrenderer.h * Copyright 2009-2010, Thorbjørn Lindeijer * * This file is part of libtiled. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef ISOMETRICRENDERER_H #define ISOMETRICRENDERER_H #include "maprenderer.h" namespace Tiled { /** * An isometric map renderer. * * Isometric maps have diamond shaped tiles. This map renderer renders them in * such a way that the map will also be diamond shaped. The X axis points to * the bottom right while the Y axis points to the bottom left. */ class TILEDSHARED_EXPORT IsometricRenderer : public MapRenderer { public: IsometricRenderer(const Map *map) : MapRenderer(map) {} QSize mapSize() const; QRect boundingRect(const QRect &rect) const; QRectF boundingRect(const MapObject *object) const; QPainterPath shape(const MapObject *object) const; void drawGrid(QPainter *painter, const QRectF &rect) const; void drawTileLayer(QPainter *painter, const TileLayer *layer, const QRectF &exposed = QRectF()) const; void drawTileSelection(QPainter *painter, const QRegion ®ion, const QColor &color, const QRectF &exposed) const; void drawMapObject(QPainter *painter, const MapObject *object, const QColor &color) const; using MapRenderer::pixelToTileCoords; QPointF pixelToTileCoords(qreal x, qreal y) const; using MapRenderer::tileToPixelCoords; QPointF tileToPixelCoords(qreal x, qreal y) const; private: QPolygonF tileRectToPolygon(const QRect &rect) const; QPolygonF tileRectToPolygon(const QRectF &rect) const; }; } // namespace Tiled #endif // ISOMETRICRENDERER_H