Libpointing
An open-source cross-platform library to get raw events from pointing devices and master transfer functions.
 All Classes Functions Variables Typedefs Enumerator Pages
PointingDevice.h
1 /* -*- mode: c++ -*-
2  *
3  * pointing/input/PointingDevice.h --
4  *
5  * Initial software
6  * Authors: Nicolas Roussel
7  * Copyright © Inria
8  *
9  * http://libpointing.org/
10  *
11  * This software may be used and distributed according to the terms of
12  * the GNU General Public License version 2 or any later version.
13  *
14  */
15 
16 #ifndef PointingDevice_h
17 #define PointingDevice_h
18 
19 #include <pointing/utils/URI.h>
20 #include <pointing/utils/TimeStamp.h>
21 #include <pointing/utils/FrequencyEstimator.h>
22 
23 #include <string>
24 #include <iostream>
25 
26 #include <stdint.h>
27 #include <cstring>
28 
29 namespace pointing {
30 
37 
38  protected:
39 
40  PointingDevice(void) ;
41 
42  FrequencyEstimator freqEstim;
43 
47  void registerTimestamp(TimeStamp::inttime timestamp, int dx, int dy);
48 
53  double estimatedUpdateFrequency() const;
54 
55  public:
56 
57  //double estimatedUpdateFrequency() const;
58 
62  enum {BUTTON_1=1,
64  BUTTON_3=4 } ;
65 
74  typedef void (*PointingCallback)(void *context,
75  TimeStamp::inttime timestamp,
76  int dx, int dy,
77  int buttons) ;
78 
87  static PointingDevice *create(const char *device_uri=0) ;
88  static PointingDevice *create(std::string device_uri) ;
90 
95  static void idle(int milliseconds) ;
96 
101  virtual bool isActive(void) const { return true ; }
102 
107  virtual int getVendorID(void) const { return 0 ; }
108 
113  virtual std::string getVendor(void) const { return "???" ; }
114 
119  virtual int getProductID(void) const { return 0 ; }
120 
125  virtual std::string getProduct(void) const { return "???" ; }
126 
132  virtual double getResolution(double *defval=0) const = 0 ;
133 
139  virtual double getUpdateFrequency(double *defval=0) const = 0 ;
140 
148  virtual URI getURI(bool expanded=false, bool crossplatform=false) const = 0 ;
149 
154  int mm2counts(double millimeters) const ;
155  double counts2mm(int counts) const ;
156  int in2counts(double inches) const ;
157  double counts2in(int counts) const ;
159 
165  virtual void setPointingCallback(PointingCallback callback, void *context=0) = 0 ;
166 
170  virtual void setDebugLevel(int /*level*/) {}
171 
175  virtual void debug(std::ostream& /*out*/) const {}
176 
182  virtual void getAbsolutePosition(double *x, double *y) const;
183 
184  virtual ~PointingDevice(void) {}
185 
186  } ;
187 
188 }
189 
190 #endif
virtual void getAbsolutePosition(double *x, double *y) const
getAbsolutePosition Returns absolute position of the device if available otherwise -1...
Definition: PointingDevice.cpp:117
virtual int getVendorID(void) const
Vendor identifier number.
Definition: PointingDevice.h:107
int mm2counts(double millimeters) const
Definition: PointingDevice.h:63
virtual int getProductID(void) const
Product identifier number.
Definition: PointingDevice.h:119
virtual void setDebugLevel(int)
Sets the level of information for debugging purposes (default = 0).
Definition: PointingDevice.h:170
void(* PointingCallback)(void *context, TimeStamp::inttime timestamp, int dx, int dy, int buttons)
Definition: PointingDevice.h:74
The PointingDevice class is used to represent Pointing Devices connected to the computer or pseudo-de...
Definition: PointingDevice.h:36
double estimatedUpdateFrequency() const
estimatedUpdateFrequency Estimates the frequency depending on the input timestamps ...
Definition: PointingDevice.cpp:49
virtual URI getURI(bool expanded=false, bool crossplatform=false) const =0
Constructs the URI according to the parameters of the device.
static PointingDevice * create(const char *device_uri=0)
This static function is used to instantiate a platform-specific object of the class.
Definition: PointingDevice.cpp:57
Definition: PointingDevice.h:62
virtual bool isActive(void) const
Indicates whether the current device is active.
Definition: PointingDevice.h:101
Definition: PointingDevice.h:64
void registerTimestamp(TimeStamp::inttime timestamp, int dx, int dy)
registerTimestamp Registers the current timestamp to calculate frequency of the device ...
Definition: PointingDevice.cpp:42
virtual double getResolution(double *defval=0) const =0
Resolution of the mouse in CPI (counts per inch).
virtual std::string getProduct(void) const
Readable product name.
Definition: PointingDevice.h:125
virtual void setPointingCallback(PointingCallback callback, void *context=0)=0
Sets the callback function which is called when device events occur.
virtual double getUpdateFrequency(double *defval=0) const =0
Update frequency of the mouse in Hz.
virtual std::string getVendor(void) const
Readable vendor name.
Definition: PointingDevice.h:113
virtual void debug(std::ostream &) const
Outputs the debug information to the given output stream.
Definition: PointingDevice.h:175
static void idle(int milliseconds)
The function is used to sleep the current thread.
Definition: PointingDevice.cpp:104