executor/src/qStdPic.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);
}
}