sf-svg
BezierAbstractCurve.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 
43 #ifndef BEZIERABSTRACTCURVE_H
44 #define BEZIERABSTRACTCURVE_H
45 
46 #include <SFML/Graphics/Shape.hpp>
47 #include "VertexVector.hpp"
48 #include "Base.hpp"
49 
50 namespace sfc {
60  public sf::Shape {
61  protected:
64 
66  std::size_t m_pointCount;
67 
69  sf::Color m_color;
70 
72  sf::Vector2f m_begin;
73 
75  sf::Vector2f m_end;
76 
80  float m_limitCurve;
81 
87 
88  public:
94  virtual Line2<float> getHelperLine(const float) const = 0;
95 
106  virtual void update() = 0;
107 
109  virtual std::size_t getPointCount() const;
110 
114  virtual sf::Vector2f getPoint(std::size_t) const = 0;
115 
120  { }
121 
130  virtual void calculateVeritces(std::vector<sf::Vector2f>& vector, const float limitCurve, sf::Vertex* debugLines) = 0;
131 
140  void setColor(const sf::Color&);
141 
143  sf::Color getColor();
144 
152  void setNormalizedLengthLimit(const float);
153 
157  float getNormalizedLengthLimit();
158 
168  void setPointCount(const std::size_t);
169 
171  void move(sf::Vector2f);
172 
174  void scale(const sf::Vector2f &factor);
175  };
176 }
177 #endif // BEZIERABSTRACTCURVE_H
void move(sf::Vector2f)
Translate curve.
Definition: BezierAbstractCurve.cpp:34
void setColor(const sf::Color &)
Sets color.
Definition: BezierAbstractCurve.cpp:13
virtual void update()=0
Calculates vertices.
float m_limitCurve
Part of curve to be drawn.
Definition: BezierAbstractCurve.hpp:80
VertexVector (drawable std::vector<sf::Vertex>) implementation.
Namespace that contains all sf-svg method, classes, enums etc.
Definition: Base.hpp:20
void setPointCount(const std::size_t)
Set amount of points to draw curve.
Definition: BezierAbstractCurve.cpp:27
sf::Vector2f m_end
Last point of a curve.
Definition: BezierAbstractCurve.hpp:75
void scale(const sf::Vector2f &factor)
Scale curve.
Definition: BezierAbstractCurve.cpp:39
virtual sf::Vector2f getPoint(std::size_t) const =0
Get n-th point of curve.
virtual std::size_t getPointCount() const
Returns point count.
Definition: BezierAbstractCurve.cpp:30
Base header used by (probably) all sf-svg classes.
DrawMode
Way to draw curves.
Definition: Base.hpp:23
virtual void calculateVeritces(std::vector< sf::Vector2f > &vector, const float limitCurve, sf::Vertex *debugLines)=0
Calculate points on cuve.
sf::Vector2f m_begin
First point of a curve.
Definition: BezierAbstractCurve.hpp:72
virtual Line2< float > getHelperLine(const float) const =0
Get last line used to draw a curve.
virtual ~BezierAbstractCurve()
Virtual destructor.
Definition: BezierAbstractCurve.hpp:119
Abstract Bezier curve class.
Definition: BezierAbstractCurve.hpp:59
sf::Color m_color
Curve&#39;s color.
Definition: BezierAbstractCurve.hpp:69
VertexVector< sf::LinesStrip > m_vertices
Vertices used to draw curve.
Definition: BezierAbstractCurve.hpp:63
std::size_t m_pointCount
Stores points count.
Definition: BezierAbstractCurve.hpp:66
float getNormalizedLengthLimit()
Get part of curve to be drawn.
Definition: BezierAbstractCurve.cpp:23
sf::Color getColor()
Returns color of curve.
Definition: BezierAbstractCurve.cpp:16
void setNormalizedLengthLimit(const float)
Set part of curve to be drawn.
Definition: BezierAbstractCurve.cpp:20
2D line
Definition: Base.hpp:49
DrawMode m_mode
Drawing mode.
Definition: BezierAbstractCurve.hpp:86