sdl2_impl 0.1.0
Vendor SDL2 2.32 : IGraphic2Module / IAudioModule
Loading...
Searching...
No Matches
SdlSprite.hpp
Go to the documentation of this file.
1
11#ifndef SDLSPRITE_HPP_
12#define SDLSPRITE_HPP_
13
14//Sdl
15#include <SDL.h>
16
17//Interface
18#include "ISprite.hpp"
19
20//encapsulation
21#include "SdlTexture.hpp"
22
29class SdlSprite : public graphic::ISprite {
30
31 public:
32 SdlSprite(SdlTexture &texture) : _texture(texture) {
33 const Vector2f size = texture.getSize();
34
35 _crop = {0.f, 0.f, static_cast<float>(size.x), static_cast<float>(size.y)};
36 _size = size;
37 }
38
39 ~SdlSprite() override = default;
40
41 bool isReady() const override {
42 return _texture.isReady();
43 }
44
45 Rect<float> getBounds() const override {
46 return {static_cast<float>(_position.x), static_cast<float>(_position.y),
47 static_cast<float>(_size.x), static_cast<float>(_size.y)};
48 }
49
50 void setCrop(Rect<float> rect) override {
51 _crop = rect;
52 }
53
54 Vector2f getPosition() const override { return _position; }
55 void setPosition(Vector2f position) override { _position = position; }
56
57 float getRotation() const override { return _rotation; }
58 void setRotation(float angle, bool isRad = false) override {
59 //SDL_RenderCopyEx prend des degres : on convertit une seule fois
60 _rotation = isRad ? angle * 180.f / 3.14159265f : angle;
61 }
62
63 Vector2f getSize() const override { return _size; }
64 void setSize(Vector2f size) override { _size = size; }
65
66 friend class SdlWindow;
67
68 private:
69 SdlTexture &_texture;
70
71 Rect<float> _crop{};
72 Vector2f _position{0, 0};
73 Vector2f _size{0, 0};
74 float _rotation = 0.f;
75};
76
79#endif /* !SDLSPRITE_HPP_ */
Une vue sur une texture : decoupe, position, taille, rotation.
Definition SdlSprite.hpp:29
~SdlSprite() override=default
Vector2f getPosition() const override
Definition SdlSprite.hpp:54
void setPosition(Vector2f position) override
Definition SdlSprite.hpp:55
bool isReady() const override
Definition SdlSprite.hpp:41
Vector2f getSize() const override
Definition SdlSprite.hpp:63
void setRotation(float angle, bool isRad=false) override
Definition SdlSprite.hpp:58
Rect< float > getBounds() const override
Definition SdlSprite.hpp:45
void setSize(Vector2f size) override
Definition SdlSprite.hpp:64
SdlSprite(SdlTexture &texture)
Definition SdlSprite.hpp:32
void setCrop(Rect< float > rect) override
Definition SdlSprite.hpp:50
float getRotation() const override
Definition SdlSprite.hpp:57
Une image en memoire vive, televersee a la demande.
Definition SdlTexture.hpp:38
Vector2f getSize() const override
Definition SdlTexture.hpp:57
bool isReady() const override
Definition SdlTexture.hpp:53
Une fenetre SDL et son renderer, implemente IWindow2.
Definition SdlWindow.hpp:50