PDFileWriterTest.mesa
Michael Plass, May 3, 1983 11:25 am
DIRECTORY
PDFileWriter,
Rope
;
PDFileWriterTest:
CEDAR
PROGRAM
IMPORTS PDFileWriter
= BEGIN
InkWell: TYPE = ARRAY [0..16) OF PACKED ARRAY [0..16) OF [0..1];
InkWellGray:
PROC [gray: [0..256]]
RETURNS [inkWell: InkWell] = {
i, j: NAT ← 0;
FOR i:
NAT
IN [0..16)
DO
inkWell[i] ← [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];
ENDLOOP;
WHILE gray>0
DO
inkWell[i][j] ← 0;
i ← i+1; IF i>=16 THEN {i←i-16; j ← j+1};
j ← j+3; IF j>=16 THEN j←j-16;
gray←gray-1;
ENDLOOP;
};
tryLeftoverMode: BOOLEAN ← TRUE;
tryBandSize: NAT ← 16;
SetInkWellGray:
PROC [pdState: PDFileWriter.PDState, gray: [0..256]] = {
inkWell: InkWell ← InkWellGray[gray];
bitsPtr: LONG POINTER;
loadReference: PDFileWriter.LoadReference;
TRUSTED {bitsPtr ← @inkWell};
loadReference ← PDFileWriter.LoadContiguousColorTile[pdState: pdState, phase: 0, sMin: 0, fMin: 0, sSize: 16, fSize: 16, bitsPtr: bitsPtr];
PDFileWriter.SetColorTile[pdState, black, loadReference, PDFileWriter.opaqueFlag];
};
TryOverlappingRectangles:
PROC = {
Tests priority in leftovers.
pdState: PDFileWriter.PDState ← PDFileWriter.Create[fileName: "OR.pd", deviceCode: hornet, sResolution: 384, fResolution: 384, imageSSize: 3264, imageFSize: 4224, nColors: 1, bandSSize: tryBandSize, leftOverMode: tryLeftoverMode, priorityImportant: tryLeftoverMode];
FOR i:
NAT
IN [0..5)
DO
SetInkWellGray[pdState, i*256/9];
PDFileWriter.MaskRectangle[pdState, 1000+60*i, 300+71*i, 200, 400];
ENDLOOP;
FOR i:
NAT
IN [5..10)
DO
SetInkWellGray[pdState, i*256/9];
PDFileWriter.MaskRectangle[pdState, 1000+60*5-60*(i-5), 300+71*i, 200, 400];
ENDLOOP;
PDFileWriter.EndPage[pdState];
PDFileWriter.Close[pdState];
};
TryMaskSampleRefs:
PROC =
TRUSTED {
pdState: PDFileWriter.PDState ← PDFileWriter.Create[fileName: "MSR.pd", deviceCode: hornet, sResolution: 384, fResolution: 384, imageSSize: 3264, imageFSize: 4224, nColors: 1, bandSSize: tryBandSize, leftOverMode: tryLeftoverMode, priorityImportant: tryLeftoverMode];
stamp: PDFileWriter.LoadReference;
a: PACKED ARRAY [0..250*128) OF [0..1];
FOR s:
NAT
IN [0..250)
DO
FOR f:
NAT
IN [0..128)
DO
a[s*128+f] ← 0
ENDLOOP
ENDLOOP;
FOR s:
NAT
IN [0..250)
DO
fSize: INT ← INT[s]*(250-s);
fSize ← fSize/125;
FOR f:
NAT
IN [
MAX[(125-fSize)/3, 0]..
MIN[fSize+(125-fSize)/3,128])
DO
a[s*128+f] ← 1;
ENDLOOP;
ENDLOOP;
stamp ← PDFileWriter.LoadContiguousSampleArray[pdState, 250, 128, @a];
PDFileWriter.MaskSamplesRef[pdState, stamp, 1000, 300];
PDFileWriter.MaskSamplesRef[pdState, stamp, 1200, 800];
PDFileWriter.EndPage[pdState];
PDFileWriter.Close[pdState];
};
TryRunGroupRef:
PROC = {
pdState: PDFileWriter.PDState ← PDFileWriter.Create[fileName: "RGR.pd", deviceCode: hornet, sResolution: 384, fResolution: 384, imageSSize: 3264, imageFSize: 4224, nColors: 1, bandSSize: tryBandSize, leftOverMode: tryLeftoverMode, priorityImportant: tryLeftoverMode];
MakeRunGroup:
PROC [runProc: PDFileWriter.CaptureRunProc] = {
FOR s:
NAT
IN [0..400]
DO
fSize: INT ← INT[s]*(400-s);
fSize ← fSize/100;
runProc[s, fSize/3, fSize];
ENDLOOP;
};
ref: PDFileWriter.LoadReference ← PDFileWriter.LoadRunGroup[pdState, MakeRunGroup];
PDFileWriter.MaskRunGroupRef[pdState, ref, 1000, 300];
PDFileWriter.MaskRunGroupRef[pdState, ref, 1200, 800];
SetInkWellGray[pdState, 64];
PDFileWriter.MaskRunGroupRef[pdState, ref, 600, 800];
PDFileWriter.EndPage[pdState];
PDFileWriter.Close[pdState];
};
TryRunGroup:
PROC = {
pdState: PDFileWriter.PDState ← PDFileWriter.Create[fileName: "RG.pd", deviceCode: hornet, sResolution: 384, fResolution: 384, imageSSize: 3264, imageFSize: 4224, nColors: 1, bandSSize: tryBandSize, leftOverMode: tryLeftoverMode, priorityImportant: tryLeftoverMode];
MakeRunGroup:
PROC [runProc: PDFileWriter.CaptureRunProc] = {
FOR s:
NAT
IN [0..400]
DO
fSize: INT ← INT[s]*(400-s);
fSize ← fSize/100;
runProc[s+sOrg, fSize/3+fOrg, fSize];
ENDLOOP;
};
sOrg, fOrg: NAT;
sOrg ← 1000; fOrg ← 300;
PDFileWriter.MaskRunGroup[pdState, MakeRunGroup];
sOrg ← 1200; fOrg ← 800;
PDFileWriter.MaskRunGroup[pdState, MakeRunGroup];
SetInkWellGray[pdState, 64];
sOrg ← 600; fOrg ← 800;
PDFileWriter.MaskRunGroup[pdState, MakeRunGroup];
PDFileWriter.EndPage[pdState];
PDFileWriter.Close[pdState];
};
TryTrivialRunGroupRef:
PROC = {
pdState: PDFileWriter.PDState ← PDFileWriter.Create[fileName: "TRG.pd", deviceCode: hornet, sResolution: 384, fResolution: 384, imageSSize: 3264, imageFSize: 4224, nColors: 1, bandSSize: tryBandSize, leftOverMode: tryLeftoverMode, priorityImportant: tryLeftoverMode];
MakeRunGroup:
PROC [runProc: PDFileWriter.CaptureRunProc] = {
FOR s:
NAT
IN [0..8]
DO
fSize: INT ← INT[s]*(8-s);
fSize ← fSize;
runProc[s, fSize/3, fSize];
ENDLOOP;
};
ref: PDFileWriter.LoadReference ← PDFileWriter.LoadRunGroup[pdState, MakeRunGroup];
PDFileWriter.MaskRunGroupRef[pdState, ref, 1000, 300];
PDFileWriter.MaskRunGroupRef[pdState, ref, 1200, 800];
PDFileWriter.EndPage[pdState];
PDFileWriter.Close[pdState];
};
TryMaskSamples:
PROC = {
pdState: PDFileWriter.PDState ← PDFileWriter.Create[fileName: "MS.pd", deviceCode: hornet, sResolution: 384, fResolution: 384, imageSSize: 3264, imageFSize: 4224, nColors: 1, bandSSize: tryBandSize, leftOverMode: tryLeftoverMode, priorityImportant: tryLeftoverMode];
size: NAT = 1400;
radiusSquared: INT ← INT[size]*INT[size]/4;
DeliverSamples:
PROC [scanLineProc:
PROC [slp:
LONG
POINTER]] =
TRUSTED {
line: PACKED ARRAY [0..size) OF [0..1];
FOR s:
INT
IN [0..size)
DO
FOR f:
INT
IN [0..size)
DO
d: INT ← (s-size/2)*(s-size/2) + (f-size/2)*(f-size/2);
line[f] ← IF d>radiusSquared OR (d MOD 2000 >= 1000) THEN 0 ELSE 1;
ENDLOOP;
scanLineProc[@line];
ENDLOOP;
};
PDFileWriter.MaskSamples[pdState, 313, 613, size, size, DeliverSamples];
PDFileWriter.EndPage[pdState];
PDFileWriter.Close[pdState];
};
TryColorSamples:
PROC = {
pdState: PDFileWriter.PDState ← PDFileWriter.Create[fileName: "CS.pd", deviceCode: hornet, sResolution: 384, fResolution: 384, imageSSize: 3264, imageFSize: 4224, nColors: 1, bandSSize: tryBandSize, leftOverMode: tryLeftoverMode, priorityImportant: tryLeftoverMode];
size: NAT = 222;
radiusSquared: INT ← INT[size]*INT[size]/4;
DeliverSamples:
PROC [scanLineProc:
PROC [slp:
LONG
POINTER]] =
TRUSTED {
line: PACKED ARRAY [0..size) OF [0..1];
FOR s:
INT
IN [0..size)
DO
FOR f:
INT
IN [0..size)
DO
d: INT ← (s-size/2)*(s-size/2) + (f-size/2)*(f-size/2);
line[f] ← IF (d MOD 2000 >= 1000) THEN 0 ELSE 1;
ENDLOOP;
scanLineProc[@line];
ENDLOOP;
};
PDFileWriter.ColorSamples[pdState, black, 600, 700, size, size, DeliverSamples];
PDFileWriter.EndPage[pdState];
PDFileWriter.Close[pdState];
};
END.