00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024
00025 #ifndef SFML_SHAPE_HPP
00026 #define SFML_SHAPE_HPP
00027
00029
00031 #include <SFML/Graphics/Drawable.hpp>
00032 #include <SFML/System/Vector2.hpp>
00033 #include <vector>
00034
00035
00036 namespace sf
00037 {
00043 class SFML_API Shape : public sf::Drawable
00044 {
00045 public :
00046
00051 Shape();
00052
00061 void AddPoint(float X, float Y, const Color& Col = Color(255, 255, 255), const Color& OutlineCol = Color(0, 0, 0));
00062
00071 void AddPoint(const Vector2f& Position, const Color& Col = Color(255, 255, 255), const Color& OutlineCol = Color(0, 0, 0));
00072
00080 void EnableFill(bool Enable);
00081
00089 void EnableOutline(bool Enable);
00090
00097 void SetOutlineWidth(float Width);
00098
00105 unsigned int GetNbPoints() const;
00106
00113 const Vector2f& GetPoint(unsigned int Index) const;
00114
00121 float GetOutlineWidth() const;
00122
00134 static Shape Line(float P1X, float P1Y, float P2X, float P2Y, float Thickness, const Color& Col, float Outline = 0.f, const Color& OutlineCol = sf::Color(0, 0, 0));
00135
00146 static Shape Rectangle(float P1X, float P1Y, float P2X, float P2Y, const Color& Col, float Outline = 0.f, const Color& OutlineCol = sf::Color(0, 0, 0));
00147
00158 static Shape Circle(float X, float Y, float Radius, const Color& Col, float Outline = 0.f, const Color& OutlineCol = sf::Color(0, 0, 0));
00159
00160 protected :
00161
00166 virtual void Render(const RenderWindow& Window) const;
00167
00168 private :
00169
00174 void Compile();
00175
00186 static bool ComputeNormal(const Vector2f& P1, const Vector2f& P2, Vector2f& Normal);
00187
00191 struct Point
00192 {
00193 Point(const Vector2f& Pos = Vector2f(0, 0), const Color& C = Color(255, 255, 255), const Color& OutlineC = Color(255, 255, 255));
00194
00195 Vector2f Position;
00196 Vector2f Normal;
00197 Color Col;
00198 Color OutlineCol;
00199 };
00200
00202
00204 std::vector<Point> myPoints;
00205 float myOutline;
00206 bool myIsFillEnabled;
00207 bool myIsOutlineEnabled;
00208 bool myIsCompiled;
00209 };
00210
00211 }
00212
00213
00214 #endif // SFML_SHAPE_HPP