33 #include "canvas/rectangle.h"
34 #include "canvas/debug.h"
59 , _canvas_group (canvas_group ? canvas_group : new
ArdourCanvas::Container (_trackview.canvas_display()))
60 , _samples_per_pixel (_trackview.editor().get_current_zoom ())
63 , stream_base_color(0xFFFFFFFF)
67 , last_rec_data_frame(0)
119 if (h < 10.0 || h > 1000.0) {
137 RegionViewList::iterator i;
146 (*i)->set_samples_per_pixel (fpp);
149 for (vector<RecBoxInfo>::iterator xi =
rec_rects.begin(); xi !=
rec_rects.end(); ++xi) {
191 if (((*i)->region()) == r) {
206 RegionViewList::iterator next = i;
230 list<RegionView*>::iterator i, tmp;
235 if (!(*i)->is_valid()) {
241 (*i)->enable_display(
true);
244 if (copy.size() == 0) {
245 copy.push_front((*i));
250 RegionViewList::iterator k = copy.begin();
251 RegionViewList::iterator l = copy.end();
254 if ((*i)->region()->layer() <= (*k)->region()->layer()) {
255 copy.push_front((*i));
258 }
else if ((*i)->region()->layer() >= (*l)->region()->layer()) {
259 copy.push_back((*i));
264 for (RegionViewList::iterator j = copy.begin(); j != copy.end(); ++j) {
265 if ((*j)->region()->layer() >= (*i)->region()->layer()) {
266 copy.insert(j, (*i));
275 for (RegionViewList::iterator i = copy.begin(); i != copy.end(); ++i) {
276 (*i)->get_canvas_group()->raise_to_top ();
290 if (tr->playlist()) {
291 _layers = tr->playlist()->top_layer() + 1;
322 _layers = tr->playlist()->top_layer() + 1;
356 list<RegionView *>::iterator i;
412 const double xend = xstart + width;
415 ArdourCanvas::Rectangle* rec_rect =
new ArdourCanvas::Rectangle(
_canvas_group);
416 rec_rect->set_x0(xstart);
418 rec_rect->set_x1(xend);
420 rec_rect->set_outline_what(ArdourCanvas::Rectangle::What(0));
422 rec_rect->set_fill_color(fill_color);
423 rec_rect->lower_to_bottom();
485 if ((*i)->region() == region) {
498 if ((*i)->get_selected()) {
517 if ((*i)->get_selected()) {
532 for (RegionSelection::iterator ii = regions.begin(); ii != regions.end(); ++ii) {
539 (*i)->set_selected (selected);
572 max_layer = _layers - 1;
581 bool layer_ok =
true;
584 layer_t const l = (*i)->region()->layer ();
585 layer_ok = (min_layer <= l && l <=
max_layer);
590 results.push_back (*i);
594 results.push_back (*i);
606 results.push_back (*i);
639 (*i)->set_y (
height - ((*i)->region()->layer() + 1) * h);
642 (*i)->set_y (
height - ((*i)->region()->layer() + 1) * 2 * h);
646 (*i)->set_height (h);
652 i->rectangle->set_y1 (
height);
657 i->rectangle->set_y0 (0);
658 i->rectangle->set_y1 (h);
RegionView * find_view(boost::shared_ptr< const ARDOUR::Region >)
virtual void color_handler()=0
ArdourCanvas::Item * get_canvas_group()
LIBPBD_API Transmitter fatal
int set_position(gdouble x, gdouble y)
void diskstream_changed()
virtual void update_contents_height()
void rec_enable_changed()
PBD::Signal0< void > TransportStateChange
PublicEditor & editor() const
void setup_new_rec_layer_time(boost::shared_ptr< ARDOUR::Region >)
framepos_t record_location() const
PBD::Signal0< void > DiskstreamChanged
uint32_t num_selected_regionviews() const
virtual bool canvas_stream_view_event(GdkEvent *event, ArdourCanvas::Item *, RouteTimeAxisView *)=0
void set_layer_display(LayerDisplay)
double _samples_per_pixel
virtual void redisplay_track()=0
PBD::ScopedConnectionList playlist_connections
ArdourCanvas::Container * _canvas_group
virtual RegionView * add_region_view_internal(boost::shared_ptr< ARDOUR::Region >, bool wait_for_waves, bool recording=false)=0
virtual int set_height(double)
void sess_rec_enable_changed()
virtual void undisplay_track()
Lists of selected things.
void display_track(boost::shared_ptr< ARDOUR::Track >)
PBD::Signal0< void > TransportLooped
framepos_t current_capture_end() const
void get_selectables(ARDOUR::framepos_t, ARDOUR::framepos_t, double, double, std::list< Selectable * > &, bool within=false)
virtual double sample_to_pixel(framepos_t frame) const =0
std::ostream & endmsg(std::ostream &ostr)
virtual void remove_region_view(boost::weak_ptr< ARDOUR::Region >)
LIBARDOUR_API PBD::PropertyDescriptor< framepos_t > start
uint32_t current_height() const
double y_position() const
#define ENSURE_GUI_THREAD(obj, method,...)
std::vector< RecBoxInfo > rec_rects
void set_selected_regionviews(RegionSelection &)
virtual void playlist_layered(boost::weak_ptr< ARDOUR::Track >)
std::list< RegionView * > RegionViewList
framepos_t _new_rec_layer_time
PBD::ScopedConnection playlist_switched_connection
void foreach_selected_regionview(sigc::slot< void, RegionView * > slot)
bool contains(RegionView *) const
void foreach_regionview(sigc::slot< void, RegionView * > slot)
uint32_t gdk_color_to_rgba(Gdk::Color const &)
void set_layer(layer_t l)
boost::shared_ptr< ARDOUR::Region > region() const
StreamView(RouteTimeAxisView &, ArdourCanvas::Container *canvas_group=0)
virtual void update_rec_box()
void check_record_layers(boost::shared_ptr< ARDOUR::Region >, ARDOUR::framepos_t)
virtual void setup_rec_box()=0
framepos_t transport_frame() const
ARDOUR::Session * session() const
ArdourCanvas::Rectangle * rectangle
boost::shared_ptr< ARDOUR::Track > track() const
sigc::signal< void > ContentsHeightChanged
boost::shared_ptr< Playlist > playlist()
uint32_t stream_base_color
Background color.
RouteTimeAxisView & _trackview
virtual int set_samples_per_pixel(double)
void create_rec_box(framepos_t frame_pos, double width)
LIBARDOUR_API PBD::PropertyDescriptor< bool > regions
PBD::Signal0< void > RecordStateChanged
RegionViewList region_views
PBD::Signal0< void > PlaylistChanged
void call_slot(EventLoop::InvalidationRecord *, const boost::function< void()> &)
sigc::connection screen_update_connection
void get_inverted_selectables(Selection &, std::list< Selectable * > &results)
ArdourCanvas::Rectangle * canvas_rect
virtual bool internal_editing() const =0
void update_coverage_frames()
void playlist_switched(boost::weak_ptr< ARDOUR::Track >)
double child_height() const
ArdourCanvas::Color color_mod(std::string const &color, std::string const &modifier) const
static UIConfiguration * config()
void add_region_view(boost::weak_ptr< ARDOUR::Region >)
sigc::signal< void > ColorsChanged
framepos_t find_next_top_layer_position(framepos_t) const
PBD::Signal0< void > RecordEnableChanged
static const framepos_t max_framepos
void apply_color(uint32_t, ColorTarget t)
LayerDisplay _layer_display
sigc::connection rapid_connect(const sigc::slot< void > &slot)
uint32_t region_color
Contained region color.
void region_layered(RegionView *)
ARDOUR::framecnt_t length
framepos_t current_capture_start() const
std::string string_compose(const std::string &fmt, const T1 &o1)
static const layer_t max_layer
sigc::signal< void > RegionViewRemoved
LIBARDOUR_API PBD::PropertyDescriptor< bool > color