kivio

kivio_arrowhead.h

00001 /*
00002  * Kivio - Visual Modelling and Flowcharting
00003  * Copyright (C) 2000-2001 theKompany.com & Dave Marotti
00004  *
00005  * This program is free software; you can redistribute it and/or
00006  * modify it under the terms of the GNU General Public License
00007  * as published by the Free Software Foundation; either version 2
00008  * of the License, or (at your option) any later version.
00009  *
00010  * This program is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  * GNU General Public License for more details.
00014  *
00015  * You should have received a copy of the GNU General Public License
00016  * along with this program; if not, write to the Free Software
00017  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
00018  */
00019 #ifndef KIVIO_ARROWHEAD_H
00020 #define KIVIO_ARROWHEAD_H
00021 
00022 #ifdef HAVE_CONFIG_H
00023 #include <config.h>
00024 #endif
00025 
00026 #include <qcolor.h>
00027 #include <qdom.h>
00028 #include <koffice_export.h>
00029 #define KIVIO_CUT_LENGTH         -1.0f
00030 #define KIVIO_CUT_HALF_LENGTH    -2.0f
00031 
00032 class KivioPainter;
00033 class KoZoomHandler;
00034 
00035 typedef enum {
00036     kahtNone=0,
00037     kahtArrowLine,
00038     kahtArrowTriangleSolid,
00039     kahtArrowTriangleHollow,
00040     kahtDoubleTriangleSolid,
00041     kahtDoubleTriangleHollow,
00042     kahtForwardSlash,                   //   -----/
00043     kahtBackSlash,
00044     kahtPipe,                           //   -----|
00045     kahtMidForwardSlash,                //   -----/--
00046     kahtMidBackSlash,
00047     kahtMidPipe,                        //   -----|--
00048     kahtDiamondSolid,
00049     kahtDiamondHollow,
00050     kahtCrowFoot,
00051     kahtFork,
00052     kahtCrowFootPipe
00053 /*    kahtArrowTriangleConcaveSolid,
00054     kahtRectangleSolid,
00055     kahtCircleSolid,
00056     kahtCircleHollow,
00057 
00058     kahtCrowFootCircleHollow,
00059     kahtCrowFootCircleSolid,
00060 
00061     kahtFemaleSignHollow,                //   ------o|-
00062     kahtPipeCircleHollow,                //   -------|o
00063     kaht2PipeCircleHollow,               //   ------||o
00064     kaht3PipeCircleHollow,               //   -----|||o
00065     kahtDiamondCircleHollow,             //   -----<>o
00066 
00067     kahtPipeFemaleSignSolid,             //   ------o|-
00068     kahtPipeCircleSolid,                 //   -------|o
00069     kaht2PipeCircleSolid,                //   ------||o
00070     kaht3PipeCircleSolid,                //   -----|||o
00071     kahtDiamondCircleSolid,              //   -----<>o*/
00072 } KivioArrowHeadType;
00073 
00074 
00075 typedef struct KivioArrowHeadData KivioArrowHeadData;
00076 struct KivioArrowHeadData
00077 {
00078     float x, y;
00079     float vecX, vecY;
00080     KoZoomHandler* zoomHandler;
00081 
00082     KivioPainter* painter;
00083 };
00084 
00085 
00086 class KIVIO_EXPORT KivioArrowHead
00087 {
00088   protected:
00092     float m_cut;
00093 
00097     float m_w, m_l;
00098 
00102     int m_type;
00103 
00104 
00105     void paintArrowLine( KivioArrowHeadData * );
00106     void paintArrowTriangle( KivioArrowHeadData *, bool );
00107     void paintDoubleTriangle( KivioArrowHeadData *, bool );
00108     void paintForwardSlash( KivioArrowHeadData * );
00109     void paintBackSlash( KivioArrowHeadData * );
00110     void paintPipe( KivioArrowHeadData * );
00111     void paintDiamond( KivioArrowHeadData *, bool );
00112     void paintCircle( KivioArrowHeadData *, bool );
00113     void paintCrowFoot( KivioArrowHeadData * );
00114     void paintFork( KivioArrowHeadData * );
00115     void paintCrowFootPipe( KivioArrowHeadData * );
00116     void paintMidForwardSlash( KivioArrowHeadData * );
00117     void paintMidBackSlash( KivioArrowHeadData * );
00118     void paintMidPipe( KivioArrowHeadData * );
00119 
00120   public:
00121     KivioArrowHead();
00122     virtual ~KivioArrowHead();
00123 
00124     void setType( int );
00125     inline int type() { return m_type; }
00126 
00127     float cut();
00128 
00129     void setWidth( float f ) { m_w = f; }
00130     void setLength( float f ) { m_l = f; }
00131 
00132     void setSize( float f1, float f2 ) { m_w=f1; m_l=f2; }
00133 
00134     inline float width() { return m_w; }
00135     inline float length() { return m_l; }
00136 
00137     void paint( KivioPainter *, float, float, float, float, KoZoomHandler* zoomHandler );
00138 
00139     bool loadXML( const QDomElement & );
00140     QDomElement saveXML( QDomDocument & );
00141 };
00142 
00143 #endif
00144 
KDE Home | KDE Accessibility Home | Description of Access Keys