You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
koffice/kivio/kiviopart/kiviosdk/kivio_shape_data.h

153 lines
4.3 KiB

/*
* 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 <tqfont.h>
#include <tqcolor.h>
#include <tqdom.h>
#include <tqptrlist.h>
#include <tqstring.h>
#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; //Qt::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 <KivioPoint> *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<KivioPoint> *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