00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _SO_WIN_DEVICE_
00027 #define _SO_WIN_DEVICE_
00028
00029 #include <Inventor/Win/SoWinBeginStrict.h>
00030 #include <windows.h>
00031 #include <Inventor/Win/SoWinDef.h>
00032
00033 #include <Inventor/SbLinear.h>
00034 #include <Inventor/events/SoEvent.h>
00035
00058 class SoWinDevice {
00059 public:
00065 virtual void enable(SoWidget w, XtEventHandler f,
00066 XtPointer data, Window win = NULL) = 0;
00070 virtual void disable(SoWidget w, XtEventHandler f, XtPointer data) = 0;
00071
00078 virtual const SoEvent * translateEvent(XAnyEvent *msg) = 0;
00079
00089 void setWindowSize(const SbVec2s &s) { winSize = s; }
00093 const SbVec2s & getWindowSize() const { return winSize; }
00094
00095 private:
00103 inline void setEventPosition(SoEvent *event, float x, float y) const;
00104
00105 SoWidget deviceWidget;
00106
00107 private:
00108 SbVec2s winSize;
00109
00110 };
00111
00112
00113 void
00114 SoWinDevice::setEventPosition(SoEvent *event, float x, float y) const
00115 {
00116 event->setPosition(SbVec2f(x, (((float)winSize[1]) - 1.f) - y));
00117 }
00118
00119 #include <Inventor/Win/SoWinEndStrict.h>
00120
00121 #endif
00122
00123