JaMIAISImpl.mesa
Last changed by Bill Paxton, March 12, 1982 8:35 am
Last changed by Doug Wyatt, September 13, 1982 1:21 pm
Last Edited by: Stone, December 9, 1983 2:13 pm
DIRECTORY
Imager,
ImagerBasic,
ImagerOps,
JaMOps,
JaMInternal,
JaMFnsDefs,
Rope USING [ROPE],
ConvertUnsafe,
Real,
JaMImager;
JaMIAISImpl: PROGRAM
IMPORTS Imager,
ImagerOps,
JaMFnsDefs,
JaMOps,
ConvertUnsafe,
Real,
JaMImager = {
JDrawImage: PROCEDURE [frame: JaMInternal.Frame] = {
Draw: PROC [dc: Imager.Context] = { Imager.DrawImage[dc,image] };
str: STRING ← [100];
name: Rope.ROPE;
image: ImagerBasic.ImageRef;
JaMFnsDefs.PopString[str];
name ← ConvertUnsafe.ToRope[str];
image ← ImagerOps.NewAisImage[name];
JaMImager.Painter[Draw, frame];
};
JCopyScreen: PROCEDURE [frame: JaMInternal.Frame] = {
Get: PROC RETURNS [CARDINAL] = {
RETURN [Real.RoundC[MAX[JaMOps.PopReal[frame.opstk],0.0]]] };
y2: CARDINAL ← Get[];
x2: CARDINAL ← Get[];
y1: CARDINAL ← Get[];
x1: CARDINAL ← Get[];
Copy: PROC [dc: Imager.Context] = {
ImagerOps.DrawBitmap[
self: dc,
bitmap: ImagerOps.ScreenBitmap[],
w: x2-x1,
h: y2-y1,
x: x1,
y: y1,
xorigin: (x1+x2)/2,
yorigin: (y1+y2)/2
] };
IF x1 > x2 THEN { temp: CARDINAL ← x1; x1 ← x2; x2 ← temp };
IF y1 > y2 THEN { temp: CARDINAL ← y1; y1 ← y2; y2 ← temp };
JaMImager.Painter[Copy, frame];
};
JaMOps.RegisterExplicit[JaMOps.defaultFrame,".drawimage"L,JDrawImage];
JaMOps.RegisterExplicit[JaMOps.defaultFrame,".copyscreen"L,JCopyScreen];
}...