/*
- Copyright (C) 2003 Paul Davis
+ 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
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id$
*/
#ifndef __gtk_ardour_imageframe_view_h__
public:
//---------------------------------------------------------------------------------------//
// Constructor / Desctructor
-
+
/**
* Constructs a new ImageFrameView upon the canvas
*
* @param height the width of the origianl rgb_data image data
* @param num_channels the number of color channels within rgb_data
*/
- ImageFrameView(ARDOUR::stringcr_t item_id,
+ ImageFrameView(const std::string & item_id,
ArdourCanvas::Group *parent,
ImageFrameTimeAxis *tv,
ImageFrameTimeAxisGroup* group,
double spu,
Gdk::Color& base_color,
- jack_nframes_t start,
- jack_nframes_t duration,
+ framepos_t start,
+ framecnt_t duration,
unsigned char* rgb_data,
uint32_t width,
uint32_t height,
* Reposible for removing and destroying all marker items associated with this item
*/
~ImageFrameView() ;
-
- static sigc::signal<void,ImageFrameView*> GoingAway;
-
+
+ static PBD::Signal1<void,ImageFrameView*> CatchDeletion;
+
//---------------------------------------------------------------------------------------//
// Position and duration Accessors/Mutators
-
+
/**
* Set the position of this item to the specified value
*
* @param src the identity of the object that initiated the change
* @return true if the position change was a success, false otherwise
*/
- virtual bool set_position(jack_nframes_t pos, void* src) ;
-
+ virtual bool set_position(framepos_t pos, void* src, double* delta = 0) ;
+
/**
* Sets the duration of this item
*
* @param src the identity of the object that initiated the change
* @return true if the duration change was succesful, false otherwise
*/
- virtual bool set_duration(jack_nframes_t dur, void* src) ;
-
+ virtual bool set_duration(framepos_t dur, void* src) ;
+
//---------------------------------------------------------------------------------------//
// Parent Component Methods
-
+
/**
* Sets the parent ImageFrameTimeAxisGroup of thie item
* each Item must be part of exactly one group (or 'scene') upon the timeline
* @param group the new parent group
*/
void set_time_axis_group(ImageFrameTimeAxisGroup* group) ;
-
+
/**
* Returns the parent group of this item
*
* @return the parent group of this item
*/
ImageFrameTimeAxisGroup* get_time_axis_group() ;
-
+
//---------------------------------------------------------------------------------------//
// ui methods
-
+
/**
* Set the height of this item
*
* @param h the new height
*/
virtual void set_height(gdouble h) ;
-
-
+
+
//---------------------------------------------------------------------------------------//
// MarkerView methods
* @param src the identity of the object that initiated the change
*/
void add_marker_view_item(MarkerView* item, void* src) ;
-
+
/**
* Removes the named marker view from the list of marker view associated with this item
* The Marker view is not destroyed on removal, so the caller must handle the item themself
* @param src the identity of the object that initiated the change
* @return the removed marker item
*/
- MarkerView* remove_named_marker_view_item(ARDOUR::stringcr_t markId, void* src) ;
-
+ MarkerView* remove_named_marker_view_item(const std::string & markId, void* src) ;
+
/**
* Removes item from the list of marker views assocaited with this item
* This method will do nothing if item if not assiciated with this item
* @param src the identity of the object that initiated the change
*/
void remove_marker_view_item(MarkerView* item, void* src) ;
-
+
/**
* Determines if the named marker is one of those associated with this item
*
* @param markId the id/name of the item to search for
*/
- bool has_marker_view_item(ARDOUR::stringcr_t markId) ;
+ bool has_marker_view_item(const std::string & markId) ;
+
-
//---------------------------------------------------------------------------------//
// Emitted Signals
-
+
/** Emitted when a marker Item is added to this Item */
sigc::signal<void,MarkerView*,void*> MarkerViewAdded ;
-
+
/** Emitted when a Marker Item is added to this Item */
sigc::signal<void,MarkerView*,void*> MarkerViewRemoved ;
/** the list of MarkerViews associated with this item */
typedef std::list<MarkerView*> MarkerViewList ;
MarkerViewList marker_view_list ;
-
-
+
+
/** The parent group that this item is a member of */
ImageFrameTimeAxisGroup* the_parent_group ;
-
+
// ------- Image data -----------
-
+
/** the image data that we display */
//unsigned char* the_rgb_data ;
-
+
/** The width of the image contained within the_rgb_data */
uint32_t image_data_width ;
-
+
/** The height of the image contained within the_rgb_data */
uint32_t image_data_height ;
-
+
/** the number of channels contained in the_rgb_data */
uint32_t image_data_num_channels ;
-
-
+
+
// ------- Our canvas element -----------
-
+
/** the CanvasImageFrame to display the image */
ArdourCanvas::ImageFrame* imageframe ;
-
+
} ; /* class ImageFrameView */
#endif /* __gtk_ardour_imageframe_view_h__ */