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_DRAWABLE_HPP
00026 #define SFML_DRAWABLE_HPP
00027
00029
00031 #include <SFML/Graphics/Color.hpp>
00032
00033
00034 namespace sf
00035 {
00036 class RenderWindow;
00037
00041 namespace Blend
00042 {
00043 enum Mode
00044 {
00045 Alpha,
00046 Add,
00047 Multiply,
00048 None
00049 };
00050 }
00051
00056 class SFML_API Drawable
00057 {
00058 public :
00059
00071 Drawable(float Left = 0.f, float Top = 0.f, float ScaleX = 1.f, float ScaleY = 1.f, float Rotation = 0.f, const Color& Col = Color(255, 255, 255, 255));
00072
00077 virtual ~Drawable();
00078
00085 void SetLeft(float Left);
00086
00093 void SetTop(float Top);
00094
00102 void SetPosition(float Left, float Top);
00103
00110 void SetScaleX(float Scale);
00111
00118 void SetScaleY(float Scale);
00119
00127 void SetScale(float ScaleX, float ScaleY);
00128
00135 void SetRotation(float Rotation);
00136
00146 void SetRotationCenter(float X, float Y);
00147
00155 void SetColor(const Color& Col);
00156
00164 void SetBlendMode(Blend::Mode Mode);
00165
00172 float GetLeft() const;
00173
00180 float GetTop() const;
00181
00188 float GetScaleX() const;
00189
00196 float GetScaleY() const;
00197
00204 float GetRotation() const;
00205
00212 const Color& GetColor() const;
00213
00220 Blend::Mode GetBlendMode() const;
00221
00229 void Move(float OffsetX, float OffsetY);
00230
00238 void Scale(float FactorX, float FactorY);
00239
00246 void Rotate(float Angle);
00247
00248 private :
00249
00250 friend class RenderWindow;
00251
00258 void Draw(const RenderWindow& Window) const;
00259
00266 virtual void Render(const RenderWindow& Window) const = 0;
00267
00269
00271 float myLeft;
00272 float myTop;
00273 float myScaleX;
00274 float myScaleY;
00275 float myRotation;
00276 float myCenterX;
00277 float myCenterY;
00278 Color myColor;
00279 Blend::Mode myBlendMode;
00280 };
00281
00282 }
00283
00284
00285 #endif // SFML_DRAWABLE_HPP