home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 3 / Meeting_Pearls_III.iso / Pearls / texmf / source / driver / util / amiga / special.h < prev    next >
C/C++ Source or Header  |  1994-09-29  |  4KB  |  164 lines

  1. /* special.h */
  2.  
  3. #include <dos/dos.h>
  4.  
  5. #define MAGIC_WORD        (('S'<<24) | ('P'<<16) | ('E'<<8) | 'C')
  6.  
  7. #define SPECIAL_PORT        "special_dvi"
  8. #define SPECIAL_REPLY        "special_reply"
  9.  
  10. /* 4 commands for \special-strings */
  11. #define AC_SEND_SPECIAL        1
  12. #define AC_REPLY_SPECIAL    2
  13. #define AC_OK_BITMAP        3
  14. #define AC_REPLY_BITMAP        4
  15.  
  16. /* 2 commands for tpic commands */
  17. #define AC_SEND_TPIC        5
  18. #define AC_REPLY_TPIC        6
  19.  
  20. /* SpecialHost don't know the current action */
  21. #define AC_REPLY_UNKNOWN    7
  22.  
  23.  
  24. #define LOC_NONE        0    /* no picture available             */
  25. #define LOC_BITMAP        1    /* bimap in RAM                 */
  26. #define LOC_FILE        2    /* bitmap in a file             */
  27. #define LOC_BORDER        3    /* no picture, draw only a border    */
  28. #define LOC_RECTANGLE        4    /* no picture, draw a full rectangle */
  29.                     /* LOC_BORDER || LOC_RECTANGLE          */
  30.                     /*        => loc.map == NULL   */
  31. #define LOC_BITMAP_BORDER    5    /* bitmap in RAM + draw border         */
  32. #define LOC_FILE_BORDER        6    /* bitmap in file + draw border         */
  33.  
  34.  
  35.  
  36. /* TPIC commands */
  37. /* only the '!' commands call SpecialHost */
  38.  
  39. #define TPIC_NO_TPIC    0
  40. #define TPIC_PN        1 
  41. #define TPIC_PA     2
  42. #define TPIC_FP     3        /* ! */
  43. #define TPIC_IP     4        /* ! */
  44. #define TPIC_DA     5        /* ! */
  45. #define TPIC_DT        6        /* ! */
  46. #define TPIC_SP     7        /* ! */
  47. #define TPIC_SPB    8        /* ! (same as _SP) */
  48. #define TPIC_AR     9        /* ! */
  49. #define TPIC_IA     10        /* ! */
  50. #define TPIC_SH        11
  51. #define TPIC_SHB    12
  52. #define TPIC_WH        13
  53. #define TPIC_BK        14
  54. #define TPIC_TX        15
  55.  
  56.  
  57. struct tpic_msg {
  58.         char    tpic_com;
  59.         char    whiten;
  60.         char    blacken;
  61.         char    pad;
  62.         long    shade;                /* mult 10000 */
  63.         long    opt_long[4];            /* options to the tpic command */
  64.         char    opt_float[2][12];        /* float werden als String uebergeben! */
  65.         long    pen_size;
  66.         long    path_len;
  67.         long   *xx;
  68.         long   *yy;
  69.     };
  70.  
  71.  
  72. struct driver_map {
  73.         /* cursor */
  74.         long    x;            /* actual cursor position   */
  75.         long    y;            /* in the bitmap.        */
  76.         /* bitmap */
  77.         long    width;            /* width of bitmap in bits  */
  78.         long    height;            /* height of bitmap in bits */
  79.         long    lower_limit;
  80.         long    upper_limit;
  81.         long   *pixptr;            /* pointer to bitmap        */
  82.         long    null_x;            /* (0,0) of the TeX page    */
  83.         long    null_y;
  84.         long    page_width;        /* width of the full page   */
  85.         long    page_height;        /* height of the full page  */
  86.         long    pass;            /* number of current pass   */
  87.         long    passes;            /* number of passes         */
  88.     };
  89.  
  90. /**  Bitmap:
  91.  
  92.          width
  93.         +---------------+
  94.     |        |
  95.      |        |
  96.     |        |
  97.     |        |
  98.     |        |
  99.      ----------------------    upper_limit      \
  100.     |        |                         |
  101.     |        |                          - height
  102.     |        |                         |
  103.      ----------------------    lower_limit      /
  104.     |        |
  105.     |        |
  106.     |        |
  107.     |        |
  108.         +---------------+
  109.  
  110.   Bitmap is only between upper_limit and lower_limit in memory!
  111.  
  112. *****/
  113.  
  114.  
  115.  
  116.  
  117.  
  118. union  location {
  119.         unsigned long    *map;        /* picture as bitmap, lines with word (2Byte) alignment */
  120.         char         *filename;    /* picture as file */
  121.     };
  122.  
  123.  
  124. struct special_map {
  125.         short         where_is;    /* LOC_#? */
  126.         long         hoffset;    /* all in pixel */
  127.         long         voffset;
  128.         long         width;        /* in pixel (bitmap word-alignment!) */
  129.         long         height;    /* in pixel (bitmap word-alignment!) */
  130.     union    location     loc;
  131.         long         reserved1;
  132.         long         reserved2;
  133.         long         reserved3;
  134.         long         reserved4;
  135.     };
  136.  
  137. struct special_msg {        
  138.     struct    Message           msg;            /* 18 Bytes */
  139.         short           action;
  140.         short           ret;
  141.         char         * special_string;
  142.         long           hresolution;        /* 28 */
  143.         long           vresolution;        /* 32 */
  144.     struct    tpic_msg     * tpic;        /* if != NULL => tpic message */
  145.     struct    driver_map     * dmap;
  146.     struct    special_map     * bmap;
  147.             BPTR               DVIdirLock;        /* new since V1.26 */
  148.                                                 /* Lock to the directory, where the DVI-File resists */
  149.                                                 /* whatch out for msg->msg.mn_Length to check, if */
  150.                                                 /* this field exists! (NULL != SYS:) */
  151.         long           DVImagnification;    /* new since V1.39 */
  152.         char         * DVIfilename;
  153.         struct DateStamp * DVIfiledate;
  154.         long           DVIcurphypage;    /* current physical page number */
  155.     };
  156.  
  157.  
  158. /* functions */
  159.  
  160. struct special_map *send_special(char *sp_string);
  161. void             send_tpic(struct tpic_msg *tp);
  162. void            special_ok(void);
  163.  
  164.