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

  1. /*
  2.     bd1.c    5/29/87
  3.  
  4.     % single lined 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.      7/27/88 jmd     Upgraded to new border stuff
  14.      9/12/88 jmd    Added in and out data to objects
  15.     11/07/88 ted    Upgraded to new 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\277\263\331\304\300\263"
  33.  
  34. /*** bd1 object data struct (contains border super class data) ***/
  35.  
  36. typedef struct _bd1od {
  37.     border_od    bdd;                          /* border object super class */
  38. } bd1_od;
  39.  
  40. int bd_1(VOID *objdata, int msg, VOID *indata, VOID *outdata)
  41. /*
  42.     This is a simple single lined border.
  43. */
  44. {
  45.     bd1_od         *bd1d;
  46.     ocbox         cbox;
  47.     byte         attr;
  48.  
  49.     bd1d = (bd1_od *)objdata;
  50.  
  51.     switch(msg) {
  52.     case OBJM_GETDATASIZE:
  53.         /* tell obj_Open how big we are */
  54.         ((ogds_struct *) outdata)->odsize = sizeof(bd1_od);
  55.         ((ogds_struct *) outdata)->xdsize = sizeof(border_xd);
  56.         ((ogds_struct *) outdata)->id = ID_BD1;
  57.         break;
  58.  
  59.     case OBJM_OPEN:
  60.         /* initialize our object data */
  61.         if (!border_Class(&bd1d->bdd, msg, indata, outdata)) {
  62.             return(FALSE);
  63.         }
  64.         win_SetCharSize(bd1d->bdd.win, TRUE);    /* This bord must be charsize */
  65.         bord_SetSides(bd1d->bdd.win, -1, -1, 1, 1);
  66.         break;
  67.  
  68.     case BDM_SHADOW:
  69.     case BDM_DRAW:
  70.         /* paint ourself */
  71.         bord_GetBox(bd1d->bdd.win, &cbox);
  72.         attr = (msg == BDM_DRAW) ? 
  73.             bord_GetAttr(bd1d->bdd.win) : win_GetShadowAttr(bd1d->bdd.win);
  74.  
  75.         ptd_DrawCharBox((ptd_struct *)indata, OUTER_BOX, &cbox, attr);
  76.  
  77.         /* else no break; pass message up to superclass */
  78.  
  79.     default:
  80.         /* pass messages up to border super class (inheritance) */
  81.         return(border_Class(&bd1d->bdd, msg, indata, outdata));
  82.     }
  83.     return(TRUE);
  84. }
  85.  
  86.