* replaced the vector classes with a generic one

* fixed wrong member protection in Rect
+ override for DrawableImpl methods

git-svn-id: https://sfml.svn.sourceforge.net/svnroot/sfml/branches/sfml2@1537 4e206d99-4929-0410-ac5d-dfc041789085
This commit is contained in:
Trass3r 2010-07-24 00:30:30 +00:00
parent 7500786896
commit 42615a30d9
19 changed files with 503 additions and 364 deletions

View file

@ -27,7 +27,7 @@
module dsfml.graphics.drawableimpl;
public import dsfml.system.common;
import dsfml.system.vector2;
import dsfml.system.vector;
import dsfml.graphics.irendertarget;
import dsfml.graphics.idrawable,
@ -61,148 +61,146 @@ protected:
}
public:
void rotate(float angle)
override void rotate(float angle)
{
sfDrawable_Rotate(m_ptr, angle);
}
void move(float offsetX, float offsetY)
override void move(float offsetX, float offsetY)
{
sfDrawable_Move(m_ptr, offsetX, offsetY);
}
void move(Vector2f offset)
override void move(Vector2f offset)
{
sfDrawable_Move(m_ptr, offset.x, offset.y);
}
Vector2f tranformToLocal(Vector2f point)
override Vector2f transformToLocal(Vector2f point) const
{
Vector2f ret;
sfDrawable_TransformToLocal(m_ptr, point.x, point.y, &ret.x, &ret.y);
return ret;
}
Vector2f tranformToGlobal(Vector2f point)
override Vector2f transformToGlobal(Vector2f point) const
{
Vector2f ret;
sfDrawable_TransformToLocal(m_ptr, point.x, point.y, &ret.x, &ret.y);
return ret;
}
void render(IRenderTarget window)
override void render(IRenderTarget window)
{
sfRenderWindow_DrawThis((cast(DSFMLObject)window).nativePointer, m_ptr);
}
void renderWithShader(IRenderTarget window, Shader shader)
override void renderWithShader(IRenderTarget window, Shader shader)
{
sfRenderWindow_DrawThisWithShader((cast(DSFMLObject)window).nativePointer, m_ptr, shader.nativePointer);
}
void setPosition(float x, float y)
override void setPosition(float x, float y)
{
sfDrawable_SetPosition(m_ptr, x, y);
}
void setScale(float scaleX, float scaleY)
override void setScale(float scaleX, float scaleY)
{
sfDrawable_SetScale(m_ptr, scaleX, scaleY);
}
void setOrigin(float originX, float originY)
override void setOrigin(float originX, float originY)
{
sfDrawable_SetOrigin(m_ptr, originX, originY);
}
@property
{
void x(float x)
override void x(float x)
{
sfDrawable_SetX(m_ptr, x);
}
void y(float y)
override void y(float y)
{
sfDrawable_SetY(m_ptr, y);
}
void position(Vector2f vec)
override void position(Vector2f vec)
{
sfDrawable_SetPosition(m_ptr, vec.x, vec.y);
}
void scaleX(float scale)
override void scaleX(float scale)
{
if (scale > 0)
sfDrawable_SetScaleX(m_ptr, scale);
}
void scaleY(float scale)
override void scaleY(float scale)
{
if (scale > 0)
sfDrawable_SetScaleY(m_ptr, scale);
}
void scale(Vector2f scale)
override void scale(Vector2f scale)
{
if (scale.x > 0 && scale.y > 0)
sfDrawable_SetScale(m_ptr, scale.x, scale.y);
}
void origin(Vector2f origin)
override void origin(Vector2f origin)
{
sfDrawable_SetOrigin(m_ptr, origin.x, origin.y);
}
void rotation(float angle)
override void rotation(float angle)
{
sfDrawable_SetRotation(m_ptr, angle);
}
void color(Color c)
override void color(Color c)
{
sfDrawable_SetColor(m_ptr, c);
}
void blendMode(BlendMode mode)
override void blendMode(BlendMode mode)
{
sfDrawable_SetBlendMode(m_ptr, mode);
}
Vector2f position()
override Vector2f position() const
{
return Vector2f(sfDrawable_GetX(m_ptr), sfDrawable_GetY(m_ptr));
}
Vector2f scale()
override Vector2f scale() const
{
return Vector2f(sfDrawable_GetScaleX(m_ptr), sfDrawable_GetScaleY(m_ptr));
}
Vector2f origin()
override Vector2f origin() const
{
return Vector2f(sfDrawable_GetOriginX(m_ptr), sfDrawable_GetOriginY(m_ptr));
}
float rotation()
override float rotation() const
{
return sfDrawable_GetRotation(m_ptr);
}
Color color()
override Color color() const
{
return sfDrawable_GetColor(m_ptr);
}
BlendMode blendMode()
override BlendMode blendMode() const
{
return cast(BlendMode)(sfDrawable_GetBlendMode(m_ptr));
}
void scale(Vector2f scale)
override void scale(Vector2f scale)
{
sfDrawable_SetScale(m_ptr, scale.x, scale.y);
}

View file

@ -26,7 +26,7 @@
module dsfml.graphics.idrawable;
import dsfml.system.vector2;
import dsfml.system.vector;
import dsfml.graphics.irendertarget;
import dsfml.graphics.color,
@ -49,7 +49,7 @@ interface IDrawable
* Params:
* x = New left coordinate
* y = New top coordinate
*/
*/
void setPosition(float x, float y);
/**
@ -60,7 +60,7 @@ interface IDrawable
* scaleY = New vertical scale > 0
*/
void setScale(float scalex, float scaley);
// in {assert(scalex > 0 && scalex > 0);} // TODO: add in again when interface contracts work
// in {assert(scalex > 0 && scalex > 0);} // TODO: add in again when interface contracts work
/**
* Set the origin of the object, in coordinates relative to the
@ -96,7 +96,7 @@ interface IDrawable
*
* Params:
* vec = new position
*/
*/
void position(Vector2f vec);
/**
@ -104,7 +104,7 @@ interface IDrawable
*
* Params:
* scale = New horizontal scale (Strictly positive)
*/
*/
void scaleX(float scale);
/**
@ -140,7 +140,7 @@ interface IDrawable
*
* Params:
* angle = Angle of rotation, in degree
*/
*/
void rotation(float angle);
/**
@ -148,7 +148,7 @@ interface IDrawable
*
* Params:
* c = New color
*/
*/
void color(Color c);
/**
@ -160,6 +160,8 @@ interface IDrawable
*/
void blendMode(BlendMode mode);
const
{
/**
* Get the position of the object
*
@ -174,7 +176,7 @@ interface IDrawable
*
* Returns:
* Current scale
*/
*/
Vector2f scale();
/**
@ -191,7 +193,7 @@ interface IDrawable
*
* Returns:
* Angle of rotation, in degree
*/
*/
float rotation();
/**
@ -199,7 +201,7 @@ interface IDrawable
*
* Returns:
* Current color
*/
*/
Color color();
/**
@ -209,7 +211,8 @@ interface IDrawable
* Current blending mode
*/
BlendMode blendMode();
}
} // const
} // @property
/**
* Rotate the object
@ -217,7 +220,7 @@ interface IDrawable
*
* Params:
* angle = Angle of rotation in degree
*/
*/
void rotate(float angle);
/**
@ -227,7 +230,7 @@ interface IDrawable
* Params:
* offsetX = Offset on the X axis
* offsetY = Offset on the Y axis
*/
*/
void move(float offsetX, float offsetY);
/**
@ -236,7 +239,7 @@ interface IDrawable
*
* Params:
* offset = Amount of units to move the object of
*/
*/
void move(Vector2f offset);
/**
@ -248,8 +251,8 @@ interface IDrawable
*
* Returns:
* Transformed point
*/
Vector2f tranformToLocal(Vector2f point);
*/
Vector2f tranformToLocal(Vector2f point) const;
/**
* Transform a point from local coordinates into global coordinates
@ -260,15 +263,15 @@ interface IDrawable
*
* Returns:
* Transformed point
*/
Vector2f tranformToGlobal(Vector2f point);
*/
Vector2f tranformToGlobal(Vector2f point) const;
/**
* Render the specific geometry of the object
*
* Params:
* window = Target into which render the object
*/
*/
void render(IRenderTarget window);
/**

View file

@ -25,7 +25,7 @@
module dsfml.graphics.irendertarget;
import dsfml.system.vector2;
import dsfml.system.vector;
import dsfml.graphics.idrawable;
import dsfml.graphics.rect;
import dsfml.graphics.shader;

View file

@ -56,14 +56,11 @@ else
*/
struct Rect(T)
{
private:
T left; // Left coordinate of the rectangle
T top; // Top coordinate of the rectangle
T width; // width
T height; // height
public:
static if (!isIntegerType!(T) && !isRealType!(T))
{
static assert (0, "This type is not supported by Rectangle");

View file

@ -29,7 +29,7 @@ module dsfml.graphics.renderimage;
import dsfml.system.common,
dsfml.system.exception,
dsfml.system.stringutil,
dsfml.system.vector2;
dsfml.system.vector;
import dsfml.graphics.idrawable,
dsfml.graphics.image,

View file

@ -44,7 +44,7 @@ import dsfml.window.event,
import dsfml.system.common,
dsfml.system.stringutil,
dsfml.system.vector2;
dsfml.system.vector;
/**
* Simple wrapper for Window that allows easy 2D rendering.

View file

@ -26,7 +26,7 @@
module dsfml.graphics.shape;
import dsfml.system.vector2;
import dsfml.system.vector;
import dsfml.graphics.blendmode;
import dsfml.graphics.color;

View file

@ -32,7 +32,7 @@ import dsfml.graphics.drawableimpl;
import dsfml.graphics.image;
import dsfml.graphics.rect;
import dsfml.system.vector2;
import dsfml.system.vector;
/**
* Sprite defines a sprite : texture, transformations,
@ -160,7 +160,7 @@ public:
* Returns:
* Color of pixel
*/
Color getPixel(uint x, uint y)
Color getPixel(uint x, uint y) const
{
return sfSprite_GetPixel(m_ptr, x, y);
}
@ -211,7 +211,7 @@ public:
* Returns:
* Size of the sprite
*/
Vector2f size()
Vector2f size() const
{
return Vector2f(sfSprite_GetWidth(m_ptr), sfSprite_GetHeight(m_ptr));
}
@ -226,7 +226,7 @@ private:
void function(SFMLClass, float, float) sfSprite_Resize;
void function(SFMLClass, int) sfSprite_FlipX;
void function(SFMLClass, int) sfSprite_FlipY;
SFMLClass function(SFMLClass) sfSprite_GetImage;
SFMLClass function(SFMLClass) sfSprite_GetImage;
IntRect function(SFMLClass) sfSprite_GetSubRect;
float function(SFMLClass) sfSprite_GetWidth;
float function(SFMLClass) sfSprite_GetHeight;

View file

@ -33,7 +33,7 @@ import dsfml.graphics.drawableimpl;
import dsfml.graphics.rect;
import dsfml.system.stringutil;
import dsfml.system.vector2;
import dsfml.system.vector;
/**

View file

@ -29,7 +29,7 @@ module dsfml.graphics.view;
import dsfml.graphics.rect;
import dsfml.system.common,
dsfml.system.vector2;
dsfml.system.vector;
/**
* This class defines a view (position, size and zoom) ;