From: Ricardo Cruz Date: Fri, 24 Sep 2004 15:07:22 +0000 (+0000) Subject: Tweaks. X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=fd8d6b5c6f85750716999c0888a715a67015b3ae;p=supertux.git Tweaks. SVN-Revision: 1962 --- diff --git a/lib/video/drawing_context.cpp b/lib/video/drawing_context.cpp index 693191ccb..80e4b8db2 100644 --- a/lib/video/drawing_context.cpp +++ b/lib/video/drawing_context.cpp @@ -30,6 +30,7 @@ using namespace SuperTux; DrawingContext::DrawingContext() { transform.draw_effect = NONE_EFFECT; +transform.zoom = 1; } DrawingContext::~DrawingContext() @@ -50,6 +51,7 @@ DrawingContext::draw_surface(const Surface* surface, const Vector& position, request.pos = transform.apply(position); request.drawing_effect = drawing_effect; request.drawing_effect = transform.draw_effect | drawing_effect; + request.zoom = transform.zoom; drawingrequests.push_back(request); } @@ -289,7 +291,13 @@ DrawingContext::do_drawing() case SURFACE: { const Surface* surface = (const Surface*) i->request_data; - surface->impl->draw(i->pos.x, i->pos.y, 255, i->drawing_effect); + + if(i->zoom != 1.0) + surface->impl->draw_stretched(i->pos.x * i->zoom, i->pos.y * i->zoom, + (int)(surface->w * i->zoom), (int)(surface->h * i->zoom), + 255, i->drawing_effect); + else + surface->impl->draw(i->pos.x, i->pos.y, 255, i->drawing_effect); break; } case SURFACE_PART: @@ -336,3 +344,9 @@ DrawingContext::set_drawing_effect(int effect) { transform.draw_effect = effect; } + +void +DrawingContext::set_zooming(float zoom) +{ + transform.zoom = zoom; +} diff --git a/lib/video/drawing_context.h b/lib/video/drawing_context.h index be8cdfdba..a927b6727 100644 --- a/lib/video/drawing_context.h +++ b/lib/video/drawing_context.h @@ -79,19 +79,20 @@ namespace SuperTux void do_drawing(); const Vector& get_translation() const - { - return transform.translation; - } + { return transform.translation; } + Uint32 get_drawing_effect() const + { return transform.draw_effect; } + void set_translation(const Vector& newtranslation) - { - transform.translation = newtranslation; - } + { transform.translation = newtranslation; } void push_transform(); void pop_transform(); /// Apply that effect in the next draws (effects are listed on surface.h). void set_drawing_effect(int effect); + /// apply that zoom in the next draws */ + void set_zooming(float zoom); private: class Transform @@ -104,7 +105,8 @@ namespace SuperTux return v - translation; } - int draw_effect; + Uint32 draw_effect; + float zoom; }; /// the transform stack @@ -147,6 +149,7 @@ namespace SuperTux { int layer; Uint32 drawing_effect; + float zoom; RequestType type; Vector pos;