kivio

kivio_arrowhead.h
1/*
2 * Kivio - Visual Modelling and Flowcharting
3 * Copyright (C) 2000-2001 theKompany.com & Dave Marotti
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version 2
8 * of the License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 */
19#ifndef KIVIO_ARROWHEAD_H
20#define KIVIO_ARROWHEAD_H
21
22#ifdef HAVE_CONFIG_H
23#include <config.h>
24#endif
25
26#include <tqcolor.h>
27#include <tqdom.h>
28#include <koffice_export.h>
29#define KIVIO_CUT_LENGTH -1.0f
30#define KIVIO_CUT_HALF_LENGTH -2.0f
31
32class KivioPainter;
33class KoZoomHandler;
34
35typedef enum {
36 kahtNone=0,
37 kahtArrowLine,
38 kahtArrowTriangleSolid,
39 kahtArrowTriangleHollow,
40 kahtDoubleTriangleSolid,
41 kahtDoubleTriangleHollow,
42 kahtForwardSlash, // -----/
43 kahtBackSlash,
44 kahtPipe, // -----|
45 kahtMidForwardSlash, // -----/--
46 kahtMidBackSlash,
47 kahtMidPipe, // -----|--
48 kahtDiamondSolid,
49 kahtDiamondHollow,
50 kahtCrowFoot,
51 kahtFork,
52 kahtCrowFootPipe
53/* kahtArrowTriangleConcaveSolid,
54 kahtRectangleSolid,
55 kahtCircleSolid,
56 kahtCircleHollow,
57
58 kahtCrowFootCircleHollow,
59 kahtCrowFootCircleSolid,
60
61 kahtFemaleSignHollow, // ------o|-
62 kahtPipeCircleHollow, // -------|o
63 kaht2PipeCircleHollow, // ------||o
64 kaht3PipeCircleHollow, // -----|||o
65 kahtDiamondCircleHollow, // -----<>o
66
67 kahtPipeFemaleSignSolid, // ------o|-
68 kahtPipeCircleSolid, // -------|o
69 kaht2PipeCircleSolid, // ------||o
70 kaht3PipeCircleSolid, // -----|||o
71 kahtDiamondCircleSolid, // -----<>o*/
72} KivioArrowHeadType;
73
74
75typedef struct KivioArrowHeadData KivioArrowHeadData;
76struct KivioArrowHeadData
77{
78 float x, y;
79 float vecX, vecY;
80 KoZoomHandler* zoomHandler;
81
82 KivioPainter* painter;
83};
84
85
86class KIVIO_EXPORT KivioArrowHead
87{
88 protected:
92 float m_cut;
93
97 float m_w, m_l;
98
102 int m_type;
103
104
105 void paintArrowLine( KivioArrowHeadData * );
106 void paintArrowTriangle( KivioArrowHeadData *, bool );
107 void paintDoubleTriangle( KivioArrowHeadData *, bool );
108 void paintForwardSlash( KivioArrowHeadData * );
109 void paintBackSlash( KivioArrowHeadData * );
110 void paintPipe( KivioArrowHeadData * );
111 void paintDiamond( KivioArrowHeadData *, bool );
112 void paintCircle( KivioArrowHeadData *, bool );
113 void paintCrowFoot( KivioArrowHeadData * );
114 void paintFork( KivioArrowHeadData * );
115 void paintCrowFootPipe( KivioArrowHeadData * );
116 void paintMidForwardSlash( KivioArrowHeadData * );
117 void paintMidBackSlash( KivioArrowHeadData * );
118 void paintMidPipe( KivioArrowHeadData * );
119
120 public:
121 KivioArrowHead();
122 virtual ~KivioArrowHead();
123
124 void setType( int );
125 inline int type() { return m_type; }
126
127 float cut();
128
129 void setWidth( float f ) { m_w = f; }
130 void setLength( float f ) { m_l = f; }
131
132 void setSize( float f1, float f2 ) { m_w=f1; m_l=f2; }
133
134 inline float width() { return m_w; }
135 inline float length() { return m_l; }
136
137 void paint( KivioPainter *, float, float, float, float, KoZoomHandler* zoomHandler );
138
139 bool loadXML( const TQDomElement & );
140 TQDomElement saveXML( TQDomDocument & );
141};
142
143#endif
144