home *** CD-ROM | disk | FTP | other *** search
- /*
- * initialize.c of dviamiga software package. Initializes all the data
- * structures either for an entire run or for one file.
- */
- #include "structures.h"
- #include "paths.h"
- #include "strings.h"
- /*
- * These are the external variables we use.
- */
- extern TeXfontdesctype *TeXfonts[], *TeXfontlist ;
- extern fontdesctype *fontlist ;
- extern float conv ;
- extern real alpha ;
- extern integer iconv ;
- extern float pxlconv ;
- extern float screendpi ;
- extern char *tfmpath, *pkpath, *vfpath, *inputspath, *headerpath, *configpath ;
- extern integer dvimag, num, den ;
- extern struct Gadget *mygadgets ;
- extern integer curpos, thispage ;
- extern FILE *dvifile ;
- extern Boolean orientationset ;
- extern Boolean landscape ;
- extern Boolean usersetsizes ;
- extern shalfword vvmax, vvmin, hhmax, hhmin ;
- extern Boolean interlaceon ;
- extern shalfword vscreenheight, vscreen ;
- extern shalfword vwindow, vwindowheight ;
- extern Boolean pageinterrupted ;
- extern Boolean zoomed ;
- extern int rowsize, colsize ;
- extern int sfrgnd, sbckgnd ;
- extern long frgnd, bckgnd ;
- int wxsize, wysize, wxpos, wypos ;
- extern void TPSdvimag() ;
- extern void bringupwindow() ;
- Boolean firstpage ;
- extern int tracking ;
- extern int debugon ;
- extern real hsize, vsize, hmarg, vmarg, defhsize, defvsize, defhmarg, defvmarg ;
- /*
- * The external routines we use:
- */
- extern halfword dvibyte() ;
- extern integer signedquad() ;
- extern void abortpage() ;
- extern void storeimagedata() ;
- extern void *tempbuf() ;
- extern void cleartheair() ;
- extern void configure(), setenvvars() ;
- extern char *getenv() ;
- extern void dviseek() ;
- extern char *strcpy() ;
- extern void resetsize() ;
- extern void newdpi() ;
- extern char *newstring() ;
- extern void freepages() ;
- extern void resetsizes() ;
- extern void free() ;
- extern void getdefaults() ;
- extern void relativepage(), skippage() ;
- extern void reportnewdpi() ;
- extern void initcolor() ;
- /*
- * Get environment variables! These override entries in ./config.h.
- * We substitute everything of the form ::, ^: or :$ with default,
- * so a user can easily build on to the existing paths.
- */
- static char *getenvup(who, what)
- char *who, *what ;
- {
- char *p, *getenv() ;
- char *tb = tempbuf(9512L) ;
-
- if (p=getenv(who)) {
- register char *pp, *qq ;
- int lastsep = 1 ;
-
- for (pp=tb, qq=p; *qq;) {
- if (*qq == ':') {
- if (lastsep) {
- strcpy(pp, what) ;
- pp = pp + strlen(pp) ;
- }
- lastsep = 1 ;
- } else
- lastsep = 0 ;
- *pp++ = *qq++ ;
- }
- if (lastsep) {
- strcpy(pp, what) ;
- pp = pp + strlen(pp) ;
- }
- *pp = 0 ;
- return newstring(tb) ;
- } else
- return what ;
- }
- /*
- * Initialize sets everything up. DO NOT call cleanup unless this
- * routine has been called first!
- */
- void initialize() {
- char *getenv() ;
- void *mymalloc() ;
-
- (void)tempbuf(512L) ;
- setenvvars() ;
- configure() ;
- getdefaults("config.ps") ;
- getdefaults(0L) ;
- reportnewdpi() ;
- }
- /*
- * Set all of the environment variables.
- */
- void
- setenvvars() {
- pkpath = getenvup("TEXPKS", PKPATH) ;
- inputspath = getenvup("TEXINPUTS", INPUTSPATH) ;
- vfpath = getenvup("VFFONTS", VFPATH) ;
- tfmpath = getenvup("TEXFONTS", TFMPATH) ;
- configpath = getenvup("TEXCONFIG", CONFIGPATH) ;
- headerpath = getenvup("DVIPSHEADERS", CONFIGPATH) ;
- }
- /*
- * fontinit disassociates TeXfonts from the current list of fonts,
- * necessary when a new magnification or dvi job is started.
- */
- extern TeXfontdesctype *TeXfontlist ;
- void fontinit() {
- register int i ;
- register TeXfontdesctype *tft ;
-
- for (tft = TeXfontlist; tft; tft = tft->next) {
- tft->loaded = 0 ;
- tft->scaledsize = tft->origssize ;
- }
- for (i=0; i<256; i++)
- if (tft = TeXfonts[i])
- tft->loaded = 0 ;
- }
- extern long fakeeof ;
- void dviinit() {
- register int i ;
-
- curpos = 0 ;
- dviseek(0) ;
- orientationset = 0 ;
- if (landscape || !usersetsizes)
- resetsizes() ;
- landscape = 0 ;
- fontinit() ;
- for (i=0; i<256; i++)
- if (TeXfonts[i]) {
- free(TeXfonts[i]) ;
- TeXfonts[i] = NULL ;
- }
- if (dvibyte()!=247)
- abortpage() ;
- if (dvibyte()!=2)
- abortpage() ;
- num = signedquad() ;
- den = signedquad() ;
- alpha = (((real)den / 7227.0) / 0x100000) * (25400000.0 / (real) num) ;
- dvimag = signedquad() ;
- TPSdvimag((real)dvimag / 1000.0) ;
- for (i=dvibyte(); i>0; i--)
- dvibyte() ;
- initcolor() ;
- newdpi() ;
- freepages() ;
- relativepage(1) ;
- firstpage = 1 ;
- skippage() ;
- cleartheair() ;
- firstpage = 0 ;
- pageinterrupted = 0 ;
- fakeeof = 2000000000 ;
- bringupwindow() ;
- }
-