/* Copyright (C) 2003 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_view_h__ #define __gtk_ardour_marker_view_h__ #include #include "time_axis_view_item.h" #include "canvas.h" namespace Gdk { class Color; } class MarkerTimeAxisView ; class ImageFrameView ; /** * MarkerView defines a marker item that may be placed upon a MarkerTimeAxis. * * The aim of the MarkerView is to provide additional timing details for visual based time axis. * The MarkerView item is associated with one other TimeAxisViewItem and has a start and a duration. */ class MarkerView : public TimeAxisViewItem { public: //---------------------------------------------------------------------------------------// // Constructor / Desctructor /** * Constructs a new MarkerView * * @param parent the parent canvas item * @param tv the parent TimeAxisView of this item * @param marked the Item that this item is to be assciated (marking) with * @param spu the current samples per unit * @param base_color * @param mark_type the marker type/name text, eg fade out, pan up etc. * @param mark_id unique name/id of this item * @param start the start time of this item * @param duration the duration of this item */ MarkerView(ArdourCanvas::Group *parent, TimeAxisView *tv, ImageFrameView* marked, double spu, Gdk::Color& base_color, std::string mark_type, std::string mark_id, jack_nframes_t start, jack_nframes_t duration) ; /** * Destructor * Destroys this Marker Item and removes the association between itself and the item it is marking. */ ~MarkerView() ; static sigc::signal GoingAway; //---------------------------------------------------------------------------------------// // Marker Type Methods /** * Sets the marker Type text of this this MarkerItem, eg fade_out, pan up etc. * * @param type_text the marker type text of this item */ void set_mark_type_text(std::string type_text) ; /** * Returns the marker Type of this this MarkerItem, eg fade_out, pan up etc. * * @return the marker type text of this item */ std::string get_mark_type_text() const ; //---------------------------------------------------------------------------------------// // Marked Item Methods /** * Returns the time axis item being marked by this item * * @return the time axis item being marked by this item */ ImageFrameView* get_marked_item() ; /** * Sets the time axis item being marker by this item * * @param item the time axis item to be marked by this item * @return the previously marked item, or 0 if no previous marked item exists */ ImageFrameView* set_marked_item(ImageFrameView* item) ; //---------------------------------------------------------------------------------// // Emitted Signals /** Emitted when the mark type text is changed */ sigc::signal MarkTypeChanged ; /** Emitted when the Marked Item is changed */ sigc::signal MarkedItemChanged ; protected: private: /** the unique name/id of this item */ std::string mark_type_text ; /* a pointer to the time axis item this marker is assoiated(marking up) with */ ImageFrameView* marked_item ; } ; /* class MarkerView */ #endif /* __gtk_ardour_imageframe_view_h__ */