X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=lib%2Fvideo%2Fdrawing_context.h;h=3da8dcce5c6ba16e979ad0e74bc537afc3e6a9c4;hb=8e0bad9f82ccbc811a18edd7ce6c6f69c5bca082;hp=6c7e7749d48d66a61094667621ef1a967a9f8d81;hpb=c6c8b57b862c835acfcfa0ae6856fe7c2e5204fb;p=supertux.git diff --git a/lib/video/drawing_context.h b/lib/video/drawing_context.h index 6c7e7749d..3da8dcce5 100644 --- a/lib/video/drawing_context.h +++ b/lib/video/drawing_context.h @@ -21,18 +21,19 @@ #include #include +#include #include "SDL.h" -#include "../math/vector.h" -#include "../video/screen.h" -#include "../video/surface.h" +#include "math/vector.h" +#include "video/screen.h" +#include "video/surface.h" +#include "video/font.h" namespace SuperTux { class Surface; - class Font; // some constants for predefined layer values enum { @@ -59,23 +60,23 @@ namespace SuperTux ~DrawingContext(); /// Adds a drawing request for a surface into the request list. - void draw_surface(const Surface* surface, const Vector& position, int layer, - Uint32 drawing_effect = NONE_EFFECT); + void draw_surface(const Surface* surface, const Vector& position, + int layer, uint32_t drawing_effect = NONE_EFFECT); /// Adds a drawing request for part of a surface. void draw_surface_part(const Surface* surface, const Vector& source, const Vector& size, const Vector& dest, int layer, - Uint32 drawing_effect = NONE_EFFECT); + uint32_t drawing_effect = NONE_EFFECT); /// Draws a text. - void draw_text(Font* font, const std::string& text, const Vector& position, - int allignment, int layer, - Uint32 drawing_effect = NONE_EFFECT); + void draw_text(const Font* font, const std::string& text, + const Vector& position, FontAlignment alignment, int layer, + uint32_t drawing_effect = NONE_EFFECT); /// Draws text on screen center (feed Vector.x with a 0). /// This is the same as draw_text() with a screen->w/2 position and - /// allignment set to LEFT_ALLIGN - void draw_center_text(Font* font, const std::string& text, + /// alignment set to LEFT_ALLIGN + void draw_center_text(const Font* font, const std::string& text, const Vector& position, int layer, - Uint32 drawing_effect = NONE_EFFECT); + uint32_t drawing_effect = NONE_EFFECT); /// Draws a color gradient onto the whole screen */ void draw_gradient(Color from, Color to, int layer); /// Fills a rectangle. @@ -86,9 +87,9 @@ namespace SuperTux void do_drawing(); const Vector& get_translation() const - { return transform.translation; } - Uint32 get_drawing_effect() const - { return transform.draw_effect; } + { return transform.translation; } + uint32_t get_drawing_effect() const + { return transform.drawing_effect; } void set_translation(const Vector& newtranslation) { transform.translation = newtranslation; } @@ -105,19 +106,22 @@ namespace SuperTux private: class Transform - { - public: - Vector translation; // only translation for now... + { + public: + Vector translation; + uint32_t drawing_effect; + float zoom; + int alpha; - Vector apply(const Vector& v) const - { - return v - translation; - } + Transform() + : drawing_effect(NONE_EFFECT), zoom(1), alpha(255) + { } - Uint32 draw_effect; - float zoom; - int alpha; - }; + Vector apply(const Vector& v) const + { + return v - translation; + } + }; /// the transform stack std::vector transformstack; @@ -137,9 +141,9 @@ namespace SuperTux struct TextRequest { - Font* font; + const Font* font; std::string text; - int allignment; + FontAlignment alignment; }; struct GradientRequest @@ -156,14 +160,14 @@ namespace SuperTux struct DrawingRequest { + RequestType type; + Vector pos; + int layer; - Uint32 drawing_effect; + uint32_t drawing_effect; float zoom; int alpha; - RequestType type; - Vector pos; - void* request_data; bool operator<(const DrawingRequest& other) const