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

  1. /*
  2.     oboxdecl.h    5/15/88
  3.  
  4.     % driver functions and other things that need attending to
  5.  
  6.     By Ted.
  7.  
  8.     OWL 1.2
  9.     Copyright (c) 1988, by Oakland Group, Inc.
  10.     ALL RIGHTS RESERVED.
  11.  
  12.     Revision History:
  13.     -----------------
  14.      8/24/88 jmd    added ocbox_FindDist
  15.     10/19/88 ted    split out ocolmap stuff to ocmapdecl.h
  16.      5/09/89 ted    renamed old set's to copy's, added new set's.
  17.      5/09/89 ted    Made _point_copy a macro.
  18.      8/21/89 ted    Changed ofont and opsize widths and heights to 'odims'.
  19.      8/21/89 ted    Added ofontdesc_struct, font 'real' and 'req' elements.
  20.      9/10/89 ted    Removed ofontdesc 'seriph' element.
  21.     10/09/89 ted    Added 'scalable' flag to ofontdesc_struct.
  22.      2/14/90 ted    Added aspect font struct element.
  23.      3/28/90 jmd    ansi-fied
  24. */
  25. /* -------------------------------------------------------------------------- */
  26. /* data types */
  27.  
  28. typedef int opcoord;            /* signed pixel coordinate */
  29. typedef unsigned odim;            /* unsigned pixel dimension/distance (coord-coord) */
  30. typedef unsigned short oangle;    /* angle measurement; units of 2pi/(USHRT_MAX+1) */
  31.  
  32. typedef struct _fontdesc {
  33.     opcoord     width;
  34.     opcoord     height;
  35.     short         style;        /* An arbitrary indicator of increasing floweriness */
  36.     unsigned     bold:1;
  37.     unsigned     underline:1;
  38.     unsigned     outline:1;
  39.     oangle         slant;        /* Font angle measured clockwise from straight up */
  40.     unsigned     scalable:1;
  41. } fontdesc_struct;
  42.  
  43. typedef struct ofont_struct {
  44.     short              fontid;
  45.     fontdesc_struct  real;        /* actual font description */
  46.     fontdesc_struct  req;        /* requested font description */
  47.     unsigned short   aspect;    /* work var. for font aspect ratio when scaling */
  48. } *ofont_type;
  49.  
  50. typedef struct _ocbox {
  51.     int        leftcol;
  52.     int        rightcol;
  53.     int        toprow;
  54.     int        botrow;
  55. } ocbox;            /* box in char coords; width = xmax-xmin + 1 */
  56.  
  57. typedef struct _ocsize {
  58.     int        height;
  59.     int        width;
  60. } ocsize_struct;
  61.  
  62. /* Character position struct */
  63. typedef struct _ocpos {
  64.     int        row;
  65.     int        col;
  66. } ocpos_struct;
  67.  
  68. typedef struct _opbox {
  69.     opcoord    xmin;
  70.     opcoord    xmax;
  71.     opcoord    ymin;
  72.     opcoord    ymax;
  73. } opbox;            /* box in pixel coords; width = xmax-xmin */
  74.  
  75. typedef struct _opsize {
  76.     odim    height;
  77.     odim    width;
  78. } opsize_struct;
  79.  
  80. typedef struct _opoint {
  81.     opcoord    x;
  82.     opcoord    y;
  83. } opoint;            /* point in pixel coords; */
  84. /* -------------------------------------------------------------------------- */
  85.  
  86. /* OPBOX.C */
  87. extern void        opbox_charcoords(opbox *boxp, ofont_type font, ocbox *cboxp);
  88. extern void        opbox_uncover(opbox *winboxp, opbox *boxp);
  89. extern boolean    opbox_empty(opbox *boxp);
  90. extern boolean    opbox_ScrollVtIn(opbox *boxp, int n);
  91. extern boolean    opbox_ScrollHzIn(opbox *boxp, int n);
  92. extern odim        _box_GetWidth(opbox *boxp);
  93. extern odim        _box_GetHeight(opbox *boxp);
  94. extern opbox   *_box_copy(opbox *dboxp, opbox *sboxp);
  95. extern opbox   *_box_trans(opbox *boxp, opcoord xdisp, opcoord ydisp);
  96. extern boolean    _box_equal(opbox *boxp1, opbox *boxp2);
  97.  
  98. /* OCBOX.C */
  99. extern void        ocbox_pixcoords(ocbox *cboxp, ofont_type font, opbox *boxp);
  100. extern int        opcoord_GetYRow(opcoord y, ofont_type font);
  101. extern int        opcoord_GetXCol(opcoord x, ofont_type font);
  102. extern void        opcoord_GridRound(opcoord *xp, opcoord *yp, ofont_type font);
  103. extern boolean    ocbox_ScrollVtIn(ocbox *cboxp, int n);
  104. extern boolean    ocbox_ScrollHzIn(ocbox *cboxp, int n);
  105.  
  106. /* OBOXCLIP.C */
  107. extern unsigned opbox_clipbox(opbox *clipboxp, opbox *boxp);
  108. extern unsigned opbox_clippoint(opbox *clipboxp, opcoord *xp, opcoord *yp);
  109. extern unsigned ocbox_clippos(ocbox *clipcboxp, int *rowp, int *colp);
  110. extern unsigned opwh_clipbox(odim width, odim height, opbox *boxp);
  111. extern unsigned opwh_clippoint(odim width, odim height, opcoord *xp, opcoord *yp);
  112.  
  113. /* OBOXDIST.C */
  114. extern int        ocbox_FindDist(ocbox *box1, ocbox *box2, int dir);
  115.  
  116. /* OPCLIPSO.C */
  117. extern int        opbox_clipstrout(opbox *clipboxp, opcoord *xp, opcoord *yp, int *slenp, ofont_type font);
  118.  
  119. /* OPCLIPST.C */
  120. extern int        opbox_clipstring(opbox *clipboxp, opcoord *xp, opcoord *yp, int *slenp, ofont_type font);
  121.  
  122. /* -------------------------------------------------------------------------- */
  123.  
  124. #define ofont_GetWidth(font)            ((font)->real.width)
  125. #define ofont_GetHeight(font)            ((font)->real.height)
  126.  
  127. #define opbox_GetWidth(boxp)             _box_GetWidth(boxp)
  128. #define opbox_GetHeight(boxp)            _box_GetHeight(boxp)
  129. #define opbox_copy(dboxp, sboxp)        _box_copy(dboxp, sboxp)
  130. #define opbox_trans(boxp, xdisp, ydisp)    _box_trans(boxp, xdisp, ydisp)
  131. #define opbox_equal(boxp1, boxp2)        _box_equal(boxp1, boxp2)
  132. #define opbox_set(boxp, xm, ym, xx, yx)                \
  133.     ((boxp)->xmin = xm, (boxp)->xmax = xx,            \
  134.      (boxp)->ymin = ym, (boxp)->ymax = yx, (boxp))
  135. #define opoint_copy(pd, ps)                ((pd)->x = (ps)->x,(pd)->y = (ps)->y, (pd))
  136.  
  137. #define ocbox_GetWidth(cboxp)            ((int)(_box_GetWidth((opbox *)cboxp) + 1))
  138. #define ocbox_GetHeight(cboxp)            ((int)(_box_GetHeight((opbox *)cboxp) + 1))
  139. #define ocbox_copy(dcboxp, scboxp)                    \
  140.     _box_copy((opbox *)(dcboxp), (opbox *)(scboxp))
  141. #define ocbox_trans(cboxp, rowd, cold)                \
  142.     _box_trans((opbox *)(cboxp), (opcoord)cold, (opcoord)rowd)
  143. #define ocbox_equal(cboxp1, cboxp2)        _box_equal((opbox *)(cboxp1), (opbox *)(cboxp2))
  144. #define ocbox_set(boxp, tr, lc, br, rc)                \
  145.     ((boxp)->leftcol = lc, (boxp)->rightcol = rc,    \
  146.      (boxp)->toprow  = tr, (boxp)->botrow   = br, (boxp))
  147. /* -------------------------------------------------------------------------- */
  148.  
  149.