Copyright (C) 1994, Digital Equipment Corp.
INTERFACE PictureRep;
further detail about the representation of an Picture.T.
IMPORT Batch, Completion, Ctypes, Picture, VBT, Word;
FROM Picture IMPORT TrestleFail, ScreenTypeNotSupported;
REVEAL Picture.T <: Public;
TYPE
Public =
MUTEX OBJECT
allocByCaller := FALSE;
(* if TRUE, Picture belongs to the caller, so should not be freed by
destroy *)
image: Picture.ImageStar := NIL;
next : Picture.T := NIL; (* for free list *)
METHODS
init (st: VBT.ScreenType; width, height: CARDINAL): Picture.T
RAISES {ScreenTypeNotSupported, TrestleFail};
initFromImage (st : VBT.ScreenType;
image : Picture.ImageStar;
sharedMemory := FALSE): Picture.T
RAISES {ScreenTypeNotSupported, TrestleFail};
attachData (dataPtr: Ctypes.char_star;
shmInfo: Picture.SharedMemInfo := NIL)
RAISES {TrestleFail};
detachData () RAISES {TrestleFail};
destroy ();
END;
-- utilities --
PROCEDURE MakeCompletion (picture: Picture.T): Completion.T;
completions should be got from here, so specific implementations can do
extra things with the basic type. Call the init() method on the
result
TYPE Lock = RECORD a, b, c: UNTRACED REF Word.T END;
PROCEDURE Freeze (picture: Picture.T): Lock;
PROCEDURE Thaw (l: Lock);
To read the contents of an Picture, you must first call Freeze,
preventing the allocator from moving the internal data. You must then
call Thaw, passing the result of the call to Freeze when you no
longer need the pointers to be maintained correctly.
PROCEDURE IncrementBatch (ba: Batch.T);
PROCEDURE DecrementBatch (ba: Batch.T);
search the batch and increment or decrement the Completion in any
PaintExt.ImageRec's.
END PictureRep.