4#include <SDL3_image/SDL_image.h>
5#include <SDL3_ttf/SDL_ttf.h>
54 SDL_FlipMode flip = SDL_FLIP_NONE;
57 flip =
static_cast<SDL_FlipMode
>(flip | SDL_FLIP_HORIZONTAL);
61 flip =
static_cast<SDL_FlipMode
>(flip | SDL_FLIP_VERTICAL);
76 dest.w = position.
size.x;
77 dest.h = position.
size.y;
98 const double angleDeg = angle * (180.0 / std::numbers::pi);
100 SDL_RenderTextureRotated(
114 r_src.w = source.
size.x;
115 r_src.h = source.
size.y;
120 r_dest.w = dest.
size.x;
121 r_dest.h = dest.
size.y;
136 r_src.w = source.
size.x;
137 r_src.h = source.
size.y;
142 r_dest.w = dest.
size.x;
143 r_dest.h = dest.
size.y;
145 const double angleDeg = angle * (180.0 / std::numbers::pi);
147 SDL_RenderTextureRotated(
158 const auto sdlColor = SDL_Color { color.
r, color.
g, color.
b, color.
a };
159 SDL_Surface* textSurface = TTF_RenderText_Solid(font.get(),
text.c_str(), 0, sdlColor);
162 SDL_SetTextureBlendMode(textTexture, SDL_BLENDMODE_BLEND);
163 SDL_SetTextureScaleMode(textTexture, SDL_SCALEMODE_NEAREST);
168 dest.w = float(textSurface->w);
169 dest.h = float(textSurface->h);
173 dest.x -= dest.w / 2.0F;
179 SDL_DestroySurface(textSurface);
180 SDL_DestroyTexture(textTexture);
248 const float cx = position.
x;
249 const float cy = position.
y;
262 err += (2.0F * y) + 1.0F;
265 err += (2.0F * (y - x)) + 1.0F;
281 float err = 1.0F - x;
282 const float cx = position.
x;
283 const float cy = position.
y;
292 err += (2.0F * y) + 1.0F;
295 err += (2.0F * (y - x)) + 1.0F;
302 SDL_SetTextureBlendMode(texture.get(),
static_cast<SDL_BlendMode
>(mode));
307 SDL_SetTextureAlphaModFloat(texture.get(), alpha);
Vec2< T > size
The size of the rectangle.
Vec2< T > position
The position of the rectangle.
T y
The y component of the vector.
T x
The x component of the vector.
Display and window routines for the ASW library.
Routines for drawing sprites and primitives to the screen.
asw::Renderer * renderer
The renderer for the display module.
void sprite(const asw::Texture &tex, const asw::Vec2< float > &position)
Draw a sprite.
void circle_fill(const asw::Vec2< float > &position, float radius, asw::Color color)
Draw a filled circle.
void clear_color(asw::Color color)
Clear the screen to a color.
void line(const asw::Vec2< float > &position1, const asw::Vec2< float > &position2, asw::Color color)
Draw a line.
void rotate_sprite(const asw::Texture &tex, const asw::Vec2< float > &position, float angle)
Draw a sprite with the option to rotate it.
void stretch_sprite(const asw::Texture &tex, const asw::Quad< float > &position)
Draw a sprite with the option to stretch it.
void text(const asw::Font &font, const std::string &text, const asw::Vec2< float > &position, asw::Color color, asw::TextJustify justify=asw::TextJustify::Left)
Draw text.
void stretch_sprite_rotate_blit(const asw::Texture &tex, const asw::Quad< float > &source, const asw::Quad< float > &dest, float angle)
Draw a sprite with the option to stretch and rotate a portion of it.
void rect(const asw::Quad< float > &position, asw::Color color)
Draw a rectangle.
void circle(const asw::Vec2< float > &position, float radius, asw::Color color)
Draw a circle.
void rect_fill(const asw::Quad< float > &position, asw::Color color)
Draw a filled rectangle.
void sprite_flip(const asw::Texture &tex, const asw::Vec2< float > &position, bool flip_x, bool flip_y)
Draw a sprite with the option to flip it.
void point(const asw::Vec2< float > &position, asw::Color color)
Draw a point.
void set_blend_mode(const asw::Texture &texture, asw::BlendMode mode)
Set the blend mode of a texture.
void stretch_sprite_blit(const asw::Texture &tex, const asw::Quad< float > &source, const asw::Quad< float > &dest)
Draw a sprite with the option to stretch a portion of it.
void set_alpha(const asw::Texture &texture, float alpha)
Set the alpha of a texture.
asw::Vec2< float > get_texture_size(const asw::Texture &tex)
Get texture size.
std::shared_ptr< TTF_Font > Font
Alias for a shared pointer to an TTF_Font.
std::shared_ptr< SDL_Texture > Texture
Alias for a shared pointer to an SDL_Texture.
BlendMode
Mappings from SDL_BLENDMODE to ASW BlendMode.
TextJustify
Text justification options for text rendering.
RGBA color struct with 8-bit channels.
General utility functions.