kivio

kivio_sml_stencil.h
1/*
2 * Kivio - Visual Modelling and Flowcharting
3 * Copyright (C) 2000-2003 theKompany.com & Dave Marotti,
4 * Peter Simonsson
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19 */
20#ifndef KIVIO_SML_STENCIL_H
21#define KIVIO_SML_STENCIL_H
22
23#include <tqptrlist.h>
24
25#include "kivio_stencil.h"
26class TQDomElement;
27class TQColor;
28class KivioConnectorTarget;
29class KivioFillStyle;
30class KivioIntraStencilData;
31class KivioLineStyle;
32class KivioPainter;
33class KivioShape;
34class KoZoomHandler;
35
36class KivioSMLStencil : public KivioStencil
37{
38protected:
39 friend class KivioSMLStencilSpawner;
40
41 TQPtrList<KivioShape> *m_pShapeList;
42 KivioShape *m_pSubSelection;
43 TQPtrList<KivioConnectorTarget> *m_pConnectorTargets;
44
45 // Offsets and scale which get reused in between
46 // various drawing routines. To save time and
47 // stack space, we keep them around in the class
48 int _xoff, _yoff;
49 KoZoomHandler* m_zoomHandler;
50
51// Drawing routines
52protected:
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 * );
65
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 * );
78
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 * );
91
92
93 KivioShape *locateShape( const TQString & );
94 void loadConnectorTargetListXML( const TQDomElement & );
95
96public:
97 KivioSMLStencil();
98 virtual ~KivioSMLStencil();
99
100
101 virtual bool loadXML( const TQDomElement & );
102 virtual TQDomElement saveXML( TQDomDocument & );
103
104 virtual TQPtrList<KivioShape> *shapeList() { return m_pShapeList; }
105 virtual KivioShape *subSelection() { return m_pSubSelection; }
106
107 virtual void paintOutline( KivioIntraStencilData * );
108 virtual void paint( KivioIntraStencilData * );
109 virtual void paintConnectorTargets( KivioIntraStencilData * );
110
111 virtual KivioStencil *duplicate();
112
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();
123
124 virtual void setTextColor( TQColor );
125 virtual void setTextFont( const TQFont & );
126
127 virtual void setHTextAlign(int);
128 virtual void setVTextAlign(int);
129
130 virtual int hTextAlign();
131 virtual int vTextAlign();
132
133 virtual TQString text();
134 virtual void setText( const TQString & );
135
136 virtual TQFont textFont();
137 virtual TQColor textColor();
138
139 virtual KivioCollisionType checkForCollision( KoPoint *, double );
140
141 virtual KivioConnectorTarget *connectToTarget( KivioConnectorPoint *, double );
142 virtual KivioConnectorTarget *connectToTarget( KivioConnectorPoint *, int );
143
144 virtual KoPoint snapToTarget( const KoPoint& p, double thresh, bool& hit );
145
146 virtual void updateGeometry();
147
148 virtual int generateIds( int );
149
150 virtual int resizeHandlePositions();
151
152 virtual KivioLineStyle lineStyle();
153 virtual void setLineStyle(KivioLineStyle ls);
154
159 virtual TQString getTextBoxName(const KoPoint& p);
160
161 virtual void setText(const TQString& text, const TQString& name);
162 virtual TQString text(const TQString& name);
163
164 virtual void addConnectorTarget(const KoPoint&);
165 virtual void removeConnectorTarget(const KoPoint&);
166
167 virtual bool hasTextBox() const;
168
169 virtual TQColor textColor(const TQString& textBoxName);
170 virtual void setTextColor(const TQString& textBoxName, const TQColor& color);
171
172 virtual TQFont textFont(const TQString& textBoxName);
173 virtual void setTextFont(const TQString& textBoxName, const TQFont& font);
174
175 virtual int hTextAlign(const TQString& textBoxName);
176 virtual int vTextAlign(const TQString& textBoxName);
177
178 virtual void setHTextAlign(const TQString& textBoxName, int align);
179 virtual void setVTextAlign(const TQString& textBoxName, int align);
180};
181
182#endif
183
184