20#ifndef KIVIO_SML_STENCIL_H
21#define KIVIO_SML_STENCIL_H
25#include "kivio_stencil.h"
28class KivioConnectorTarget;
30class KivioIntraStencilData;
36class KivioSMLStencil :
public KivioStencil
39 friend class KivioSMLStencilSpawner;
41 TQPtrList<KivioShape> *m_pShapeList;
42 KivioShape *m_pSubSelection;
43 TQPtrList<KivioConnectorTarget> *m_pConnectorTargets;
49 KoZoomHandler* m_zoomHandler;
53 void drawOutlineArc( KivioShape *, KivioIntraStencilData * );
54 void drawOutlineBezier( KivioShape *, KivioIntraStencilData * );
55 void drawOutlineOpenPath( KivioShape *, KivioIntraStencilData * );
56 void drawOutlineClosedPath( KivioShape *, KivioIntraStencilData * );
57 void drawOutlinePie( KivioShape *, KivioIntraStencilData * );
58 void drawOutlineEllipse( KivioShape *, KivioIntraStencilData * );
59 void drawOutlineLineArray( KivioShape *, KivioIntraStencilData * );
60 void drawOutlineRectangle( KivioShape *, KivioIntraStencilData * );
61 void drawOutlineRoundRectangle( KivioShape *, KivioIntraStencilData * );
62 void drawOutlinePolygon( KivioShape *, KivioIntraStencilData * );
63 void drawOutlinePolyline( KivioShape *, KivioIntraStencilData * );
64 void drawOutlineTextBox( KivioShape *, KivioIntraStencilData * );
66 void drawArc( KivioShape *, KivioIntraStencilData * );
67 void drawBezier( KivioShape *, KivioIntraStencilData * );
68 void drawOpenPath( KivioShape *, KivioIntraStencilData * );
69 void drawClosedPath( KivioShape *, KivioIntraStencilData * );
70 void drawPie( KivioShape *, KivioIntraStencilData * );
71 void drawEllipse( KivioShape *, KivioIntraStencilData * );
72 void drawLineArray( KivioShape *, KivioIntraStencilData * );
73 void drawRectangle( KivioShape *, KivioIntraStencilData * );
74 void drawRoundRectangle( KivioShape *, KivioIntraStencilData * );
75 void drawPolygon( KivioShape *, KivioIntraStencilData * );
76 void drawPolyline( KivioShape *, KivioIntraStencilData * );
77 void drawTextBox( KivioShape *, KivioIntraStencilData * );
79 bool checkCollisionArc( KivioShape *, KoPoint * );
80 bool checkCollisionBezier( KivioShape *, KoPoint * );
81 bool checkCollisionOpenPath( KivioShape *, KoPoint * );
82 bool checkCollisionClosedPath( KivioShape *, KoPoint * );
83 bool checkCollisionPie( KivioShape *, KoPoint * );
84 bool checkCollisionEllipse( KivioShape *, KoPoint * );
85 bool checkCollisionLineArray( KivioShape *, KoPoint * );
86 bool checkCollisionRectangle( KivioShape *, KoPoint * );
87 bool checkCollisionRoundRectangle( KivioShape *, KoPoint * );
88 bool checkCollisionPolygon( KivioShape *, KoPoint * );
89 bool checkCollisionPolyline( KivioShape *, KoPoint * );
90 bool checkCollisionTextBox( KivioShape *, KoPoint * );
93 KivioShape *locateShape(
const TQString & );
94 void loadConnectorTargetListXML(
const TQDomElement & );
98 virtual ~KivioSMLStencil();
101 virtual bool loadXML(
const TQDomElement & );
102 virtual TQDomElement saveXML( TQDomDocument & );
104 virtual TQPtrList<KivioShape> *shapeList() {
return m_pShapeList; }
105 virtual KivioShape *subSelection() {
return m_pSubSelection; }
107 virtual void paintOutline( KivioIntraStencilData * );
108 virtual void paint( KivioIntraStencilData * );
109 virtual void paintConnectorTargets( KivioIntraStencilData * );
111 virtual KivioStencil *duplicate();
113 virtual TQColor fgColor();
114 virtual TQColor bgColor();
115 virtual void setFGColor(TQColor);
116 virtual void setBGColor(TQColor);
117 virtual void setLineWidth(
double);
118 virtual double lineWidth();
119 virtual void setLinePattern(
int p);
120 virtual int linePattern();
121 virtual void setFillPattern(
int p);
122 virtual int fillPattern();
124 virtual void setTextColor( TQColor );
125 virtual void setTextFont(
const TQFont & );
127 virtual void setHTextAlign(
int);
128 virtual void setVTextAlign(
int);
130 virtual int hTextAlign();
131 virtual int vTextAlign();
133 virtual TQString text();
134 virtual void setText(
const TQString & );
136 virtual TQFont textFont();
137 virtual TQColor textColor();
139 virtual KivioCollisionType checkForCollision( KoPoint *,
double );
141 virtual KivioConnectorTarget *connectToTarget( KivioConnectorPoint *,
double );
142 virtual KivioConnectorTarget *connectToTarget( KivioConnectorPoint *,
int );
144 virtual KoPoint snapToTarget(
const KoPoint& p,
double thresh,
bool& hit );
146 virtual void updateGeometry();
148 virtual int generateIds(
int );
150 virtual int resizeHandlePositions();
152 virtual KivioLineStyle lineStyle();
153 virtual void setLineStyle(KivioLineStyle ls);
159 virtual TQString getTextBoxName(
const KoPoint& p);
161 virtual void setText(
const TQString& text,
const TQString& name);
162 virtual TQString text(
const TQString& name);
164 virtual void addConnectorTarget(
const KoPoint&);
165 virtual void removeConnectorTarget(
const KoPoint&);
167 virtual bool hasTextBox()
const;
169 virtual TQColor textColor(
const TQString& textBoxName);
170 virtual void setTextColor(
const TQString& textBoxName,
const TQColor& color);
172 virtual TQFont textFont(
const TQString& textBoxName);
173 virtual void setTextFont(
const TQString& textBoxName,
const TQFont& font);
175 virtual int hTextAlign(
const TQString& textBoxName);
176 virtual int vTextAlign(
const TQString& textBoxName);
178 virtual void setHTextAlign(
const TQString& textBoxName,
int align);
179 virtual void setVTextAlign(
const TQString& textBoxName,
int align);