31 #include "canvas/container.h"
32 #include "canvas/rectangle.h"
33 #include "canvas/debug.h"
34 #include "canvas/text.h"
35 #include "canvas/colors.h"
81 Glib::RefPtr<Pango::Layout> layout = foo.create_pango_layout (
X_(
"Hg"));
85 layout->set_font_description (NAME_FONT);
88 layout = foo.create_pango_layout (
X_(
"H"));
99 NAME_Y_OFFSET = height + 1;
100 NAME_HIGHLIGHT_SIZE = height + 2;
103 NAME_HIGHLIGHT_SIZE = 0;
105 NAME_HIGHLIGHT_THRESH = NAME_HIGHLIGHT_SIZE * 3;
122 const string & it_name, ArdourCanvas::Item& parent,
TimeAxisView& tv,
double spu, uint32_t base_color,
126 , frame_position (-1)
127 , item_name (it_name)
128 , selection_frame (0)
130 , _recregion (recording)
131 , _automation (automation)
135 init (&parent, spu, base_color, start, duration, vis,
true,
true);
142 , trackview (other.trackview)
143 , frame_position (-1)
144 , item_name (other.item_name)
145 , selection_frame (0)
147 , _recregion (other._recregion)
148 , _automation (other._automation)
149 , _dragging (other._dragging)
154 ArdourCanvas::Item* parent = other.
group->parent();
165 bool wide,
bool high)
167 group =
new ArdourCanvas::Container (parent);
190 warning <<
"Time Axis Item Duration == 0" << endl;
195 ArdourCanvas::Rect (0.0, 0.0,
199 frame->set_outline_what (ArdourCanvas::Rectangle::What (ArdourCanvas::Rectangle::LEFT|ArdourCanvas::Rectangle::RIGHT));
222 ArdourCanvas::Rect (start,
309 (*delta) = new_unit_pos -
group->position().x;
314 if (new_unit_pos ==
group->position().x) {
319 group->set_x_position (new_unit_pos);
345 P_(
"new duration %1 frame is out of bounds for %2",
"new duration of %1 frames is out of bounds for %2", dur),
579 frame->set_y1 (height);
734 frame->set_gradient (ArdourCanvas::Fill::StopList (), 0);
738 ArdourCanvas::Fill::StopList stops;
744 ArdourCanvas::color_to_rgba (f, r, g, b, a);
746 stops.push_back (std::make_pair (0.0, f));
750 ArdourCanvas::color_to_hsv (f, h, s, v);
752 v = min (1.0, v * (1.0 -
ARDOUR_UI::config()->get_timeline_item_gradient_depth()));
754 ArdourCanvas::Color darker = ArdourCanvas::hsva_to_color (h, s, v, a);
755 stops.push_back (std::make_pair (1.0, darker));
757 frame->set_gradient (stops,
true);
789 case GDK_LEAVE_NOTIFY:
791 item->set_fill (
false);
793 case GDK_ENTER_NOTIFY:
798 item->set_fill (
true);
840 if (pixel_width < 2.0) {
849 vestigial_frame->set_outline_what (ArdourCanvas::Rectangle::What (ArdourCanvas::Rectangle::LEFT|ArdourCanvas::Rectangle::RIGHT));
874 frame->set_x1 (pixel_width);
904 int visible_name_width;
925 if (visible_name_width < 1) {
928 name_text->clamp_width (visible_name_width);
953 group->set_y_position (y);
959 if (p ==
"color-regions-using-track-color") {
961 }
else if (p ==
"timeline-item-gradient-depth") {
ArdourCanvas::Item * get_canvas_frame()
static Pango::FontDescription NAME_FONT
ArdourCanvas::Item * get_canvas_group()
ArdourCanvas::Color color(const std::string &, bool *failed=0) const
virtual void set_height(double h)
LIBGTKMM2EXT_API void get_pixel_size(Glib::RefPtr< Pango::Layout >, int &width, int &height)
TimeAxisView & get_time_axis_view() const
bool high_enough_for_name
sigc::signal< void, bool, void * > PositionLockChanged
PublicEditor & editor() const
bool get_min_duration_active() const
static double NAME_HIGHLIGHT_THRESH
static gint idle_remove_this_item(TimeAxisViewItem *, void *)
void parameter_changed(std::string)
bool get_position_locked() const
sigc::signal< void, framecnt_t, void * > MinDurationChanged
static void set_constant_heights()
virtual void set_frame_gradient()
virtual uint32_t get_fill_color() const
ArdourCanvas::Rectangle * vestigial_frame
virtual void set_position_locked(bool, void *)
std::string fill_color_name
LIBPBD_API Transmitter warning
virtual std::string get_item_name() const
virtual double sample_to_pixel(framepos_t frame) const =0
ArdourCanvas::Text * name_text
ArdourCanvas::Rectangle * name_highlight
sigc::signal< void, std::string, std::string, void * > NameChanged
bool _automation
true if this is an automation region view
std::ostream & endmsg(std::ostream &ostr)
virtual void set_samples_per_pixel(double)
#define P_(Singular, Plural, HowMany)
LIBARDOUR_API PBD::PropertyDescriptor< framepos_t > start
void set_name_text_color()
static double NAME_Y_OFFSET
uint32_t current_height() const
framecnt_t get_min_duration() const
virtual void drag_start()
framecnt_t min_item_duration
static const double GRAB_HANDLE_WIDTH
ArdourCanvas::Rectangle * selection_frame
uint32_t contrasting_text_color(uint32_t c)
void set_item_name(std::string, void *)
LIBARDOUR_API RCConfiguration * Config
bool get_max_duration_active() const
virtual ~TimeAxisViewItem()
virtual void set_min_duration(framecnt_t, void *)
virtual bool set_duration(framecnt_t, void *)
bool wide_enough_for_name
framecnt_t get_duration() const
virtual void set_frame_color()
void set_min_duration_active(bool, void *)
static const double GRAB_HANDLE_TOP
virtual bool canvas_group_event(GdkEvent *)
ArdourCanvas::Rectangle * frame_handle_start
`frame' (fade) handle for the start of the item, or 0
virtual Editing::MouseMode effective_mouse_mode() const =0
virtual bool set_position(framepos_t, void *, double *delta=0)
framecnt_t get_max_duration() const
PBD::Signal1< void, std::string > ParameterChanged
virtual double height() const
LIBARDOUR_API PBD::PropertyDescriptor< bool > active
void set_trim_handle_colors()
void set_name_text(const std::string &)
void manage_name_highlight()
sigc::signal< void, std::string, void * > ItemRemoved
void init(ArdourCanvas::Item *, double, uint32_t, framepos_t, framepos_t, Visibility, bool, bool)
virtual void reset_width_dependent_items(double)
bool frame_handle_crossing(GdkEvent *, ArdourCanvas::Rectangle *)
virtual void set_max_duration(framecnt_t, void *)
ArdourCanvas::Rectangle * frame
ArdourCanvas::Color color_mod(std::string const &color, std::string const &modifier) const
static UIConfiguration * config()
virtual void set_colors()
sigc::signal< void, framepos_t, void * > PositionChanged
ArdourCanvas::Rectangle * frame_handle_end
`frame' (fade) handle for the end of the item, or 0
void set_max_duration_active(bool, void *)
sigc::signal< void, std::string > ParameterChanged
sigc::signal< void, framecnt_t, void * > DurationChanged
ArdourCanvas::Container * group
static const framepos_t max_framepos
LIBGTKMM2EXT_API int pixel_width(const std::string &str, Pango::FontDescription &font)
#define RGBA_TO_UINT(r, g, b, a)
virtual void set_selected(bool yn)
double get_samples_per_pixel() const
sigc::signal< void, framecnt_t, void * > MaxDurationChanged
framepos_t get_position() const
static const double NAME_X_OFFSET
framepos_t frame_position
virtual void set_selected(bool yn)
TimeAxisViewItem(const std::string &, ArdourCanvas::Item &, TimeAxisView &, double, uint32_t fill_color, framepos_t, framecnt_t, bool recording=false, bool automation=false, Visibility v=Visibility(0))
std::string string_compose(const std::string &fmt, const T1 &o1)
framecnt_t max_item_duration
static double NAME_HIGHLIGHT_SIZE
ArdourCanvas::Item * get_name_highlight()
LIBARDOUR_API PBD::PropertyDescriptor< bool > color