VertexArray.hpp
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_VERTEXARRAY_HPP
26 #define SFML_VERTEXARRAY_HPP
27 
29 // Headers
31 #include <SFML/Graphics/Export.hpp>
32 #include <SFML/Graphics/Vertex.hpp>
33 #include <SFML/Graphics/PrimitiveType.hpp>
34 #include <SFML/Graphics/Rect.hpp>
35 #include <SFML/Graphics/Drawable.hpp>
36 #include <vector>
37 
38 
39 namespace sf
40 {
45 class SFML_GRAPHICS_API VertexArray : public Drawable
46 {
47 public:
48 
56 
64  explicit VertexArray(PrimitiveType type, std::size_t vertexCount = 0);
65 
72  std::size_t getVertexCount() const;
73 
88  Vertex& operator [](std::size_t index);
89 
104  const Vertex& operator [](std::size_t index) const;
105 
115  void clear();
116 
129  void resize(std::size_t vertexCount);
130 
137  void append(const Vertex& vertex);
138 
154 
162 
173 
174 private:
175 
183  virtual void draw(RenderTarget& target, RenderStates states) const;
184 
185 private:
186 
188  // Member data
190  std::vector<Vertex> m_vertices;
191  PrimitiveType m_primitiveType;
192 };
193 
194 } // namespace sf
195 
196 
197 #endif // SFML_VERTEXARRAY_HPP
198 
199 
Abstract base class for objects that can be drawn to a render target.
Definition: Drawable.hpp:45
Define the states used for drawing to a RenderTarget.
Base class for all render targets (window, texture, ...)
Define a set of one or more 2D primitives.
Definition: VertexArray.hpp:46
void resize(std::size_t vertexCount)
Resize the vertex array.
VertexArray()
Default constructor.
void clear()
Clear the vertex array.
VertexArray(PrimitiveType type, std::size_t vertexCount=0)
Construct the vertex array with a type and an initial number of vertices.
void append(const Vertex &vertex)
Add a vertex to the array.
PrimitiveType getPrimitiveType() const
Get the type of primitives drawn by the vertex array.
void setPrimitiveType(PrimitiveType type)
Set the type of primitives to draw.
FloatRect getBounds() const
Compute the bounding rectangle of the vertex array.
std::size_t getVertexCount() const
Return the vertex count.
Define a point with color and texture coordinates.
Definition: Vertex.hpp:43
PrimitiveType
Types of primitives that a sf::VertexArray can render.