home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3.4.17 [SPARC, PA-RISC] / nextstep33_risc.iso / NextLibrary / TeX / tex / src / texview / initialize.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-01-23  |  4.6 KB  |  183 lines

  1. /*
  2.  *   initialize.c of dviamiga software package.  Initializes all the data
  3.  *   structures either for an entire run or for one file.
  4.  */
  5. #include "structures.h"
  6. #include "paths.h"
  7. #include "strings.h"
  8. /*
  9.  *   These are the external variables we use.
  10.  */
  11. extern TeXfontdesctype *TeXfonts[], *TeXfontlist ;
  12. extern fontdesctype *fontlist ;
  13. extern float conv ;
  14. extern real alpha ;
  15. extern integer iconv ;
  16. extern float pxlconv ;
  17. extern float screendpi ;
  18. extern char *tfmpath, *pkpath, *vfpath, *inputspath, *headerpath, *configpath ;
  19. extern integer dvimag, num, den ;
  20. extern struct Gadget *mygadgets ;
  21. extern integer curpos, thispage ;
  22. extern FILE *dvifile ;
  23. extern Boolean orientationset ;
  24. extern Boolean landscape ;
  25. extern Boolean usersetsizes ;
  26. extern shalfword vvmax, vvmin, hhmax, hhmin ;
  27. extern Boolean interlaceon ;
  28. extern shalfword vscreenheight, vscreen ;
  29. extern shalfword vwindow, vwindowheight ;
  30. extern Boolean pageinterrupted ;
  31. extern Boolean zoomed ;
  32. extern int rowsize, colsize ;
  33. extern int sfrgnd, sbckgnd ;
  34. extern long frgnd, bckgnd ;
  35. int wxsize, wysize, wxpos, wypos ;
  36. extern void TPSdvimag() ;
  37. extern void bringupwindow() ;
  38. Boolean firstpage ;
  39. extern int tracking ;
  40. extern int debugon ;
  41. extern real hsize, vsize, hmarg, vmarg, defhsize, defvsize, defhmarg, defvmarg ;
  42. /*
  43.  *   The external routines we use:
  44.  */
  45. extern halfword dvibyte() ;
  46. extern integer signedquad() ;
  47. extern void abortpage() ;
  48. extern void storeimagedata() ;
  49. extern void *tempbuf() ;
  50. extern void cleartheair() ;
  51. extern void configure(), setenvvars() ;
  52. extern char *getenv() ;
  53. extern void dviseek() ;
  54. extern char *strcpy() ;
  55. extern void resetsize() ;
  56. extern void newdpi() ;
  57. extern char *newstring() ;
  58. extern void freepages() ;
  59. extern void resetsizes() ;
  60. extern void free() ;
  61. extern void getdefaults() ;
  62. extern void relativepage(), skippage() ;
  63. extern void reportnewdpi() ;
  64. extern void initcolor() ;
  65. /*
  66.  *   Get environment variables! These override entries in ./config.h.
  67.  *   We substitute everything of the form ::, ^: or :$ with default,
  68.  *   so a user can easily build on to the existing paths.
  69.  */
  70. static char *getenvup(who, what)
  71. char *who, *what ;
  72. {
  73.    char *p, *getenv() ;
  74.    char *tb = tempbuf(9512L) ;
  75.  
  76.    if (p=getenv(who)) {
  77.       register char *pp, *qq ;
  78.       int lastsep = 1 ;
  79.  
  80.       for (pp=tb, qq=p; *qq;) {
  81.          if (*qq == ':') {
  82.             if (lastsep) {
  83.                strcpy(pp, what) ;
  84.                pp = pp + strlen(pp) ;
  85.             }
  86.             lastsep = 1 ;
  87.          } else
  88.             lastsep = 0 ;
  89.          *pp++ = *qq++ ;
  90.       }
  91.       if (lastsep) {
  92.          strcpy(pp, what) ;
  93.          pp = pp + strlen(pp) ;
  94.       }
  95.       *pp = 0 ;
  96.       return newstring(tb) ;
  97.    } else
  98.       return what ;
  99. }
  100. /*
  101.  *   Initialize sets everything up.  DO NOT call cleanup unless this
  102.  *   routine has been called first!
  103.  */
  104. void initialize() {
  105.    char *getenv() ;
  106.    void *mymalloc() ;
  107.  
  108.    (void)tempbuf(512L) ;
  109.    setenvvars() ;
  110.    configure() ;
  111.    getdefaults("config.ps") ;
  112.    getdefaults(0L) ;
  113.    reportnewdpi() ;
  114. }
  115. /*
  116.  *   Set all of the environment variables.
  117.  */
  118. void
  119. setenvvars() {
  120.    pkpath = getenvup("TEXPKS", PKPATH) ;
  121.    inputspath = getenvup("TEXINPUTS", INPUTSPATH) ;
  122.    vfpath = getenvup("VFFONTS", VFPATH) ;
  123.    tfmpath = getenvup("TEXFONTS", TFMPATH) ; 
  124.    configpath = getenvup("TEXCONFIG", CONFIGPATH) ;
  125.    headerpath = getenvup("DVIPSHEADERS", CONFIGPATH) ;
  126. }
  127. /*
  128.  *   fontinit disassociates TeXfonts from the current list of fonts,
  129.  *   necessary when a new magnification or dvi job is started.
  130.  */
  131. extern TeXfontdesctype *TeXfontlist ;
  132. void fontinit() {
  133.    register int i ;
  134.    register TeXfontdesctype *tft ;
  135.  
  136.    for (tft = TeXfontlist; tft; tft = tft->next) {
  137.       tft->loaded = 0 ;
  138.       tft->scaledsize = tft->origssize ;
  139.    }
  140.    for (i=0; i<256; i++)
  141.       if (tft = TeXfonts[i])
  142.          tft->loaded = 0 ;
  143. }
  144. extern long fakeeof ;
  145. void dviinit() {
  146.    register int i ;
  147.  
  148.    curpos = 0 ;
  149.    dviseek(0) ;
  150.    orientationset = 0 ;
  151.    if (landscape || !usersetsizes)
  152.       resetsizes() ;
  153.    landscape = 0 ;
  154.    fontinit() ;
  155.    for (i=0; i<256; i++)
  156.       if (TeXfonts[i]) {
  157.          free(TeXfonts[i]) ;
  158.          TeXfonts[i] = NULL ;
  159.       }
  160.    if (dvibyte()!=247)
  161.       abortpage() ;
  162.    if (dvibyte()!=2)
  163.       abortpage() ;
  164.    num = signedquad() ;
  165.    den = signedquad() ;
  166.    alpha = (((real)den / 7227.0) / 0x100000) * (25400000.0 / (real) num) ;
  167.    dvimag = signedquad() ;
  168.    TPSdvimag((real)dvimag / 1000.0) ;
  169.    for (i=dvibyte(); i>0; i--)
  170.       dvibyte() ;
  171.    initcolor() ;
  172.    newdpi() ;
  173.    freepages() ;
  174.    relativepage(1) ;
  175.    firstpage = 1 ;
  176.    skippage() ;
  177.    cleartheair() ;
  178.    firstpage = 0 ;
  179.    pageinterrupted = 0 ;
  180.    fakeeof = 2000000000 ;
  181.    bringupwindow() ;
  182. }
  183.