home *** CD-ROM | disk | FTP | other *** search
/ Virtual Reality Zone / VRZONE.ISO / mac / PC / PCGLOVE / GLOVE / OBJGLV.ZIP / SRC / BGIGEST.CPP < prev    next >
C/C++ Source or Header  |  1993-05-12  |  2KB  |  86 lines

  1. //
  2. // BGIGest.cpp:
  3. //    Implementation of class BGIGestureActor.
  4. //    Example use of Object Glove and Court Jesture.
  5. //
  6. // Purpose:
  7. //    Outputs the names of Gestures onto a BGI window.
  8. //
  9. // Compatibility:
  10. //    DOS only!
  11. //
  12. // Copyright 1993   Mark Thomas Pflaging
  13. //
  14. // Date:    3/22/93 (Release 3.0)
  15. //
  16. #include "bgigest.hpp"
  17. #include <graphics.h>
  18.  
  19. size_t InstanceCounter<NamedGestSet>::total = 0;
  20.  
  21. BGIGestureActor::BGIGestureActor(InitFile & ini, char * section)
  22. {
  23.     Init(ini, section);
  24.     drawn = False;
  25.     for (int i = 0; i < NUM_STRINGS; i ++) strings[i] = "";
  26. }
  27.  
  28. void BGIGestureActor::Register(Gesture & found, Boolean onOrOff)
  29. {
  30.     char * temp = new char[80], * temp2;
  31.     char * name = ((NamedGesture &)found).getName();
  32.     strcpy(temp, name);
  33.     strcat(temp, (onOrOff ? "   On" : "  Off"));
  34.     temp2 = strings[0];
  35.     for (int i = 1; (i < NUM_STRINGS); i ++) {
  36.         if (i != 0) strings[i-1] = strings[i];
  37.     }
  38.     if (strlen(temp2)) {
  39.         delete temp2;
  40.     }
  41.     strings[NUM_STRINGS - 1] = temp;
  42.     drawn = False;
  43.     NamedGestSet::Register(found, onOrOff);
  44. }
  45.  
  46. #define XOFF  20
  47. #define YOFF  55
  48. #define NUMSTART 1
  49.  
  50. int BGIGestureActor::set_view()
  51. {
  52.     int unit_wid = textwidth("W");
  53.     static char hightxt[] = "Tq";
  54.     int height = textheight(hightxt), start = NUMSTART;
  55.  
  56.     int yoff = YOFF + (getInstance() * height * (NUM_STRINGS + 2));
  57.     int x = XOFF + unit_wid * start, y = yoff + (height * NUM_STRINGS + 1);
  58.     int width = unit_wid * (25 - start);
  59.     setviewport(x, y, width + x, height * NUM_STRINGS + y, 1);
  60.     return height;
  61. }
  62.  
  63. void BGIGestureActor::draw()
  64. {
  65.     if (drawn) return;    // Prevent unnecessary redraws.
  66.     int height = set_view();
  67.     clearviewport();
  68.     setcolor(EGA_LIGHTGRAY);
  69.     int y = 0;
  70.     for (int i = 0; i < NUM_STRINGS; i ++) {
  71.         moveto(0,y);
  72.         y+=height;
  73.         outtext(strings[i]);
  74.     }
  75.     drawn = True;
  76.     setviewport(0, 0, getmaxx(), getmaxy(), 0);
  77. }
  78.  
  79. void BGIGestureActor::clear()
  80. {
  81.     set_view();
  82.     clearviewport();
  83.     setviewport(0, 0, getmaxx(), getmaxy(), 0);
  84.     drawn = False;
  85. }
  86.