sf-svg
BezierCubicCurve.hpp
Go to the documentation of this file.
1 /* =========================================================== *
2  * sf-svg (c) Kamil Koczurek | koczurekk@gmail.com *
3  * GNU GPL v3 License http://www.gnu.org/licenses/gpl-3.0.html *
4  * =========================================================== */
5 
10 
11 #ifndef BEZIERCUBICCURVE_HPP
12 #define BEZIERCUBICCURVE_HPP
13 #include "BezierAbstractCurve.hpp"
14 
15 namespace sfc {
23  : public BezierAbstractCurve {
24  private:
25  sf::Vertex debugLines[6];
26 
27  sf::Vector2f m_beginControl;
28  sf::Vector2f m_endControl;
29 
30  virtual void draw(sf::RenderTarget&, sf::RenderStates) const;
31 
32  protected:
33  /* Commented in base class */
34  virtual void calculateVeritces(std::vector<sf::Vector2f>&, const float, sf::Vertex*);
35 
36  public:
40  enum PointType {
43 
46 
49 
52  };
53 
58 
68  BezierCubicCurve(const sf::Vector2f&, const sf::Vector2f&, const sf::Vector2f&, const sf::Vector2f&, DrawMode = DrawMode::NORMAL);
69 
70  /* Commented in base class */
71  virtual Line2<float> getHelperLine(const float) const;
72 
73  /* Commented in base class */
74  virtual sf::Vector2f getPoint(std::size_t) const;
75 
76  /* Commented in base class */
77  virtual void update();
78 
83  void setPointPosition(PointType, sf::Vector2f);
84 
90  sf::Vector2f getPointPosition(PointType);
91 
95  Line2<float> getCubicHelperLine1(const float);
96 
100  Line2<float> getCubicHelperLine2(const float);
101  };
102 }
103 
104 #endif // BEZIERCUBICCURVE_HPP
Bezier cubic curve representation.
Definition: BezierCubicCurve.hpp:22
Line2< float > getCubicHelperLine2(const float)
Gets 2nd helper line used to draw curve.
Definition: BezierCubicCurve.cpp:143
First control point.
Definition: BezierCubicCurve.hpp:42
virtual sf::Vector2f getPoint(std::size_t) const
Get n-th point of curve.
Definition: BezierCubicCurve.cpp:86
void setPointPosition(PointType, sf::Vector2f)
Sets position of selected point.
Definition: BezierCubicCurve.cpp:105
virtual Line2< float > getHelperLine(const float) const
Get last line used to draw a curve.
Definition: BezierCubicCurve.cpp:73
BezierAbstractCurve declaration and partial implementation.
BezierCubicCurve()
Default constructor.
Definition: BezierCubicCurve.cpp:52
Namespace that contains all sf-svg method, classes, enums etc.
Definition: Base.hpp:20
Second control point.
Definition: BezierCubicCurve.hpp:45
DrawMode
Way to draw curves.
Definition: Base.hpp:23
PointType
Point type enum.
Definition: BezierCubicCurve.hpp:40
virtual void calculateVeritces(std::vector< sf::Vector2f > &, const float, sf::Vertex *)
Calculate points on cuve.
Definition: BezierCubicCurve.cpp:30
Line2< float > getCubicHelperLine1(const float)
Gets 1st helper line used to draw curve.
Definition: BezierCubicCurve.cpp:136
virtual void update()
Calculates vertices.
Definition: BezierCubicCurve.cpp:93
Beginning of the curve.
Definition: BezierCubicCurve.hpp:48
Just draw the curve.
Abstract Bezier curve class.
Definition: BezierAbstractCurve.hpp:59
sf::Vector2f getPointPosition(PointType)
Gets position of selected point.
Definition: BezierCubicCurve.cpp:121
2D line
Definition: Base.hpp:49
End of the curve.
Definition: BezierCubicCurve.hpp:51