// Copyright (C) 2003 Dominique Devriese // 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 KIG_OBJECTS_OBJECT_DRAWER_H #define KIG_OBJECTS_OBJECT_DRAWER_H #include #include class ObjectImp; class KigPainter; class Coordinate; class KigWidget; class Rect; /** * A class holding some information about how a certain object is * drawn on the window. * * An ObjectDrawer is used by an ObjectHolder to keep information * about how to draw an ObjectImp on the window. It is really nothing * more than a struct with some convenience methods. It does not have * any virtual methods, or have any complex semantics. It keeps * information like the thickness of an object, its color, and whether * or not it is hidden. * * \note The default width of an object depends on its type. E.g. A * point is by default drawn at width 5, a line at width 1. * Therefore, there is a special width -1, which means "the default * width for this object". */ class ObjectDrawer { TQColor mcolor; bool mshown; int mwidth; Qt::PenStyle mstyle; int mpointstyle; public: /** * Construct a new ObjectDrawer with a default color ( TQt::blue ), * width ( -1 ), shown state ( true ), PenStyle ( TQt::SolidLine ), * and pointstyle ( 0 ) */ ObjectDrawer(); ObjectDrawer( const TQColor& color, int width = -1, bool shown = true, Qt::PenStyle = Qt::SolidLine, int pointStyle = 0 ); /** * Draw the object \p imp on kigpainter \p p . If \p selected is true, it is * drawn in red, otherwise in its normal color. */ void draw( const ObjectImp& imp, KigPainter& p, bool selected ) const; /** * returns whether the object \p imp contains coordinate \p p . This is * dependent on whether it is shown ( when it will never contain * anything ), and on its width.. */ bool contains( const ObjectImp& imp, const Coordinate& pt, const KigWidget& w, bool nv = false ) const; /** * returns whether the object \p imp is in the rectangle \p r . This is * dependent on whether it is shown and on its width.. */ bool inRect( const ObjectImp& imp, const Rect& r, const KigWidget& w ) const; /** * returns whether the object this ObjectDrawer is responsible for * will be drawn or not.. */ bool shown() const; /** * returns the color that the object will be drawn in */ TQColor color() const; /** * return the width of the object */ int width() const; /** * return PenStyle for all objects except points */ Qt::PenStyle style() const; /** * return pointStyle for points */ int pointStyle() const; /** * return pointStyle trasnformed in a string */ TQString pointStyleToString() const; /** * return style trasnformed in a string */ TQString styleToString() const; /** * returns a new ObjectDrawer that is identical to this one.. except * that the shown state is set to \p s .. */ ObjectDrawer* getCopyShown( bool s ) const; /** * returns a new ObjectDrawer that is identical to this one.. except * that the color is set to \p c .. */ ObjectDrawer* getCopyColor( const TQColor& c ) const; /** * returns a new ObjectDrawer that is identical to this one.. except * that the width is set to \p w .. */ ObjectDrawer* getCopyWidth( int w ) const; /** * returns a new ObjectDrawer that is identical to this one.. except * that the PenStyle state is set to \p s .. */ ObjectDrawer* getCopyStyle( Qt::PenStyle s ) const; /** * returns a new ObjectDrawer that is identical to this one.. except * that the pointStyle state is set to \p p .. */ ObjectDrawer* getCopyPointStyle( int p ) const; /** * Note that this returns a valid point style in every case, even if * the given \p style string is unknown. In that case it returns a * default value. */ static int pointStyleFromString( const TQString& style ); /** * Note that this returns a valid style in every case, even if the * given \p style string is unknown. In that case it returns a default * value. */ static Qt::PenStyle styleFromString( const TQString& style ); }; #endif