00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
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
00046
00047
00048 int _xoff, _yoff;
00049 KoZoomHandler* m_zoomHandler;
00050
00051
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