cgv
trigger.h
1 #pragma once
2 
3 #include <cgv/base/base.h>
4 #include <cgv/base/register.h>
5 #include <cgv/signal/signal.h>
6 
7 #include <cgv/gui/lib_begin.h>
8 
9 namespace cgv {
10  namespace gui {
11 
13 class CGV_API trigger
14 {
15 protected:
16  double delay;
17  bool recur;
18 public:
20  trigger();
22  bool is_scheduled() const;
24  bool schedule_one_shot(double delay);
26  bool schedule_recuring(double delay);
28  double get_delay() const;
30  bool is_recuring() const;
32  void stop();
34  static double get_current_time();
36  signal::signal<double,double> shoot;
37 };
38 
40 extern CGV_API trigger& get_animation_trigger();
41 
42 class CGV_API trigger_server : public cgv::base::base, public cgv::base::server
43 {
44 public:
45  virtual bool is_scheduled(const trigger*) = 0;
46  virtual bool schedule_one_shot(trigger*, double delay) = 0;
47  virtual bool schedule_recuring(trigger*, double delay) = 0;
48  virtual bool stop(trigger*) = 0;
49  virtual double get_current_time() const = 0;
50 };
51 
54 
55 #if _MSC_VER >= 1400
56 CGV_TEMPLATE template class CGV_API data::ref_ptr<trigger_server>;
57 #endif
58 
60 extern CGV_API trigger_server_ptr get_trigger_server();
62 extern CGV_API void register_trigger_server(trigger_server_ptr);
63 
64  }
65 }
66 
67 #include <cgv/config/lib_end.h>
cgv::gui::get_trigger_server
trigger_server_ptr get_trigger_server()
returns the currently registered trigger server
Definition: trigger.cxx:100
cgv::data::ref_ptr
Definition: ref_ptr.h:19
cgv::gui::trigger_server_ptr
data::ref_ptr< trigger_server > trigger_server_ptr
ref counted pointer to trigger server
Definition: trigger.h:53
cgv::gui::trigger
a trigger provides callbacks after a programmable time delay
Definition: trigger.h:14
cgv::gui::register_trigger_server
void register_trigger_server(trigger_server_ptr _ts)
registeres a new trigger server, call this in the on_register method of the server implementation
Definition: trigger.cxx:105
cgv::gui::trigger::shoot
signal::signal< double, double > shoot
the shoot signal is called when the trigger is pulled and takes the current time and delay as argumen...
Definition: trigger.h:36
cgv::base::server
interfaces that add provides very basic functionality.
Definition: register.h:201
cgv::gui::get_animation_trigger
trigger & get_animation_trigger()
return the global trigger used for animation, which runs by default with 60 Hz
Definition: trigger.cxx:81
cgv::base::base
Definition: base.h:57
cgv
the cgv namespace
Definition: vr_calib.cxx:9