Blame synfig-studio/src/gui/widgets/widget_timeslider.h

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