KineticScroll.h

00001 #ifndef KineticScroll_H_
00002 #define KineticScroll_H_
00003 // -------------------------------------------------------------------------
00005 // -------------------------------------------------------------------------
00006 #include <gtkmm.h>
00007 // -------------------------------------------------------------------------
00029 class KineticScroll
00030 {
00031     public:
00032 
00033         KineticScroll();
00034         ~KineticScroll();
00035 
00036 
00038         void set_target( int pos, double sliding=1.1, double start_kinetic=1.2 );
00039 
00040         void set_orientation( Gtk::Orientation o );
00041 
00042         void set_adjustment( Gtk::Adjustment* adj );
00043         void set_motion_event( Gtk::Widget* w );
00044         
00045         inline Gtk::Adjustment* get_adjustment(){ return vadj; }
00046         
00048         inline void set_min_kinetic( double s ){ min_kinetic = s; }
00049 
00051         inline void set_max_kinetic( double s ){ max_kinetic = s; }
00052 
00054         inline void set_k_sliding( double s ){ k_sliding = s; }
00055 
00057         void set_k_timer( int msec );
00058 
00059         enum KineticEventID
00060         {
00061             keBeginScroll,
00062             keEndScroll,
00063             keScroll
00064         };
00065         friend std::ostream& operator<<( std::ostream& os, KineticEventID i );
00066 
00067         typedef sigc::signal<void,KineticEventID,int> KineticEvent_Signal;
00068 
00069         KineticEvent_Signal signal_kinetic_event();
00070 
00071         inline void set_kinetic_scroll( bool set ){ kinetic_on = set; }
00072         inline void set_scroll( bool set ){ scroll_on = set; }
00073 
00074     protected:
00075 
00076         bool on_motion_event(GdkEvent *event);
00077         bool kinetic_timer();
00078         bool target_kinetic_timer();
00079         void set_current_position( int pos );
00080 
00081         Gtk::Orientation orient;
00082         Gtk::Adjustment* vadj;
00083         Gtk::Widget* widget;
00084         double prev_x;      
00085         double prev_y;
00086         double prev_v;
00087         gint32 prev_t;
00088         double prev_dz;
00089         bool but_pressed;
00090         double kinetic;     
00091         double min_kinetic; 
00092         double max_kinetic; 
00093         double k_sliding;   
00094         sigc::connection k_timer;
00095         int k_timer_step;   
00096         double k_const;     
00098         double max_a; 
00099         double min_dz;
00100         bool kinetic_on;
00101         bool scroll_on;
00102 
00103         KineticEvent_Signal k_event;
00104 
00105         sigc::connection k_target_timer;
00106         double k_target_sliding;
00107         double target_pos;
00108         int target_sign;
00109 
00110     private:
00111 
00112 };
00113 // -------------------------------------------------------------------------
00114 #endif // KineticScroll_H_
00115 // -------------------------------------------------------------------------

Документация по UniWidgets. Последние изменения: Fri Oct 10 09:57:49 2014. Создано системой  doxygen 1.5.9