mirror of
https://github.com/aaronsgiles/JPEGView.git
synced 2024-06-13 21:29:28 +00:00
92bdb55672
These are the sources for the final official release of JPEGView for the Mac, back in 1994.
1 line
3.2 KiB
C
1 line
3.2 KiB
C
/*********************************************************/
|
|
/* This source code copyright (c) 1991-2001, Aaron Giles */
|
|
/* See the Read Me file for licensing information. */
|
|
/* Contact email: mac@aarongiles.com */
|
|
/*********************************************************/
|
|
|
|
// short *UpdateRegion(short *rgnData, RgnBufferPtr rgnBuffer, Rect *boxRect)
|
|
|
|
long *bufData = rgnBuffer->buffer, *ptr, tmp;
|
|
long x, lastY;
|
|
|
|
lastY = rgnData[-1]; // get last Y coordinate
|
|
while ((x = *rgnData++) != 0x7fff) {
|
|
x -= boxRect->left;
|
|
while (*bufData < x) bufData++;
|
|
ptr = bufData;
|
|
if (x == *bufData)
|
|
while ((*ptr = *(ptr + 1)) != 0x7fff) ptr++;
|
|
else {
|
|
while (x != 0x7fff) {
|
|
tmp = *ptr;
|
|
*ptr++ = x;
|
|
x = tmp;
|
|
}
|
|
*ptr++ = x;
|
|
bufData++;
|
|
}
|
|
}
|
|
rgnBuffer->yCount = *rgnData++ - lastY;
|
|
return rgnData;
|
|
|
|
/*
|
|
|
|
parameter passing:
|
|
r3 = rgnData
|
|
r4 = rgnBuffer
|
|
r5 = boxRect
|
|
|
|
00000000: BF61FFEC stmw r27,-20(SP)
|
|
|
|
long *bufData = rgnBuffer->buffer, *ptr, tmp;
|
|
long x, lastY;
|
|
lastY = rgnData[-1]; // get last Y coordinate
|
|
|
|
00000004: AB63FFFE lha lastY,-2(rgnData)
|
|
00000008: 3BA40008 addi bufData,rgnBuffer,8
|
|
|
|
while ((x = *rgnData++) != 0x7fff) {
|
|
x -= boxRect->left;
|
|
|
|
0000000C: 42800078 bc ALWAYS,cr0_LT,$00000084
|
|
00000010: A8C50002 lha r6,2(boxRect)
|
|
00000014: 7FE6F850 sub x,x,r6
|
|
|
|
while (*bufData < x) bufData++;
|
|
|
|
00000018: 42800008 bc ALWAYS,cr0_LT,$00000020
|
|
0000001C: 3BBD0004 addi bufData,bufData,4
|
|
00000020: 80FD0000 lwz r7,0(bufData)
|
|
00000024: 7C07F800 cmpw r7,x
|
|
00000028: 4180FFF4 blt $0000001C
|
|
|
|
ptr = bufData;
|
|
|
|
0000002C: 811D0000 lwz r8,0(bufData)
|
|
00000030: 7FBEEB78 mr ptr,bufData
|
|
|
|
if (x == *bufData)
|
|
|
|
00000034: 7C1F4000 cmpw x,r8
|
|
00000038: 40820034 bne $0000006C
|
|
|
|
while ((*ptr = *(ptr + 1)) != 0x7fff) ptr++;
|
|
|
|
0000003C: 42800008 bc ALWAYS,cr0_LT,$00000044
|
|
00000040: 3BDE0004 addi ptr,ptr,4
|
|
00000044: 813E0004 lwz r9,4(ptr)
|
|
00000048: 2C097FFF cmpwi r9,32767
|
|
0000004C: 913E0000 stw r9,0(ptr)
|
|
00000050: 4082FFF0 bne $00000040
|
|
00000054: 42800030 bc ALWAYS,cr0_LT,$00000084
|
|
|
|
else {
|
|
while (x != 0x7fff) {
|
|
tmp = *ptr;
|
|
*ptr++ = x;
|
|
x = tmp;
|
|
}
|
|
|
|
00000058: 839E0000 lwz tmp,0(ptr)
|
|
0000005C: 7FCAF378 mr r10,ptr
|
|
00000060: 93EA0000 stw x,0(r10)
|
|
00000064: 3BDE0004 addi ptr,ptr,4
|
|
00000068: 7F9FE378 mr x,tmp
|
|
0000006C: 2C1F7FFF cmpwi x,32767
|
|
00000070: 4082FFE8 bne $00000058
|
|
|
|
*ptr++ = x;
|
|
bufData++;
|
|
|
|
00000074: 7FCBF378 mr r11,ptr
|
|
00000078: 3BDE0004 addi ptr,ptr,4
|
|
0000007C: 93EB0000 stw x,0(r11)
|
|
00000080: 3BBD0004 addi bufData,bufData,4
|
|
|
|
}
|
|
|
|
00000084: 7C6C1B78 mr r12,rgnData
|
|
00000088: ABEC0000 lha x,0(r12)
|
|
0000008C: 38630002 addi rgnData,rgnData,2
|
|
00000090: 2C1F7FFF cmpwi x,32767
|
|
00000094: 4082FF7C bne $00000010
|
|
|
|
}
|
|
rgnBuffer->yCount = *rgnData++ - lastY;
|
|
return rgnData;
|
|
|
|
00000098: 7C661B78 mr r6,rgnData
|
|
0000009C: A8C60000 lha r6,0(r6)
|
|
000000A0: 38630002 addi rgnData,rgnData,2
|
|
000000A4: 7CDB3050 sub r6,r6,lastY
|
|
000000A8: 90C40000 stw r6,0(rgnBuffer)
|
|
|
|
000000AC: BB61FFEC lmw r27,-20(SP)
|
|
000000B0: 4E800020 blr
|
|
*/ |