|
Nikita Kitaev |
254e11 |
/* === S Y N F I G ========================================================= */
|
|
Nikita Kitaev |
3c2324 |
/*! \file widgets/widget_timeslider.h
|
|
Nikita Kitaev |
254e11 |
** \brief Time Slider Widget Header
|
|
Nikita Kitaev |
254e11 |
**
|
|
Nikita Kitaev |
254e11 |
** $Id$
|
|
Nikita Kitaev |
254e11 |
**
|
|
Nikita Kitaev |
254e11 |
** \legal
|
|
Nikita Kitaev |
254e11 |
** Copyright (c) 2004 Adrian Bentley
|
|
|
b440da |
** ......... ... 2018 Ivan Mahonin
|
|
Nikita Kitaev |
254e11 |
**
|
|
Nikita Kitaev |
254e11 |
** This package is free software; you can redistribute it and/or
|
|
Nikita Kitaev |
254e11 |
** modify it under the terms of the GNU General Public License as
|
|
Nikita Kitaev |
254e11 |
** published by the Free Software Foundation; either version 2 of
|
|
Nikita Kitaev |
254e11 |
** the License, or (at your option) any later version.
|
|
Nikita Kitaev |
254e11 |
**
|
|
Nikita Kitaev |
254e11 |
** This package is distributed in the hope that it will be useful,
|
|
Nikita Kitaev |
254e11 |
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Nikita Kitaev |
254e11 |
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Nikita Kitaev |
254e11 |
** General Public License for more details.
|
|
Nikita Kitaev |
254e11 |
** \endlegal
|
|
Nikita Kitaev |
254e11 |
*/
|
|
Nikita Kitaev |
254e11 |
/* ========================================================================= */
|
|
Nikita Kitaev |
254e11 |
|
|
Nikita Kitaev |
254e11 |
/* === S T A R T =========================================================== */
|
|
Nikita Kitaev |
254e11 |
|
|
Nikita Kitaev |
254e11 |
#ifndef __SYNFIG_WIDGET_TIMESLIDER_H
|
|
Nikita Kitaev |
254e11 |
#define __SYNFIG_WIDGET_TIMESLIDER_H
|
|
Nikita Kitaev |
254e11 |
|
|
Nikita Kitaev |
254e11 |
/* === H E A D E R S ======================================================= */
|
|
|
d421d7 |
|
|
Nikita Kitaev |
254e11 |
#include <gtkmm drawingarea.h=""></gtkmm>
|
|
|
d421d7 |
|
|
Nikita Kitaev |
254e11 |
#include <synfig time.h=""></synfig>
|
|
Nikita Kitaev |
254e11 |
|
|
|
b440da |
#include <gui timemodel.h=""></gui>
|
|
|
b440da |
|
|
Nikita Kitaev |
254e11 |
/* === M A C R O S ========================================================= */
|
|
Nikita Kitaev |
254e11 |
|
|
Nikita Kitaev |
254e11 |
/* === T Y P E D E F S ===================================================== */
|
|
Nikita Kitaev |
254e11 |
|
|
Nikita Kitaev |
254e11 |
/* === C L A S S E S & S T R U C T S ======================================= */
|
|
Nikita Kitaev |
254e11 |
|
|
Nikita Kitaev |
254e11 |
namespace studio {
|
|
Nikita Kitaev |
254e11 |
|
|
Rodolfo Ribeiro Gomes |
50789e |
class TimePlotData;
|
|
Rodolfo Ribeiro Gomes |
50789e |
|
|
|
b440da |
//! Design for the timeslider...
|
|
|
b440da |
//! Concept: Scalable ruler
|
|
|
b440da |
//! Ticks are done every so often (30 s, 10 frames, 5 frames, etc.)
|
|
|
b440da |
//! Print out frame numbers next to the big ticks
|
|
|
b440da |
//! Show blue pills in separate area (above or below)
|
|
|
b440da |
class Widget_Timeslider: public Gtk::DrawingArea
|
|
Nikita Kitaev |
254e11 |
{
|
|
|
b440da |
protected: // implementation that other interfaces can see
|
|
|
b440da |
Glib::RefPtr<pango::layout> layout; // implementation awesomeness for text drawing</pango::layout>
|
|
Nikita Kitaev |
254e11 |
|
|
|
2a96c7 |
Cairo::RefPtr<cairo::surfacepattern> play_bounds_pattern;</cairo::surfacepattern>
|
|
|
2a96c7 |
|
|
|
b440da |
// last mouse position for dragging
|
|
|
b440da |
double lastx;
|
|
Nikita Kitaev |
254e11 |
|
|
|
b440da |
// distance between two small marks, also uses for left/right scroll
|
|
|
b440da |
synfig::Time step;
|
|
Nikita Kitaev |
254e11 |
|
|
|
b440da |
sigc::connection time_change;
|
|
|
b440da |
sigc::connection time_bounds_change;
|
|
Nikita Kitaev |
254e11 |
|
|
Rodolfo Ribeiro Gomes |
50789e |
TimePlotData * time_plot_data;
|
|
Rodolfo Ribeiro Gomes |
50789e |
|
|
Nikita Kitaev |
254e11 |
virtual bool on_button_press_event(GdkEventButton *event); //for clicking
|
|
Nikita Kitaev |
254e11 |
virtual bool on_button_release_event(GdkEventButton *event); //for clicking
|
|
|
b440da |
virtual bool on_motion_notify_event(GdkEventMotion* event); //for dragging
|
|
|
b440da |
virtual bool on_scroll_event(GdkEventScroll* event); //for zooming
|
|
|
961c01 |
virtual bool on_draw(const Cairo::RefPtr<cairo::context> &cr);</cairo::context>
|
|
Nikita Kitaev |
254e11 |
|
|
|
d421d7 |
virtual void draw_background(const Cairo::RefPtr<cairo::context> &cr);</cairo::context>
|
|
|
d421d7 |
|
|
Rodolfo Ribeiro Gomes |
50789e |
virtual bool on_configure_event(GdkEventConfigure * configure);
|
|
Rodolfo Ribeiro Gomes |
50789e |
|
|
|
b440da |
public:
|
|
Nikita Kitaev |
254e11 |
Widget_Timeslider();
|
|
Nikita Kitaev |
254e11 |
~Widget_Timeslider();
|
|
Nikita Kitaev |
254e11 |
|
|
Rodolfo Ribeiro Gomes |
50789e |
const etl::handle<timemodel>& get_time_model() const;</timemodel>
|
|
|
b440da |
void set_time_model(const etl::handle<timemodel> &x);</timemodel>
|
|
Nikita Kitaev |
254e11 |
};
|
|
Nikita Kitaev |
254e11 |
|
|
Nikita Kitaev |
254e11 |
}; // END of namespace studio
|
|
Nikita Kitaev |
254e11 |
|
|
Nikita Kitaev |
254e11 |
/* === E N D =============================================================== */
|
|
Nikita Kitaev |
254e11 |
|
|
Nikita Kitaev |
254e11 |
#endif
|