mirror of
https://github.com/ctm/executor.git
synced 2024-09-28 11:54:53 +00:00
90 lines
2.0 KiB
C
90 lines
2.0 KiB
C
|
/* Copyright 1986-1996 by Abacus Research and
|
||
|
* Development, Inc. All rights reserved.
|
||
|
*/
|
||
|
|
||
|
#if !defined (OMIT_RCSID_STRINGS)
|
||
|
char ROMlib_rcsid_qStdPic[] =
|
||
|
"$Id: qStdPic.c 63 2004-12-24 18:19:43Z ctm $";
|
||
|
#endif
|
||
|
|
||
|
/* Forward declarations in QuickDraw.h (DO NOT DELETE THIS LINE) */
|
||
|
|
||
|
#include "rsys/common.h"
|
||
|
#include "QuickDraw.h"
|
||
|
#include "MemoryMgr.h"
|
||
|
#include "OSUtil.h"
|
||
|
|
||
|
#include "rsys/cquick.h"
|
||
|
#include "rsys/picture.h"
|
||
|
#include "rsys/print.h"
|
||
|
#include "rsys/text.h"
|
||
|
|
||
|
P3(PUBLIC pascal trap, void, StdComment, INTEGER, kind, INTEGER, size,
|
||
|
Handle, hand)
|
||
|
{
|
||
|
SignedByte state;
|
||
|
INTEGER swappedsize;
|
||
|
|
||
|
switch (kind)
|
||
|
{
|
||
|
case textbegin:
|
||
|
disable_stdtext ();
|
||
|
break;
|
||
|
case textend:
|
||
|
enable_stdtext ();
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
kind = CW(kind);
|
||
|
if (size) {
|
||
|
PICSAVEBEGIN(OP_LongComment);
|
||
|
PICWRITE(&kind, sizeof(kind));
|
||
|
swappedsize = CW(size);
|
||
|
PICWRITE(&swappedsize, sizeof(swappedsize));
|
||
|
state = HGetState(hand);
|
||
|
HLock(hand);
|
||
|
PICWRITE(STARH(hand), size);
|
||
|
if (size&1)
|
||
|
PICWRITE("", 1);
|
||
|
HSetState(hand, state);
|
||
|
PICSAVEEND;
|
||
|
} else {
|
||
|
PICSAVEBEGIN(OP_ShortComment);
|
||
|
PICWRITE(&kind, sizeof(kind));
|
||
|
PICSAVEEND;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
P2(PUBLIC pascal trap, void, StdGetPic, Ptr, dp, INTEGER, bc) /* TODO */
|
||
|
{
|
||
|
warning_unimplemented (NULL_STRING);
|
||
|
}
|
||
|
|
||
|
P2(PUBLIC pascal trap, void, StdPutPic, Ptr, sp, INTEGER, bc)
|
||
|
{
|
||
|
piccachehand pch;
|
||
|
PicHandle ph;
|
||
|
LONGINT oldhowfar, newhowfar;
|
||
|
Size newsize;
|
||
|
|
||
|
pch = (piccachehand) PORT_PIC_SAVE (thePort);
|
||
|
|
||
|
if (pch) {
|
||
|
oldhowfar = Hx(pch, pichowfar);
|
||
|
ph = HxP(pch, pichandle);
|
||
|
newhowfar = Hx(pch, pichowfar) + bc;
|
||
|
HxX(pch, pichowfar) = CL(newhowfar);
|
||
|
if (newhowfar > 32766)
|
||
|
HxX(ph, picSize) = CWC (32766);
|
||
|
else
|
||
|
HxX(ph, picSize) = CW (newhowfar);
|
||
|
|
||
|
if (Hx(pch, pichowfar) > Hx(pch, picsize)) {
|
||
|
newsize = (Hx(pch, pichowfar) + 0xFF) & ~(LONGINT) 0xFF;
|
||
|
SetHandleSize((Handle) ph, newsize);
|
||
|
HxX(pch, picsize) = CL(newsize);
|
||
|
}
|
||
|
memmove((char *) STARH(ph) + oldhowfar, sp, bc);
|
||
|
}
|
||
|
}
|