mirror of
https://github.com/kanjitalk755/macemu.git
synced 2025-02-22 09:28:59 +00:00
clamp masking to screen size
This commit is contained in:
parent
f995962795
commit
f32c6b66e0
@ -94,6 +94,8 @@ void MaskRect(int16 top, int16 left, int16 bottom, int16 right, bool in) {
|
|||||||
if (top == bottom || left == right) return;
|
if (top == bottom || left == right) return;
|
||||||
if (top < 0) top = 0;
|
if (top < 0) top = 0;
|
||||||
if (left < 0) left = 0;
|
if (left < 0) left = 0;
|
||||||
|
if (bottom > display_mask.h) bottom = display_mask.h;
|
||||||
|
if (right > display_mask.w) right = display_mask.w;
|
||||||
|
|
||||||
uint8_t *line = display_mask.pixels + display_mask.w * top + left;
|
uint8_t *line = display_mask.pixels + display_mask.w * top + left;
|
||||||
for (int y = top; y < bottom; y++) {
|
for (int y = top; y < bottom; y++) {
|
||||||
@ -122,6 +124,8 @@ void MaskRegion(uint32 regionPtr, bool in) {
|
|||||||
int16 left = ReadMacInt16(regionPtr + 4);
|
int16 left = ReadMacInt16(regionPtr + 4);
|
||||||
int16 bottom = ReadMacInt16(regionPtr + 6);
|
int16 bottom = ReadMacInt16(regionPtr + 6);
|
||||||
int16 right = ReadMacInt16(regionPtr + 8);
|
int16 right = ReadMacInt16(regionPtr + 8);
|
||||||
|
if (bottom > display_mask.h) bottom = display_mask.h;
|
||||||
|
if (right > display_mask.w) right = display_mask.w;
|
||||||
|
|
||||||
if (size == 10) {
|
if (size == 10) {
|
||||||
MaskRect(top, left, bottom, right, in);
|
MaskRect(top, left, bottom, right, in);
|
||||||
@ -144,6 +148,9 @@ void MaskRegion(uint32 regionPtr, bool in) {
|
|||||||
if (begin == 0x7fff) break;
|
if (begin == 0x7fff) break;
|
||||||
uint16 end = ReadMacInt16(ptr);
|
uint16 end = ReadMacInt16(ptr);
|
||||||
ptr += 2;
|
ptr += 2;
|
||||||
|
if (end > display_mask.w) {
|
||||||
|
end = display_mask.w;
|
||||||
|
}
|
||||||
for (int i=begin; i < end; i++) {
|
for (int i=begin; i < end; i++) {
|
||||||
curLine[i] ^= 0xff;
|
curLine[i] ^= 0xff;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user