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: BOOLEANTRUE;
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: INTINT[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: INTINT[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: INTINT[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: INTINT[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: INTINT[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: INTINT[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.