X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=lib%2Fvideo%2Fdrawing_context.cpp;h=bba6d36c289269b41166b18e5fd70fc55ca65053;hb=9599042661b468aae7bd34dca05441c0ebc93ad7;hp=5c98f134d79b70d9201acdc68844a5a5872dca33;hpb=00fb759c2385ff08caf38e916c2d0ba8cafc8a41;p=supertux.git diff --git a/lib/video/drawing_context.cpp b/lib/video/drawing_context.cpp index 5c98f134d..bba6d36c2 100644 --- a/lib/video/drawing_context.cpp +++ b/lib/video/drawing_context.cpp @@ -22,10 +22,10 @@ #include #include -#include "../video/drawing_context.h" -#include "../video/surface.h" -#include "../app/globals.h" -#include "../video/font.h" +#include "drawing_context.h" +#include "surface.h" +#include "app/globals.h" +#include "font.h" using namespace SuperTux; @@ -79,6 +79,22 @@ DrawingContext::draw_surface_part(const Surface* surface, const Vector& source, surfacepartrequest->size = size; surfacepartrequest->source = source; surfacepartrequest->surface = surface; + + // clip on screen borders + if(request.pos.x < 0) { + surfacepartrequest->size.x += request.pos.x; + if(surfacepartrequest->size.x <= 0) + return; + surfacepartrequest->source.x -= request.pos.x; + request.pos.x = 0; + } + if(request.pos.y < 0) { + surfacepartrequest->size.y += request.pos.y; + if(surfacepartrequest->size.y <= 0) + return; + surfacepartrequest->source.y -= request.pos.y; + request.pos.y = 0; + } request.request_data = surfacepartrequest; drawingrequests.push_back(request);