20#ifndef KIVIO_STENCIL_H
21#define KIVIO_STENCIL_H
27#include <tqbitarray.h>
29#include <tdeglobalsettings.h>
31#include <koffice_export.h>
33#include "kivio_line_style.h"
35class KivioCustomDragData;
36class KivioConnectorPoint;
37class KivioConnectorTarget;
39class KivioIntraStencilData;
43class KivioStencilSpawner;
45class KivioStencilIface;
64#define NUM_PROTECTIONS 6
78} KivioResizeHandlePosition;
88#define KIVIO_RESIZE_HANDLE_POSITION_ALL \
99#define KIVIO_RESIZE_HANDLE_POSITION_BORDER \
109#define KIVIO_RESIZE_HANDLE_POSITION_CORNERS \
117class KIVIO_EXPORT KivioStencil
121 double m_x, m_y, m_w, m_h;
128 KivioStencilSpawner *m_pSpawner;
131 TQBitArray *m_pProtection;
132 TQBitArray *m_pCanProtect;
135 KivioStencilType m_type;
145 void rotatePainter(KivioIntraStencilData *);
146 KoRect calculateBoundingBox();
150 virtual ~KivioStencil();
152 virtual KivioStencil *duplicate() {
return NULL; }
154 virtual KivioStencilType type() {
return m_type; }
155 virtual void setType(KivioStencilType t) { m_type = t; }
156 virtual bool connected() {
return m_connected; }
157 virtual void setConnected(
bool c) { m_connected = c; }
159 virtual double x() {
return m_x; }
160 virtual void setX(
double f ) { m_x=f; updateGeometry(); }
162 virtual double y() {
return m_y; }
163 virtual void setY(
double f ) { m_y=f; updateGeometry(); }
165 virtual double w() {
return m_w; }
166 virtual void setW(
double f ) {
if( f > 0 ) { m_w=f; updateGeometry(); } }
168 virtual double h() {
return m_h; }
169 virtual void setH(
double f ) {
if( f > 0 ) { m_h=f; updateGeometry(); } }
171 virtual void move(
double xOffset,
double yOffset);
173 virtual KoRect rect();
175 virtual void setPosition(
double f1,
double f2 ) { m_x=f1; m_y=f2; updateGeometry(); }
176 virtual void setDimensions(
double f1,
double f2 ) { m_w=f1; m_h=f2; updateGeometry(); }
178 virtual TQColor fgColor() {
return TQColor(0,0,0); }
179 virtual void setFGColor( TQColor ) { ; }
181 virtual void setBGColor( TQColor ) { ; }
182 virtual TQColor bgColor() {
return TQColor(0,0,0); }
183 virtual void setFillPattern(
int) { ; }
184 virtual int fillPattern() {
return 1; }
186 virtual KivioFillStyle *fillStyle() {
return NULL; }
187 virtual KivioLineStyle lineStyle() {
return KivioLineStyle(); }
188 virtual void setLineStyle(KivioLineStyle) { ; }
190 virtual void setLineWidth(
double ) { ; }
191 virtual double lineWidth() {
return 1.0f; }
193 virtual void setLinePattern(
int) { ; }
194 virtual int linePattern() {
return 1; }
197 virtual TQColor textColor() {
return TQColor(0,0,0); }
198 virtual void setTextColor( TQColor ) {;}
200 virtual TQFont textFont() {
return TDEGlobalSettings::generalFont(); }
201 virtual void setTextFont(
const TQFont & ) {;}
203 virtual int hTextAlign() {
return -1; }
204 virtual int vTextAlign() {
return -1; }
206 virtual void setHTextAlign(
int) { ; }
207 virtual void setVTextAlign(
int) { ; }
209 virtual void setText(
const TQString & ) { ; }
210 virtual TQString text() {
return TQString(
""); }
212 virtual void setRotation(
int d);
213 virtual int rotation() {
return m_rotation; }
215 virtual KivioStencilSpawner *spawner() {
return m_pSpawner; }
216 virtual void setSpawner( KivioStencilSpawner *s ) { m_pSpawner=s; }
218 virtual void paint( KivioIntraStencilData * );
219 virtual void paintOutline( KivioIntraStencilData * );
220 virtual void paintConnectorTargets( KivioIntraStencilData * );
221 virtual void paintSelectionHandles( KivioIntraStencilData * );
223 virtual KivioCollisionType checkForCollision( KoPoint *,
double );
224 virtual void customDrag( KivioCustomDragData * );
227 virtual bool loadXML(
const TQDomElement & );
228 virtual TQDomElement saveXML( TQDomDocument & );
230 virtual bool isSelected() {
return m_selected; }
231 virtual void select() { m_selected =
true; }
232 virtual void unselect() { m_selected =
false; }
233 virtual void subSelect(
const double &,
const double & ) { ; }
235 virtual TQBitArray *protection() {
return m_pProtection; }
236 virtual TQBitArray *canProtect() {
return m_pCanProtect; }
238 virtual void addToGroup( KivioStencil * );
239 virtual TQPtrList<KivioStencil>* groupList() {
return NULL; }
241 virtual void updateGeometry();
242 virtual void updateConnectorPoints(KivioConnectorPoint *,
double oldX,
double oldY);
245 virtual KivioConnectorTarget *connectToTarget( KivioConnectorPoint *,
double );
249 virtual KivioConnectorTarget *connectToTarget( KivioConnectorPoint *,
int );
251 virtual KoPoint snapToTarget(
const KoPoint& p,
double ,
bool& hit );
253 virtual void searchForConnections( KivioPage * );
254 virtual void searchForConnections( KivioPage *pPage,
double threshold );
256 virtual int generateIds(
int );
258 virtual int resizeHandlePositions() {
return krhpNone; }
264 virtual TQString getTextBoxName(
const KoPoint& ) {
return TQString(); }
266 virtual void setText(
const TQString& ,
const TQString& ) { ; }
267 virtual TQString text(
const TQString& ) {
return TQString(
""); }
270 virtual bool hasTextBox()
const {
return false; }
272 virtual TQColor textColor(
const TQString& ) {
return TQColor(); }
273 virtual void setTextColor(
const TQString& ,
const TQColor& ) {}
275 virtual TQFont textFont(
const TQString& ) {
return TDEGlobalSettings::generalFont(); }
276 virtual void setTextFont(
const TQString& ,
const TQFont& ) {}
278 virtual int hTextAlign(
const TQString& ) {
return -1; }
279 virtual int vTextAlign(
const TQString& ) {
return -1; }
281 virtual void setHTextAlign(
const TQString& ,
int ) {}
282 virtual void setVTextAlign(
const TQString& ,
int ) {}
284 virtual void setPinPoint(
const KoPoint& p) { m_pinPoint = p; }
285 virtual KoPoint pinPoint()
const {
return m_pinPoint; }
287 virtual void addConnectorTarget(
const KoPoint&) {}
288 virtual void removeConnectorTarget(
const KoPoint&) {}
290 virtual bool isInRect(
const KoRect& rect);
292 virtual void setHidden(
bool hide) { m_hidden = hide; }
293 virtual bool hidden() {
return m_hidden; }
295 virtual void setCustomIDPoint(
int,
const KoPoint&, KivioPage*) {}
296 virtual KoPoint customIDPoint(
int) {
return KoPoint(); }
299 virtual void setStartAHType(
int ) { ; }
300 virtual void setStartAHWidth(
double ) { ; }
301 virtual void setStartAHLength(
double ) { ; }
302 virtual void setEndAHType(
int ) { ; }
303 virtual void setEndAHWidth(
double ) { ; }
304 virtual void setEndAHLength(
double ) { ; }
306 virtual int startAHType() {
return 0; }
307 virtual double startAHWidth() {
return 0.0f; }
308 virtual double startAHLength() {
return 0.0f; }
309 virtual int endAHType() {
return 0; }
310 virtual double endAHWidth() {
return 0.0f; }
311 virtual double endAHLength() {
return 0.0f; }
314 KivioStencilIface *iface;