• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

kig

  • sources
  • kde-4.12
  • kdeedu
  • kig
  • objects
conic_imp.h
Go to the documentation of this file.
1 // Copyright (C) 2003 Dominique Devriese <devriese@kde.org>
2 
3 // This program is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU General Public License
5 // as published by the Free Software Foundation; either version 2
6 // of the License, or (at your option) any later version.
7 
8 // This program is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 // GNU General Public License for more details.
12 
13 // You should have received a copy of the GNU General Public License
14 // along with this program; if not, write to the Free Software
15 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
16 // 02110-1301, USA.
17 
18 #ifndef KIG_OBJECTS_CONIC_IMP_H
19 #define KIG_OBJECTS_CONIC_IMP_H
20 
21 #include "curve_imp.h"
22 
23 #include "../misc/conic-common.h"
24 #include "../misc/equation.h"
25 
39 class ConicImp
40  : public CurveImp
41 {
42 protected:
43  ConicImp();
44  ~ConicImp();
45 public:
46  typedef CurveImp Parent;
50  static const ObjectImpType* stype();
51 
52  ObjectImp* transform( const Transformation& ) const;
53 
54  void draw( KigPainter& p ) const;
55  bool contains( const Coordinate& p, int width, const KigWidget& ) const;
56  bool inRect( const Rect& r, int width, const KigWidget& ) const;
57  bool valid() const;
58  Rect surroundingRect() const;
59 
60  int numberOfProperties() const;
61  const ObjectImpType* impRequirementForProperty( int which ) const;
62  bool isPropertyDefinedOnOrThroughThisImp( int which ) const;
63  const QByteArrayList properties() const;
64  const QByteArrayList propertiesInternalNames() const;
65  const char* iconForProperty( int which ) const;
66  ObjectImp* property( int which, const KigDocument& w ) const;
67 
68  double getParam( const Coordinate& point, const KigDocument& ) const;
69  const Coordinate getPoint( double param, const KigDocument& ) const;
70 
71  // getPoint and getParam do not really need the KigDocument arg...
72 
73  double getParam( const Coordinate& point ) const;
74  const Coordinate getPoint( double param ) const;
75 
76  // information about ourselves. These are all virtual, because a
77  // trivial subclass like CircleImp can override these with trivial
78  // versions.
79 
87  virtual int conicType() const;
91  virtual QString conicTypeString() const;
96  virtual QString cartesianEquationString( const KigDocument& w ) const;
102  virtual QString polarEquationString( const KigDocument& w ) const;
106  virtual const ConicCartesianData cartesianData() const;
110  virtual const ConicPolarData polarData() const = 0;
114  virtual Coordinate coniccenter() const;
118  virtual Coordinate focus1() const;
122  virtual Coordinate focus2() const;
123 
124  const ObjectImpType* type() const;
125  void visit( ObjectImpVisitor* vtor ) const;
126 
127  bool equals( const ObjectImp& rhs ) const;
128 
129  bool containsPoint( const Coordinate& p, const KigDocument& doc ) const;
130  bool internalContainsPoint( const Coordinate& p, double threshold ) const;
131  bool isVerticalParabola( ConicCartesianData& data ) const;
132 };
133 
138 class ConicImpCart
139  : public ConicImp
140 {
141 protected:
142  ConicCartesianData mcartdata;
143  ConicPolarData mpolardata;
144 public:
145  ConicImpCart( const ConicCartesianData& data );
146  ~ConicImpCart();
147  ConicImpCart* copy() const;
148 
149  const ConicCartesianData cartesianData() const;
150  const ConicPolarData polarData() const;
151 };
152 
157 class ConicImpPolar
158  : public ConicImp
159 {
160  ConicPolarData mdata;
161 public:
162  ConicImpPolar( const ConicPolarData& data );
163  ~ConicImpPolar();
164  ConicImpPolar* copy() const;
165 
166  const ConicPolarData polarData() const;
167 };
168 
172 class ConicArcImp
173  : public ConicImpCart
174 {
175  double msa;
176  double ma;
177 public:
178  typedef CurveImp Parent;
182  static const ObjectImpType* stype();
187  ConicArcImp( const ConicCartesianData& data,
188  const double startangle, const double angle );
189  ~ConicArcImp();
190 
191  ConicArcImp* copy() const;
192 
193  ObjectImp* transform( const Transformation& t ) const;
194  bool contains( const Coordinate& p, int width, const KigWidget& ) const;
195  bool containsPoint( const Coordinate& p, const KigDocument& doc ) const;
196  bool internalContainsPoint( const Coordinate& p, double threshold,
197  const KigDocument& doc ) const;
198 
199  int numberOfProperties() const;
200  const QByteArrayList properties() const;
201  const QByteArrayList propertiesInternalNames() const;
202  ObjectImp* property( int which, const KigDocument& w ) const;
203  const char* iconForProperty( int which ) const;
204  bool isPropertyDefinedOnOrThroughThisImp( int which ) const;
205 
206  double getParam( const Coordinate& point, const KigDocument& ) const;
207  const Coordinate getPoint( double param, const KigDocument& ) const;
208 
209  double getParam( const Coordinate& point ) const;
210  const Coordinate getPoint( double param ) const;
211 
215  void setStartAngle( double sa ) { msa = sa; }
219  void setAngle( double a ) { ma = a; }
223  Coordinate firstEndPoint() const;
227  Coordinate secondEndPoint() const;
228 
229  const ObjectImpType* type() const;
230 };
231 
232 #endif
ConicImp::coniccenter
virtual Coordinate coniccenter() const
Return the center of this conic.
Definition: conic_imp.cc:295
ConicImp::visit
void visit(ObjectImpVisitor *vtor) const
Definition: conic_imp.cc:369
ConicImp::internalContainsPoint
bool internalContainsPoint(const Coordinate &p, double threshold) const
Definition: conic_imp.cc:410
ConicImp::cartesianEquationString
virtual QString cartesianEquationString(const KigDocument &w) const
A string containing the cartesian equation of the conic.
Definition: conic_imp.cc:221
ObjectImpType
Instances of this class represent a certain ObjectImp type.
Definition: object_imp.h:95
ConicArcImp::~ConicArcImp
~ConicArcImp()
Definition: conic_imp.cc:473
ConicImp::isPropertyDefinedOnOrThroughThisImp
bool isPropertyDefinedOnOrThroughThisImp(int which) const
Definition: conic_imp.cc:439
ConicArcImp::firstEndPoint
Coordinate firstEndPoint() const
Return the start point of this arc.
Definition: conic_imp.cc:596
ConicImp::conicTypeString
virtual QString conicTypeString() const
A string containing "Hyperbola", "Parabola" or "Ellipse".
Definition: conic_imp.cc:205
ConicArcImp::internalContainsPoint
bool internalContainsPoint(const Coordinate &p, double threshold, const KigDocument &doc) const
Definition: conic_imp.cc:636
ConicImpCart::cartesianData
const ConicCartesianData cartesianData() const
Return the cartesian representation of this conic.
Definition: conic_imp.cc:322
ConicImpCart::~ConicImpCart
~ConicImpCart()
Definition: conic_imp.cc:365
ConicArcImp::copy
ConicArcImp * copy() const
Returns a copy of this ObjectImp.
Definition: conic_imp.cc:477
ConicImp::Parent
CurveImp Parent
Definition: conic_imp.h:46
ConicArcImp::getPoint
const Coordinate getPoint(double param, const KigDocument &) const
Definition: conic_imp.cc:662
Rect
This file is part of Kig, a KDE program for Interactive Geometry...
Definition: rect.h:34
ConicCartesianData
Cartesian Conic Data.
Definition: conic-common.h:37
ConicImp::getPoint
const Coordinate getPoint(double param, const KigDocument &) const
Definition: conic_imp.cc:176
ConicImp::propertiesInternalNames
const QByteArrayList propertiesInternalNames() const
Definition: conic_imp.cc:68
ConicImp::draw
void draw(KigPainter &p) const
Definition: conic_imp.cc:42
ConicImp::iconForProperty
const char * iconForProperty(int which) const
Definition: conic_imp.cc:101
ConicImpCart::ConicImpCart
ConicImpCart(const ConicCartesianData &data)
Definition: conic_imp.cc:327
ConicArcImp::type
const ObjectImpType * type() const
Returns the lowermost ObjectImpType that this object is an instantiation of.
Definition: conic_imp.cc:623
ConicArcImp
A conic arc, which is given by the cartesian equation and two angles.
Definition: conic_imp.h:172
ConicImpPolar::polarData
const ConicPolarData polarData() const
Return the polar representation of this conic.
Definition: conic_imp.cc:342
ConicArcImp::propertiesInternalNames
const QByteArrayList propertiesInternalNames() const
Definition: conic_imp.cc:541
ConicArcImp::secondEndPoint
Coordinate secondEndPoint() const
Return the end point of this arc.
Definition: conic_imp.cc:601
ConicArcImp::numberOfProperties
int numberOfProperties() const
Definition: conic_imp.cc:526
Coordinate
The Coordinate class is the basic class representing a 2D location by its x and y components...
Definition: coordinate.h:33
ConicImp::containsPoint
bool containsPoint(const Coordinate &p, const KigDocument &doc) const
Return whether this Curve contains the given point.
Definition: conic_imp.cc:402
ConicImp::isVerticalParabola
bool isVerticalParabola(ConicCartesianData &data) const
Definition: conic_imp.cc:446
ConicImpPolar
An implementation of ConicImp to be used when only the polar equation of the conic is known...
Definition: conic_imp.h:157
ConicImpCart::mcartdata
ConicCartesianData mcartdata
Definition: conic_imp.h:142
ConicArcImp::iconForProperty
const char * iconForProperty(int which) const
Definition: conic_imp.cc:550
ConicImp::~ConicImp
~ConicImp()
Definition: conic_imp.cc:361
ConicImpCart
An implementation of ConicImp to be used when only the cartesian equation of the conic is known...
Definition: conic_imp.h:138
KigPainter
KigPainter is an extended QPainter.
Definition: kigpainter.h:51
ConicArcImp::Parent
CurveImp Parent
Definition: conic_imp.h:178
ConicImp::ConicImp
ConicImp()
Definition: conic_imp.cc:357
ConicImp::equals
bool equals(const ObjectImp &rhs) const
Returns true if this ObjectImp is equal to rhs.
Definition: conic_imp.cc:374
Transformation
Class representing a transformation.
Definition: kigtransform.h:37
ConicArcImp::setAngle
void setAngle(double a)
Set the dimension in radians of this arc.
Definition: conic_imp.h:219
ConicArcImp::transform
ObjectImp * transform(const Transformation &t) const
Return this ObjectImp, transformed by the transformation t.
Definition: conic_imp.cc:482
ConicImp::property
ObjectImp * property(int which, const KigDocument &w) const
Definition: conic_imp.cc:122
KigWidget
This class is the real widget showing the document.
Definition: kig_view.h:50
ConicImpPolar::~ConicImpPolar
~ConicImpPolar()
Definition: conic_imp.cc:338
ConicArcImp::isPropertyDefinedOnOrThroughThisImp
bool isPropertyDefinedOnOrThroughThisImp(int which) const
Definition: conic_imp.cc:580
ConicArcImp::property
ObjectImp * property(int which, const KigDocument &w) const
Definition: conic_imp.cc:565
ConicArcImp::stype
static const ObjectImpType * stype()
Returns the ObjectImpType representing the ConicImp type.
Definition: conic_imp.cc:606
ConicImpCart::polarData
const ConicPolarData polarData() const
Return the polar representation of this conic.
Definition: conic_imp.cc:317
ConicArcImp::contains
bool contains(const Coordinate &p, int width, const KigWidget &) const
Definition: conic_imp.cc:520
ConicImp
An ObjectImp representing a conic.
Definition: conic_imp.h:39
ConicArcImp::properties
const QByteArrayList properties() const
Definition: conic_imp.cc:531
ConicImp::properties
const QByteArrayList properties() const
Definition: conic_imp.cc:81
ConicImp::impRequirementForProperty
const ObjectImpType * impRequirementForProperty(int which) const
Definition: conic_imp.cc:94
ConicImpCart::mpolardata
ConicPolarData mpolardata
Definition: conic_imp.h:143
ConicImp::polarEquationString
virtual QString polarEquationString(const KigDocument &w) const
A string containing the polar equation of the conic.
Definition: conic_imp.cc:259
ConicImp::focus1
virtual Coordinate focus1() const
Return the first focus of this conic.
Definition: conic_imp.cc:290
ConicImpCart::copy
ConicImpCart * copy() const
Returns a copy of this ObjectImp.
Definition: conic_imp.cc:347
ConicImp::polarData
virtual const ConicPolarData polarData() const =0
Return the polar representation of this conic.
ConicImp::contains
bool contains(const Coordinate &p, int width, const KigWidget &) const
Definition: conic_imp.cc:52
ConicImp::cartesianData
virtual const ConicCartesianData cartesianData() const
Return the cartesian representation of this conic.
Definition: conic_imp.cc:285
ConicImp::inRect
bool inRect(const Rect &r, int width, const KigWidget &) const
Definition: conic_imp.cc:57
ConicImp::conicType
virtual int conicType() const
Type of conic.
Definition: conic_imp.cc:191
ConicImpPolar::ConicImpPolar
ConicImpPolar(const ConicPolarData &data)
Definition: conic_imp.cc:333
ConicImp::transform
ObjectImp * transform(const Transformation &) const
Return this ObjectImp, transformed by the transformation t.
Definition: conic_imp.cc:34
ConicImp::stype
static const ObjectImpType * stype()
Returns the ObjectImpType representing the ConicImp type.
Definition: conic_imp.cc:380
KigDocument
KigDocument is the class holding the real data in a Kig document.
Definition: kig_document.h:36
ConicArcImp::containsPoint
bool containsPoint(const Coordinate &p, const KigDocument &doc) const
Return whether this Curve contains the given point.
Definition: conic_imp.cc:628
ConicImpPolar::copy
ConicImpPolar * copy() const
Returns a copy of this ObjectImp.
Definition: conic_imp.cc:352
ConicArcImp::getParam
double getParam(const Coordinate &point, const KigDocument &) const
Definition: conic_imp.cc:646
QByteArrayList
QList< QByteArray > QByteArrayList
Definition: objects/common.h:50
ObjectImp
The ObjectImp class represents the behaviour of an object after it is calculated. ...
Definition: object_imp.h:226
ConicImp::focus2
virtual Coordinate focus2() const
Return the second focus of this conic.
Definition: conic_imp.cc:306
ConicImp::valid
bool valid() const
Definition: conic_imp.cc:47
curve_imp.h
ConicImp::numberOfProperties
int numberOfProperties() const
Definition: conic_imp.cc:63
ConicImp::type
const ObjectImpType * type() const
Returns the lowermost ObjectImpType that this object is an instantiation of.
Definition: conic_imp.cc:397
ConicArcImp::setStartAngle
void setStartAngle(double sa)
Set the start angle in radians of this arc.
Definition: conic_imp.h:215
ConicArcImp::ConicArcImp
ConicArcImp(const ConicCartesianData &data, const double startangle, const double angle)
Construct a Conic Arc with given cartesian equation, start angle and dimension (both in radians)...
Definition: conic_imp.cc:467
ObjectImpVisitor
Definition: object_imp.h:56
CurveImp
This class represents a curve: something which is composed of points, like a line, a circle, a locus.
Definition: curve_imp.h:27
ConicImp::surroundingRect
Rect surroundingRect() const
Definition: conic_imp.cc:454
ConicPolarData
This class represents an equation of a conic in the form .
Definition: conic-common.h:85
ConicImp::getParam
double getParam(const Coordinate &point, const KigDocument &) const
Definition: conic_imp.cc:144
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:35:39 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kig

Skip menu "kig"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • kstars
  • libkdeedu
  •   keduvocdocument
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal