//->!EPSCode


int eps_prtype;
int eps_dodefs;

void eps_defs(void)
{

 prprints("\n% Begin OvationPro EPS applet functions\n\n");

 prprints("/BeginEPSF { %def\n");
 prprints("/b4_inc_state save def\n");
 prprints("/dict_count countdictstack def\n");
 prprints("/op_count count 1 sub def\n");
 prprints("userdict begin\n");
 prprints("/showpage { } def\n");
 prprints("0 setgray 0 setlinecap\n");
 prprints("1 setlinewidth 0 setlinejoin\n");
 prprints("10 setmiterlimit [ ] 0 setdash newpath\n");
 prprints("/languagelevel where\n");
 prprints("{pop languagelevel\n");
 prprints("1 ne\n");
 prprints("{false setstrokeadjust false setoverprint\n");
 prprints("} if\n");
 prprints("} if\n");
 prprints("} bind def\n");

 prprints("/EndEPSF { %def\n");
 prprints("count op_count sub { pop } repeat\n");
 prprints("countdictstack dict_count sub { end } repeat\n");
 prprints("b4_inc_state restore\n");
 prprints("} bind def\n");

 prprints("\n% End OvationPro EPS applet functions\n\n");


}




void eps_sepdefs(void)
{

 prprints("\n% Begin OvationPro EPS applet separations dictionary\n\n");

 prprints("/OPEPSdict 40 dict def\n");
 prprints("OPEPSdict begin\n");

 prprints("/opcyan 7 def\n");
 prprints("/opyellow 9 def\n");
 prprints("/opmagenta 8 def\n");
 prprints("/opblack 1 def\n");
 prprints("/opsep opblack def\n");

 prprints("/setgray {opsep opblack eq\n");
 prprints("{systemdict begin setgray end}\n");
 prprints("{pop systemdict begin 1 setgray end}\n");
 prprints("ifelse }def\n");

 prprints("/setcmykcolor {opsep opblack eq\n");
 prprints("{systemdict begin 1 exch sub setgray end pop pop pop }\n");
 prprints("{pop opsep opyellow eq {systemdict begin 1 exch sub setgray end pop pop }\n");
 prprints("{pop opsep opmagenta eq {systemdict begin 1 exch sub setgray end pop }\n");
 prprints("{pop opsep opcyan eq {systemdict begin 1 exch sub setgray end }\n");
 prprints("if}\n");
 prprints("ifelse}\n");
 prprints("ifelse}\n");
 prprints("ifelse}\n");
 prprints("bind def\n");

 prprints("/setrgbcolor {systemdict begin setrgbcolor currentcmykcolor end userdict begin setcmykcolor end} def\n");

 prprints("/sethsbcolor{systemdict begin sethsbcolor\n");
 prprints("currentrgbcolor end userdict begin setrgbcolor end}def\n");

 prprints("end\n");

 prprints("\n% End OvationPro EPS applet separations dictionary\n\n");
}








void eps_prerender(int a,int b,int c,int d,int e,int f,string & name,int sep)
{
 if(sep) 
 {
  prprints("OPEPSdict begin\n");
  prprints("/opsep "+itos(sep)+" store\n");
 }

 prprints("%%BeginDocument: "+name+"\n");
 prprints("BeginEPSF\n");
 

 prprints("[ 1 0 0 1 "+itos(-prareax0()/400)+" "+itos(-prareay0()/400)+"] concat\n");

 prprints("["+dpstring(a,4)+" "+dpstring(b,4)+" "+dpstring(c,4)+" "+dpstring(d,4)+" "+itos(e/256)+" "+itos(f/256)+"] concat\n");

 prprints("[ 2.5 0 0 2.5 0 0] concat\n");

}


void eps_postrender(int sep)
{
 
 prprints("EndEPSF\n");
 prprints("%%EndDocument\n");

 if(sep) prprints("end\n");
}


void eps_cmykprerender(int xpix,int ypix,int xdpi,int ydpi,int a,int b,int c,int d,int e,int f)
{

 prprints("["+dpstring(a,4)+" "+dpstring(b,4)+" "+dpstring(c,4)+" "+dpstring(d,4)+" "+itos(e/256)+" "+itos(f/256)+"] concat\n");

 prprints("[ 2.5 0 0 2.5 0 0] concat\n");

 prprints("userdict begin\n");
 prprints("/picstr "+itos(xpix*4)+" string def\n");
 prprints("/readstring {\n");
 prprints("  currentfile exch readhexstring pop\n");
 prprints("} bind def\n");
 prprints("0.00 0.00 translate\n");
 prprints(dpstring(scale(xpix,72*0x10000,90),2)+" "+dpstring(scale(ypix,72*0x10000,90),2)+" scale\n");
 prprints(itos(xpix)+" "+itos(ypix)+" 8\n");
 prprints("["+itos(xpix)+" 0 0 "+itos(-ypix)+" 0 "+itos(ypix)+"]\n");
 prprints("{picstr readstring}\n");
 prprints("false 4\n");
 prprints("colorimage\n");

}


void eps_cmykpostrender(void)
{
 prprints("end\n");
}





// return 0 on success
// used to convert the embedded preview image into a sprite
// ftype can be TIFF or Windows Meta file

int eps_convert(string & from,int ftype,string & to)
{

 switch(ftype)
 {
  case 0xFF0:
             osclis("wimptask <ChangeFSI$Dir>.ChangeFSI "+from+" "+to+" 28r -nomode -noscale { > null: } { > null: }");
             return(0);
             break;
 }

 return(1);
}




int eps_makeproxy(string & name,string & preview,int x0,int y0,int x1,int y1,string & to)
{

 return(1);
}





void eps_startevent(int user,int view)
{
 string name;

 eps_prtype=(prinfo(name)>>16) & 0xFFFF;
 eps_dodefs=1;
}


// called by the EPS applet once for each EPS picture to be printed
// before printing has started - after EVENT_PRCACHE0

void eps_prcache(string & name,int doseps)
{
 if(eps_prtype==0 && eps_dodefs==1)
 {
  eps_defs();
  if(doseps) eps_sepdefs();
  eps_dodefs=0;
 }
}


void main(void)
{
 addeventhandler(0x10c,0,"eps_startevent");
}
