X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=lib%2Fvideo%2Fdrawing_context.cpp;h=80e4b8db2a2e13d45ea14d9f02dd6f3ed269ffab;hb=fd8d6b5c6f85750716999c0888a715a67015b3ae;hp=f6e9af10d8938a2f18cd51ce188f08d6bb3f7b61;hpb=4b476ec30e7dd62249328054402d6493c20a685d;p=supertux.git diff --git a/lib/video/drawing_context.cpp b/lib/video/drawing_context.cpp index f6e9af10d..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); } @@ -78,7 +80,8 @@ DrawingContext::draw_surface_part(const Surface* surface, const Vector& source, void DrawingContext::draw_text(Font* font, const std::string& text, - const Vector& position, int layer, Uint32 drawing_effect) + const Vector& position, int allignment, int layer, + Uint32 drawing_effect, int alpha) { DrawingRequest request; @@ -90,26 +93,8 @@ DrawingContext::draw_text(Font* font, const std::string& text, TextRequest* textrequest = new TextRequest; textrequest->font = font; textrequest->text = text; - request.request_data = textrequest; - - drawingrequests.push_back(request); -} - -void -DrawingContext::draw_text_center(Font* font, const std::string& text, - const Vector& position, int layer, Uint32 drawing_effect) -{ - DrawingRequest request; - - request.type = TEXT; - request.layer = layer; - request.pos = transform.apply(position) + Vector(screen->w/2 - - font->get_text_width(text)/2, 0); - request.drawing_effect = drawing_effect; - - TextRequest* textrequest = new TextRequest; - textrequest->font = font; - textrequest->text = text; + textrequest->allignment = allignment; + textrequest->alpha = alpha; request.request_data = textrequest; drawingrequests.push_back(request); @@ -215,8 +200,8 @@ void DrawingContext::draw_text(DrawingRequest& request) { TextRequest* textrequest = (TextRequest*) request.request_data; - - textrequest->font->draw(textrequest->text, request.pos, request.drawing_effect); + + textrequest->font->draw(textrequest->text, request.pos, textrequest->allignment, request.drawing_effect, textrequest->alpha); delete textrequest; } @@ -306,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: @@ -353,3 +344,9 @@ DrawingContext::set_drawing_effect(int effect) { transform.draw_effect = effect; } + +void +DrawingContext::set_zooming(float zoom) +{ + transform.zoom = zoom; +}