Smolgui
Immediate gui library based on SFML
Loading...
Searching...
No Matches
PrimitiveShapeRender.h
Go to the documentation of this file.
1#pragma once
2
3#include <SFML/Graphics/Drawable.hpp>
4#include <SFML/Graphics/VertexArray.hpp>
5#include <SFML/Graphics/Transformable.hpp>
6
8#include "sgui/Core/Polygon.h"
9
10namespace sgui
11{
15class PrimitiveShapeRender : public sf::Drawable, public sf::Transformable
16{
17public:
21 void updateView (const sf::View& newView);
29 uint32_t setCurrentClippingLayer (const sf::FloatRect& mask);
33 void clear ();
37 void load (
38 const LineFloat& line,
39 const float thickness,
40 const sf::Color& color = sf::Color::White);
44 void loadConnected (
45 const LineFloat& line,
46 const sf::Vector2f& previousLine,
47 const sf::Vector2f& nextLine,
48 const float thickness,
49 const sf::Color& color = sf::Color::White);
53 void loadArrow (
54 const LineFloat& arrow,
55 const float thickness,
56 const sf::Color color = sf::Color::White);
61 void load (
62 const CircleFloat& circle,
63 const float thickness,
64 const sf::Color& color = sf::Color::White,
65 const uint32_t sample = 50);
66 void loadFilled (
67 const CircleFloat& circle,
68 const sf::Color& color = sf::Color::White,
69 const uint32_t sample = 50);
73 template <size_t N>
74 void load (
75 const Polygon<N>& polygon,
76 const float thickness,
77 const sf::Color& color = sf::Color::White);
78 template <size_t N>
80 const Polygon<N>& polygon,
81 const sf::Color& color = sf::Color::White);
82 void load (
83 const sf::FloatRect& box,
84 const float thickness,
85 const sf::Color& color = sf::Color::White);
86 void loadFilled (
87 const sf::FloatRect& box,
88 const sf::Color& color = sf::Color::White);
89public:
91private:
95 void computeLineMesh (
96 const sf::Vector2f& p1,
97 const sf::Vector2f& p2,
98 const float thickness,
99 const sf::Color& color);
103 void computeConnectedLineMesh (
104 const sf::Vector2f& p1,
105 const sf::Vector2f& p2,
106 const sf::Vector2f& previous,
107 const sf::Vector2f& next,
108 const float thickness,
109 const sf::Color& color);
113 void computeTriangleVertices (
114 const sf::Vector2f& p1,
115 const sf::Vector2f& p2,
116 const sf::Vector2f& p3,
117 const sf::Color& color);
121 void draw (
122 sf::RenderTarget& target,
123 sf::RenderStates states) const override;
124private:
125 sf::Vector2f mPosition = {};
126 std::vector <uint32_t> mLayers;
127 std::vector <sf::VertexArray> mShapes;
128};
129
130} // namespace sgui
131
Handle clipping layers to only draw things in a given box.
Definition ClippingLayers.h:15
render primitive shapes using vertex array.
Definition PrimitiveShapeRender.h:16
void load(const Polygon< N > &polygon, const float thickness, const sf::Color &color=sf::Color::White)
void updateView(const sf::View &newView)
update view in which shapes are rendered
Definition PrimitiveShapeRender.cpp:7
void load(const LineFloat &line, const float thickness, const sf::Color &color=sf::Color::White)
load thick line
Definition PrimitiveShapeRender.cpp:42
ClippingLayers clipping
Definition PrimitiveShapeRender.h:90
void clear()
clear all shapes
Definition PrimitiveShapeRender.cpp:34
void loadFilled(const CircleFloat &circle, const sf::Color &color=sf::Color::White, const uint32_t sample=50)
Definition PrimitiveShapeRender.cpp:121
void initializeClippingLayers()
initialize clipping layers, must be called once
Definition PrimitiveShapeRender.cpp:13
uint32_t setCurrentClippingLayer(const sf::FloatRect &mask)
change of clipping layer
Definition PrimitiveShapeRender.cpp:22
void loadFilled(const Polygon< N > &polygon, const sf::Color &color=sf::Color::White)
void loadArrow(const LineFloat &arrow, const float thickness, const sf::Color color=sf::Color::White)
load arrow shape
Definition PrimitiveShapeRender.cpp:66
void loadConnected(const LineFloat &line, const sf::Vector2f &previousLine, const sf::Vector2f &nextLine, const float thickness, const sf::Color &color=sf::Color::White)
load thick line connected to another
Definition PrimitiveShapeRender.cpp:51
Definition Interpolation.h:16
Circle< float > CircleFloat
Definition Shapes.h:46
Line< float > LineFloat
Definition Shapes.h:29
Polygon is a series of N points, ranged in clock-wise order and that form a convex shape.
Definition Polygon.h:14