]> git.mxchange.org Git - flightgear.git/blobdiff - src/Input/FGMouseInput.hxx
Use the short xml name for properties in JSON
[flightgear.git] / src / Input / FGMouseInput.hxx
index 7e1d5abb277f5d1f49519d1698b6d4c40572e64c..fa684b455e9fe0323c4e6648949bb7204f4e4b3c 100644 (file)
 #ifndef _FGMOUSEINPUT_HXX
 #define _FGMOUSEINPUT_HXX
 
-#ifndef __cplusplus                                                          
-# error This library requires C++
-#endif
-
 #include "FGCommonInput.hxx"
-#include "FGButton.hxx"
 
-#include <map>
-#include <list>
+#include <memory>
+
 #include <simgear/structure/subsystem_mgr.hxx>
-#include <simgear/scene/util/SGPickCallback.hxx>
-#include <Main/renderer.hxx>
-/**
-  * List of currently pressed mouse button events
-  */
-class ActivePickCallbacks : public std::map<int, std::list<SGSharedPtr<SGPickCallback> > > {
-public:
-  void update( double dt );
-  void init( int b, const osgGA::GUIEventAdapter* ea );
-};
 
+// forward decls
+namespace osgGA { class GUIEventAdapter; }
 
 ////////////////////////////////////////////////////////////////////////
 // The Mouse Input Class
 ////////////////////////////////////////////////////////////////////////
-class FGMouseInput : public SGSubsystem,FGCommonInput {
+class FGMouseInput : public SGSubsystem, FGCommonInput {
 public:
   FGMouseInput();
   virtual ~FGMouseInput();
@@ -59,65 +46,14 @@ public:
   virtual void init();
   virtual void update( double dt );
 
-  static const int MAX_MICE = 1;
-  static const int MAX_MOUSE_BUTTONS = 8;
-
+    void doMouseClick (int b, int updown, int x, int y, bool mainWindow, const osgGA::GUIEventAdapter* ea);
+    void doMouseMotion (int x, int y, const osgGA::GUIEventAdapter*);
 private:
-  void doMouseClick (int b, int updown, int x, int y, bool mainWindow, const osgGA::GUIEventAdapter* ea);
-  void doMouseMotion (int x, int y);
-  static FGMouseInput * mouseInput;
-  static void mouseClickHandler(int button, int updown, int x, int y, bool mainWindow, const osgGA::GUIEventAdapter*);
-  static void mouseMotionHandler(int x, int y);
-
-  ActivePickCallbacks activePickCallbacks;
-  /**
-   * Settings for a mouse mode.
-   */
-  struct mouse_mode {
-    mouse_mode ();
-    virtual ~mouse_mode ();
-    int cursor;
-    bool constrained;
-    bool pass_through;
-    FGButton * buttons;
-    binding_list_t x_bindings[KEYMOD_MAX];
-    binding_list_t y_bindings[KEYMOD_MAX];
-  };
-
-
-  /**
-   * Settings for a mouse.
-   */
-  struct mouse {
-    mouse ();
-    virtual ~mouse ();
-    int x;
-    int y;
-    int save_x;
-    int save_y;
-    SGPropertyNode_ptr mode_node;
-    SGPropertyNode_ptr mouse_button_nodes[MAX_MOUSE_BUTTONS];
-    int nModes;
-    int current_mode;
-    double timeout;
-    mouse_mode * modes;
-  };
-
-  // 
-  // Map of all known cursor names
-  // This used to contain all the Glut cursors, but those are
-  // not defined by other toolkits.  It now supports only the cursor
-  // images we actually use, in the interest of portability.  Someday,
-  // it would be cool to write an OpenGL cursor renderer, with the
-  // cursors defined as textures referenced in the property tree.  This
-  // list could then be eliminated. -Andy
-  //
-  const static struct MouseCursorMap {
-    const char * name;
-    int cursor;
-  } mouse_cursor_map[];
-
-  mouse bindings[MAX_MICE];
+  void processMotion(int x, int y, const osgGA::GUIEventAdapter* ea);
+    
+  class FGMouseInputPrivate;
+  std::auto_ptr<FGMouseInputPrivate> d;
+  
 };
 
 #endif