sf-svg
Svg.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 SVG_HPP
12 #define SVG_HPP
13 
14 #include <SFML/Graphics/RenderWindow.hpp>
15 #include <SFML/Graphics/RenderTarget.hpp>
16 #include <SFML/System/InputStream.hpp>
17 #include <SFML/Graphics/Drawable.hpp>
18 #include <iostream>
19 #include <string>
20 #include <vector>
21 #include <memory>
22 
23 #include "nanosvg++/nsvgpp.hpp"
24 
25 #include "BezierCubicCurve.hpp"
26 
27 namespace sfc {
33  class SVGImage
34  : public sf::Drawable {
35  std::vector<std::unique_ptr<BezierCubicCurve>> m_curves;
36  DrawMode m_mode = DrawMode::NORMAL;
37  nsvg::Image m_image;
38 
39  virtual void draw(sf::RenderTarget&, sf::RenderStates) const;
40  void update();
41 
42  public:
46  SVGImage();
47 
54  SVGImage(const std::string& file, const float dpi = 96.f);
55 
62  void setMode(const DrawMode m_mode);
63 
72  bool loadFromFile(const std::string& file, const float dpi = 96.f);
73 
83  bool loadFromMemory(const void* data, size_t size, const float dpi = 96.f);
84 
93  bool loadFromStream(sf::InputStream& stream, const float dpi = 96.f);
94 
100  sf::Image rasterize(const float scale = 1.f);
101 
105  void move(sf::Vector2f vec);
106 
110  void scale(const float factor);
111 
115  sf::Vector2f getSize() const;
116  };
117 }
118 
119 #endif // SVG_HPP
C++-styled cstyle::ImageStruct wrapper.
Definition: Image.hpp:28
void setMode(const DrawMode m_mode)
Set curve drawing mode.
Definition: Svg.cpp:61
SVG-XML image support for SFML.
Definition: Svg.hpp:33
Nanosvg++ additional classes.
void move(sf::Vector2f vec)
Translate image.
Definition: Svg.cpp:110
Namespace that contains all sf-svg method, classes, enums etc.
Definition: Base.hpp:20
BezierCubicCurve declaration.
DrawMode
Way to draw curves.
Definition: Base.hpp:23
SVGImage()
Default Constructor.
Definition: Svg.cpp:54
sf::Image rasterize(const float scale=1.f)
Rasterizes SVG.
Definition: Svg.cpp:104
sf::Vector2f getSize() const
Returns size of image.
Definition: Svg.cpp:122
Just draw the curve.
bool loadFromMemory(const void *data, size_t size, const float dpi=96.f)
Loads SVG image from memory.
Definition: Svg.cpp:73
bool loadFromStream(sf::InputStream &stream, const float dpi=96.f)
Loads SVG image from stream.
Definition: Svg.cpp:87
void scale(const float factor)
Scale image.
Definition: Svg.cpp:116
bool loadFromFile(const std::string &file, const float dpi=96.f)
Opens .svg file.
Definition: Svg.cpp:65