home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / INCLUDE / CMAPDECL.H < prev    next >
C/C++ Source or Header  |  1990-05-03  |  3KB  |  73 lines

  1. /*
  2.     cmapdecl.h    1/26/88
  3.  
  4.     Character Map handling routines
  5.     by Joe DeSantis.
  6.     recreated by Ted Peck.
  7.  
  8.     OWL 1.2
  9.     Copyright (c) 1988, by Oakland Group, Inc.
  10.     ALL RIGHTS RESERVED.
  11.  
  12.     Revision History:
  13.     -----------------
  14.      3/18/88 ted    made cmap a structure, not just a char **
  15.      5/09/89 ted    Changed Alloc/Free terms to Open/Close.
  16.      3/28/90 jmd    ansi-fied
  17.      5/03/90 ted    Added cmap_Copy function.
  18.      5/05/90 ted    Cleaned up; removed charattrbuf macro.
  19. */
  20. /* -------------------------------------------------------------------------- */
  21. /* character map structure */
  22.  
  23. typedef struct cmap_struct {
  24.     int     ncols;
  25.     int        nrows;
  26.     int     bufsize;
  27.     char   *charbuf;
  28.     byte   *attrbuf;
  29. } *cmap_type;
  30.  
  31. /* -------------------------------------------------------------------------- */
  32. #define cmap_GetWidth(cmap)                ((cmap)->ncols)
  33. #define cmap_GetHeight(cmap)            ((cmap)->nrows)
  34.  
  35. #define cmap_charbuf(cmap, row, col)    \
  36.             (&((cmap)->charbuf[(row) * (cmap)->ncols + (col)]))
  37. #define cmap_attrbuf(cmap, row, col)    \
  38.             (&((cmap)->attrbuf[(row) * (cmap)->ncols + (col)]))
  39.  
  40. #define cmap_PutStringAttr(cmap, row, col, string, attr, slen)    \
  41.             cmap_psa(cmap, row, col, string, attr, 0, slen)
  42.  
  43. #define cmap_PutString(cmap, row, col, string, color, slen)     \
  44.             cmap_psa(cmap, row, col, string, NULL, color, slen)
  45.  
  46. #define cmap_PutChar(cmap, row, col, c, attr)                    \
  47.             cmap_psa(cmap, row, col, &(c), NULL, attr, 1)
  48.  
  49. /* -------------------------------------------------------------------------- */
  50. /* CMAP.C */
  51. extern cmap_type cmap_Open(int nrows, int ncols);
  52. extern void        cmap_Close(cmap_type cmap);
  53. extern unsigned cmap_clipcbox(cmap_type cmap, ocbox *cboxp);
  54. extern unsigned cmap_clippos(cmap_type cmap, int *rowp, int *colp);
  55.  
  56. /* CMAPPUT.C */
  57. extern char       *cmap_psa(cmap_type cmap, int row, int col, char *string, byte *attrbuf, byte attr, int slen);
  58. extern void        cmap_PutBox(cmap_type cmap, char *boxchar, ocbox *cboxp, byte attr);
  59. extern void        cmap_PutHzLine(cmap_type cmap, char *linechar, int row1, int col1, int length, byte attr);
  60. extern void        cmap_PutVtLine(cmap_type cmap, char *linechar, int row1, int col1, int length, byte attr);
  61. extern void        cmap_ClearBox(cmap_type cmap, ocbox *cboxp, byte attr);
  62. extern void        cmap_ScrollBoxVt(cmap_type cmap, ocbox *cboxp, int nlines);
  63. extern void        cmap_ScrollBoxHz(cmap_type cmap, ocbox *cboxp, int nlines);
  64.  
  65. /* CMAPCOPY.C */
  66. extern void        cmap_Copy(cmap_type dcmap, cmap_type scmap, byte attr);
  67.  
  68. /* cmwin.c - Included here because they use cmap_type */
  69. #define cmwin_GetCmap(win)            ((cmap_type) (cmwin_getxd(win)->cmap))
  70. #define cmwin_SetCmap(win, cm)        (cmwin_getxd(win)->cmap = (VOID *)(cm))
  71. /* -------------------------------------------------------------------------- */
  72.  
  73.