X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Faudio_clock.h;h=5d8e58be6bca0ab749a475e4bc5cb3918095ed14;hb=c2652437da8786e1a1803486fddf131f20af98d3;hp=f76e9db02da286480b3112eda6b16ac5efe04ed1;hpb=dcc21b19a9567dd90fd5182b68f87f0becaed4ce;p=ardour.git diff --git a/gtk2_ardour/audio_clock.h b/gtk2_ardour/audio_clock.h index f76e9db02d..5d8e58be6b 100644 --- a/gtk2_ardour/audio_clock.h +++ b/gtk2_ardour/audio_clock.h @@ -34,7 +34,7 @@ #include "ardour/session_handle.h" #include "gtkmm2ext/cairo_widget.h" -#include "ardour_button.h" +#include "widgets/ardour_button.h" namespace ARDOUR { class Session; @@ -47,7 +47,8 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr Timecode, BBT, MinSec, - Frames + Seconds, + Samples }; AudioClock (const std::string& clock_name, bool is_transient, const std::string& widget_name, @@ -66,24 +67,24 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr void focus (); - void set (framepos_t, bool force = false, ARDOUR::framecnt_t offset = 0); + virtual void set (samplepos_t, bool force = false, ARDOUR::samplecnt_t offset = 0); void set_from_playhead (); void locate (); void set_mode (Mode, bool noemit = false); - void set_bbt_reference (framepos_t); + void set_bbt_reference (samplepos_t); void set_is_duration (bool); void copy_text_to_clipboard () const; std::string name() const { return _name; } - framepos_t current_time (framepos_t position = 0) const; - framepos_t current_duration (framepos_t position = 0) const; + samplepos_t current_time (samplepos_t position = 0) const; + samplepos_t current_duration (samplepos_t position = 0) const; void set_session (ARDOUR::Session *s); void set_negative_allowed (bool yn); - ArdourButton* left_btn () { return &_left_btn; } - ArdourButton* right_btn () { return &_right_btn; } + ArdourWidgets::ArdourButton* left_btn () { return &_left_btn; } + ArdourWidgets::ArdourButton* right_btn () { return &_right_btn; } /** Alter cairo scaling during rendering. * @@ -93,7 +94,7 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr */ void set_scale (double x, double y); - static void print_minsec (framepos_t, char* buf, size_t bufsize, float frame_rate); + static void print_minsec (samplepos_t, char* buf, size_t bufsize, float sample_rate); sigc::signal ValueChanged; sigc::signal mode_changed; @@ -104,7 +105,8 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr protected: void render (Cairo::RefPtr const&, cairo_rectangle_t*); - bool get_is_duration () const { return is_duration; } ; + bool get_is_duration () const { return is_duration; } + ARDOUR::samplecnt_t offset () const { return _offset; } virtual void build_ops_menu (); Gtk::Menu *ops_menu; @@ -112,8 +114,8 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr bool on_button_press_event (GdkEventButton *ev); bool on_button_release_event(GdkEventButton *ev); - ArdourButton _left_btn; - ArdourButton _right_btn; + ArdourWidgets::ArdourButton _left_btn; + ArdourWidgets::ArdourButton _right_btn; private: Mode _mode; @@ -130,6 +132,10 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr bool _negative_allowed; bool edit_is_negative; + samplepos_t _limit_pos; + + ARDOUR::samplecnt_t _offset; + Glib::RefPtr _layout; bool _with_info; @@ -156,7 +162,7 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr Timecode_Hours = 1, Timecode_Minutes, Timecode_Seconds, - Timecode_Frames, + Timecode_frames, MS_Hours, MS_Minutes, MS_Seconds, @@ -164,7 +170,9 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr Bars, Beats, Ticks, - AudioFrames, + SS_Seconds, + SS_Deciseconds, + S_Samples, }; Field index_to_field (int index) const; @@ -182,8 +190,8 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr std::string pre_edit_string; std::string input_string; - framepos_t bbt_reference_time; - framepos_t last_when; + samplepos_t bbt_reference_time; + samplepos_t last_when; bool last_pdelta; bool last_sdelta; @@ -203,24 +211,27 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr bool on_focus_out_event (GdkEventFocus*); void set_slave_info (); - void set_timecode (framepos_t, bool); - void set_bbt (framepos_t, ARDOUR::framecnt_t, bool); - void set_minsec (framepos_t, bool); - void set_frames (framepos_t, bool); + void set_timecode (samplepos_t, bool); + void set_bbt (samplepos_t, ARDOUR::samplecnt_t, bool); + void set_minsec (samplepos_t, bool); + void set_seconds (samplepos_t, bool); + void set_samples (samplepos_t, bool); + void set_out_of_bounds (bool negative); void set_clock_dimensions (Gtk::Requisition&); - framepos_t get_frame_step (Field, framepos_t pos = 0, int dir = 1); + samplepos_t get_sample_step (Field, samplepos_t pos = 0, int dir = 1); bool timecode_validate_edit (const std::string&); - bool bbt_validate_edit (const std::string&); + bool bbt_validate_edit (std::string&); bool minsec_validate_edit (const std::string&); - framepos_t frames_from_timecode_string (const std::string&) const; - framepos_t frames_from_bbt_string (framepos_t, const std::string&) const; - framepos_t frame_duration_from_bbt_string (framepos_t, const std::string&) const; - framepos_t frames_from_minsec_string (const std::string&) const; - framepos_t frames_from_audioframes_string (const std::string&) const; + samplepos_t samples_from_timecode_string (const std::string&) const; + samplepos_t samples_from_bbt_string (samplepos_t, const std::string&) const; + samplepos_t sample_duration_from_bbt_string (samplepos_t, const std::string&) const; + samplepos_t samples_from_minsec_string (const std::string&) const; + samplepos_t samples_from_seconds_string (const std::string&) const; + samplepos_t samples_from_audiosamples_string (const std::string&) const; void session_configuration_changed (std::string); void session_property_changed (const PBD::PropertyChange&); @@ -231,12 +242,13 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr void end_edit (bool); void end_edit_relative (bool); void edit_next_field (); - ARDOUR::framecnt_t parse_as_distance (const std::string&); + ARDOUR::samplecnt_t parse_as_distance (const std::string&); - ARDOUR::framecnt_t parse_as_timecode_distance (const std::string&); - ARDOUR::framecnt_t parse_as_minsec_distance (const std::string&); - ARDOUR::framecnt_t parse_as_bbt_distance (const std::string&); - ARDOUR::framecnt_t parse_as_frames_distance (const std::string&); + ARDOUR::samplecnt_t parse_as_timecode_distance (const std::string&); + ARDOUR::samplecnt_t parse_as_minsec_distance (const std::string&); + ARDOUR::samplecnt_t parse_as_bbt_distance (const std::string&); + ARDOUR::samplecnt_t parse_as_seconds_distance (const std::string&); + ARDOUR::samplecnt_t parse_as_samples_distance (const std::string&); void set_font (Pango::FontDescription); void set_colors ();