From 1cd07cf7570299462f649a330140df18143905e9 Mon Sep 17 00:00:00 2001 From: Rodolfo Ribeiro Gomes Date: Dec 13 2019 04:29:26 +0000 Subject: move waypoint renderer code to proper file --- diff --git a/synfig-studio/src/gui/CMakeLists.txt b/synfig-studio/src/gui/CMakeLists.txt index e011e90..955a2f4 100644 --- a/synfig-studio/src/gui/CMakeLists.txt +++ b/synfig-studio/src/gui/CMakeLists.txt @@ -50,6 +50,7 @@ target_sources(synfigstudio "${CMAKE_CURRENT_LIST_DIR}/splash.cpp" "${CMAKE_CURRENT_LIST_DIR}/statemanager.cpp" "${CMAKE_CURRENT_LIST_DIR}/valuelink.cpp" + "${CMAKE_CURRENT_LIST_DIR}/waypointrenderer.cpp" "${CMAKE_CURRENT_LIST_DIR}/workarea.cpp" "${CMAKE_CURRENT_LIST_DIR}/workspacehandler.cpp" "${CMAKE_CURRENT_LIST_DIR}/main_win32.cpp" diff --git a/synfig-studio/src/gui/Makefile.am b/synfig-studio/src/gui/Makefile.am index d85ded7..ff243ab 100644 --- a/synfig-studio/src/gui/Makefile.am +++ b/synfig-studio/src/gui/Makefile.am @@ -60,6 +60,7 @@ OTHER_HH = \ statemanager.h \ timeplotdata.h \ valuelink.h \ + waypointrenderer.h \ workarea.h \ workspacehandler.h \ main_win32.h \ @@ -89,6 +90,7 @@ OTHER_CC = \ statemanager.cpp \ timeplotdata.cpp \ valuelink.cpp \ + waypointrenderer.cpp \ workarea.cpp \ workspacehandler.cpp \ main_win32.cpp \ diff --git a/synfig-studio/src/gui/cellrenderer/cellrenderer_timetrack.cpp b/synfig-studio/src/gui/cellrenderer/cellrenderer_timetrack.cpp index 39deb7c..a0839e2 100644 --- a/synfig-studio/src/gui/cellrenderer/cellrenderer_timetrack.cpp +++ b/synfig-studio/src/gui/cellrenderer/cellrenderer_timetrack.cpp @@ -47,6 +47,8 @@ #include +#include "gui/waypointrenderer.h" + #endif using namespace synfig; @@ -69,233 +71,6 @@ namespace { /* === P R O C E D U R E S ================================================= */ -static Gdk::RGBA -get_interp_color(Interpolation x) -{ - switch(x) { - case INTERPOLATION_TCB: - return Gdk::RGBA("#73d216"); - case INTERPOLATION_LINEAR: - return Gdk::RGBA("#edd400"); - case INTERPOLATION_CONSTANT: - return Gdk::RGBA("#cc0000"); - case INTERPOLATION_HALT: - return Gdk::RGBA("#3465a4"); - case INTERPOLATION_MANUAL: - return Gdk::RGBA("#75507b"); - case INTERPOLATION_CLAMPED: - return Gdk::RGBA("#c17d11"); - case INTERPOLATION_UNDEFINED: - default: - break; - } - return Gdk::RGBA("#555753"); -} - -static Gdk::RGBA -color_darken(Gdk::RGBA x, float 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 void -render_time_point_to_window( - const Cairo::RefPtr &cr, - const Gdk::Rectangle& area, - const TimePoint &tp, - bool selected ) -{ - const Gdk::RGBA black("#2e3436"); // it's black, trust me - - if(selected) - cr->set_line_width(2.0); - else - cr->set_line_width(1.0); - - Gdk::RGBA color; - -/*- BEFORE ------------------------------------- */ - - color=get_interp_color(tp.get_before()); - color=color_darken(color,1.0f); - if(selected)color=color_darken(color,1.3f); - cr->set_source_rgb(color.get_red(),color.get_green(),color.get_blue()); - - switch(tp.get_before()) - { - case INTERPOLATION_TCB: - cr->save(); - cr->translate(area.get_x(), area.get_y()); - cr->scale(area.get_width(), area.get_height()); - cr->arc(0.5, 0.5, 0.5, 90*M_PI/180.0, 270*M_PI/180.0); - cr->fill_preserve(); - cr->restore(); - cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); - cr->stroke(); - break; - - case INTERPOLATION_HALT: - cr->save(); - cr->translate(area.get_x(), area.get_y()); - cr->scale(area.get_width(), area.get_height()*2); - cr->move_to(0.5, 0.5); - cr->arc(0.5, 0.5, 0.5, 180*M_PI/180.0, 270*M_PI/180.0); - cr->fill(); - cr->arc(0.5, 0.5, 0.5, 180*M_PI/180.0, 270*M_PI/180.0); - cr->restore(); - cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); - cr->stroke(); - - cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); - cr->move_to(area.get_x(),area.get_y()+area.get_height()); - cr->line_to(area.get_x()+area.get_width()/2,area.get_y()+area.get_height()); - cr->stroke(); - break; - - case INTERPOLATION_LINEAR: - cr->save(); - cr->move_to(area.get_x()+area.get_width()/2,area.get_y()); - cr->line_to(area.get_x(),area.get_y()+area.get_height()); - cr->line_to(area.get_x()+area.get_width()/2,area.get_y()+area.get_height()); - cr->fill_preserve(); - cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); - cr->stroke(); - cr->restore(); - break; - - case INTERPOLATION_CONSTANT: - cr->save(); - cr->move_to(area.get_x()+area.get_width()/2,area.get_y()); - cr->line_to(area.get_x()+area.get_width()/4,area.get_y()); - cr->line_to(area.get_x()+area.get_width()/4,area.get_y()+area.get_height()/2); - cr->line_to(area.get_x(),area.get_y()+area.get_height()/2); - cr->line_to(area.get_x(),area.get_y()+area.get_height()); - cr->line_to(area.get_x()+area.get_width()/2,area.get_y()+area.get_height()); - cr->fill_preserve(); - cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); - cr->stroke(); - cr->restore(); - break; - - case INTERPOLATION_CLAMPED: - cr->save(); - cr->line_to(area.get_x()+area.get_width()/2,area.get_y()); - cr->line_to(area.get_x(),area.get_y()+area.get_height()/2); - cr->line_to(area.get_x()+area.get_width()/2,area.get_y()+area.get_height()); - cr->fill_preserve(); - cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); - cr->stroke(); - cr->restore(); - break; - - default: - cr->save(); - cr->line_to(area.get_x()+area.get_width()/2,area.get_y()); - cr->line_to(area.get_x()+area.get_width()/3,area.get_y()); - cr->line_to(area.get_x(),area.get_y()+area.get_height()/3); - cr->line_to(area.get_x(),area.get_y()+area.get_height()-area.get_height()/3); - cr->line_to(area.get_x()+area.get_width()/3,area.get_y()+area.get_height()); - cr->line_to(area.get_x()+area.get_width()/2,area.get_y()+area.get_height()); - cr->fill_preserve(); - cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); - cr->stroke(); - cr->restore(); - break; - } - -/*- AFTER -------------------------------------- */ - - color=get_interp_color(tp.get_after()); - color=color_darken(color,0.8f); - if(selected)color=color_darken(color,1.3f); - cr->set_source_rgb(color.get_red(),color.get_green(),color.get_blue()); - - switch(tp.get_after()) - { - case INTERPOLATION_TCB: - cr->save(); - cr->translate(area.get_x(), area.get_y()); - cr->scale(area.get_width(), area.get_height()); - cr->arc(0.5, 0.5, 0.5, -90*M_PI/180.0, 90*M_PI/180.0); - cr->fill_preserve(); - cr->restore(); - cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); - cr->stroke(); - break; - - case INTERPOLATION_HALT: - cr->save(); - cr->translate(area.get_x(), area.get_y()); - cr->scale(area.get_width(), area.get_height()*2); - cr->move_to(0.5, 0.0); - cr->arc(0.5, 0.0, 0.5, 0*M_PI/180.0, 90*M_PI/180.0); - cr->fill(); - cr->arc(0.5, 0.0, 0.5, 0*M_PI / 180.0, 90*M_PI / 180.0); - cr->restore(); - cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); - cr->stroke(); - - cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); - cr->move_to(area.get_x()+area.get_width()/2,area.get_y()); - cr->line_to(area.get_x()+area.get_width(),area.get_y()); - cr->stroke(); - break; - - case INTERPOLATION_LINEAR: - cr->save(); - cr->move_to(area.get_x()+area.get_width()/2,area.get_y()); - cr->line_to(area.get_x()+area.get_width(),area.get_y()); - cr->line_to(area.get_x()+area.get_width()/2,area.get_y()+area.get_height()); - cr->fill_preserve(); - cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); - cr->stroke(); - cr->restore(); - break; - - case INTERPOLATION_CONSTANT: - cr->save(); - cr->move_to(area.get_x()+area.get_width()/2,area.get_y()); - cr->line_to(area.get_x()+area.get_width(),area.get_y()); - cr->line_to(area.get_x()+area.get_width(),area.get_y()+area.get_height()/2); - cr->line_to(area.get_x()+area.get_width()-area.get_width()/4,area.get_y()+area.get_height()/2); - cr->line_to(area.get_x()+area.get_width()-area.get_width()/4,area.get_y()+area.get_height()); - cr->line_to(area.get_x()+area.get_width()/2,area.get_y()+area.get_height()); - cr->fill_preserve(); - cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); - cr->stroke(); - cr->restore(); - break; - - case INTERPOLATION_CLAMPED: - cr->save(); - cr->line_to(area.get_x()+area.get_width()/2,area.get_y()); - cr->line_to(area.get_x()+area.get_width(),area.get_y()+area.get_height()/2); - cr->line_to(area.get_x()+area.get_width()/2,area.get_y()+area.get_height()); - cr->fill_preserve(); - cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); - cr->stroke(); - cr->restore(); - break; - - default: - cr->save(); - cr->line_to(area.get_x()+area.get_width()/2,area.get_y()); - cr->line_to(area.get_x()+area.get_width()-area.get_width()/3,area.get_y()); - cr->line_to(area.get_x()+area.get_width(),area.get_y()+area.get_height()/3); - cr->line_to(area.get_x()+area.get_width(),area.get_y()+area.get_height()-area.get_height()/3); - cr->line_to(area.get_x()+area.get_width()-area.get_width()/3,area.get_y()+area.get_height()); - cr->line_to(area.get_x()+area.get_width()/2,area.get_y()+area.get_height()); - cr->fill_preserve(); - cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); - cr->stroke(); - cr->restore(); - break; - } -} - static void draw_activepoint_off( const Cairo::RefPtr &cr, @@ -611,7 +386,7 @@ CellRenderer_TimeTrack::render_vfunc( cell_area.get_height() - 2 ); TimePoint tp_copy = *i; tp_copy.set_time(t); - render_time_point_to_window(cr, area, tp_copy, selected); + WaypointRenderer::render_time_point_to_window(cr, area, tp_copy, selected); } } @@ -622,7 +397,7 @@ CellRenderer_TimeTrack::render_vfunc( cell_area.get_y() + 1, cell_area.get_height() - 2, cell_area.get_height() - 2 ); - render_time_point_to_window(cr, area, *i, true); + WaypointRenderer::render_time_point_to_window(cr, area, *i, true); } } diff --git a/synfig-studio/src/gui/waypointrenderer.cpp b/synfig-studio/src/gui/waypointrenderer.cpp new file mode 100644 index 0000000..e744cca --- /dev/null +++ b/synfig-studio/src/gui/waypointrenderer.cpp @@ -0,0 +1,283 @@ +/* === S Y N F I G ========================================================= */ +/*! \file waypointrenderer.cpp +** +** $Id$ +** +** \legal +** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** ......... ... 2019 Rodolfo R. Gomes +** +** This package is free software; you can redistribute it and/or +** modify it under the terms of the GNU General Public License as +** published by the Free Software Foundation; either version 2 of +** the License, or (at your option) any later version. +** +** This package is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** General Public License for more details. +** \endlegal +*/ +/* ========================================================================= */ + +/* === H E A D E R S ======================================================= */ + +#ifdef USING_PCH +# include "pch.h" +#else +# ifdef HAVE_CONFIG_H +# include +# endif + +#include "waypointrenderer.h" + +#include + +#include + +#endif + +/* === U S I N G =========================================================== */ + +using namespace synfig; + +/* === M A C R O S ========================================================= */ + +/* === G L O B A L S ======================================================= */ + +/* === P R O C E D U R E S ================================================= */ + +/* === C L A S S E S ======================================================= */ + +namespace studio { + +static Gdk::RGBA +get_interp_color(Interpolation x) +{ + switch(x) { + case INTERPOLATION_TCB: + return Gdk::RGBA("#73d216"); + case INTERPOLATION_LINEAR: + return Gdk::RGBA("#edd400"); + case INTERPOLATION_CONSTANT: + return Gdk::RGBA("#cc0000"); + case INTERPOLATION_HALT: + return Gdk::RGBA("#3465a4"); + case INTERPOLATION_MANUAL: + return Gdk::RGBA("#75507b"); + case INTERPOLATION_CLAMPED: + return Gdk::RGBA("#c17d11"); + case INTERPOLATION_UNDEFINED: + default: + break; + } + return Gdk::RGBA("#555753"); +} + +static Gdk::RGBA +color_darken(Gdk::RGBA x, float amount) +{ + x.set_red(x.get_red() * amount); + x.set_green(x.get_green() * amount); + x.set_blue(x.get_blue() * amount); + return x; +} + +void +WaypointRenderer::render_time_point_to_window( + const Cairo::RefPtr &cr, + const Gdk::Rectangle& area, + const TimePoint &tp, + bool selected ) +{ + const Gdk::RGBA black("#2e3436"); // it's black, trust me + + if(selected) + cr->set_line_width(2.0); + else + cr->set_line_width(1.0); + + Gdk::RGBA color; + +/*- BEFORE ------------------------------------- */ + + color=get_interp_color(tp.get_before()); + color=color_darken(color,1.0f); + if(selected)color=color_darken(color,1.3f); + cr->set_source_rgb(color.get_red(),color.get_green(),color.get_blue()); + + switch(tp.get_before()) + { + case INTERPOLATION_TCB: + cr->save(); + cr->translate(area.get_x(), area.get_y()); + cr->scale(area.get_width(), area.get_height()); + cr->move_to(0.5, 1); + cr->arc(0.5, 0.5, 0.5, 90*M_PI/180.0, 270*M_PI/180.0); + cr->fill_preserve(); + cr->restore(); + cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); + cr->stroke(); + break; + + case INTERPOLATION_HALT: + cr->save(); + cr->translate(area.get_x(), area.get_y()); + cr->scale(area.get_width(), area.get_height()*2); + cr->move_to(0.5, 0.5); + cr->arc(0.5, 0.5, 0.5, 180*M_PI/180.0, 270*M_PI/180.0); + cr->fill(); + cr->arc(0.5, 0.5, 0.5, 180*M_PI/180.0, 270*M_PI/180.0); + cr->restore(); + cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); + cr->stroke(); + + cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); + cr->move_to(area.get_x(),area.get_y()+area.get_height()); + cr->line_to(area.get_x()+area.get_width()/2,area.get_y()+area.get_height()); + cr->stroke(); + break; + + case INTERPOLATION_LINEAR: + cr->save(); + cr->move_to(area.get_x()+area.get_width()/2,area.get_y()); + cr->line_to(area.get_x(),area.get_y()+area.get_height()); + cr->line_to(area.get_x()+area.get_width()/2,area.get_y()+area.get_height()); + cr->fill_preserve(); + cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); + cr->stroke(); + cr->restore(); + break; + + case INTERPOLATION_CONSTANT: + cr->save(); + cr->move_to(area.get_x()+area.get_width()/2,area.get_y()); + cr->line_to(area.get_x()+area.get_width()/4,area.get_y()); + cr->line_to(area.get_x()+area.get_width()/4,area.get_y()+area.get_height()/2); + cr->line_to(area.get_x(),area.get_y()+area.get_height()/2); + cr->line_to(area.get_x(),area.get_y()+area.get_height()); + cr->line_to(area.get_x()+area.get_width()/2,area.get_y()+area.get_height()); + cr->fill_preserve(); + cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); + cr->stroke(); + cr->restore(); + break; + + case INTERPOLATION_CLAMPED: + cr->save(); + cr->move_to(area.get_x()+area.get_width()/2,area.get_y()); + cr->line_to(area.get_x(),area.get_y()+area.get_height()/2); + cr->line_to(area.get_x()+area.get_width()/2,area.get_y()+area.get_height()); + cr->fill_preserve(); + cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); + cr->stroke(); + cr->restore(); + break; + + default: + cr->save(); + cr->line_to(area.get_x()+area.get_width()/2,area.get_y()); + cr->line_to(area.get_x()+area.get_width()/3,area.get_y()); + cr->line_to(area.get_x(),area.get_y()+area.get_height()/3); + cr->line_to(area.get_x(),area.get_y()+area.get_height()-area.get_height()/3); + cr->line_to(area.get_x()+area.get_width()/3,area.get_y()+area.get_height()); + cr->line_to(area.get_x()+area.get_width()/2,area.get_y()+area.get_height()); + cr->fill_preserve(); + cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); + cr->stroke(); + cr->restore(); + break; + } + +/*- AFTER -------------------------------------- */ + + color=get_interp_color(tp.get_after()); + color=color_darken(color,0.8f); + if(selected)color=color_darken(color,1.3f); + cr->set_source_rgb(color.get_red(),color.get_green(),color.get_blue()); + + switch(tp.get_after()) + { + case INTERPOLATION_TCB: + cr->save(); + cr->translate(area.get_x(), area.get_y()); + cr->scale(area.get_width(), area.get_height()); + cr->arc(0.5, 0.5, 0.5, -90*M_PI/180.0, 90*M_PI/180.0); + cr->fill_preserve(); + cr->restore(); + cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); + cr->stroke(); + break; + + case INTERPOLATION_HALT: + cr->save(); + cr->translate(area.get_x(), area.get_y()); + cr->scale(area.get_width(), area.get_height()*2); + cr->move_to(0.5, 0.0); + cr->arc(0.5, 0.0, 0.5, 0*M_PI/180.0, 90*M_PI/180.0); + cr->fill(); + cr->arc(0.5, 0.0, 0.5, 0*M_PI / 180.0, 90*M_PI / 180.0); + cr->restore(); + cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); + cr->stroke(); + + cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); + cr->move_to(area.get_x()+area.get_width()/2,area.get_y()); + cr->line_to(area.get_x()+area.get_width(),area.get_y()); + cr->stroke(); + break; + + case INTERPOLATION_LINEAR: + cr->save(); + cr->move_to(area.get_x()+area.get_width()/2,area.get_y()); + cr->line_to(area.get_x()+area.get_width(),area.get_y()); + cr->line_to(area.get_x()+area.get_width()/2,area.get_y()+area.get_height()); + cr->fill_preserve(); + cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); + cr->stroke(); + cr->restore(); + break; + + case INTERPOLATION_CONSTANT: + cr->save(); + cr->move_to(area.get_x()+area.get_width()/2,area.get_y()); + cr->line_to(area.get_x()+area.get_width(),area.get_y()); + cr->line_to(area.get_x()+area.get_width(),area.get_y()+area.get_height()/2); + cr->line_to(area.get_x()+area.get_width()-area.get_width()/4,area.get_y()+area.get_height()/2); + cr->line_to(area.get_x()+area.get_width()-area.get_width()/4,area.get_y()+area.get_height()); + cr->line_to(area.get_x()+area.get_width()/2,area.get_y()+area.get_height()); + cr->fill_preserve(); + cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); + cr->stroke(); + cr->restore(); + break; + + case INTERPOLATION_CLAMPED: + cr->save(); + cr->line_to(area.get_x()+area.get_width()/2,area.get_y()); + cr->line_to(area.get_x()+area.get_width(),area.get_y()+area.get_height()/2); + cr->line_to(area.get_x()+area.get_width()/2,area.get_y()+area.get_height()); + cr->fill_preserve(); + cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); + cr->stroke(); + cr->restore(); + break; + + default: + cr->save(); + cr->line_to(area.get_x()+area.get_width()/2,area.get_y()); + cr->line_to(area.get_x()+area.get_width()-area.get_width()/3,area.get_y()); + cr->line_to(area.get_x()+area.get_width(),area.get_y()+area.get_height()/3); + cr->line_to(area.get_x()+area.get_width(),area.get_y()+area.get_height()-area.get_height()/3); + cr->line_to(area.get_x()+area.get_width()-area.get_width()/3,area.get_y()+area.get_height()); + cr->line_to(area.get_x()+area.get_width()/2,area.get_y()+area.get_height()); + cr->fill_preserve(); + cr->set_source_rgb(black.get_red(),black.get_green(),black.get_blue()); + cr->stroke(); + cr->restore(); + break; + } +} + + +} diff --git a/synfig-studio/src/gui/waypointrenderer.h b/synfig-studio/src/gui/waypointrenderer.h new file mode 100644 index 0000000..4f32bf2 --- /dev/null +++ b/synfig-studio/src/gui/waypointrenderer.h @@ -0,0 +1,56 @@ +/* === S Y N F I G ========================================================= */ +/*! \file waypointrenderer.h +** +** $Id$ +** +** \legal +** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** ......... ... 2019 Rodolfo R. Gomes +** +** This package is free software; you can redistribute it and/or +** modify it under the terms of the GNU General Public License as +** published by the Free Software Foundation; either version 2 of +** the License, or (at your option) any later version. +** +** This package is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** General Public License for more details. +** \endlegal +*/ +/* ========================================================================= */ + +/* === S T A R T =========================================================== */ + +#ifndef __SYNFIG_STUDIO_WAYPOINTRENDERER_H +#define __SYNFIG_STUDIO_WAYPOINTRENDERER_H + +/* === H E A D E R S ======================================================= */ +#include +#include + +#include +/* === M A C R O S ========================================================= */ + +/* === T Y P E D E F S ===================================================== */ + +/* === C L A S S E S & S T R U C T S ======================================= */ + +namespace studio { + +class WaypointRenderer +{ +public: + static void + render_time_point_to_window( + const Cairo::RefPtr &cr, + const Gdk::Rectangle& area, + const synfig::TimePoint &tp, + bool selected ); +}; // END of class WaypointRenderer + +}; // END of namespace studio + +/* === E N D =============================================================== */ + +#endif // WAYPOINTRENDERER_H