DIRECTORY FileIO USING [Open], IO USING [card, Close, EndOfStream, GetCard, GetReal, PutF, real, STREAM], Map, Real USING [Float, LargestNumber, SqRt], Rope USING [ROPE]; MapImpl: PROGRAM IMPORTS FileIO, IO, Map, Real EXPORTS Map = BEGIN OPEN Map; ListToTable: PUBLIC PROCEDURE [list: ColorList, error: ErrorFunc _ Vector3D] RETURNS [colorTable: ColorTable, pal:PalTable]= { redRange: TYPE = [0..16); greenRange: TYPE = [0..16); blueRange: TYPE = [0..16); tableIndex: TYPE = [0..(LAST[redRange]+1)*(LAST[greenRange]+1)*(LAST[blueRange]+1)); Nearest: PROCEDURE [pal:PalTable, error: ErrorFunc, lr,lg,lb:REAL] RETURNS [palix:ColorMapSize] = { newError:REAL; bestError:REAL _ Real.LargestNumber; lr _ lr / (LAST[redRange]); lg _lg / (LAST[greenRange]); lb _ lb / (LAST[blueRange]); FOR this:CARDINAL IN [0..pal.size) DO OPEN pal[this]; newError _ error[lr,lg,lb, r,g,b]; IF newError GOTO QUIT]; REPEAT QUIT => ERROR; -- unexpected eof ENDLOOP; pal _ ReadPal[in]; IO.Close[in]; }; ReadPal: PROCEDURE [in:IO.STREAM] RETURNS [pal:PalTable _ NIL] = { length:CARDINAL _ IO.GetCard[in]; pal _ NEW[PalTableRec[length]]; pal.size _ length; FOR i:CARDINAL IN [0..length) DO OPEN pal[i]; r _ IO.GetReal[in ! IO.EndOfStream => GOTO QUIT]; g _ IO.GetReal[in ! IO.EndOfStream => GOTO QUIT]; b _ IO.GetReal[in ! IO.EndOfStream => GOTO QUIT]; REPEAT QUIT => ERROR; -- unexpected eof ENDLOOP; }; WritePal: PROCEDURE [out:IO.STREAM, pal:PalTable] = { IO.PutF[out, "\n%g\n", IO.card[pal.size]]; FOR palix:CARDINAL IN [0..pal.size) DO OPEN pal[palix]; IO.PutF[out, "%g %g %g\n", IO.real[r], IO.real[g], IO.real[b]]; ENDLOOP; }; END. >MapImpl.mesa Mik Lamming - September 30, 1982 12:30 pm Κ?– "Mesa" style˜J™ J™)J™šΟk ˜ Jšœ œ˜Jšœœ:œ˜MJšœ˜Jšœœ˜*Jšœœœ˜—J˜šΟnœœ˜Jšœ˜Jšœ˜Jšœ˜ J˜šž œœa˜~Jšœ œ ˜Jšœ œ ˜Jšœ œ ˜Jš œ œœœœ˜Tprocšžœ œ+œœ˜cJšœ œ˜Jšœ œ˜$Jšœ œ ˜Jšœ œ˜Jšœ œ ˜šœœœ˜%Jšœ ˜Jšœ"˜"šœœ˜Jšœ˜Jšœ ˜ Jšœ˜—Jšœ˜—J˜J˜—Jšœ œ˜šœœ˜Jšœ ˜—šœœœœ!˜OJ˜Jš˜—Jšœ œœ˜4Jšœœ˜%Jšœœ˜ Jšœ˜J˜ šœœœ˜.J˜J˜Jš˜—J˜šœ œœ ˜$šœ œœ ˜(šœ œœ ˜&JšœL˜LJšœ˜Jš˜—Jš˜——Jšœ˜Jšœ˜J˜—Jšžœœœœ˜J˜šžœœ ˜JšœF˜FJšœ˜J˜—šžœœ%œœ˜jJšœœ˜Jšœ˜Jšœ˜Jšœ˜Jšœ˜šœœ œ˜3Jšœ œ"˜/Jšœ1˜1Jš˜—šœœ œ ˜/šœ œ œ˜3šœœ œ˜1Jšœg˜gJš˜—Jš˜—Jš˜—Jšœ˜J˜—˜J˜—šžœœœœ˜SJšœœœ;˜HJšœœœœ˜%šœ˜Jšœœ˜Jšœœ˜,šœœœ˜$Jšœœ˜,Jšœ˜šœ œ˜Jšœ ˜ Jšœ˜J˜—Jšœ˜—J˜—Jšœœ˜Jšœ˜Jšœ˜J˜J˜—š žœœ œœœ%˜[Jšœœœ6˜BJšœœœ ˜!Jšœœ˜#Jšœ˜šœœœ ˜ šœœ ˜JšΟbœ œ˜—š˜Jšœœ˜ —Jšœ˜—Jšœ˜Jšœ ˜ J˜—J˜š žœ œœœœœ˜BJšœœœ ˜!Jšœœ˜Jšœ˜šœœœ ˜ Jšœ˜ šœ˜JšŸœ œ˜—šœ˜JšŸœ œ˜—šœ˜JšŸœ œ˜—š˜Jšœœ˜ —Jš˜—Jšœ˜—J˜šžœ œœœ˜5Jšœœ˜*šœœœ˜&Jšœ ˜Jšœ?˜?Jšœ˜—J˜J˜—Jšœ˜——…—