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
00059 class SoWinDevice {
00060 public:
00066 virtual void enable(SoWidget w, XtEventHandler f,
00067 XtPointer data, Window win = NULL) = 0;
00071 virtual void disable(SoWidget w, XtEventHandler f, XtPointer data) = 0;
00072
00079 virtual const SoEvent * translateEvent(MSG *msg) = 0;
00080
00090 void setWindowSize(const SbVec2s &s) { winSize = s; }
00094 const SbVec2s & getWindowSize() const { return winSize; }
00095
00096 private:
00104 inline void setEventPosition(SoEvent *event, float x, float y) const;
00105
00106 SoWidget deviceWidget;
00107
00108 private:
00109 SbVec2s winSize;
00110
00111 };
00112
00113
00114 void
00115 SoWinDevice::setEventPosition(SoEvent *event, float x, float y) const
00116 {
00117 event->setPosition(SbVec2f(x, (((float)winSize[1]) - 1.f) - y));
00118 }
00119
00120 #include <Inventor/Win/SoWinEndStrict.h>
00121
00122 #endif
00123
00124