X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fvideo%2Fdrawing_request.hpp;h=60043c9a8a67650b7d905dfdc94360fa356665f5;hb=1f813f3b4ca1af669c7183f25af902de7205dd65;hp=5eeb71197a6869d6e936e2e04b30a4dfbea6727a;hpb=9e7e803e384ed7bf0f5ccf9a4c381dd13b6a01d1;p=supertux.git diff --git a/src/video/drawing_request.hpp b/src/video/drawing_request.hpp index 5eeb71197..60043c9a8 100644 --- a/src/video/drawing_request.hpp +++ b/src/video/drawing_request.hpp @@ -1,12 +1,10 @@ -// $Id: drawing_request.hpp 4986 2007-04-16 17:48:28Z matzeb $ -// // SuperTux // Copyright (C) 2006 Matthias Braun // -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -14,91 +12,122 @@ // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -#ifndef SUPERTUX_DRAWINGREQUEST_H -#define SUPERTUX_DRAWINGREQUEST_H +// along with this program. If not, see . + +#ifndef HEADER_SUPERTUX_VIDEO_DRAWING_REQUEST_HPP +#define HEADER_SUPERTUX_VIDEO_DRAWING_REQUEST_HPP -#include -#include #include +#include +#include #include -#include - -#include "glutil.hpp" +#include "math/rectf.hpp" +#include "math/sizef.hpp" #include "math/vector.hpp" -#include "color.hpp" -#include "font.hpp" +#include "video/color.hpp" +#include "video/drawing_context.hpp" +#include "video/font.hpp" +#include "video/glutil.hpp" class Surface; -// some constants for predefined layer values -enum { - LAYER_BACKGROUND0 = -300, - LAYER_BACKGROUND1 = -200, - LAYER_BACKGROUNDTILES = -100, - LAYER_TILES = 0, - LAYER_OBJECTS = 50, - LAYER_FLOATINGOBJECTS = 150, - LAYER_FOREGROUNDTILES = 200, - LAYER_FOREGROUND0 = 300, - LAYER_FOREGROUND1 = 400, - LAYER_HUD = 500, - LAYER_GUI = 600 +enum RequestType +{ + SURFACE, SURFACE_PART, TEXT, GRADIENT, FILLRECT, INVERSEELLIPSE, DRAW_LIGHTMAP, GETLIGHT }; -class Blend +struct DrawingRequestData { -public: - GLenum sfactor; - GLenum dfactor; - - Blend() - : sfactor(GL_SRC_ALPHA), dfactor(GL_ONE_MINUS_SRC_ALPHA) + virtual ~DrawingRequestData() {} +}; - Blend(GLenum s, GLenum d) - : sfactor(s), dfactor(d) +struct SurfaceRequest : public DrawingRequestData +{ + SurfaceRequest() : + surface() {} -}; -enum Target { - NORMAL, LIGHTMAP -}; + const Surface* surface; -enum RequestType -{ - SURFACE, SURFACE_PART, TEXT, GRADIENT, FILLRECT, GETLIGHT +private: + SurfaceRequest(const SurfaceRequest&) = delete; + SurfaceRequest& operator=(const SurfaceRequest&) = delete; }; -struct SurfacePartRequest +struct SurfacePartRequest : public DrawingRequestData { + SurfacePartRequest() : + surface(), + srcrect(), + dstsize() + {} + const Surface* surface; - Vector source, size; + Rectf srcrect; + Sizef dstsize; + +private: + SurfacePartRequest(const SurfacePartRequest&) = delete; + SurfacePartRequest& operator=(const SurfacePartRequest&) = delete; }; -struct TextRequest +struct TextRequest : public DrawingRequestData { + TextRequest() : + font(), + text(), + alignment() + {} + const Font* font; std::string text; FontAlignment alignment; + +private: + TextRequest(const TextRequest&); + TextRequest& operator=(const TextRequest&); }; -struct GradientRequest +struct GradientRequest : public DrawingRequestData { - Color top, bottom; + GradientRequest() : + top(), + bottom(), + size() + {} + + Color top; + Color bottom; Vector size; }; -struct FillRectRequest +struct FillRectRequest : public DrawingRequestData { + FillRectRequest() : + color(), + size(), + radius() + {} + Color color; Vector size; float radius; }; +struct InverseEllipseRequest : public DrawingRequestData +{ + InverseEllipseRequest() : + color(), + size() + {} + + Color color; + Vector size; +}; + struct DrawingRequest { Target target; @@ -112,11 +141,19 @@ struct DrawingRequest float angle; Color color; - void* request_data; - - DrawingRequest() - : angle(0.0f), - color(1.0f, 1.0f, 1.0f, 1.0f) + DrawingRequestData* request_data; + + DrawingRequest() : + target(), + type(), + pos(), + layer(), + drawing_effect(), + alpha(), + blend(), + angle(0.0f), + color(1.0f, 1.0f, 1.0f, 1.0f), + request_data() {} bool operator<(const DrawingRequest& other) const @@ -125,10 +162,17 @@ struct DrawingRequest } }; -struct GetLightRequest +struct GetLightRequest : public DrawingRequestData { + GetLightRequest() : color_ptr() {} + Color* color_ptr; + +private: + GetLightRequest(const GetLightRequest&) = delete; + GetLightRequest& operator=(const GetLightRequest&) = delete; }; #endif +/* EOF */