From 8eea63362ed29d888515512f965a298e5cb77bd6 Mon Sep 17 00:00:00 2001 From: Gregory Montoir Date: Tue, 28 Oct 2003 19:55:12 +0000 Subject: handle (x,y) negative coordinates in dynalum svn-id: r10998 --- queen/display.cpp | 16 +++++++++++----- queen/display.h | 4 ++-- 2 files changed, 13 insertions(+), 7 deletions(-) (limited to 'queen') diff --git a/queen/display.cpp b/queen/display.cpp index 29654a7f11..0f4012851e 100644 --- a/queen/display.cpp +++ b/queen/display.cpp @@ -161,19 +161,25 @@ void Display::dynalumInit(Resource *resource, const char *roomName, uint16 roomN } -void Display::dynalumUpdate(int x, int y) { +void Display::dynalumUpdate(int16 x, int16 y) { if (!_dynalum.valid) return; - if (x >= _bdWidth) { + if (x < 0) { + x = 0; + } + else if (x >= _bdWidth) { x = _bdWidth; } - if (y >= ROOM_ZONE_HEIGHT - 1) { + if (y < 0) { + y = 0; + } + else if (y >= ROOM_ZONE_HEIGHT - 1) { y = ROOM_ZONE_HEIGHT - 1; } - unsigned offset = (y / 4) * 160 + (x / 4); + uint offset = (y / 4) * 160 + (x / 4); if (offset >= sizeof(_dynalum.msk)) { debug(0, "Graphics::dynalumUpdate(%d, %d) - invalid offset: %08x", x, y, offset); return; @@ -654,7 +660,7 @@ void Display::prepareUpdate() { } -void Display::update(bool dynalum, int dynaX, int dynaY) { +void Display::update(bool dynalum, int16 dynaX, int16 dynaY) { if (dynalum) { dynalumUpdate(dynaX, dynaY); diff --git a/queen/display.h b/queen/display.h index da012fa9a5..0e0d7f5773 100644 --- a/queen/display.h +++ b/queen/display.h @@ -67,7 +67,7 @@ public: ~Display(); void dynalumInit(Resource *resource, const char *roomName, uint16 roomNum); - void dynalumUpdate(int x, int y); + void dynalumUpdate(int16 x, int16 y); void palConvert(uint8 *outPal, const uint8 *inPal, int start, int end); void palSet(const uint8 *pal, int start, int end, bool updateScreen = false); @@ -83,7 +83,7 @@ public: void screenMode(int comPanel, bool inCutaway); void prepareUpdate(); - void update(bool dynalum, int dynaX, int dynaY); + void update(bool dynalum, int16 dynaX, int16 dynaY); void blit(RenderingBuffer dstBuf, uint16 dstX, uint16 dstY, const uint8 *srcBuf, uint16 srcW, uint16 srcH, uint16 srcPitch, bool xflip, bool masked); void fill(RenderingBuffer dstBuf, uint16 x, uint16 y, uint16 w, uint16 h, uint8 color); -- cgit v1.2.3