kivio

kivio_sml_stencil.h

00001 /*
00002  * Kivio - Visual Modelling and Flowcharting
00003  * Copyright (C) 2000-2003 theKompany.com & Dave Marotti,
00004  *                         Peter Simonsson
00005  *
00006  * This program is free software; you can redistribute it and/or
00007  * modify it under the terms of the GNU General Public License
00008  * as published by the Free Software Foundation; either version 2
00009  * of the License, or (at your option) any later version.
00010  *
00011  * This program is distributed in the hope that it will be useful,
00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014  * GNU General Public License for more details.
00015  *
00016  * You should have received a copy of the GNU General Public License
00017  * along with this program; if not, write to the Free Software
00018  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
00019  */
00020 #ifndef KIVIO_SML_STENCIL_H
00021 #define KIVIO_SML_STENCIL_H
00022 
00023 #include <qptrlist.h>
00024 
00025 #include "kivio_stencil.h"
00026 class QDomElement;
00027 class QColor;
00028 class KivioConnectorTarget;
00029 class KivioFillStyle;
00030 class KivioIntraStencilData;
00031 class KivioLineStyle;
00032 class KivioPainter;
00033 class KivioShape;
00034 class KoZoomHandler;
00035 
00036 class KivioSMLStencil : public KivioStencil
00037 {
00038 protected:
00039     friend class KivioSMLStencilSpawner;
00040 
00041     QPtrList<KivioShape> *m_pShapeList;
00042     KivioShape *m_pSubSelection;
00043     QPtrList<KivioConnectorTarget> *m_pConnectorTargets;
00044 
00045     // Offsets and scale which get reused in between
00046     // various drawing routines.  To save time and
00047     // stack space, we keep them around in the class
00048     int _xoff, _yoff;
00049     KoZoomHandler* m_zoomHandler;
00050 
00051 // Drawing routines
00052 protected:
00053     void drawOutlineArc( KivioShape *, KivioIntraStencilData * );
00054     void drawOutlineBezier( KivioShape *, KivioIntraStencilData * );
00055     void drawOutlineOpenPath( KivioShape *, KivioIntraStencilData * );
00056     void drawOutlineClosedPath( KivioShape *, KivioIntraStencilData * );
00057     void drawOutlinePie( KivioShape *, KivioIntraStencilData * );
00058     void drawOutlineEllipse( KivioShape *, KivioIntraStencilData * );
00059     void drawOutlineLineArray( KivioShape *, KivioIntraStencilData * );
00060     void drawOutlineRectangle( KivioShape *, KivioIntraStencilData * );
00061     void drawOutlineRoundRectangle( KivioShape *, KivioIntraStencilData * );
00062     void drawOutlinePolygon( KivioShape *, KivioIntraStencilData * );
00063     void drawOutlinePolyline( KivioShape *, KivioIntraStencilData * );
00064     void drawOutlineTextBox( KivioShape *, KivioIntraStencilData * );
00065 
00066     void drawArc( KivioShape *, KivioIntraStencilData * );
00067     void drawBezier( KivioShape *, KivioIntraStencilData * );
00068     void drawOpenPath( KivioShape *, KivioIntraStencilData * );
00069     void drawClosedPath( KivioShape *, KivioIntraStencilData * );
00070     void drawPie( KivioShape *, KivioIntraStencilData * );
00071     void drawEllipse( KivioShape *, KivioIntraStencilData * );
00072     void drawLineArray( KivioShape *, KivioIntraStencilData * );
00073     void drawRectangle( KivioShape *, KivioIntraStencilData * );
00074     void drawRoundRectangle( KivioShape *, KivioIntraStencilData * );
00075     void drawPolygon( KivioShape *, KivioIntraStencilData * );
00076     void drawPolyline( KivioShape *, KivioIntraStencilData * );
00077     void drawTextBox( KivioShape *, KivioIntraStencilData * );
00078 
00079     bool checkCollisionArc( KivioShape *, KoPoint * );
00080     bool checkCollisionBezier( KivioShape *, KoPoint * );
00081     bool checkCollisionOpenPath( KivioShape *, KoPoint * );
00082     bool checkCollisionClosedPath( KivioShape *, KoPoint * );
00083     bool checkCollisionPie( KivioShape *, KoPoint * );
00084     bool checkCollisionEllipse( KivioShape *, KoPoint * );
00085     bool checkCollisionLineArray( KivioShape *, KoPoint * );
00086     bool checkCollisionRectangle( KivioShape *, KoPoint * );
00087     bool checkCollisionRoundRectangle( KivioShape *, KoPoint * );
00088     bool checkCollisionPolygon( KivioShape *, KoPoint * );
00089     bool checkCollisionPolyline( KivioShape *, KoPoint * );
00090     bool checkCollisionTextBox( KivioShape *, KoPoint * );
00091 
00092 
00093     KivioShape *locateShape( const QString & );
00094     void loadConnectorTargetListXML( const QDomElement & );
00095 
00096 public:
00097     KivioSMLStencil();
00098     virtual ~KivioSMLStencil();
00099 
00100 
00101     virtual bool loadXML( const QDomElement & );
00102     virtual QDomElement saveXML( QDomDocument & );
00103 
00104     virtual QPtrList<KivioShape> *shapeList() { return m_pShapeList; }
00105     virtual KivioShape *subSelection() { return m_pSubSelection; }
00106 
00107     virtual void paintOutline( KivioIntraStencilData * );
00108     virtual void paint( KivioIntraStencilData * );
00109     virtual void paintConnectorTargets( KivioIntraStencilData * );
00110 
00111     virtual KivioStencil *duplicate();
00112 
00113     virtual QColor fgColor();
00114     virtual QColor bgColor();
00115     virtual void setFGColor(QColor);
00116     virtual void setBGColor(QColor);
00117     virtual void setLineWidth(double);
00118     virtual double lineWidth();
00119     virtual void setLinePattern(int p);
00120     virtual int linePattern();
00121     virtual void setFillPattern(int p);
00122     virtual int fillPattern();
00123 
00124     virtual void setTextColor( QColor );
00125     virtual void setTextFont( const QFont & );
00126 
00127     virtual void setHTextAlign(int);
00128     virtual void setVTextAlign(int);
00129 
00130     virtual int hTextAlign();
00131     virtual int vTextAlign();
00132 
00133     virtual QString text();
00134     virtual void setText( const QString & );
00135 
00136     virtual QFont textFont();
00137     virtual QColor textColor();
00138 
00139     virtual KivioCollisionType checkForCollision( KoPoint *, double );
00140 
00141     virtual KivioConnectorTarget *connectToTarget( KivioConnectorPoint *, double );
00142     virtual KivioConnectorTarget *connectToTarget( KivioConnectorPoint *, int );
00143     
00144     virtual KoPoint snapToTarget( const KoPoint& p, double thresh, bool& hit );
00145 
00146     virtual void updateGeometry();
00147 
00148     virtual int generateIds( int );
00149 
00150     virtual int resizeHandlePositions();
00151 
00152     virtual KivioLineStyle lineStyle();
00153     virtual void setLineStyle(KivioLineStyle ls);
00154 
00159     virtual QString getTextBoxName(const KoPoint& p);
00160 
00161     virtual void setText(const QString& text, const QString& name);
00162     virtual QString text(const QString& name);
00163 
00164     virtual void addConnectorTarget(const KoPoint&);
00165     virtual void removeConnectorTarget(const KoPoint&);
00166 
00167     virtual bool hasTextBox() const;
00168 
00169     virtual QColor textColor(const QString& textBoxName);
00170     virtual void setTextColor(const QString& textBoxName, const QColor& color);
00171 
00172     virtual QFont textFont(const QString& textBoxName);
00173     virtual void setTextFont(const QString& textBoxName, const QFont& font);
00174 
00175     virtual int hTextAlign(const QString& textBoxName);
00176     virtual int vTextAlign(const QString& textBoxName);
00177 
00178     virtual void setHTextAlign(const QString& textBoxName, int align);
00179     virtual void setVTextAlign(const QString& textBoxName, int align);
00180 };
00181 
00182 #endif
00183 
00184 
KDE Home | KDE Accessibility Home | Description of Access Keys