Mercurial > sdl-ios-xcode
view test/automated/Makefile @ 3333:b334b4f7dfa0
[SDL] Bad math in SDL_RenderCopy
Mason Wheeler to sdl
When I tried to render an image using something other than NULL for srcrect, it got horribly distorted. I traced it down to the fact that the math in the rectangle adjustments performed just before the call to renderer->RenderCopy is written inside out. It should look like this:
if (dstrect->w != real_dstrect.w) {
int deltax = (dstrect->x - real_dstrect.x);
int deltaw = (dstrect->w - real_dstrect.w);
real_srcrect.x += (deltax * real_srcrect.w) / dstrect->w;
real_srcrect.w += (deltaw * real_srcrect.w) / dstrect->w;
}
if (dstrect->h != real_dstrect.h) {
int deltay = (dstrect->y - real_dstrect.y);
int deltah = (dstrect->h - real_dstrect.h);
real_srcrect.y += (deltay * real_srcrect.h) / dstrect->h;
real_srcrect.h += (deltah * real_srcrect.h) / dstrect->h;
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sat, 03 Oct 2009 16:23:16 +0000 |
parents | 22ac66da0765 |
children | c32c53fca10d |
line wrap: on
line source
CFLAGS := -W -Wall -Wextra -g -I. `sdl-config --cflags` LDFLAGS := `sdl-config --libs` # If it doesn't pick up defaults #CFLAGS := -I. -D_GNU_SOURCE=1 -D_REENTRANT -I/usr/local/include/SDL #LDFLAGS := -lm -ldl -lesd -lpthread SRC := testsdl.c \ rwops/rwops.c \ platform/platform.c \ surface/surface.c \ render/render.c \ audio/audio.c COMMON_SRC := SDL_at.c common/common.c COMMON_INCLUDE := SDL_at.h TESTS_ALL := testsdl \ rwops/rwops \ platform/platform \ surface/surface \ render/render \ audio/audio .PHONY: all clean test all: $(TESTS_ALL) test: all @./testsdl testsdl: $(SRC) $(COMMON_SRC) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(SRC) $(COMMON_SRC) rwops/rwops: rwops/rwops.c $(COMMON_INCLUDE) $(COMMON_SRC) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ rwops/rwops.c $(COMMON_SRC) -DTEST_STANDALONE platform/platform: platform/platform.c $(COMMON_INCLUDE) $(COMMON_SRC) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ platform/platform.c $(COMMON_SRC) -DTEST_STANDALONE surface/surface: surface/surface.c $(COMMON_INCLUDE) $(COMMON_SRC) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ surface/surface.c $(COMMON_SRC) -DTEST_STANDALONE render/render: render/render.c $(COMMON_INCLUDE) $(COMMON_SRC) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ render/render.c $(COMMON_SRC) -DTEST_STANDALONE audio/audio: audio/audio.c $(COMMON_INCLUDE) $(COMMON_SRC) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ audio/audio.c $(COMMON_SRC) -DTEST_STANDALONE clean: $(RM) $(TESTS_ALL)