home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PROG_C / TGE131.ZIP / INCLUDE / VARFONT.H < prev    next >
C/C++ Source or Header  |  1994-03-05  |  6KB  |  194 lines

  1. /*****************************************************************************
  2. *       The Graphics Engine version 1.31                                     *
  3. *                                                                            *
  4. *       The Graphics Engine code and documentation are                       *
  5. *       Copyright (c) 1993-1994 by Matthew Hildebrand; all rights reserved.  *
  6. *                                                                            *
  7. *       Unauthorised usage or modification of any or all of The Graphics     *
  8. *       Engine is strictly prohibited.                                       *
  9. *****************************************************************************/
  10.  
  11. #if !defined(VARFONTdotH)
  12. #define VARFONTdotH
  13.  
  14.  
  15.  
  16. //*****
  17. //***** Structure used by the VariableFont class.
  18. //*****
  19.  
  20. #pragma option -a-
  21.  
  22. struct FontCharInfo
  23. {
  24.   unsigned short offsetFromTop;
  25.   unsigned short wide, deep;
  26.   void far *bitmap;
  27. };
  28.  
  29. #pragma option -a
  30.  
  31.  
  32.  
  33. //*****
  34. //***** Class for dealing with variable-sized, 256-colour, loadable fonts.
  35. //*****
  36.  
  37. class VariableFont
  38. {
  39.   unsigned char fontPalette[768], colourTranslate[256];
  40.   FontCharInfo characters[256];
  41.   void far *characterData, *charBuf;
  42.   unsigned short maxWide, maxHigh;
  43.   unsigned spaceBetweenChars;
  44. public:
  45.   VariableFont(void);
  46.   ~VariableFont(void);
  47.   int load(char *filename);                     // returns 0 on error
  48.   void put(int x, int y, char ch);
  49.   void put(int x, int y, char *string);
  50.   unsigned width(char *string);
  51.   unsigned height(char *string);
  52.   inline unsigned short width(char ch);
  53.   inline unsigned short height(char ch);
  54.   inline unsigned short maxWidth(void);
  55.   inline unsigned short maxHeight(void);
  56.   void matchColours(void);
  57.   void palette(void *palette);
  58.   void palette(unsigned char palReg, unsigned char red, unsigned char green,
  59.                unsigned char blue);
  60.   void palette(unsigned char palReg, unsigned char *red, unsigned char *green,
  61.                unsigned char *blue);
  62.   inline void *palette(void);
  63.   inline void spacing(unsigned numPixels);
  64.   inline unsigned spacing(void);
  65. };
  66.  
  67.  
  68.  
  69. /**************************************************************************
  70. *  Function:    VariableFont::width
  71. *
  72. *  Purpose:     Return the width, in pixels, of a single character.
  73. *
  74. *  Entry:       ch = Character of which to find the width.
  75. *
  76. *  Exit:        Returns the width of the character in pixels, not
  77. *               accounting for blank space on either side.
  78. **************************************************************************/
  79.  
  80. inline unsigned short VariableFont::width(char ch)
  81. {
  82.   return (characters[(unsigned)ch].wide);
  83. }
  84.  
  85.  
  86.  
  87. /**************************************************************************
  88. *  Function:    VariableFont::height
  89. *
  90. *  Purpose:     Return the height, in pixels, of a single character's
  91. *               bitmap.  The offsetFromTop value is ignored.
  92. *
  93. *  Entry:       ch = Character of which to find the height.
  94. *
  95. *  Exit:        Returns the height of the character in pixels, not
  96. *               accounting for blank space above or below.
  97. **************************************************************************/
  98.  
  99. inline unsigned short VariableFont::height(char ch)
  100. {
  101.   return (characters[(unsigned)ch].deep);
  102. }
  103.  
  104.  
  105.  
  106. /**************************************************************************
  107. *  Function:    VariableFont::maxWidth
  108. *
  109. *  Purpose:     Return the width, in pixels, of the widest character.
  110. *
  111. *  Entry:       N/A
  112. *
  113. *  Exit:        Returns the width of the widest character in pixels, not
  114. *               accounting for blank space used between characters.
  115. **************************************************************************/
  116.  
  117. inline unsigned short VariableFont::maxWidth(void)
  118. {
  119.   return (maxWide);
  120. }
  121.  
  122.  
  123.  
  124. /**************************************************************************
  125. *  Function:    VariableFont::maxHeight
  126. *
  127. *  Purpose:     Return the height, in pixels, of the tallest character.
  128. *
  129. *  Entry:       N/A
  130. *
  131. *  Exit:        Returns the height of the tallest character in pixels, not
  132. *               accounting for blank space above or below.
  133. **************************************************************************/
  134.  
  135. inline unsigned short VariableFont::maxHeight(void)
  136. {
  137.   return (maxHigh);
  138. }
  139.  
  140.  
  141.  
  142. /**************************************************************************
  143. *  Function:    VariableFont::palette
  144. *
  145. *  Purpose:     Return the current font palette.
  146. *
  147. *  Entry:       N/A
  148. *
  149. *  Exit:        Returns the address of the current font palette.
  150. **************************************************************************/
  151.  
  152. inline void *VariableFont::palette(void)
  153. {
  154.   return (fontPalette);
  155. }
  156.  
  157.  
  158.  
  159. /**************************************************************************
  160. *  Function:    VariableFont::spacing
  161. *
  162. *  Purpose:     Set the spacing, in pixels, between characters.
  163. *
  164. *  Entry:       numPixels = New spacing value, in pixels.
  165. *
  166. *  Exit:        N/A
  167. **************************************************************************/
  168.  
  169. inline void VariableFont::spacing(unsigned numPixels)
  170. {
  171.   spaceBetweenChars = numPixels;            // change spacing value
  172. }
  173.  
  174.  
  175.  
  176. /**************************************************************************
  177. *  Function:    VariableFont::spacing
  178. *
  179. *  Purpose:     Return the spacing, in pixels, between characters.
  180. *
  181. *  Entry:       N/A
  182. *
  183. *  Exit:        Returns the spacing in pixels.
  184. **************************************************************************/
  185.  
  186. inline unsigned VariableFont::spacing(void)
  187. {
  188.   return (spaceBetweenChars);               // return spacing value
  189. }
  190.  
  191.  
  192.  
  193. #endif
  194.