/* * This file is part of Chalk * * Copyright (c) 2006 Cyrille Berger * * This program 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 of the License, or * (at your option) any later version. * * 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 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. */ #ifndef KIS_GRID_DRAWER_H #define KIS_GRID_DRAWER_H #include #include #include #include "kis_types.h" #include "kis_point.h" class KisSubPerspectiveGrid; class GridDrawer { public: GridDrawer() {} virtual ~GridDrawer() {} public: void drawGrid(KisImageSP image, const TQRect& wr); void drawPerspectiveGrid(KisImageSP image, const TQRect& wr, const KisSubPerspectiveGrid* grid); virtual void setPen(const TQPen& pen) = 0; virtual void drawLine(TQ_INT32 x1, TQ_INT32 y1, TQ_INT32 x2, TQ_INT32 y2) = 0; inline void drawLine(const TQPoint& p1, const TQPoint& p2) { drawLine(p1.x(), p1.y(), p2.x(), p2.y() ); } inline void drawLine(const KisPoint* p1, const KisPoint* p2) { drawLine( p1->roundTQPoint(), p2->roundTQPoint()); } private: Qt::PenStyle gs2style(TQ_UINT32 s); }; class TQPainterGridDrawer : public GridDrawer { public: TQPainterGridDrawer(TQPainter *p) { m_painter = p; } virtual void setPen(const TQPen& pen) { m_painter->setPen(pen); } virtual void drawLine(TQ_INT32 x1, TQ_INT32 y1, TQ_INT32 x2, TQ_INT32 y2) { m_painter->drawLine(x1, y1, x2, y2); } private: TQPainter *m_painter; }; class OpenGLGridDrawer : public GridDrawer { public: OpenGLGridDrawer(); virtual ~OpenGLGridDrawer(); virtual void setPen(const TQPen& pen); virtual void drawLine(TQ_INT32 x1, TQ_INT32 y1, TQ_INT32 x2, TQ_INT32 y2); }; #endif