kivio

kivio_1d_stencil.h

00001 #ifndef _KIVIO_1D_STENCIL_H
00002 #define _KIVIO_1D_STENCIL_H
00003 
00004 #ifdef HAVE_CONFIG_H
00005 #include <config.h>
00006 #endif
00007 
00008 #include <qdom.h>
00009 #include <qptrlist.h>
00010 
00011 #include <koffice_export.h>
00012 
00013 #include "kivio_stencil.h"
00014 #include "kivio_text_style.h"
00015 
00016 class KivioArrowHead;
00017 class KivioConnectorPoint;
00018 class KivioCustomDragData;
00019 class KivioFillStyle;
00020 class KivioLineStyle;
00021 class KivioIntraStencilData;
00022 class KivioStencil;
00023 
00024 
00025 class KIVIO_EXPORT Kivio1DStencil : public KivioStencil
00026 {
00027 protected:
00028     QPtrList <KivioConnectorPoint> *m_pConnectorPoints;
00029 
00030     KivioConnectorPoint *m_pStart, *m_pEnd;
00031     KivioConnectorPoint *m_pLeft, *m_pRight;
00032     KivioConnectorPoint *m_pTextConn;
00033 
00034     double m_connectorWidth;
00035     bool m_needsWidth;
00036     bool m_needsText;
00037 
00038     KivioFillStyle *m_pFillStyle;
00039     KivioLineStyle *m_pLineStyle;
00040     KivioTextStyle *m_pTextStyle;
00041 
00042     // Utility routines
00043     bool boolAllTrue( bool *, int );
00044     bool boolContainsFalse( bool *, int );
00045 
00046     virtual QDomElement createRootElement( QDomDocument & );
00047 
00048     virtual bool saveCustom( QDomElement &, QDomDocument & );
00049     QDomElement saveConnectors( QDomDocument &doc );
00050     QDomElement saveProperties( QDomDocument &doc );
00051 
00052     virtual bool loadCustom( const QDomElement & );
00053     bool loadConnectors( const QDomElement & );
00054     bool loadProperties( const QDomElement & );
00055 
00056     // For easier duplication
00057     void copyBasicInto( Kivio1DStencil * );
00058     void drawText( KivioIntraStencilData * );
00059 
00060 public:
00061     Kivio1DStencil();
00062     virtual ~Kivio1DStencil();
00063 
00064     virtual bool connected();
00065 
00066     // fg color functions
00067     virtual void setFGColor( QColor c );
00068     virtual QColor fgColor();
00069 
00070 
00071     // bg color functions
00072     virtual void setBGColor( QColor c );
00073     virtual QColor bgColor();
00074 
00075     virtual void setText( const QString & t ) { m_pTextStyle->setText(t); }
00076     virtual QString text() { return m_pTextStyle->text(); }
00077 
00078     virtual void setTextColor( QColor c ) { m_pTextStyle->setColor(c); }
00079     virtual QColor textColor() { return m_pTextStyle->color(); }
00080 
00081     virtual QFont textFont() { return m_pTextStyle->font(); }
00082     virtual void setTextFont( const QFont &f ) { m_pTextStyle->setFont(f); }
00083 
00084     virtual int hTextAlign() { return m_pTextStyle->hTextAlign(); }
00085     virtual int vTextAlign() { return m_pTextStyle->vTextAlign(); }
00086 
00087     virtual void setHTextAlign(int i) { m_pTextStyle->setHTextAlign(i); }
00088     virtual void setVTextAlign(int i) { m_pTextStyle->setVTextAlign(i); }
00089 
00090 
00091     // line width functions
00092     virtual void setLineWidth( double f );
00093     virtual double lineWidth();
00094 
00095     virtual void setLinePattern(int p);
00096     virtual int linePattern();
00097 
00098     virtual void setFillPattern(int p);
00099     virtual int fillPattern();
00100 
00101     // position functions
00102     virtual void setX( double );
00103     virtual void setY( double );
00104     virtual void setPosition( double, double );
00105 
00106 
00107     // required for connector tool
00108     virtual void setStartPoint( double, double );
00109     virtual void setEndPoint( double, double );
00110 
00111 
00112     // painting functions
00113     virtual void paint( KivioIntraStencilData * );
00114     virtual void paintOutline( KivioIntraStencilData * );
00115     virtual void paintConnectorTargets( KivioIntraStencilData * );
00116     virtual void paintSelectionHandles( KivioIntraStencilData * );
00117 
00118 
00119     // collision detection
00120     virtual KivioCollisionType checkForCollision( KoPoint *, double );
00121 
00122 
00123     // custom dragging
00124     virtual void customDrag( KivioCustomDragData * );
00125 
00126 
00127     // geometry management
00128     virtual void updateGeometry();
00129     virtual void updateConnectorPoints( KivioConnectorPoint *, double, double );
00130 
00131 
00132     // file i/o routines
00133     virtual bool loadXML( const QDomElement & );
00134     virtual QDomElement saveXML( QDomDocument & );
00135 
00136 
00137     // duplication routines
00138     virtual KivioStencil* duplicate();
00139 
00140 
00141     // connection search routines
00142     virtual void searchForConnections( KivioPage * );
00143     virtual void searchForConnections( KivioPage *pPage, double threshold );
00144 
00145 
00146     // returns which resize handles are valid
00147     virtual int resizeHandlePositions();
00148 
00149     virtual void disconnectFromTargets();
00150     virtual KivioLineStyle lineStyle();
00151     virtual void setLineStyle(KivioLineStyle ls);
00152 
00153     virtual void setCustomIDPoint(int customID, const KoPoint& point, KivioPage* page);
00154     virtual KoPoint customIDPoint(int customID);
00155 };
00156 
00157 
00158 #endif
KDE Home | KDE Accessibility Home | Description of Access Keys