From 1cd0b09749a71885b489faa83f358e4299490511 Mon Sep 17 00:00:00 2001 From: Celtic Minstrel Date: Tue, 15 Apr 2014 17:03:20 -0400 Subject: [PATCH] Fixed implementation of rounded rectangles for hiliting the active PC in combat --- osx/tools/graphtool.cpp | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/osx/tools/graphtool.cpp b/osx/tools/graphtool.cpp index a72e1462..cdc64463 100644 --- a/osx/tools/graphtool.cpp +++ b/osx/tools/graphtool.cpp @@ -841,7 +841,7 @@ public: } sf::Vector2f getPoint(unsigned int i) const override { - int t = i * divSz; + float t = i * divSz; return sf::Vector2f(a + a*sin(t), b + b*cos(t)); } @@ -857,7 +857,7 @@ public: w = size.x; h = size.y; r = cornerRadius; - divSz = 0.5 * pi() / points; + divSz = 2 * pi() / points; update(); } @@ -866,20 +866,22 @@ public: } sf::Vector2f getPoint(unsigned int i) const override { - int t = i * divSz; + const float pi = ::pi(); + const float half_pi = 0.5 * pi; + float t = i * divSz; switch(i / points) { - case 0: - return sf::Vector2f(r*sin(t), r*cos(t)); - case 1: - return sf::Vector2f(w + r*sin(t), r*cos(t)); - case 2: - return sf::Vector2f(w + r*sin(t), h + r*cos(t)); - case 3: - return sf::Vector2f(r*sin(t), h + r*cos(t)); + case 0: // top left corner + return {r + r*sin(t + pi), r + r*cos(t + pi)}; + case 1: // bottom left corner + return {r + r*cos(t + half_pi), h - r + r*sin(t - half_pi)}; + case 2: // bottom right corner + return {w - r + r*cos(t + half_pi), h - r - r*sin(t + half_pi)}; + case 3: // top right corner + return {w - r - r*cos(t - half_pi), r + r*sin(t - half_pi)}; } // Unreachable printf("Whoops, rounded rectangle had bad point!"); - return sf::Vector2f(); + return {0,0}; } // TODO: Additional functions?