home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / SOURCE / OWLSCR / BDPLAIN.C < prev    next >
Encoding:
C/C++ Source or Header  |  1990-04-23  |  2.0 KB  |  84 lines

  1. /*
  2.     bdplain.c    1/22/87
  3.  
  4.     % plain border routine.
  5.  
  6.     OWL 1.2
  7.     Copyright (c) 1986, 1987, by Oakland Group, Inc.
  8.     ALL RIGHTS RESERVED.
  9.  
  10.     Revision History:
  11.     -----------------
  12.     11/22/87 jmd     Replaced line characters with octal escape sequences
  13.      8/15/88 jmd     Upgraded to new border stuff
  14.      9/12/88 jmd    Added in and out data
  15.     11/13/88 jmd    Upgraded to new border stuff
  16.     11/20/88 jmd    Added ID to obj struct
  17.     12/20/88 jmd    removed SETSIZE msg
  18.  
  19.      4/21/89 jmd    added object data
  20.      5/28/89 jmd    added Shadow support
  21.  
  22.     11/06/89 jmd    removed DoRaw macros
  23.      2/21/90 ted    Added SetCharSize(TRUE) because border won't work otherwise.
  24.      3/28/90 jmd    ansi-fied
  25. */
  26.  
  27. #include "oakhead.h"
  28. #include "disppriv.h"
  29. #include "bordobj.h"
  30. #include "bordod.h"
  31.  
  32. #define OUTER_BOX     "\332\304\267\272\274\315\324\263"
  33.  
  34. /* border object data */
  35.  
  36. typedef struct _bdplainod {
  37.     border_od    bdd;                          /* border object super class */
  38. } bdplain_od;
  39.  
  40. int bd_plain(VOID *objdata, int msg, VOID *indata, VOID *outdata)
  41. /*
  42.     This is a simple single lined border.
  43. */
  44. {
  45.     bdplain_od *bdpd;
  46.     ocbox        cbox;
  47.     byte         attr;
  48.  
  49.     bdpd = (bdplain_od *)objdata;
  50.  
  51.     switch(msg) {
  52.     case OBJM_GETDATASIZE:
  53.         ((ogds_struct *) outdata)->odsize = sizeof(bdplain_od);
  54.         ((ogds_struct *) outdata)->xdsize = sizeof(border_xd);
  55.         ((ogds_struct *) outdata)->id = ID_BDPLAIN;
  56.         break;
  57.  
  58.     case OBJM_OPEN:
  59.         if (!border_Class(&bdpd->bdd, msg, indata, outdata)) {
  60.             return(FALSE);
  61.         }
  62.         win_SetCharSize(bdpd->bdd.win, TRUE);    /* This bord must be charsize */
  63.         bord_SetSides(bdpd->bdd.win, -1, -1, 1, 1);
  64.         break;
  65.  
  66.     case BDM_SHADOW:
  67.     case BDM_DRAW:
  68.         bord_GetBox(bdpd->bdd.win, &cbox);
  69.         attr = (msg == BDM_DRAW) ? 
  70.             bord_GetAttr(bdpd->bdd.win) : win_GetShadowAttr(bdpd->bdd.win);
  71.  
  72.         ptd_DrawCharBox((ptd_struct *)indata, OUTER_BOX, &cbox, attr);
  73.  
  74.         /* else no break; pass message up to superclass */
  75.  
  76.     default:
  77.         /* pass messages up to border super class */
  78.         return(border_Class(&bdpd->bdd, msg, indata, outdata));
  79.     }
  80.  
  81.     return(TRUE);
  82. }
  83.  
  84.