/* * Kivio - Visual Modelling and Flowcharting * Copyright (C) 2000-2001 theKompany.com & Dave Marotti * * 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 KIVIO_SHAPE_DATA_H #define KIVIO_SHAPE_DATA_H #include #include #include #include #include #include "kivio_point.h" class KivioFillStyle; class KivioLineStyle; class KivioTextStyle; class KivioTextShapeData { public: KivioTextShapeData(); TQString m_text; // The text inside this shape TQColor m_textColor; // The text color TQFont m_textFont; // The text font bool m_isHtml; // Is the text HTML formatted? int m_hTextAlign, m_vTextAlign; // Horizontal and vertical text alignment flags }; /** * A class containing all the data for a KivioShape. * * @author Dave Marotti */ class KivioShapeData { public: /** * The possible shape types. */ typedef enum { kstNone = 0, kstArc, kstPie, kstLineArray, kstPolyline, kstPolygon, kstBezier, kstRectangle, kstRoundRectangle, kstEllipse, kstOpenPath, kstClosedPath, kstTextBox } KivioShapeType; protected: friend class KivioShape; TQPtrList *m_pOriginalPointList; // Original point list loaded from an SML file KivioShapeType m_shapeType; // The shape type KivioPoint m_position, m_dimensions; // The position and dimensions KivioFillStyle *m_pFillStyle; // The fill style // TQColor m_fgColor; // The foreground color // float m_lineWidth; // The line width KivioLineStyle *m_pLineStyle; TQString m_name; // The name of this shape KivioTextStyle *m_pTextData; // A pointer to text data (if applicable, e.g. TextBox) public: KivioShapeData(); KivioShapeData( const KivioShapeData & ); virtual ~KivioShapeData(); virtual void copyInto( KivioShapeData *pTarget ) const; virtual bool loadXML( const TQDomElement & ); virtual TQDomElement saveXML( TQDomDocument & ); KivioShapeType shapeType() const { return m_shapeType; } void setShapeType( KivioShapeType st ); static KivioShapeType shapeTypeFromString( const TQString & ); TQPtrList *pointList() { return m_pOriginalPointList; } KivioFillStyle *fillStyle() const { return m_pFillStyle; } KivioLineStyle *lineStyle() const { return m_pLineStyle; } void setLineStyle(KivioLineStyle ls); const TQString &name() const { return m_name; } void setName( const TQString &newName ) { m_name=newName; } // Dimensions / Position KivioPoint *position() { return &m_position; } KivioPoint *dimensions() { return &m_dimensions; } double x() { return m_position.x(); } double y() { return m_position.y(); } double w() { return m_dimensions.x(); } double h() { return m_dimensions.y(); } // Text functions TQString text(); void setText( const TQString &newText ); bool isHtml() const; void setIsHtml( bool b ); int hTextAlign() const; void setHTextAlign( int i ); int vTextAlign() const; void setVTextAlign( int i ); TQFont textFont(); void setTextFont( const TQFont &f ); TQColor textColor(); void setTextColor( TQColor c ); void setTextStyle( KivioTextStyle * ); }; #endif