aboutsummaryrefslogtreecommitdiff
path: root/src/RoundedRectangle.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/RoundedRectangle.cpp')
-rw-r--r--src/RoundedRectangle.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/RoundedRectangle.cpp b/src/RoundedRectangle.cpp
new file mode 100644
index 0000000..6b956e8
--- /dev/null
+++ b/src/RoundedRectangle.cpp
@@ -0,0 +1,46 @@
+#include "../include/RoundedRectangle.hpp"
+#include <SFML/Graphics/Shader.hpp>
+#include <SFML/Graphics/RenderWindow.hpp>
+#include <assert.h>
+
+namespace QuickMedia {
+ RoundedRectangle::RoundedRectangle(sf::Vector2f size, float radius, sf::Color color, sf::Shader *rounded_rectangle_shader) : radius(radius), pos(0.0f, 0.0f), size(size), rounded_rectangle_shader(rounded_rectangle_shader) {
+ assert(rounded_rectangle_shader);
+ vertices[0].color = color;
+ vertices[1].color = color;
+ vertices[2].color = color;
+ vertices[3].color = color;
+
+ vertices[0].texCoords = sf::Vector2f(0.0f, 0.0f);
+ vertices[1].texCoords = sf::Vector2f(1.0f, 0.0f);
+ vertices[2].texCoords = sf::Vector2f(1.0f, 1.0f);
+ vertices[3].texCoords = sf::Vector2f(0.0f, 1.0f);
+ }
+
+ void RoundedRectangle::set_position(sf::Vector2f pos) {
+ this->pos = pos;
+ vertices[0].position = pos;
+ vertices[1].position = pos + sf::Vector2f(size.x, 0.0f);
+ vertices[2].position = pos + sf::Vector2f(size.x, size.y);
+ vertices[3].position = pos + sf::Vector2f(0.0f, size.y);
+ }
+
+ void RoundedRectangle::set_size(sf::Vector2f size) {
+ this->size = size;
+ set_position(pos);
+ }
+
+ sf::Vector2f RoundedRectangle::get_position() const {
+ return pos;
+ }
+
+ sf::Vector2f RoundedRectangle::get_size() const {
+ return size;
+ }
+
+ void RoundedRectangle::draw(sf::RenderWindow &window) {
+ rounded_rectangle_shader->setUniform("resolution", size);
+ rounded_rectangle_shader->setUniform("radius", radius);
+ window.draw(vertices, 4, sf::Quads, rounded_rectangle_shader);
+ }
+} \ No newline at end of file