Libpointing
An open-source cross-platform library to get raw events from pointing devices and master transfer functions.
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 
22 #include <string>
23 #include <iostream>
24 
25 #include <stdint.h>
26 #include <cstring>
27 
28 namespace pointing {
29 
36 
37  protected:
38 
39  PointingDevice(void);
40 
41  static const int BUCKETS_SIZE = 5;
42  unsigned long buckets[BUCKETS_SIZE];
43  TimeStamp::inttime lastTime;
44 
49  void registerTimestamp(TimeStamp::inttime timestamp);
50 
55  double estimatedUpdateFrequency() const;
56 
57  public:
58 
59  //double estimatedUpdateFrequency() const;
60 
64  enum {BUTTON_1=1,
66  BUTTON_3=4 } ;
67 
76  typedef void (*PointingCallback)(void *context,
77  TimeStamp::inttime timestamp,
78  int dx, int dy,
79  int buttons) ;
80 
89  static PointingDevice *create(const char *device_uri=0) ;
90  static PointingDevice *create(std::string device_uri) ;
92 
97  static void idle(int milliseconds) ;
98 
103  virtual bool isActive(void) const { return true ; }
104 
109  virtual int getVendorID(void) const { return 0 ; }
110 
115  virtual std::string getVendor(void) const { return "???" ; }
116 
121  virtual int getProductID(void) const { return 0 ; }
122 
127  virtual std::string getProduct(void) const { return "???" ; }
128 
134  virtual double getResolution(double *defval=0) const = 0 ;
135 
141  virtual double getUpdateFrequency(double *defval=0) const = 0 ;
142 
150  virtual URI getURI(bool expanded=false, bool crossplatform=false) const = 0 ;
151 
156  int mm2counts(double millimeters) const ;
157  double counts2mm(int counts) const ;
158  int in2counts(double inches) const ;
159  double counts2in(int counts) const ;
161 
167  virtual void setPointingCallback(PointingCallback callback, void *context=0) = 0 ;
168 
172  virtual void setDebugLevel(int /*level*/) {}
173 
177  virtual void debug(std::ostream& /*out*/) const {}
178 
179  virtual ~PointingDevice(void) {}
180 
181  } ;
182 
183 }
184 
185 #endif
virtual URI getURI(bool expanded=false, bool crossplatform=false) const =0
Constructs the URI according to the parameters of the device.
Definition: PointingDevice.h:64
virtual double getResolution(double *defval=0) const =0
Resolution of the mouse in CPI (counts per inch).
double counts2in(int counts) const
double estimatedUpdateFrequency() const
estimatedUpdateFrequency Estimates the frequency depending on the input timestamps ...
Definition: PointingDevice.cpp:73
Definition: PointingDevice.h:65
virtual void setPointingCallback(PointingCallback callback, void *context=0)=0
Sets the callback function which is called when device events occur.
virtual void debug(std::ostream &) const
Outputs the debug information to the given output stream.
Definition: PointingDevice.h:177
double counts2mm(int counts) const
Definition: PointingDevice.h:66
int mm2counts(double millimeters) const
Definition: DummyPointingDevice.cpp:23
virtual bool isActive(void) const
Indicates whether the current device is active.
Definition: PointingDevice.h:103
The PointingDevice class is used to represent Pointing Devices connected to the computer or pseudo-de...
Definition: PointingDevice.h:35
virtual double getUpdateFrequency(double *defval=0) const =0
Update frequency of the mouse in Hz.
virtual int getVendorID(void) const
Vendor identifier number.
Definition: PointingDevice.h:109
void registerTimestamp(TimeStamp::inttime timestamp)
registerTimestamp Registers the current timestamp to calculate frequency of the device ...
Definition: PointingDevice.cpp:58
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:100
static void idle(int milliseconds)
The function is used to sleep the current thread.
Definition: PointingDevice.cpp:143
virtual void setDebugLevel(int)
Sets the level of information for debugging purposes (default = 0).
Definition: PointingDevice.h:172
int in2counts(double inches) const
virtual int getProductID(void) const
Product identifier number.
Definition: PointingDevice.h:121
void(* PointingCallback)(void *context, TimeStamp::inttime timestamp, int dx, int dy, int buttons)
Definition: PointingDevice.h:76
virtual std::string getVendor(void) const
Readable vendor name.
Definition: PointingDevice.h:115
virtual std::string getProduct(void) const
Readable product name.
Definition: PointingDevice.h:127