Copyright (C) 1994, Digital Equipment Corp.
by Steve Glassman, Mark Manasse and Greg Nelson
<*PRAGMA LL*>
UNSAFE MODULE NTScrnCmap;
IMPORT NT, NTMsgs, NTScreenType, NTScrnTpRep, ScrnColorMap, TrestleComm,
TrestleOnNT, WinDef, WinGDI, WinUser;
TYPE
ColorMapOracle =
ScrnColorMap.Oracle OBJECT
st : NTScreenType.T;
defaultCM: NTColorMap;
METHODS
<* LL.sup = SELF.st.trsl *>
init (st: NTScreenType.T):
ColorMapOracle RAISES {TrestleComm.Failure} := InitColorMapOracle;
OVERRIDES
standard := ColorMapDefault;
new := ColorMapNew;
list := ColorMapList;
lookup := ColorMapLookup
END;
PROCEDURE NewOracle (scrn: NTScreenType.T):
ScrnColorMap.Oracle RAISES {TrestleComm.Failure} =
BEGIN
RETURN NEW(ColorMapOracle).init(scrn)
END NewOracle;
TYPE
Prim = ScrnColorMap.Primary;
NTColorMap = ScrnColorMap.T OBJECT
st : NTScreenType.T;
direct: BOOLEAN;
hpal : WinDef.HPALETTE;
OVERRIDES
fromRGB := ColorMapFromRGB;
new := ColorMapCube;
read := ColorMapRead;
write := ColorMapWrite;
free := ColorMapFreeCube;
END;
For all v: VBT.T, all cm: NTColorMap, cm < v
PROCEDURE ColorMapID (cm: ScrnColorMap.T): WinDef.HPALETTE =
BEGIN
TYPECASE cm OF
NULL => RETURN NT.CNULL
| NTColorMap (cm) => RETURN cm.hpal
ELSE
RETURN NT.CNULL
END
END ColorMapID;
PROCEDURE ColorMapFromRGB (cm : NTColorMap;
rgb : ScrnColorMap.RGB;
mode: ScrnColorMap.Mode ): ScrnColorMap.Pixel
RAISES {ScrnColorMap.Failure, TrestleComm.Failure} =
BEGIN
NT.Assert(0); (* NYI *)
END ColorMapFromRGB;
PROCEDURE ColorMapRead (cm: NTColorMap; VAR res: ARRAY OF ScrnColorMap.Entry)
RAISES {TrestleComm.Failure} =
BEGIN
NT.Assert(0); (* NYI *)
END ColorMapRead;
PROCEDURE ColorMapWrite ( cm : NTColorMap;
READONLY new: ARRAY OF ScrnColorMap.Entry)
RAISES {ScrnColorMap.Failure, TrestleComm.Failure} =
BEGIN
NT.Assert(0); (* NYI *)
END ColorMapWrite;
PROCEDURE ColorMapCube (cm: NTColorMap; d: CARDINAL): ScrnColorMap.Cube
RAISES {ScrnColorMap.Failure, TrestleComm.Failure} =
BEGIN
NT.Assert(0); (* NYI *)
END ColorMapCube;
PROCEDURE ColorMapFreeCube (cm: NTColorMap; READONLY cb: ScrnColorMap.Cube)
RAISES {TrestleComm.Failure} =
BEGIN
NT.Assert(0); (* NYI *)
END ColorMapFreeCube;
TYPE Card16 = BITS 16 FOR [0 .. 16_ffff];
PROCEDURE InitColorMapOracle (orc: ColorMapOracle; st: NTScreenType.T):
ColorMapOracle RAISES {TrestleComm.Failure}
<* LL.sup = st.trsl *> =
VAR
hpal := WinGDI.GetCurrentObject(
WinUser.GetDC(NTMsgs.NullWindow(st.trsl)), WinGDI.OBJ_PAL);
BEGIN
orc.st := st;
orc.defaultCM := InnerColorMapNew(orc, hpal, TRUE (* ??? *));
RETURN orc
END InitColorMapOracle;
PROCEDURE ColorMapDefault (orc: ColorMapOracle): ScrnColorMap.T RAISES {} =
BEGIN
RETURN orc.defaultCM
END ColorMapDefault;
PROCEDURE ColorMapList (<*UNUSED*> orc : ColorMapOracle;
<*UNUSED*> pat : TEXT;
<*UNUSED*> maxResults: CARDINAL ):
REF ARRAY OF TEXT RAISES {} =
BEGIN
RETURN NIL
END ColorMapList;
PROCEDURE ColorMapLookup (<*UNUSED*> orc: ColorMapOracle;
<*UNUSED*> pat: TEXT ): ScrnColorMap.T
RAISES {} =
BEGIN
RETURN NIL
END ColorMapLookup;
PROCEDURE ColorMapNew ( orc : ColorMapOracle;
nm : TEXT := NIL;
<*UNUSED*> preLoaded := TRUE ):
ScrnColorMap.T RAISES {TrestleComm.Failure} =
VAR
res : ScrnColorMap.T;
BEGIN
IF orc.defaultCM.readOnly THEN RETURN orc.defaultCM END;
TrestleOnNT.Enter(orc.st.trsl);
TRY
NT.Assert(0); (* NYI *)
RETURN res
FINALLY
TrestleOnNT.Exit(orc.st.trsl)
END
END ColorMapNew;
PROCEDURE InnerColorMapNew (orc : ColorMapOracle;
hpal : WinDef.HPALETTE;
readOnly: BOOLEAN ): NTColorMap =
BEGIN
RETURN
NEW(NTColorMap, st := orc.st, hpal := hpal, readOnly := readOnly)
END InnerColorMapNew;
BEGIN
END NTScrnCmap.