| 1 | 
greg | 
1.3 | 
/* RCSid: $Id$ */ | 
| 2 | 
greg | 
1.1 | 
/* | 
| 3 | 
  | 
  | 
 *              Board types used for targa->boardType | 
| 4 | 
  | 
  | 
 */ | 
| 5 | 
  | 
  | 
#define    TYPE_8        8 | 
| 6 | 
  | 
  | 
#define    TYPE_16  16 | 
| 7 | 
  | 
  | 
#define    TYPE_24  24 | 
| 8 | 
  | 
  | 
#define    TYPE_32  32 | 
| 9 | 
  | 
  | 
#define    TYPE_M8  -8 | 
| 10 | 
  | 
  | 
 | 
| 11 | 
  | 
  | 
/* | 
| 12 | 
  | 
  | 
 * TARGA: 400 to 482 rows x 512 pixels/row X 16 bits/pixel       | 
| 13 | 
  | 
  | 
 */ | 
| 14 | 
  | 
  | 
 | 
| 15 | 
  | 
  | 
#define XMIN    0 | 
| 16 | 
  | 
  | 
#define YMIN    0 | 
| 17 | 
  | 
  | 
#define XMAX    512                     /*  maximum X value */ | 
| 18 | 
  | 
  | 
#define YMAX    512                     /*  maximum Y value */ | 
| 19 | 
  | 
  | 
#define XRES    512                     /*  X resolution */ | 
| 20 | 
  | 
  | 
#define YRES    512                     /*  Y Resolution */ | 
| 21 | 
  | 
  | 
#define YVISMAX (2*targa->LinesPerField)        /*   Maximum visible Y coordinate */ | 
| 22 | 
  | 
  | 
#define YVISMIN 0                           /*   Minimum visible Y coordiate */ | 
| 23 | 
  | 
  | 
#define DEF_ROWS 400                    /*  Default number of rows */ | 
| 24 | 
  | 
  | 
 | 
| 25 | 
  | 
  | 
 | 
| 26 | 
  | 
  | 
#define DEF_IOBASE   0x220 | 
| 27 | 
  | 
  | 
#define IOBASE  targa->iobase   /* io base location of graphics registers */ | 
| 28 | 
  | 
  | 
#define MEMSEG   targa->memloc   /*  use the variable so we can use */ | 
| 29 | 
  | 
  | 
#define SCNSEG   targa->memloc   /*  the one defined in TARGA */ | 
| 30 | 
  | 
  | 
#define SRCBANK  (targa->memloc+0x0800)   /*  use high-bank as source bank */ | 
| 31 | 
  | 
  | 
#define DESTBANK targa->memloc                    /*  use lo-bank as destination bank */ | 
| 32 | 
  | 
  | 
#define DEF_MEMSEG 0xa000               /* Default screen memory */ | 
| 33 | 
  | 
  | 
 | 
| 34 | 
  | 
  | 
/* | 
| 35 | 
  | 
  | 
 *                              Output register definitions | 
| 36 | 
  | 
  | 
 */ | 
| 37 | 
  | 
  | 
#define MODEREG (IOBASE+0xC00)  /*  Mode Register address */ | 
| 38 | 
  | 
  | 
#define MASKREG (IOBASE+0x800)  /*  Mask Registers */ | 
| 39 | 
  | 
  | 
#define UNDERREG        (IOBASE+0x800)  /*  Underscan register */ | 
| 40 | 
  | 
  | 
#define OVERREG         (IOBASE+0x802)  /*  overscan register */ | 
| 41 | 
  | 
  | 
#define DESTREG (IOBASE+0x802)  /*  Address of Page Select Lower Register */ | 
| 42 | 
  | 
  | 
#define SRCREG  (IOBASE+0x803)  /*  Address of Page Select Upper Register */ | 
| 43 | 
  | 
  | 
#define VCRCON  (IOBASE+0x400)  /*  Address of Contrast/VidSrc Register */ | 
| 44 | 
  | 
  | 
#define BLNDREG  VCRCON | 
| 45 | 
  | 
  | 
#define SATHUE  (IOBASE+0x402)  /* Satuation/Hue Register address */ | 
| 46 | 
  | 
  | 
#define DRREG (IOBASE+0x401)    /* ADDRESS OF Controller Write Register */ | 
| 47 | 
  | 
  | 
#define VERTPAN (IOBASE+0x403)  /*  Address of Vertical Pan Register */ | 
| 48 | 
  | 
  | 
#define BORDER  (IOBASE)        /*  Address of Page Select Lower Register */ | 
| 49 | 
  | 
  | 
 | 
| 50 | 
  | 
  | 
 | 
| 51 | 
  | 
  | 
/* | 
| 52 | 
  | 
  | 
 *                              Input register definitions | 
| 53 | 
  | 
  | 
 */ | 
| 54 | 
  | 
  | 
#define VIDEOSTATUS     (IOBASE+0xC02)  /*  Video Status Register */ | 
| 55 | 
  | 
  | 
#define RASTERREG       (IOBASE+0xC00)          /* Raster counter register */ | 
| 56 | 
  | 
  | 
 | 
| 57 | 
  | 
  | 
 | 
| 58 | 
  | 
  | 
 | 
| 59 | 
  | 
  | 
/* | 
| 60 | 
  | 
  | 
 *                      Default register values  | 
| 61 | 
  | 
  | 
 */ | 
| 62 | 
  | 
  | 
#define DEF_MODE 1                              /*  Default mode register value */ | 
| 63 | 
  | 
  | 
                                                                /*   Memory selected, 512x512, 1x */ | 
| 64 | 
  | 
  | 
                                                                /*   Display mode */ | 
| 65 | 
  | 
  | 
#define DEF_MASK 0                              /*  default memory mask */ | 
| 66 | 
  | 
  | 
#define DEF_SATURATION  0x4                     /* default saturation value */ | 
| 67 | 
  | 
  | 
#define DEF_HUE 0x10            /* default hue value */ | 
| 68 | 
  | 
  | 
#define DEF_CONTRAST    0x10            /* default contrast value */ | 
| 69 | 
  | 
  | 
#define DEF_VIDSRC  0       /* default video source value - Composite */ | 
| 70 | 
  | 
  | 
#define DEF_VERTPAN 56          /*  assumes 400-line output */ | 
| 71 | 
  | 
  | 
#define DEF_BORDER  0           /*  default border color */ | 
| 72 | 
  | 
  | 
 | 
| 73 | 
  | 
  | 
 | 
| 74 | 
  | 
  | 
/*   | 
| 75 | 
  | 
  | 
 *                      MASK AND SHIFT VALUE FOR REGISTERS CONTAINING SUBFIELDS | 
| 76 | 
  | 
  | 
 */ | 
| 77 | 
  | 
  | 
/* | 
| 78 | 
  | 
  | 
 *   ****************************************************** | 
| 79 | 
  | 
  | 
 *                                      MODE REGISTERS | 
| 80 | 
  | 
  | 
 *   ****************************************************** | 
| 81 | 
  | 
  | 
 */ | 
| 82 | 
  | 
  | 
#define MSK_MSEL 0xfffC         /*  memory select bits */ | 
| 83 | 
  | 
  | 
#define SHF_MSEL 0x0000 | 
| 84 | 
  | 
  | 
#define MSEL     1 | 
| 85 | 
  | 
  | 
 | 
| 86 | 
  | 
  | 
#define MSK_IBIT 0xfffb         /*  Interlace bit */ | 
| 87 | 
  | 
  | 
#define SHF_IBIT 2 | 
| 88 | 
  | 
  | 
 | 
| 89 | 
  | 
  | 
#define MSK_RES  0xFFC7                 /*   disp. resolution and screen select bits */ | 
| 90 | 
  | 
  | 
#define SHF_RES  3 | 
| 91 | 
  | 
  | 
#define S0_512X512_0            0               /*   512x512 resolution screen */ | 
| 92 | 
  | 
  | 
#define S1_512X512_1            1 | 
| 93 | 
  | 
  | 
#define S2_512X256_0            2               /*   512x256 resolution screen 0 */ | 
| 94 | 
  | 
  | 
#define S3_512X256_1            3               /*   512x256 resolution screen 1 */ | 
| 95 | 
  | 
  | 
#define S4_256X256_0            4               /*   256x256 resolution screen 0 */ | 
| 96 | 
  | 
  | 
#define S5_256X256_1            5               /*      ....   */ | 
| 97 | 
  | 
  | 
#define S6_256X256_2            6 | 
| 98 | 
  | 
  | 
#define S7_256X256_3            7 | 
| 99 | 
  | 
  | 
 | 
| 100 | 
  | 
  | 
#define MSK_REGWRITE    0xFFBF  /*   mask for display register write */ | 
| 101 | 
  | 
  | 
#define SHF_REGWRITE    6 | 
| 102 | 
  | 
  | 
#define REGINDEX                0               /*  to write an index value */ | 
| 103 | 
  | 
  | 
#define REGVALUE                1               /*  to write a value */ | 
| 104 | 
  | 
  | 
 | 
| 105 | 
  | 
  | 
#define MSK_BIT9                0xFF7F  /*  maks for high-order bit of DR's */ | 
| 106 | 
  | 
  | 
#define SHF_BIT9                7                | 
| 107 | 
  | 
  | 
 | 
| 108 | 
  | 
  | 
#define MSK_TAPBITS             0xFCFF  /*  mask for setting the tap bits */ | 
| 109 | 
  | 
  | 
#define SHF_TAPBITS             8        | 
| 110 | 
  | 
  | 
 | 
| 111 | 
  | 
  | 
#define MSK_ZOOM                0xF3FF  /*  Mask for zoom factor */ | 
| 112 | 
  | 
  | 
#define SHF_ZOOM                10 | 
| 113 | 
  | 
  | 
 | 
| 114 | 
  | 
  | 
#define MSK_DISPLAY             0xCFFF  /*  Mask for display mode */ | 
| 115 | 
  | 
  | 
#define SHF_DISPLAY             12 | 
| 116 | 
  | 
  | 
#define MEMORY_MODE             0 | 
| 117 | 
  | 
  | 
#define LIVE_FIXED              1 | 
| 118 | 
  | 
  | 
#define OVERLAY_MODE    2 | 
| 119 | 
  | 
  | 
#define LIVE_LIVE               3 | 
| 120 | 
  | 
  | 
#define DEF_DISPLAY             0 | 
| 121 | 
  | 
  | 
 | 
| 122 | 
  | 
  | 
#define MSK_CAPTURE             0xBFFF  /*  Mask for capture bit */ | 
| 123 | 
  | 
  | 
#define SHF_CAPTURE     14 | 
| 124 | 
  | 
  | 
 | 
| 125 | 
  | 
  | 
#define MSK_GENLOCK             0x7FFF  /*  MASK FOR GENLOCK */ | 
| 126 | 
  | 
  | 
#define SHF_GENLOCK             15 | 
| 127 | 
  | 
  | 
#define DEF_GENLOCK             0 | 
| 128 | 
  | 
  | 
/* | 
| 129 | 
  | 
  | 
 *              Video status input register | 
| 130 | 
  | 
  | 
 */ | 
| 131 | 
  | 
  | 
#define FIELDBIT        0x0001 | 
| 132 | 
  | 
  | 
#define VIDEOLOSS 0x0002 | 
| 133 | 
  | 
  | 
/* | 
| 134 | 
  | 
  | 
 *      VIDEO SOURCE/CONTROL REGISTER | 
| 135 | 
  | 
  | 
 */ | 
| 136 | 
  | 
  | 
#define MSK_CONTRAST    0xFFC1 | 
| 137 | 
  | 
  | 
#define SHF_CONTRAST    1 | 
| 138 | 
  | 
  | 
#define MAX_CONTRAST    0x1f | 
| 139 | 
  | 
  | 
 | 
| 140 | 
  | 
  | 
#define MSK_RGBORCV    0xBF | 
| 141 | 
  | 
  | 
#define SHF_RGBORCV     6 | 
| 142 | 
  | 
  | 
#define RGB                     1 | 
| 143 | 
  | 
  | 
#define CV                              0 | 
| 144 | 
  | 
  | 
 | 
| 145 | 
  | 
  | 
#define MSK_VCRORCAMERA 0x7F | 
| 146 | 
  | 
  | 
#define SHF_VCRORCAMERA    7 | 
| 147 | 
  | 
  | 
#define VCR                             1 | 
| 148 | 
  | 
  | 
#define CAMERA                          0 | 
| 149 | 
  | 
  | 
 | 
| 150 | 
  | 
  | 
 /*  | 
| 151 | 
  | 
  | 
  *       HUE/SATUATION REGISTER | 
| 152 | 
  | 
  | 
  */ | 
| 153 | 
  | 
  | 
#define MSK_HUE                 0xE0 | 
| 154 | 
  | 
  | 
#define SHF_HUE                 0 | 
| 155 | 
  | 
  | 
#define MAX_HUE         0x1f | 
| 156 | 
  | 
  | 
 | 
| 157 | 
  | 
  | 
#define MSK_SATURATION  0x1F | 
| 158 | 
  | 
  | 
#define SHF_SATURATION  5 | 
| 159 | 
  | 
  | 
#define MAX_SATURATION  0x07 | 
| 160 | 
  | 
  | 
 | 
| 161 | 
  | 
  | 
 | 
| 162 | 
  | 
  | 
/* | 
| 163 | 
  | 
  | 
 *  ********************************************* | 
| 164 | 
  | 
  | 
 *                      Display register settings | 
| 165 | 
  | 
  | 
 *  ********************************************* | 
| 166 | 
  | 
  | 
 * | 
| 167 | 
  | 
  | 
 *      Screen Positioning Registers: | 
| 168 | 
  | 
  | 
 *              DR 0-3 | 
| 169 | 
  | 
  | 
 */ | 
| 170 | 
  | 
  | 
#define  LEFTBORDER     0 | 
| 171 | 
  | 
  | 
#define  DEF_LEFT   85 | 
| 172 | 
  | 
  | 
#define  MIN_LEFT       75 | 
| 173 | 
  | 
  | 
#define  MAX_LEFT       95 | 
| 174 | 
  | 
  | 
#define  RIGHTBORDER    1 | 
| 175 | 
  | 
  | 
#define  DEF_RIGHT       (DEF_LEFT+256) | 
| 176 | 
  | 
  | 
#define  TOPBORDER      2 | 
| 177 | 
  | 
  | 
#define  DEF_TOP                40 | 
| 178 | 
  | 
  | 
#define  MIN_TOP        20 | 
| 179 | 
  | 
  | 
#define  BOTTOMBORDER   3 | 
| 180 | 
  | 
  | 
#define  DEF_BOTTOM     (DEFTOP+DEFROWS/2) | 
| 181 | 
  | 
  | 
#define  MAX_BOTTOM     261 | 
| 182 | 
  | 
  | 
 | 
| 183 | 
  | 
  | 
/* | 
| 184 | 
  | 
  | 
 *      REgisters which track 0-3 | 
| 185 | 
  | 
  | 
 */ | 
| 186 | 
  | 
  | 
#define DR8     8 | 
| 187 | 
  | 
  | 
#define PRESHIFT        DR8 | 
| 188 | 
  | 
  | 
#define EQU_DR8 DR0 | 
| 189 | 
  | 
  | 
#define DR9     9 | 
| 190 | 
  | 
  | 
#define EQU_DR9 DR1 | 
| 191 | 
  | 
  | 
#define DR10    10 | 
| 192 | 
  | 
  | 
#define EQU_DR10        DR2 | 
| 193 | 
  | 
  | 
#define DR11    11 | 
| 194 | 
  | 
  | 
#define EQU_DR11        DR3 | 
| 195 | 
  | 
  | 
 | 
| 196 | 
  | 
  | 
/* | 
| 197 | 
  | 
  | 
 *      REQUIRED REGISTERS | 
| 198 | 
  | 
  | 
 */ | 
| 199 | 
  | 
  | 
#define DR4     4 | 
| 200 | 
  | 
  | 
#define DEF_DR4 352 | 
| 201 | 
  | 
  | 
#define DR5     5 | 
| 202 | 
  | 
  | 
#define DEF_DR5 1 | 
| 203 | 
  | 
  | 
#define DR6     6 | 
| 204 | 
  | 
  | 
#define DEF_DR6 0 | 
| 205 | 
  | 
  | 
#define DR7     7 | 
| 206 | 
  | 
  | 
#define DEF_DR7 511 | 
| 207 | 
  | 
  | 
#define DR12    12 | 
| 208 | 
  | 
  | 
#define DEF_DR12        20 | 
| 209 | 
  | 
  | 
#define DR13    13 | 
| 210 | 
  | 
  | 
#define DEF_DR13        22 | 
| 211 | 
  | 
  | 
#define DR14    14 | 
| 212 | 
  | 
  | 
#define DEF_DR14        0 | 
| 213 | 
  | 
  | 
#define DR15    15 | 
| 214 | 
  | 
  | 
#define DEF_DR15        511 | 
| 215 | 
  | 
  | 
#define DR16    16 | 
| 216 | 
  | 
  | 
#define DEF_DR16        0 | 
| 217 | 
  | 
  | 
#define DR17    17 | 
| 218 | 
  | 
  | 
#define DEF_DR17        0 | 
| 219 | 
  | 
  | 
#define DR18    18 | 
| 220 | 
  | 
  | 
#define DEF_DR18        0 | 
| 221 | 
  | 
  | 
#define DR19    19 | 
| 222 | 
  | 
  | 
#define DEF_DR19        4 | 
| 223 | 
  | 
  | 
 | 
| 224 | 
  | 
  | 
/* interlace mode register & parameters */ | 
| 225 | 
  | 
  | 
#define DR20    20 | 
| 226 | 
  | 
  | 
#define INTREG  0x14 | 
| 227 | 
  | 
  | 
#define DEF_INT  0              /*  default to interlace mode 0 */ | 
| 228 | 
  | 
  | 
#define MSK_INTERLACE 0x0003 | 
| 229 | 
  | 
  | 
 | 
| 230 | 
  | 
  | 
 | 
| 231 | 
  | 
  | 
 | 
| 232 | 
  | 
  | 
struct  TARStruct { | 
| 233 | 
  | 
  | 
        /*                      Board Configuration */ | 
| 234 | 
  | 
  | 
        int   memloc;   /* memory segment */ | 
| 235 | 
  | 
  | 
        int   iobase;   /*  IOBASE segment */ | 
| 236 | 
  | 
  | 
        int   BytesPerPixel;  /* number of words per pixel */ | 
| 237 | 
  | 
  | 
        int   RowsPerBank;   /* number of row per 64K bank */ | 
| 238 | 
  | 
  | 
        int       MaxBanks;             /*   maximum bank id */ | 
| 239 | 
  | 
  | 
        int   AddressShift; /*   number of bits to shift address */ | 
| 240 | 
  | 
  | 
 | 
| 241 | 
  | 
  | 
        /*                      Control registers */ | 
| 242 | 
  | 
  | 
        int  mode;              /*  mode register */ | 
| 243 | 
  | 
  | 
        int  Mask;              /*  mask register */ | 
| 244 | 
  | 
  | 
        int  PageMode;  /*  current page mode (screen res. and page) */ | 
| 245 | 
  | 
  | 
        unsigned  PageLower;            /*  Lower Page Select register */ | 
| 246 | 
  | 
  | 
        unsigned  PageUpper;            /*  upper Page select register */ | 
| 247 | 
  | 
  | 
        int  VCRCon;            /*  VCRContract register */ | 
| 248 | 
  | 
  | 
        int  SatHue;            /* Hue and Saturation register */ | 
| 249 | 
  | 
  | 
        long  BorderColor;      /*  Border color register */ | 
| 250 | 
  | 
  | 
        int  VertShift; /*  Vertical Pan Register */ | 
| 251 | 
  | 
  | 
 | 
| 252 | 
  | 
  | 
        int     PanXOrig, PanYOrig;     /* x,y pan origin */ | 
| 253 | 
  | 
  | 
 | 
| 254 | 
  | 
  | 
        /*                       TARGA-SET PARAMETERS */  | 
| 255 | 
  | 
  | 
        int  boardType;         /*  See TYPE_XX  IN THIS FILE */ | 
| 256 | 
  | 
  | 
                                                /*  FOR DEFINITION OF Board Types */ | 
| 257 | 
  | 
  | 
        int  xOffset;           /* X-offset */ | 
| 258 | 
  | 
  | 
        int  yOffset;           /*  Y-Offset */ | 
| 259 | 
  | 
  | 
        int  LinesPerField;     /*  maximum visible row count */ | 
| 260 | 
  | 
  | 
        int  InterlaceMode;     /*  desired interlace mode */ | 
| 261 | 
  | 
  | 
        int  AlwaysGenLock;             /*  Genlock always on or not  */ | 
| 262 | 
  | 
  | 
        int  Contrast;          /*  Desired Contrast */ | 
| 263 | 
  | 
  | 
        int  Hue;               /*  Desired Hue */ | 
| 264 | 
  | 
  | 
        int  Saturation;        /*  Desired Satuation */ | 
| 265 | 
  | 
  | 
        int  RGBorCV;           /*  CV or RGB Input */ | 
| 266 | 
  | 
  | 
        int  VCRorCamera;       /*  VCR or Camera */ | 
| 267 | 
  | 
  | 
        int  ovrscnAvail, ovrscnOn; /*  ovrscnAvail   1  if Overscan installed */ | 
| 268 | 
  | 
  | 
                                                                /*  ovrscnOn  1 if overscan is stretching */ | 
| 269 | 
  | 
  | 
         | 
| 270 | 
  | 
  | 
        /*                      Display Registers */ | 
| 271 | 
  | 
  | 
        int     DisplayRegister[22]; | 
| 272 | 
  | 
  | 
        }; | 
| 273 | 
  | 
  | 
 | 
| 274 | 
  | 
  | 
struct  M8Struct { | 
| 275 | 
  | 
  | 
        int  there;      /*  flag to indicate if m8 is present */ | 
| 276 | 
  | 
  | 
                                         /*  logical true if M8 present (i.e. 1) */ | 
| 277 | 
  | 
  | 
                                         /*  and logical false (0) otherwise */ | 
| 278 | 
  | 
  | 
        int  inOffset;   /*  input offset */ | 
| 279 | 
  | 
  | 
        int  inGain;     /*  input gain */ | 
| 280 | 
  | 
  | 
        int  inputMux;  /*  input channel */ | 
| 281 | 
  | 
  | 
        int  modeRegister;    /*   value of the mode register on the M8 top */ | 
| 282 | 
  | 
  | 
        int  inMap, outMap;  /*  active input/output color map */ | 
| 283 | 
  | 
  | 
        int  loopThru;          /*   logical flag if M8 loop-through is desired */ | 
| 284 | 
  | 
  | 
                                                /*  of CGA input 1---YES,  0---No     */ | 
| 285 | 
  | 
  | 
    int  topFunction;   /*  currently selected top function */ | 
| 286 | 
  | 
  | 
        int  CGAInterlace;  /*  interlace mode for  a CGA if used */ | 
| 287 | 
  | 
  | 
}; | 
| 288 | 
  | 
  | 
 | 
| 289 | 
  | 
  | 
#define M8MODE  0x400    /*  IO Offset for writes to M8 Mode register */ | 
| 290 | 
  | 
  | 
#define M8WRITE 0x402    /*  Offset for writes to M8 function registers */ | 
| 291 | 
  | 
  | 
#define M8READ  0x802    /*  Offset for reads from M8 function registers */ | 
| 292 | 
  | 
  | 
 | 
| 293 | 
  | 
  | 
#define DEF_M8MODE              2 | 
| 294 | 
  | 
  | 
#define DEF_M8GAIN              50 | 
| 295 | 
  | 
  | 
#define DEF_M8OFFSET    50 | 
| 296 | 
  | 
  | 
#define DEF_M8MUX               0 | 
| 297 | 
  | 
  | 
#define DEF_M8INMAP             0 | 
| 298 | 
  | 
  | 
#define DEF_M8OUTMAP    0 | 
| 299 | 
  | 
  | 
#define DEF_CGAINTERLACE        3 | 
| 300 | 
  | 
  | 
 | 
| 301 | 
  | 
  | 
 | 
| 302 | 
  | 
  | 
struct hdStruct { | 
| 303 | 
  | 
  | 
        char textSize; | 
| 304 | 
  | 
  | 
        char mapType; | 
| 305 | 
  | 
  | 
        char dataType; | 
| 306 | 
  | 
  | 
        int  mapOrig; | 
| 307 | 
  | 
  | 
        int  mapLength; | 
| 308 | 
  | 
  | 
        char CMapBits; | 
| 309 | 
  | 
  | 
        int  XOffset; | 
| 310 | 
  | 
  | 
        int  YOffset; | 
| 311 | 
  | 
  | 
        int  x; | 
| 312 | 
  | 
  | 
        int  y; | 
| 313 | 
  | 
  | 
        int  dataBits, imType; | 
| 314 | 
  | 
  | 
        } ; | 
| 315 | 
  | 
  | 
 | 
| 316 | 
  | 
  | 
 | 
| 317 | 
  | 
  | 
/* stroke font file */ | 
| 318 | 
  | 
  | 
 | 
| 319 | 
  | 
  | 
typedef struct{ | 
| 320 | 
  | 
  | 
        int width;                      /* width of character */ | 
| 321 | 
  | 
  | 
        int height;                     /* height of char from baseline */ | 
| 322 | 
  | 
  | 
        int descent;                    /* descent below baseline */ | 
| 323 | 
  | 
  | 
        int index;                      /* index into stroke table */ | 
| 324 | 
  | 
  | 
} SFONTCHAR; | 
| 325 | 
  | 
  | 
 | 
| 326 | 
  | 
  | 
typedef struct { | 
| 327 | 
  | 
  | 
        int dx;                         /* dx of character */ | 
| 328 | 
  | 
  | 
        int dy;                         /* dy of character */ | 
| 329 | 
  | 
  | 
        int dd;                         /* dy of descenders */ | 
| 330 | 
  | 
  | 
        int first;                      /* value of first char in font */ | 
| 331 | 
  | 
  | 
        int last;                       /* value of last char in font */ | 
| 332 | 
  | 
  | 
        int *strokes;                   /* where the strokes are located */ | 
| 333 | 
  | 
  | 
        SFONTCHAR *info;                /* info on each character */ | 
| 334 | 
  | 
  | 
} SFONT; |