home *** CD-ROM | disk | FTP | other *** search
/ Virtual Reality Zone / VRZONE.ISO / mac / PC / PCGLOVE / GLOVE / OBJGLV.ZIP / INCLUDE / WINACTOR.HPP < prev    next >
C/C++ Source or Header  |  1993-05-11  |  4KB  |  144 lines

  1. //
  2. // WinActor.cpp:
  3. //    Interface Definition of classes WinPolygon, Win_PolySpace,
  4. //    TDataDialog, and winGraphicsActor. Example use of Object Glove.
  5. //
  6. // Purpose:
  7. //    Outputs graphics and text in Windows.
  8. //
  9. // Compatibility:
  10. //    Windows only!
  11. //
  12. // Copyright 1993   Mark Thomas Pflaging
  13. //
  14. // Date:    3/22/93 (Release 3.0)
  15. //
  16. #ifndef __WINACTOR_HPP
  17. #define __WINACTOR_HPP
  18.  
  19. #include <owl.h>
  20. #include <static.h>
  21.  
  22. #include "glgrph.hpp"
  23. #include "winres.h"
  24. #include "winglove.hpp"
  25.  
  26. class WinPolygon : public GenPolygon {
  27.     static HDC DC;
  28. public:
  29.     WinPolygon(int numPoints) : GenPolygon(numPoints) {}
  30.     virtual void draw() {
  31.         Polygon(DC, (const POINT *)(&idx(0)), lastIdx / IntsPerPoint);
  32.     }
  33.         static void setDC(HDC where) { DC = where; }
  34. };
  35.  
  36. class Win_PolySpace : public PolygonSpace {
  37. public:
  38.     void WinDrawAll(HDC where) {
  39.         WinPolygon::setDC(where);
  40.         drawAll();
  41.         }
  42.     GenPolygon & makeNew(int numPoints) {
  43.         GenPolygon & retval = *(new WinPolygon(numPoints));
  44.         *this += &retval;
  45.         return retval;
  46.     }
  47. };
  48.  
  49. _CLASSDEF(TDataDialog)
  50. class TDataDialog : public TDialog
  51. {
  52.     TStatic *X_Spot, *Y_Spot, *Z_Spot, *Rotation_Spot, *Keys_Spot,
  53.         *Thumb_Spot, *Index_Spot, *Middle_Spot, *Ring_Spot;
  54.     int old_X, old_Y, old_Z, old_Rotation, old_Keys,
  55.         old_Thumb, old_Index, old_Middle, old_Ring;
  56.  
  57. public:
  58.     TDataDialog(PTWindowsObject AParent, int ResourceID, PTModule AModule = NULL);
  59.     ~TDataDialog() {
  60.         delete X_Spot;
  61.         delete Y_Spot;
  62.         delete Z_Spot;
  63.         delete Rotation_Spot;
  64.         delete Keys_Spot;
  65.         delete Thumb_Spot;
  66.         delete Index_Spot;
  67.         delete Middle_Spot;
  68.         delete Ring_Spot;
  69.         }
  70.     void infoDisplay(gloveDriver & gd);
  71. };
  72.  
  73. class winGraphicsActor : public graphicsActor {
  74.     int xx;        // plot position.
  75.     volatile int drawn;    // set if cursor to be erased.
  76.     void displayGlove(GloveData& gd);
  77.     XYZ oldData;    // MAYBE a little bigger than it needs to be.
  78.     XYZ newRect;
  79.     int oldFingers;
  80.     int currentColor;
  81.     int fillMode;
  82.     int upIncrement;
  83.     Boolean keyDown;
  84.  
  85.     TDemoWindow & where;
  86.     PTDataDialog DataPlace1;
  87.     static PTDialog InfoScreen;
  88.         winGestureActor & gact;
  89.  
  90. public:
  91.     winGraphicsActor(InitFile & ini, TDemoWindow & arg, winGestureActor & garg);
  92.     winGraphicsActor(InitFile & ini, TDemoWindow & arg, ButtonGestSet &buttons, winGestureActor & garg);
  93.     ~winGraphicsActor() {}
  94.  
  95.     void Init(InitFile & ini);
  96.  
  97.     static void displayHelp();
  98.     void Paint(HDC DC);
  99.     void drawGlove(gloveDriver &gd);
  100.     virtual void eraseGlove();
  101.     void infoDisplay(gloveDriver & gd);
  102.     void infoErase(int start);
  103.     void Process(gloveDriver& gd);
  104.     static void Process(gloveDriver& gd, void * aGraphicsActor) {
  105.         winGraphicsActor & here = *((winGraphicsActor *)aGraphicsActor);
  106.         here.Process(gd);
  107.     }
  108.         Boolean isInfoActive() { return infoActive; }
  109.     virtual void infoDisplay() {
  110.         if (!InfoScreen) {
  111.             InfoScreen = new TDialog(&where, ID_INFO_SCREEN, where.GetModule());
  112.             (where.GetModule())->MakeWindow(InfoScreen);
  113.                 }
  114.     }
  115.     virtual void infoClear() {
  116.                 if (InfoScreen) {
  117.             InfoScreen->CloseWindow();
  118.             InfoScreen = NULL;
  119.                 }
  120.     }
  121.     virtual void eraseFingers() {}
  122.     virtual void displayDataBox() {
  123.         DataPlace1 = new TDataDialog(&where, getInstance(), where.GetModule());
  124.         (where.GetModule())->MakeWindow(DataPlace1);
  125.     }
  126.     virtual void closeDataBox() {
  127.         DataPlace1->CloseWindow();
  128.     }
  129.     virtual void clearScreen() {
  130.         InvalidateRect(where.HWindow, NULL, TRUE);
  131.     }
  132.     virtual void displayGestures();
  133.     virtual void clearGestures();
  134.     virtual void HandleUp() { }
  135.     virtual void HandleDown() { }
  136.     virtual void HandleLeft() { }
  137.     virtual void HandleRight() { }
  138.     virtual void Setup() {
  139.         if (infoActive) displayDataBox();
  140.     }
  141. };
  142.  
  143. #endif
  144.