#include "cii.h" #include "cii←matrix.h" #include "ciihtd.h" #include <fcntl.h> #include <stdio.h> #include <malloc.h> #include <string.h> void exit(); /* GLOBAL VARIABLES */ static int sSizeBuffer = 2550; static int fSizeBuffer = 3328; static char* bufferBasePointer = (char*)0; /* END OF GLOBAL VARIABLES */ extern CII←Handle CII←TestDevice() { float zero = 0.0; float one = 1.0; CII←RectangleRep bigrect = { 0.0, 0.0, 99999999.0, 99999999.0 }; CII←Handle h; CII←HTDParamRep pr; CII←RasterRep raster; float matrix[6]; if (!bufferBasePointer) { bufferBasePointer = (char*)malloc(sSizeBuffer*fSizeBuffer/8); }; raster.sMinBox = 0; raster.fMinBox = 0; raster.sMaxBox = sSizeBuffer; raster.fMaxBox = fSizeBuffer; raster.bitsPerSample = 1; raster.bitsPerLine = fSizeBuffer; raster.basePointer = (void*)bufferBasePointer; raster.bitIndex = 0; raster.ref = (void*)0; CII←HTD←SetDefaults(&pr); pr.sSizeDevice = sSizeBuffer; pr.fSizeDevice = fSizeBuffer; pr.raster = &raster; pr.surfaceUnitsPerInch.x = 300.0; pr.surfaceUnitsPerInch.y = 300.0; CII←HTD←Create(&pr, &h); CII←GetMatrix(h, matrix); printf("Context created\n"); CIU←ApplyPreScale(300.0/72.0, matrix); CII←SetMatrix(h, matrix); CII←SetGray(h, &one); /* white */ CII←MaskRectangle(h, &bigrect); CII←SetGray(h, &zero); /* black */ printf("Matrix = [ %g %g %g %g %g %g ]\n", (double)matrix[0], (double)matrix[1], (double)matrix[2], (double)matrix[3], (double)matrix[4], (double)matrix[5] ); return(h); } static void writeresult(char* filename) { int fd; char headerbuf[256]; if (!bufferBasePointer) { printf("writeresult failed - no buffer"); exit(1); }; fd = open(filename, O←WRONLY+O←CREAT, 0666); sprintf(headerbuf, "P4\n%d\n%d\n", fSizeBuffer, sSizeBuffer); if (1>fd) {printf("open failed"); exit(1);} if (1>write(fd, headerbuf, strlen(headerbuf))) {printf("write failed: "); printf(filename); exit(1);} if (1>write(fd, bufferBasePointer, sSizeBuffer*fSizeBuffer/8)) {printf("write failed: "); printf(filename); exit(1);} if (0!=close(fd)) {printf("close failed"); exit(1);} printf("wrote "); printf(filename); printf("\n"); } static void graytest () { CII←Handle h; CII←RectangleRep rect; float half = 0.5; rect.x = 0.0; rect.y = 0.0; rect.w = 10.0; rect.h = 10.0; h = CII←TestDevice(); CII←SetGray(h, &half); CII←MaskRectangle(h, &rect); CII←Destroy(h); } extern int main() { int i; (void)BonsaiCIIInit(); graytest(); writeresult("graytest.pbm"); (void)XR←run←ciiicecream(); writeresult("ciiicecream.pbm"); (void)XR←run←ciimaskprogramexamples(); writeresult("ciimaskprogramexamples.pbm"); (void)XR←run←ciitest(); writeresult("ciitest.pbm"); (void)XR←run←ciitestbitmaps(); writeresult("ciitestbitmaps.pbm"); (void)XR←run←ciitestboxes(); writeresult("ciitestboxes.pbm"); (void)XR←run←ciitestbufferedseparationimage(); writeresult("ciitestbufferedseparationimage.pbm"); (void)XR←run←ciitestbuildclip(); writeresult("ciitestbuildclip.pbm"); (void)XR←run←ciitestbuildclip2(); writeresult("ciitestbuildclip2.pbm"); (void)XR←run←ciitesthalftone(); writeresult("ciitesthalftone.pbm"); (void)XR←run←ciitestimage(); writeresult("ciitestimage.pbm"); (void)XR←run←ciitestimage3(); writeresult("ciitestimage3.pbm"); (void)XR←run←ciitestmaskstreambits(); writeresult("ciitestmaskstreambits.pbm"); (void)XR←run←ciitestpcl5printmodel(); writeresult("ciitestpcl5printmodel.pbm"); (void)XR←run←ciitesttransfer(); writeresult("ciitesttransfer.pbm"); (void)XR←run←ciitestcleanup(); writeresult("ciitestcleanup.pbm"); exit(0); }