home *** CD-ROM | disk | FTP | other *** search
- // PSsupport 1.02 12/06/97
-
-
- int pssupport_prtype;
- int pssupport_printing = 0;
- string pssupport_paper;
-
-
- // when printer driver changes, read the printer driver type
-
- void pssupport_prchange(int user)
- {
- pssupport_prtype = (prinfo("") >> 16) & 0xFFFF;
- }
-
-
- void pssupport_prstart(int user, int view)
- {
- int i;
- string c;
- string e = "PDriver$PSextra";
- string p = "PDriver$PSPaper";
- string t = "%%BeginFeature: PageSize ";
-
- if(pssupport_prtype)
- return;
-
- osclis("set OvationPro$PSextra <PDriver$PSextra>");
- osclis("set OvationPro$PSPaper <PDriver$PSPaper>");
-
- pssupport_paper = "";
-
- if(getenvs(e) && (i = e / t) >= 0)
- {
- osclis("set PDriver$PSextra %%BeginFeature: ManualFeed False|Jstatusdict begin /manualfeed false store end|J%%EndFeature|J");
-
- while(mids(e, i++ + slen(t), 1) != "\n");
-
- while((c = mids(e, i + slen(t), 1)) != "\n")
- {
- pssupport_paper += c;
- ++i;
- }
- }
- else
- if(getenvs(p))
- {
- osclis("set PDriver$PSPaper null:");
-
- for(i = slen(p); i > 0; --i)
- {
- if(mids(p, i - 1, 1) == ".")
- {
- pssupport_paper = p << i;
- break;
- }
- }
- }
- else
- messagebox("PDriver$PSextra and PDriver$PSPaper do not specify paper size.");
- }
-
-
- void pssupport_prend(int user, int view)
- {
- string p = "PDriver$PSPaper";
-
- if(pssupport_prtype)
- return;
-
- // reset PDriver$PSextra
- osclis("set PDriver$PSextra <OvationPro$PSextra>");
- osclis("unset OvationPro$PSextra");
-
- // reset PDriver$PSPaper if it exists
- if(getenvs(p))
- {
- osclis("set PDriver$PSPaper <OvationPro$PSPaper>");
- osclis("unset OvationPro$PSPaper");
- }
- }
-
- void pssupport_goprinter(int user, int view)
- {
- pssupport_printing = 1;
- }
-
-
- void pssupport_gonormal(int user, int view)
- {
- pssupport_printing = 0;
- }
-
-
- void pssupport_prcache0(int user,int view)
- {
- // set paper size
-
- if(pssupport_prtype == 0 && pssupport_printing)
- {
- prprints("\nstatusdict /setpageparams known\n");
- prprints("{statusdict begin " + itos(paperwidth() / 1000) + " " + itos(paperheight() / 1000) + " 0 1 setpageparams end}\n");
- prprints("{" + pssupport_paper + "}\n");
- prprints("ifelse\n\n");
- }
- }
-
-
- void pssupport_prcopies2(int user, int view)
- {
- // re-insert Acorn PAR function to override ArtWorks version
-
- if(pssupport_prtype == 0 && pssupport_printing)
- {
- prprints("\n/PAR{6 -2 roll pop pop 10 dict begin dup 0 lt/hflip ED abs/h ED
- dup 0 lt/wflip ED abs/w ED 256. div/uly ED 256. div/ulx ED 256. div/lry ED
- 256. div/lrx ED 256. div/lly ED 256. div/llx ED[lrx llx sub w div lry lly
- sub w div ulx llx sub h div uly lly sub h div llx lly]concat hflip{0 h T 1
- -1 scale}if wflip{w 0 T -1 1 scale}if end}BD\n\n");
- }
- }
-
-
- int pssupport_clipquery(int user, int claim)
- {
- // if printing to PostScript, acknowledge that clipping is required
-
- if(!claim)
- {
- if(pssupport_prtype == 0 && pssupport_printing)
- claim = 1;
- }
- return(claim);
- }
-
-
- string pssupport_getx(int n)
- {
- return(itos((getclipcurve(n) + prpagex() - prareax0()) / 400));
- }
-
-
- string pssupport_gety(int n)
- {
- return(itos((prpagey() - getclipcurve(n) - prareay0()) / 400));
- }
-
-
- void pssupport_doclip(int user)
- {
- int c, n;
-
- n = 0;
-
- while(c = getclipcurve(n++))
- {
- switch(c)
- {
- case 2:
- prprints(pssupport_getx(n++) + " " + pssupport_gety(n++) + " moveto\n");
- break;
- case 8:
- prprints(pssupport_getx(n++) + " " + pssupport_gety(n++) + " lineto\n");
- break;
- case 6:
- prprints(pssupport_getx(n++) + " " + pssupport_gety(n++) + " " + pssupport_getx(n++) + " " + pssupport_gety(n++) + " " + pssupport_getx(n++) + " " + pssupport_gety(n++) + " curveto\n");
- break;
- case 5:
- prprints("closepath\n");
- break;
- }
- }
- prprints("clip\n");
- prprints("newpath\n");
- }
-
-
- void main(void)
- {
- addeventhandler(0x003,0,"pssupport_prchange");
- addeventhandler(0x116,0,"pssupport_prchange");
- addeventhandler(0x10C,0,"pssupport_prstart");
- addeventhandler(0x10D,0,"pssupport_prend");
- addeventhandler(0x100,0,"pssupport_goprinter");
- addeventhandler(0x102,0,"pssupport_gonormal");
- addeventhandler(0x10E,0,"pssupport_prcache0");
- addeventhandler(0x11A,0,"pssupport_prcopies2");
- addeventhandler(0x30A,0,"pssupport_clipquery");
- addeventhandler(0x30B,0,"pssupport_doclip");
- }
-