home *** CD-ROM | disk | FTP | other *** search
/ Virtual Reality Zone / VRZONE.ISO / mac / PC / PCGLOVE / GLOVE / OBJGLV.ZIP / INCLUDE / BGIACTOR.HPP next >
C/C++ Source or Header  |  1993-05-10  |  3KB  |  139 lines

  1. //
  2. // BGIActor.hpp:
  3. //    Interface Definition of classes BGIPolygon, BGI_PolySpace,
  4. //    BGI_XYZ, and BGIgraphicsActor. Example use of Object Glove.
  5. //
  6. // Purpose:
  7. //    Outputs graphics and text using Borland BGI toolkit.
  8. //
  9. // Compatibility:
  10. //    DOS only!
  11. //
  12. // Copyright 1993   Mark Thomas Pflaging
  13. //
  14. // Date:    3/22/93 (Release 3.0)
  15. //
  16. #ifndef __BGIACTOR_HPP
  17. #define __BGIACTOR_HPP
  18.  
  19. #include <graphics.h>
  20. #include "glgrph.hpp"
  21.  
  22. class BGIPolygon : public GenPolygon {
  23. public:
  24.     BGIPolygon(int numPoints) : GenPolygon(numPoints) {}
  25.     virtual void draw() {
  26.         fillpoly(lastIdx / IntsPerPoint, & idx(0));
  27.     }
  28. };
  29.  
  30. class BGI_PolySpace : public PolygonSpace {
  31. public:
  32.     void drawAll() {
  33.         PolygonSpace::drawAll();
  34.     }
  35.     GenPolygon & makeNew(int numPoints) {
  36.         GenPolygon & retval = *(new BGIPolygon(numPoints));
  37.         *this += &retval;
  38.         return retval;
  39.     }
  40. };
  41.  
  42. class BGI_XYZ : public XYZ {
  43. public:
  44.     void rectangle(int currentColor) {
  45.         // draw new box
  46.         setcolor( currentColor );
  47.         ::rectangle(left, top, right, bottom);
  48.     }
  49.     void erase(int leaveTrail);
  50. };
  51.  
  52. // C functions from a previous version.
  53. void drawFingers(gloveDriver& gd, int instance);
  54. void eraseFingers(int instance);
  55.  
  56. class BGIGestureActor;
  57.  
  58. class BGIgraphicsActor : public graphicsActor {
  59.     int xx;        // plot position.
  60.     int drawn;    // set if cursor to be erased.
  61.     void displayGlove(GloveData& gd);
  62.     BGI_XYZ oldData;    // MAYBE a little bigger than it needs to be.
  63.     int oldFingers;
  64.     int fillMode;
  65.     int currentColor;
  66.     int upIncrement;
  67.     void Process(gloveDriver& gd);
  68.     Boolean keyDown;
  69.     static Boolean textActive;
  70.     BGIGestureActor & gests;
  71.  
  72. public:
  73.     BGIgraphicsActor(InitFile & ini, BGIGestureActor & garg);
  74.     BGIgraphicsActor(InitFile & ini, BGIGestureActor & garg, ButtonGestSet & buttons);
  75.     ~BGIgraphicsActor() {
  76.         if (getInstantiations() == 1) {
  77.             closegraph();    // Back to text mode
  78.         }
  79.     }
  80.  
  81.     void Init(InitFile & ini);
  82.     static void displayHelp();
  83.     void drawGlove(gloveDriver &gd);
  84.     void infoDisplay(gloveDriver & gd);
  85.     void infoErase(int start);
  86.  
  87.     static void Process(gloveDriver& gd, void * aGraphicsActor) {
  88.         BGIgraphicsActor & here = *((BGIgraphicsActor *)aGraphicsActor);
  89.         here.Process(gd);
  90.     }
  91.     virtual void Setup();
  92.     virtual void infoDisplay() {
  93.         cleardevice();
  94.         displayHelp();
  95.         outtext("Press the GLOVE enter key to continue.");
  96.         textActive = True;
  97.     }
  98.     virtual void infoClear() {
  99.         cleardevice();
  100.         textActive = False;
  101.     }
  102.     virtual void eraseFingers() {
  103.         ::eraseFingers(getInstance());
  104.     }
  105.     virtual void eraseGlove();
  106.     virtual void closeDataBox() {
  107.         infoErase(0);
  108.     }
  109.     virtual void displayDataBox() {}
  110.     virtual void clearScreen() {
  111.         cleardevice();
  112.     }
  113.     virtual void HandleUp() {
  114.         currentColor += upIncrement;
  115.         currentColor %= getmaxcolor() + 1;
  116.     }
  117.     virtual void HandleDown() {
  118.         currentColor -= upIncrement;
  119.         currentColor += getmaxcolor() + 1;
  120.         currentColor %= getmaxcolor() + 1;
  121.     }
  122.     virtual void HandleLeft() {
  123.         currentColor ++;
  124.         currentColor %= getmaxcolor() + 1;
  125.     }
  126.     virtual void HandleRight() {
  127.         currentColor --;
  128.         currentColor += getmaxcolor() + 1;
  129.         currentColor %= getmaxcolor() + 1;
  130.     }
  131.     virtual void displayGestures();
  132.     virtual void clearGestures();
  133.  
  134.     // The next one's from a previous version.
  135.     friend void drawGlovePlot(BGIgraphicsActor & obj, gloveDriver& gd);
  136. };
  137.  
  138. #endif
  139.