diff options
author | Taybin Rutkin <taybin@taybin.com> | 2005-09-25 18:42:24 +0000 |
---|---|---|
committer | Taybin Rutkin <taybin@taybin.com> | 2005-09-25 18:42:24 +0000 |
commit | 209d967b1bb80a9735d690d8f4f0455ecb9970ca (patch) | |
tree | 9d76ddcd7c1ac9d91bb2b1a33d31b66ce4ded5de /gtk2_ardour/marker.h | |
parent | e4b9aed743fc765219ac775905a221c017c88fba (diff) |
Initial import of gtk2_ardour.
git-svn-id: svn://localhost/trunk/ardour2@24 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/marker.h')
-rw-r--r-- | gtk2_ardour/marker.h | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/gtk2_ardour/marker.h b/gtk2_ardour/marker.h new file mode 100644 index 0000000000..01f1404a82 --- /dev/null +++ b/gtk2_ardour/marker.h @@ -0,0 +1,107 @@ +/* + Copyright (C) 2001 Paul Davis + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + $Id$ +*/ + +#ifndef __gtk_ardour_marker_h__ +#define __gtk_ardour_marker_h__ + +#include <string> +#include <glib.h> +#include <ardour/ardour.h> +#include <gtk-canvas.h> +#include <sigc++/signal_system.h> + +namespace ARDOUR { + class TempoSection; + class MeterSection; +} + +class PublicEditor; + +class Marker : public SigC::Object +{ + public: + enum Type { + Mark, + Tempo, + Meter, + Start, + End, + LoopStart, + LoopEnd, + PunchIn, + PunchOut + }; + + Marker (PublicEditor& editor, GtkCanvasGroup *parent, guint32 rgba, const string& text, Type, + gint (*callback)(GtkCanvasItem *, GdkEvent *, gpointer), jack_nframes_t frame = 0); + virtual ~Marker (); + + void set_position (jack_nframes_t); + void set_name (const string&); + void set_color_rgba (uint32_t rgba); + + void hide (); + void show (); + + Type type () { return _type; } + + protected: + PublicEditor& editor; + + GtkCanvasItem *group; + GtkCanvasItem *mark; + GtkCanvasItem *text; + GtkCanvasPoints *points; + + double unit_position; + jack_nframes_t frame_position; + unsigned char shift; /* should be double, but its always small and integral */ + Type _type; + + void reposition (); +}; + +class TempoMarker : public Marker +{ + public: + TempoMarker (PublicEditor& editor, GtkCanvasGroup *parent, guint32 rgba, const string& text, ARDOUR::TempoSection&, + gint (*callback)(GtkCanvasItem *, GdkEvent *, gpointer)); + ~TempoMarker (); + + ARDOUR::TempoSection& tempo() const { return _tempo; } + + private: + ARDOUR::TempoSection& _tempo; +}; + +class MeterMarker : public Marker +{ + public: + MeterMarker (PublicEditor& editor, GtkCanvasGroup *parent, guint32 rgba, const string& text, ARDOUR::MeterSection&, + gint (*callback)(GtkCanvasItem *, GdkEvent *, gpointer)); + ~MeterMarker (); + + ARDOUR::MeterSection& meter() const { return _meter; } + + private: + ARDOUR::MeterSection& _meter; +}; + +#endif /* __gtk_ardour_marker_h__ */ |