diff --git a/synfig-studio/src/gui/cellrenderer/cellrenderer_timetrack.cpp b/synfig-studio/src/gui/cellrenderer/cellrenderer_timetrack.cpp index a0839e2..b4dc5a1 100644 --- a/synfig-studio/src/gui/cellrenderer/cellrenderer_timetrack.cpp +++ b/synfig-studio/src/gui/cellrenderer/cellrenderer_timetrack.cpp @@ -386,7 +386,7 @@ CellRenderer_TimeTrack::render_vfunc( cell_area.get_height() - 2 ); TimePoint tp_copy = *i; tp_copy.set_time(t); - WaypointRenderer::render_time_point_to_window(cr, area, tp_copy, selected); + WaypointRenderer::render_time_point_to_window(cr, area, tp_copy, selected, false); } } @@ -397,7 +397,7 @@ CellRenderer_TimeTrack::render_vfunc( cell_area.get_y() + 1, cell_area.get_height() - 2, cell_area.get_height() - 2 ); - WaypointRenderer::render_time_point_to_window(cr, area, *i, true); + WaypointRenderer::render_time_point_to_window(cr, area, *i, true, false); } } diff --git a/synfig-studio/src/gui/waypointrenderer.cpp b/synfig-studio/src/gui/waypointrenderer.cpp index e744cca..43b4750 100644 --- a/synfig-studio/src/gui/waypointrenderer.cpp +++ b/synfig-studio/src/gui/waypointrenderer.cpp @@ -83,14 +83,32 @@ color_darken(Gdk::RGBA x, float amount) return x; } +static Gdk::RGBA +color_shift(Gdk::RGBA x, double amount) +{ + x.set_red(x.get_red() + amount); + x.set_green(x.get_green() + amount); + x.set_blue(x.get_blue() + amount); + return x; +} + +static Gdk::RGBA +get_black(bool hover) +{ + if (!hover) + return Gdk::RGBA("#2e3436"); // it's black, trust me + return Gdk::RGBA("#4e5456"); +} + void WaypointRenderer::render_time_point_to_window( const Cairo::RefPtr &cr, const Gdk::Rectangle& area, const TimePoint &tp, - bool selected ) + bool selected, + bool hover) { - const Gdk::RGBA black("#2e3436"); // it's black, trust me + const Gdk::RGBA black = get_black(hover); if(selected) cr->set_line_width(2.0); @@ -104,6 +122,7 @@ WaypointRenderer::render_time_point_to_window( color=get_interp_color(tp.get_before()); color=color_darken(color,1.0f); if(selected)color=color_darken(color,1.3f); + if(hover) color = color_shift(color, 0.2); cr->set_source_rgb(color.get_red(),color.get_green(),color.get_blue()); switch(tp.get_before()) @@ -194,6 +213,7 @@ WaypointRenderer::render_time_point_to_window( color=get_interp_color(tp.get_after()); color=color_darken(color,0.8f); if(selected)color=color_darken(color,1.3f); + if(hover) color = color_shift(color, 0.2); cr->set_source_rgb(color.get_red(),color.get_green(),color.get_blue()); switch(tp.get_after()) diff --git a/synfig-studio/src/gui/waypointrenderer.h b/synfig-studio/src/gui/waypointrenderer.h index 4f32bf2..310d6e0 100644 --- a/synfig-studio/src/gui/waypointrenderer.h +++ b/synfig-studio/src/gui/waypointrenderer.h @@ -46,7 +46,8 @@ public: const Cairo::RefPtr &cr, const Gdk::Rectangle& area, const synfig::TimePoint &tp, - bool selected ); + bool selected, + bool hover); }; // END of class WaypointRenderer }; // END of namespace studio