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
00079 unsigned int GetNbPoints() const;
00080
00088 void EnableFill(bool Enable);
00089
00097 void EnableOutline(bool Enable);
00098
00106 void SetPointPosition(unsigned int Index, const Vector2f& Position);
00107
00116 void SetPointPosition(unsigned int Index, float X, float Y);
00117
00125 void SetPointColor(unsigned int Index, const Color& Col);
00126
00134 void SetPointOutlineColor(unsigned int Index, const Color& OutlineCol);
00135
00142 void SetOutlineWidth(float Width);
00143
00152 const Vector2f& GetPointPosition(unsigned int Index) const;
00153
00162 const Color& GetPointColor(unsigned int Index) const;
00163
00172 const Color& GetPointOutlineColor(unsigned int Index) const;
00173
00180 float GetOutlineWidth() const;
00181
00193 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));
00194
00206 static Shape Line(const Vector2f& P1, const Vector2f& P2, float Thickness, const Color& Col, float Outline = 0.f, const Color& OutlineCol = sf::Color(0, 0, 0));
00207
00218 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));
00219
00230 static Shape Rectangle(const Vector2f& P1, const Vector2f& P2, const Color& Col, float Outline = 0.f, const Color& OutlineCol = sf::Color(0, 0, 0));
00231
00242 static Shape Circle(float X, float Y, float Radius, const Color& Col, float Outline = 0.f, const Color& OutlineCol = sf::Color(0, 0, 0));
00243
00254 static Shape Circle(const Vector2f& Center, float Radius, const Color& Col, float Outline = 0.f, const Color& OutlineCol = sf::Color(0, 0, 0));
00255
00256 protected :
00257
00262 virtual void Render(RenderTarget& Target) const;
00263
00264 private :
00265
00270 void Compile();
00271
00282 static bool ComputeNormal(const Vector2f& P1, const Vector2f& P2, Vector2f& Normal);
00283
00287 struct Point
00288 {
00289 Point(const Vector2f& Pos = Vector2f(0, 0), const Color& C = Color(255, 255, 255), const Color& OutlineC = Color(255, 255, 255));
00290
00291 Vector2f Position;
00292 Vector2f Normal;
00293 Color Col;
00294 Color OutlineCol;
00295 };
00296
00298
00300 std::vector<Point> myPoints;
00301 float myOutline;
00302 bool myIsFillEnabled;
00303 bool myIsOutlineEnabled;
00304 bool myIsCompiled;
00305 };
00306
00307 }
00308
00309
00310 #endif // SFML_SHAPE_HPP