Kig Python Scripting API Documentation

conic_imp.h
00001 // Copyright (C)  2003  Dominique Devriese <devriese@kde.org>
00002 
00003 // This program is free software; you can redistribute it and/or
00004 // modify it under the terms of the GNU General Public License
00005 // as published by the Free Software Foundation; either version 2
00006 // of the License, or (at your option) any later version.
00007 
00008 // This program is distributed in the hope that it will be useful,
00009 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00010 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00011 // GNU General Public License for more details.
00012 
00013 // You should have received a copy of the GNU General Public License
00014 // along with this program; if not, write to the Free Software
00015 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
00016 // 02110-1301, USA.
00017 
00018 #ifndef KIG_OBJECTS_CONIC_IMP_H
00019 #define KIG_OBJECTS_CONIC_IMP_H
00020 
00021 #include "curve_imp.h"
00022 
00023 #include "../misc/conic-common.h"
00024 
00038 class ConicImp
00039   : public CurveImp
00040 {
00041 protected:
00042   ConicImp();
00043   ~ConicImp();
00044 public:
00045   typedef CurveImp Parent;
00049   static const ObjectImpType* stype();
00050 
00051   ObjectImp* transform( const Transformation& ) const;
00052 
00053   void draw( KigPainter& p ) const;
00054   bool contains( const Coordinate& p, int width, const KigWidget& ) const;
00055   bool inRect( const Rect& r, int width, const KigWidget& ) const;
00056   bool valid() const;
00057   Rect surroundingRect() const;
00058 
00059   const uint numberOfProperties() const;
00060   const ObjectImpType* impRequirementForProperty( uint which ) const;
00061   bool isPropertyDefinedOnOrThroughThisImp( uint which ) const;
00062   const QCStringList properties() const;
00063   const QCStringList propertiesInternalNames() const;
00064   const char* iconForProperty( uint which ) const;
00065   ObjectImp* property( uint which, const KigDocument& w ) const;
00066 
00067   double getParam( const Coordinate& point, const KigDocument& ) const;
00068   const Coordinate getPoint( double param, const KigDocument& ) const;
00069 
00070   // information about ourselves..  These are all virtual, because a
00071   // trivial subclass like CircleImp can override these with trivial
00072   // versions..
00073 
00081   virtual int conicType() const;
00085   virtual TQString conicTypeString() const;
00090   virtual TQString cartesianEquationString( const KigDocument& w ) const;
00096   virtual TQString polarEquationString( const KigDocument& w ) const;
00100   virtual const ConicCartesianData cartesianData() const;
00104   virtual const ConicPolarData polarData() const = 0;
00108   virtual Coordinate focus1() const;
00112   virtual Coordinate focus2() const;
00113 
00114   const ObjectImpType* type() const;
00115   void visit( ObjectImpVisitor* vtor ) const;
00116 
00117   bool equals( const ObjectImp& rhs ) const;
00118 
00119   bool containsPoint( const Coordinate& p, const KigDocument& doc ) const;
00120   bool internalContainsPoint( const Coordinate& p, double threshold ) const;
00121 };
00122 
00127 class ConicImpCart
00128   : public ConicImp
00129 {
00130   ConicCartesianData mcartdata;
00131   ConicPolarData mpolardata;
00132 public:
00133   ConicImpCart( const ConicCartesianData& data );
00134   ~ConicImpCart();
00135   ConicImpCart* copy() const;
00136 
00137   const ConicCartesianData cartesianData() const;
00138   const ConicPolarData polarData() const;
00139 };
00140 
00145 class ConicImpPolar
00146   : public ConicImp
00147 {
00148   ConicPolarData mdata;
00149 public:
00150   ConicImpPolar( const ConicPolarData& data );
00151   ~ConicImpPolar();
00152   ConicImpPolar* copy() const;
00153 
00154   const ConicPolarData polarData() const;
00155 };
00156 
00157 #endif
KDE Logo
This file is part of the documentation for kdelibs 0.10.7.
Documentation copyright © 1996-2002 the KDE developers.
Generated on Thu Jun 13 2013 18:36:00 by doxygen 1.7.6.1 written by Dimitri van Heesch, © 1997-2001