<> <> <> <> 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]; }...