Update Marker display style: consistent height & color

This commit is contained in:
Robin Gareus 2016-12-19 13:23:06 +01:00
parent 7ad62ffbed
commit b47bfc0121
3 changed files with 36 additions and 26 deletions

View file

@ -80,7 +80,7 @@ ArdourMarker::ArdourMarker (PublicEditor& ed, ArdourCanvas::Container& parent, g
{ {
const double MH = marker_height - 1; const double MH = marker_height - .5;
const double M3 = std::max(1.f, rintf(3.f * UIConfiguration::instance().get_ui_scale())); const double M3 = std::max(1.f, rintf(3.f * UIConfiguration::instance().get_ui_scale()));
const double M6 = std::max(2.f, rintf(6.f * UIConfiguration::instance().get_ui_scale())); const double M6 = std::max(2.f, rintf(6.f * UIConfiguration::instance().get_ui_scale()));
@ -138,12 +138,12 @@ ArdourMarker::ArdourMarker (PublicEditor& ed, ArdourCanvas::Container& parent, g
* | / * | /
* | / * | /
* | / * | /
* 0,marker_height * 0,MH
* *
* *
* PunchOut * PunchOut
* *
* 0,0 ------> marker_height,0 * 0,0 ------> MH,0
* \ | * \ |
* \ | * \ |
* \ | * \ |
@ -151,7 +151,7 @@ ArdourMarker::ArdourMarker (PublicEditor& ed, ArdourCanvas::Container& parent, g
* \ | * \ |
* \ | * \ |
* \ | * \ |
* marker_height,marker_height * MH,MH
* *
*/ */
@ -211,44 +211,44 @@ ArdourMarker::ArdourMarker (PublicEditor& ed, ArdourCanvas::Container& parent, g
case LoopStart: case LoopStart:
points = new ArdourCanvas::Points (); points = new ArdourCanvas::Points ();
points->push_back (ArdourCanvas::Duple (0.0, 0.0)); points->push_back (ArdourCanvas::Duple (0.0, 0.0));
points->push_back (ArdourCanvas::Duple (marker_height, marker_height)); points->push_back (ArdourCanvas::Duple (MH, MH));
points->push_back (ArdourCanvas::Duple (0.0, marker_height)); points->push_back (ArdourCanvas::Duple (0.0, MH));
points->push_back (ArdourCanvas::Duple (0.0, 0.0)); points->push_back (ArdourCanvas::Duple (0.0, 0.0));
_shift = 0; _shift = 0;
_label_offset = marker_height; _label_offset = MH;
break; break;
case LoopEnd: case LoopEnd:
points = new ArdourCanvas::Points (); points = new ArdourCanvas::Points ();
points->push_back (ArdourCanvas::Duple (marker_height, 0.0)); points->push_back (ArdourCanvas::Duple (MH, 0.0));
points->push_back (ArdourCanvas::Duple (marker_height, marker_height)); points->push_back (ArdourCanvas::Duple (MH, MH));
points->push_back (ArdourCanvas::Duple (0.0, marker_height)); points->push_back (ArdourCanvas::Duple (0.0, MH));
points->push_back (ArdourCanvas::Duple (marker_height, 0.0)); points->push_back (ArdourCanvas::Duple (MH, 0.0));
_shift = marker_height; _shift = MH;
_label_offset = 0.0; _label_offset = 0.0;
break; break;
case PunchIn: case PunchIn:
points = new ArdourCanvas::Points (); points = new ArdourCanvas::Points ();
points->push_back (ArdourCanvas::Duple (0.0, 0.0)); points->push_back (ArdourCanvas::Duple (0.0, 0.0));
points->push_back (ArdourCanvas::Duple (marker_height, 0.0)); points->push_back (ArdourCanvas::Duple (MH, 0.0));
points->push_back (ArdourCanvas::Duple (0.0, marker_height)); points->push_back (ArdourCanvas::Duple (0.0, MH));
points->push_back (ArdourCanvas::Duple (0.0, 0.0)); points->push_back (ArdourCanvas::Duple (0.0, 0.0));
_shift = 0; _shift = 0;
_label_offset = marker_height; _label_offset = MH;
break; break;
case PunchOut: case PunchOut:
points = new ArdourCanvas::Points (); points = new ArdourCanvas::Points ();
points->push_back (ArdourCanvas::Duple (0.0, 0.0)); points->push_back (ArdourCanvas::Duple (0.0, 0.0));
points->push_back (ArdourCanvas::Duple (marker_height, 0.0)); points->push_back (ArdourCanvas::Duple (MH, 0.0));
points->push_back (ArdourCanvas::Duple (marker_height, marker_height)); points->push_back (ArdourCanvas::Duple (MH, MH));
points->push_back (ArdourCanvas::Duple (0.0, 0.0)); points->push_back (ArdourCanvas::Duple (0.0, 0.0));
_shift = marker_height; _shift = MH;
_label_offset = 0.0; _label_offset = 0.0;
break; break;
@ -258,7 +258,7 @@ ArdourMarker::ArdourMarker (PublicEditor& ed, ArdourCanvas::Container& parent, g
unit_position = editor.sample_to_pixel (frame); unit_position = editor.sample_to_pixel (frame);
unit_position -= _shift; unit_position -= _shift;
group = new ArdourCanvas::Container (&parent, ArdourCanvas::Duple (unit_position, 0)); group = new ArdourCanvas::Container (&parent, ArdourCanvas::Duple (unit_position, 1));
#ifdef CANVAS_DEBUG #ifdef CANVAS_DEBUG
group->name = string_compose ("Marker::group for %1", annotation); group->name = string_compose ("Marker::group for %1", annotation);
#endif #endif
@ -409,6 +409,7 @@ ArdourMarker::setup_name_display ()
} }
const float padding = std::max(2.f, rintf(2.f * UIConfiguration::instance().get_ui_scale())); const float padding = std::max(2.f, rintf(2.f * UIConfiguration::instance().get_ui_scale()));
const double M3 = std::max(1.f, rintf(3.f * UIConfiguration::instance().get_ui_scale()));
/* Work out how wide the name can be */ /* Work out how wide the name can be */
int name_width = min ((double) pixel_width (_name, name_font) + padding, limit); int name_width = min ((double) pixel_width (_name, name_font) + padding, limit);
@ -433,13 +434,22 @@ ArdourMarker::setup_name_display ()
/* right edge remains at zero (group-relative). Add /* right edge remains at zero (group-relative). Add
* arbitrary 2 pixels of extra padding at the end * arbitrary 2 pixels of extra padding at the end
*/ */
switch (_type) {
case Mark:
case Tempo:
case Meter:
_name_background->set_x0 (M3);
break;
default:
_name_background->set_x0 (0);
break;
}
_name_background->set_x1 (_name_item->position().x + name_width + padding); _name_background->set_x1 (_name_item->position().x + name_width + padding);
} }
} }
_name_background->set_y0 (0); _name_background->set_y0 (0);
/* unfortunate hard coding - this has to * match the marker bars height */ _name_background->set_y1 (marker_height + 1);
_name_background->set_y1 (marker_height + 1.0);
} }
void void
@ -488,7 +498,7 @@ ArdourMarker::set_color_rgba (uint32_t c)
_name_background->set_fill (true); _name_background->set_fill (true);
_name_background->set_fill_color (UINT_RGBA_CHANGE_A (_color, 0x70)); _name_background->set_fill_color (UINT_RGBA_CHANGE_A (_color, 0x70));
_name_background->set_outline_color (_color); _name_background->set_outline (false);
} }
/** Set the number of pixels that are available for a label to the left of the centre of this marker */ /** Set the number of pixels that are available for a label to the left of the centre of this marker */
@ -536,9 +546,9 @@ TempoMarker::~TempoMarker ()
} }
void void
TempoMarker::update_height_mark (const double& ratio) TempoMarker::update_height_mark (const double ratio)
{ {
const double MH = marker_height; const double MH = marker_height - .5;
const double top = MH * (1 - ratio); const double top = MH * (1 - ratio);
const double M3 = std::max(1.f, rintf(3.f * UIConfiguration::instance().get_ui_scale())); const double M3 = std::max(1.f, rintf(3.f * UIConfiguration::instance().get_ui_scale()));
const double M6 = std::max(2.f, rintf(6.f * UIConfiguration::instance().get_ui_scale())); const double M6 = std::max(2.f, rintf(6.f * UIConfiguration::instance().get_ui_scale()));

View file

@ -145,7 +145,7 @@ class TempoMarker : public ArdourMarker
ARDOUR::TempoSection& tempo() const { return _tempo; } ARDOUR::TempoSection& tempo() const { return _tempo; }
void update_height_mark (const double& ratio); void update_height_mark (const double ratio);
private: private:
ARDOUR::TempoSection& _tempo; ARDOUR::TempoSection& _tempo;
}; };

View file

@ -30,7 +30,7 @@
<Color name="color 3" value="0x738299ff"/> <Color name="color 3" value="0x738299ff"/>
<Color name="color 30" value="0xe500cfff"/> <Color name="color 30" value="0xe500cfff"/>
<Color name="color 31" value="0xddddd8ff"/> <Color name="color 31" value="0xddddd8ff"/>
<Color name="color 32" value="0xeddc3d77"/> <Color name="color 32" value="0xeddc3dff"/>
<Color name="color 33" value="0xbbbbbbff"/> <Color name="color 33" value="0xbbbbbbff"/>
<Color name="color 34" value="0x3d3d3dff"/> <Color name="color 34" value="0x3d3d3dff"/>
<Color name="color 35" value="0x4250d0ff"/> <Color name="color 35" value="0x4250d0ff"/>