Blame synfig-studio/src/gui/workarea.h

Nikita Kitaev 254e11
/* === S Y N F I G ========================================================= */
Nikita Kitaev 254e11
/*!	\file workarea.h
Nikita Kitaev 254e11
**	\brief Template Header
Nikita Kitaev 254e11
**
Nikita Kitaev 254e11
**	$Id$
Nikita Kitaev 254e11
**
Nikita Kitaev 254e11
**	\legal
Nikita Kitaev 254e11
**	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
Nikita Kitaev 254e11
**	Copyright (c) 2007, 2008 Chris Moore
Carlos Lopez 42fd7a
**  Copyright (c) 2011 Nikita Kitaev
e6766e
**  ......... ... 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_GTKMM_WORKAREA_H
Nikita Kitaev 254e11
#define __SYNFIG_GTKMM_WORKAREA_H
Nikita Kitaev 254e11
Nikita Kitaev 254e11
/* === H E A D E R S ======================================================= */
Nikita Kitaev 254e11
Nikita Kitaev 254e11
#include <list></list>
Nikita Kitaev 254e11
#include <map></map>
Nikita Kitaev 254e11
#include <set></set>
Nikita Kitaev 254e11
Nikita Kitaev 254e11
#include <etl smart_ptr=""></etl>
Nikita Kitaev 254e11
#include <etl handle=""></etl>
Nikita Kitaev 254e11
Nikita Kitaev 254e11
#include <gtkmm drawingarea.h=""></gtkmm>
Nikita Kitaev 254e11
#include <gtkmm table.h=""></gtkmm>
Nikita Kitaev 254e11
#include <gtkmm adjustment.h=""></gtkmm>
Nikita Kitaev 254e11
#include <gtkmm image.h=""></gtkmm>
Nikita Kitaev 254e11
#include <gdkmm pixbuf.h=""></gdkmm>
Nikita Kitaev 254e11
#include <gdkmm cursor.h=""></gdkmm>
Nikita Kitaev 254e11
#include <gdkmm device.h=""></gdkmm>
Nikita Kitaev 254e11
Nikita Kitaev 254e11
#include <synfig time.h=""></synfig>
Nikita Kitaev 254e11
#include <synfig vector.h=""></synfig>
Nikita Kitaev 254e11
#include <synfig renddesc.h=""></synfig>
Nikita Kitaev 254e11
#include <synfig canvas.h=""></synfig>
Nikita Kitaev 254e11
Nikita Kitaev 4f928c
#include "dials/zoomdial.h"
6c2b42
#include "widgets/widget_ruler.h"
Nikita Kitaev 254e11
#include "duckmatic.h"
Nikita Kitaev 254e11
#include "instance.h"
557ee3
#include "app.h"
Nikita Kitaev 254e11
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 Gtk { class Frame; };
46d84c
namespace synfig { class Layer; };
46d84c
namespace synfigapp { class CanvasInterface; };
Nikita Kitaev 254e11
Nikita Kitaev 254e11
namespace studio
Nikita Kitaev 254e11
{
Nikita Kitaev 254e11
Nikita Kitaev 254e11
class Instance;
Nikita Kitaev 254e11
class CanvasView;
Nikita Kitaev 254e11
class WorkArea;
Nikita Kitaev 254e11
class WorkAreaRenderer;
Nikita Kitaev 254e11
class AsyncRenderer;
46d84c
class Renderer_Canvas;
b5417a
class LockDucks;
9f38ba
Nikita Kitaev 254e11
Nikita Kitaev 254e11
class WorkArea : public Gtk::Table, public Duckmatic
Nikita Kitaev 254e11
{
46d84c
public:
Nikita Kitaev 254e11
	/*
Nikita Kitaev 254e11
 -- ** -- P U B L I C   T Y P E S ---------------------------------------------
Nikita Kitaev 254e11
	*/
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	enum DragMode
Nikita Kitaev 254e11
	{
Nikita Kitaev 254e11
		DRAG_NONE=0,
Nikita Kitaev 254e11
		DRAG_WINDOW,
Nikita Kitaev 254e11
		DRAG_DUCK,
Nikita Kitaev 254e11
		DRAG_GUIDE,
Nikita Kitaev 855c85
		DRAG_BOX,
Alyssa Rosenzweig 8c6e05
		DRAG_BEZIER,
Alyssa Rosenzweig 8c6e05
		DRAG_ZOOM_WINDOW,
Alyssa Rosenzweig 8c6e05
		DRAG_ROTATE_WINDOW
Nikita Kitaev 254e11
	};
46d84c
46d84c
	/*! \class WorkArea::PushState
46d84c
	**	Saves the current duck view and editing options
46d84c
	**  Should be used by tools that hide ducks or change clickability settings */
46d84c
	class PushState
46d84c
	{
46d84c
	public:
46d84c
		WorkArea &workarea;
46d84c
		const Type type_mask;
46d84c
		const bool allow_duck_clicks;
46d84c
		const bool allow_bezier_clicks;
46d84c
		const bool allow_layer_clicks;
46d84c
		PushState(WorkArea &workarea);
46d84c
		~PushState();
46d84c
	}; // END of class WorkArea::PushState
46d84c
46d84c
	/*! \class WorkArea::DirtyTrap
46d84c
	**  While any DirtyTrap exists it accumulates WorkArea::queue_render() calls and blocks them.
46d84c
	**  WorkArea::queue_render() will called once after all DirtyTrap's for this WorkArea destroyed. */
46d84c
	class DirtyTrap
Carlos Lopez b28b59
	{
Carlos Lopez b28b59
	public:
46d84c
		WorkArea &work_area;
46d84c
		DirtyTrap(WorkArea &work_area);
46d84c
		~DirtyTrap();
Carlos Lopez b28b59
	};
Carlos Lopez b28b59
46d84c
	friend class DirtyTrap;
46d84c
	friend class WorkAreaRenderer;
46d84c
	friend class WorkAreaProgress;
Nikita Kitaev 254e11
46d84c
private:
Nikita Kitaev 254e11
	/*
Nikita Kitaev 254e11
 -- ** -- P R I V A T E   D A T A ---------------------------------------------
Nikita Kitaev 254e11
	*/
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	std::set<etl::handle<workarearenderer> > renderer_set_;</etl::handle<workarearenderer>
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	etl::loose_handle<synfigapp::canvasinterface> canvas_interface;</synfigapp::canvasinterface>
Nikita Kitaev 254e11
	etl::handle<synfig::canvas> canvas;</synfig::canvas>
Nikita Kitaev 254e11
	etl::loose_handle<studio::instance> instance;</studio::instance>
Nikita Kitaev 254e11
	etl::loose_handle<studio::canvasview> canvas_view;</studio::canvasview>
46d84c
	etl::handle<renderer_canvas> renderer_canvas;</renderer_canvas>
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	// Widgets
Nikita Kitaev 254e11
	Gtk::DrawingArea *drawing_area;
46d84c
	Gtk::Frame *drawing_frame;
46d84c
	Widget_Ruler *hruler;
46d84c
	Widget_Ruler *vruler;
536d22
	Glib::RefPtr<gtk::adjustment> scrollx_adjustment;</gtk::adjustment>
536d22
	Glib::RefPtr<gtk::adjustment> scrolly_adjustment;</gtk::adjustment>
caryoscelus ee52f0
	ZoomDial *zoomdial;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	GdkDevice* curr_input_device;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	// Bleh!
Nikita Kitaev 254e11
	int	w;						//!< Width of the image (in pixels)
Nikita Kitaev 254e11
	int	h;						//!< Height of the image (in pixels)
d421d7
	int	thumb_w;				//!< Width of the thumbnail image (in pixels)
d421d7
	int	thumb_h;				//!< Height of the thumbnail image (in pixels)
6878eb
	synfig::Real canvaswidth;	//!< Width of the canvas
6878eb
	synfig::Real canvasheight;	//!< Height of the canvas
6878eb
	synfig::Real pw;			//!< The width of a pixel
6878eb
	synfig::Real ph;			//!< The height of a pixel
6878eb
	synfig::Point window_tl;	//!< The (theoretical) top-left corner of the view window
6878eb
	synfig::Point window_br;	//!< The (theoretical) bottom-right corner of the view window
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	guint32 last_event_time;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	//! ???
Nikita Kitaev 254e11
	synfig::ProgressCallback *progresscallback;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	//! This flag is set if the user is dragging the video window
Nikita Kitaev 254e11
	/*! \see drag_point */
b5417a
	DragMode drag_mode;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	etl::handle<duckmatic::duck> clicked_duck;</duckmatic::duck>
Nikita Kitaev 254e11
	etl::handle<duckmatic::duck> hover_duck;</duckmatic::duck>
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	//! When dragging the viewport, this is set to the origin of the drag
Nikita Kitaev 254e11
	synfig::Point drag_point;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	synfig::Point curr_point;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	//! ???
Nikita Kitaev 254e11
	synfig::Point previous_focus;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	//! This flag is set if the grid should be drawn
Nikita Kitaev 254e11
	bool show_grid;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	//! This flag is set if the guides should be drawn
Nikita Kitaev 254e11
	bool show_guides;
Nikita Kitaev 254e11
[d.j.a.y] Jerome Blanchi 4f4f14
	//! Checker background size
[d.j.a.y] Jerome Blanchi 4f4f14
	synfig::Vector background_size;
[d.j.a.y] Jerome Blanchi 4f4f14
	//! Checker background first color
[d.j.a.y] Jerome Blanchi 4f4f14
	synfig::Color background_first_color;
[d.j.a.y] Jerome Blanchi 4f4f14
	//! Checker background second color
[d.j.a.y] Jerome Blanchi 4f4f14
	synfig::Color background_second_color;
810acc
	//! Checker background pattern (will generated by first request)
810acc
	mutable Cairo::RefPtr<cairo::surfacepattern> background_pattern;</cairo::surfacepattern>
[d.j.a.y] Jerome Blanchi 4f4f14
8966bf
	synfig::Time jack_offset;
8966bf
Nikita Kitaev 254e11
	bool low_resolution;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	bool meta_data_lock;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	//! The coordinates of the focus the last time a part of the screen was refreshed
Nikita Kitaev 254e11
	synfig::Point last_focus_point;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	int low_res_pixel_size;
Nikita Kitaev 254e11
46d84c
	int dirty_trap_count;
Nikita Kitaev 254e11
	int dirty_trap_queued;
Nikita Kitaev 254e11
Carlos Lopez 2625d9
	// This flag is set if onion skin is visible
Nikita Kitaev 254e11
	bool onion_skin;
Nikita Kitaev 254e11
	//! stores the future [1] and past [0] onion skins based on keyframes
Nikita Kitaev 254e11
	int onion_skins[2];
Nikita Kitaev 254e11
7f1d91
	// render future and past frames in background
7f1d91
	bool background_rendering;
7f1d91
Nikita Kitaev 254e11
	etl::loose_handle<synfig::valuenode> selected_value_node_;</synfig::valuenode>
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	bool allow_duck_clicks;
Nikita Kitaev a4c420
	bool allow_bezier_clicks;
Nikita Kitaev 254e11
	bool allow_layer_clicks;
Nikita Kitaev 254e11
	bool curr_guide_is_x;
Nikita Kitaev 254e11
b5417a
	etl::handle<lockducks> lock_ducks;</lockducks>
b5417a
46d84c
public:
Nikita Kitaev 254e11
	/*
Nikita Kitaev 254e11
 -- ** -- P U B L I C   D A T A -----------------------------------------------
Nikita Kitaev 254e11
	*/
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	// used in renderer_ducks.cpp
Nikita Kitaev 254e11
	bool solid_lines;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	// used in renderer_guides.cpp
Nikita Kitaev 254e11
	GuideList::iterator curr_guide;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	// used in renderer_timecode.cpp
Nikita Kitaev 254e11
	int timecode_width, timecode_height;
Nikita Kitaev 254e11
Nikita Kitaev dc5e35
	// used in renderer_bonesetup.cpp
Nikita Kitaev dc5e35
	int bonesetup_width, bonesetup_height;
Nikita Kitaev dc5e35
Nikita Kitaev 254e11
	/*
Nikita Kitaev 254e11
 -- ** -- S I G N A L S -------------------------------------------------------
Nikita Kitaev 254e11
	*/
Nikita Kitaev 254e11
private:
Nikita Kitaev 254e11
	sigc::signal<void> signal_rendering_;</void>
d421d7
	sigc::signal<void, synfig::time=""> signal_rendering_tile_finished_;</void,>
46d84c
	sigc::signal<void> signal_cursor_moved_;</void>
Nikita Kitaev 254e11
	sigc::signal<void> signal_view_window_changed_;</void>
Carlos Lopez 9cb3dd
	sigc::signal<void> signal_meta_data_changed_;</void>
46d84c
	sigc::signal<void, gdkdevice*=""> signal_input_device_changed_;</void,>
46d84c
	sigc::signal<void> signal_popup_menu_;</void>
46d84c
	sigc::signal<void, synfig::point=""> signal_user_click_[5]; //!< One signal per button</void,>
46d84c
	sigc::signal<void, etl::handle<synfig::layer=""> > signal_layer_selected_; //!< Signal for when the user clicks on a layer</void,>
Nikita Kitaev 254e11
Carlos Lopez 9cb3dd
public:
Nikita Kitaev 254e11
	sigc::signal<void>& signal_rendering() { return signal_rendering_; }</void>
d421d7
	sigc::signal<void, synfig::time="">& signal_rendering_tile_finished() { return signal_rendering_tile_finished_; }</void,>
Nikita Kitaev 254e11
	sigc::signal<void>& signal_cursor_moved() { return signal_cursor_moved_; }</void>
Nikita Kitaev 254e11
	sigc::signal<void>& signal_view_window_changed() { return signal_view_window_changed_; }</void>
Carlos Lopez 9cb3dd
	sigc::signal<void>& signal_meta_data_changed() { return signal_meta_data_changed_; }</void>
46d84c
	sigc::signal<void, gdkdevice*="">& signal_input_device_changed() { return signal_input_device_changed_; }</void,>
46d84c
	sigc::signal<void> &signal_popup_menu() { return signal_popup_menu_; }</void>
46d84c
	sigc::signal<void, synfig::point=""> &signal_user_click(int button=0){ return signal_user_click_[button]; } //!< One signal per button (5 buttons)</void,>
46d84c
	sigc::signal<void, etl::handle<synfig::layer=""> >& signal_layer_selected() { return signal_layer_selected_; }</void,>
46d84c
b5417a
private:
b5417a
	/*
b5417a
 -- ** -- P R I V A T E   M E T H O D S -----------------------------------------
b5417a
	*/
b5417a
b5417a
	void set_drag_mode(DragMode mode);
b5417a
46d84c
public:
46d84c
	/*
46d84c
 -- ** -- P U B L I C   M E T H O D S -----------------------------------------
46d84c
	*/
46d84c
46d84c
	WorkArea(etl::loose_handle<synfigapp::canvasinterface> canvas_interface);</synfigapp::canvasinterface>
46d84c
	virtual ~WorkArea();
Carlos Lopez 9cb3dd
Nikita Kitaev 254e11
	void view_window_changed() { signal_view_window_changed()(); }
Nikita Kitaev 254e11
46d84c
	const etl::loose_handle<synfig::valuenode>& get_selected_value_node() { return  selected_value_node_; }</synfig::valuenode>
46d84c
	const synfig::Point& get_drag_point()const { return drag_point; }
Nikita Kitaev 254e11
46d84c
	synfig::VectorInt get_windows_offset() const;
46d84c
	synfig::RectInt get_window_rect() const;
Nikita Kitaev 254e11
46d84c
	bool get_allow_layer_clicks() { return allow_layer_clicks; }
46d84c
	void set_allow_layer_clicks(bool value) { allow_layer_clicks=value; }
Nikita Kitaev 254e11
46d84c
	bool get_allow_duck_clicks() { return allow_duck_clicks; }
46d84c
	void set_allow_duck_clicks(bool value) { allow_duck_clicks=value; }
Nikita Kitaev 254e11
46d84c
	bool get_allow_bezier_clicks() { return allow_bezier_clicks; }
46d84c
	void set_allow_bezier_clicks(bool value) { allow_bezier_clicks=value; }
46d84c
46d84c
	void insert_renderer(const etl::handle<workarearenderer> &x);</workarearenderer>
46d84c
	void insert_renderer(const etl::handle<workarearenderer> &x,int priority);</workarearenderer>
46d84c
	void erase_renderer(const etl::handle<workarearenderer> &x);</workarearenderer>
46d84c
	void resort_render_set();
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	void set_onion_skin(bool x);
46d84c
	bool get_onion_skin() const { return onion_skin; }
Nikita Kitaev 254e11
	void set_onion_skins(int *onions);
46d84c
	int const * get_onion_skins() const { return onion_skins; }
Nikita Kitaev 254e11
7f1d91
	void set_background_rendering(bool x);
7f1d91
	bool get_background_rendering() const { return background_rendering; }
7f1d91
Nikita Kitaev 254e11
	void set_selected_value_node(etl::loose_handle<synfig::valuenode> x);</synfig::valuenode>
Nikita Kitaev 254e11
b5417a
	DragMode get_drag_mode() { return drag_mode; }
b5417a
	bool is_dragging() { return get_drag_mode() != DRAG_NONE; }
Nikita Kitaev 254e11
1d2d83
	void set_cursor(const Glib::RefPtr<gdk::cursor> &x);</gdk::cursor>
Nikita Kitaev 254e11
	void set_cursor(Gdk::CursorType x);
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	const synfig::Point& get_cursor_pos()const { return curr_point; }
Nikita Kitaev 254e11
536d22
	Glib::RefPtr<gtk::adjustment> get_scrollx_adjustment() { return scrollx_adjustment; }</gtk::adjustment>
536d22
	Glib::RefPtr<gtk::adjustment> get_scrolly_adjustment() { return scrolly_adjustment; }</gtk::adjustment>
536d22
	Glib::RefPtr<const gtk::adjustment=""> get_scrollx_adjustment() const { return scrollx_adjustment; }</const>
536d22
	Glib::RefPtr<const gtk::adjustment=""> get_scrolly_adjustment() const { return scrolly_adjustment; }</const>
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	void set_instance(etl::loose_handle<studio::instance> x) { instance=x; }</studio::instance>
Nikita Kitaev 254e11
	void set_canvas(etl::handle<synfig::canvas> x) { canvas=x; }</synfig::canvas>
Nikita Kitaev 254e11
	void set_canvas_view(etl::loose_handle<studio::canvasview> x) { canvas_view=x; }</studio::canvasview>
d421d7
	etl::handle<synfig::canvas> get_canvas() const { return canvas; }</synfig::canvas>
d421d7
	etl::handle<studio::instance> get_instance() const { return instance; }</studio::instance>
d421d7
	etl::loose_handle<studio::canvasview> get_canvas_view() const { return canvas_view; }</studio::canvasview>
d421d7
	const etl::handle<renderer_canvas>& get_renderer_canvas() const { return renderer_canvas; }</renderer_canvas>
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	void refresh_dimension_info();
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	//! Enables showing of the grid
Nikita Kitaev 254e11
	void enable_grid();
Nikita Kitaev 254e11
	//! Disables showing of the grid
Nikita Kitaev 254e11
	void disable_grid();
Nikita Kitaev 254e11
	//! Toggles the showing of the grid
Nikita Kitaev 254e11
	void toggle_grid();
Nikita Kitaev 254e11
	//! Returns the state of the show_grid flag
Nikita Kitaev 254e11
	bool grid_status()const { return show_grid; }
[d.j.a.y] Jerome Blanchi 672458
	//! Toggles the snap of the grid
[d.j.a.y] Jerome Blanchi 672458
	void toggle_grid_snap();
[d.j.a.y] Jerome Blanchi f8442a
	//! Sets the size of the grid
[d.j.a.y] Jerome Blanchi f8442a
	void set_grid_size(const synfig::Vector &s);
[d.j.a.y] Jerome Blanchi f8442a
	//! Sets the color of the grid
[d.j.a.y] Jerome Blanchi f8442a
	void set_grid_color(const synfig::Color &c);
[d.j.a.y] Jerome Blanchi f8442a
	//! Returns the color of the grid
[d.j.a.y] Jerome Blanchi f8442a
	const synfig::Color &get_grid_color()const { return Duckmatic::get_grid_color();}
Nikita Kitaev 254e11
[d.j.a.y] Jerome Blanchi f8442a
	//! Returns the state of the show_guides flag
Nikita Kitaev 254e11
	bool get_show_guides()const { return show_guides; }
[d.j.a.y] Jerome Blanchi f8442a
	//! Sets the showing of the grid
Nikita Kitaev 254e11
	void set_show_guides(bool x);
[d.j.a.y] Jerome Blanchi f8442a
	//! Toggles the showing of the guides
Nikita Kitaev 254e11
	void toggle_show_guides() { set_show_guides(!get_show_guides()); }
[d.j.a.y] Jerome Blanchi 672458
	//! Toggles the snap of the guides
[d.j.a.y] Jerome Blanchi 672458
	void toggle_guide_snap();
[d.j.a.y] Jerome Blanchi f8442a
	//! Sets the color of the guides
[d.j.a.y] Jerome Blanchi f8442a
	void set_guides_color(const synfig::Color &c);
[d.j.a.y] Jerome Blanchi f8442a
	//! Returns the color of the guides
[d.j.a.y] Jerome Blanchi f8442a
	const synfig::Color &get_guides_color()const { return Duckmatic::get_guides_color();}
Nikita Kitaev 254e11
8966bf
	synfig::Time get_jack_offset()const { return jack_offset; }
8966bf
	void set_jack_offset(const synfig::Time &x);
8966bf
[d.j.a.y] Jerome Blanchi 4f4f14
	//! Sets the size of the checker background
[d.j.a.y] Jerome Blanchi 4f4f14
	void set_background_size(const synfig::Vector &s);
[d.j.a.y] Jerome Blanchi 4f4f14
	//! Sets the first color of the checker background
[d.j.a.y] Jerome Blanchi 4f4f14
	void set_background_first_color(const synfig::Color &c);
[d.j.a.y] Jerome Blanchi 4f4f14
	//! Sets the second color of the checker background
[d.j.a.y] Jerome Blanchi 4f4f14
	void set_background_second_color(const synfig::Color &c);
[d.j.a.y] Jerome Blanchi 4f4f14
	//! Sets the size of the checker background
810acc
	const synfig::Vector& get_background_size() const { return background_size;}
[d.j.a.y] Jerome Blanchi 4f4f14
	//! Returns the first color of the checker background
810acc
	const synfig::Color& get_background_first_color() const { return background_first_color;}
[d.j.a.y] Jerome Blanchi 4f4f14
	//! Returns the second color of the checker background
810acc
	const synfig::Color& get_background_second_color() const { return background_second_color;}
810acc
	//! Returns the Cairo Pattern for background
810acc
	const Cairo::RefPtr<cairo::surfacepattern>& get_background_pattern() const;</cairo::surfacepattern>
[d.j.a.y] Jerome Blanchi 4f4f14
Nikita Kitaev 254e11
	bool get_low_resolution_flag()const { return low_resolution; }
Nikita Kitaev 254e11
	void set_low_resolution_flag(bool x);
Nikita Kitaev 254e11
	void toggle_low_resolution_flag();
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	//! ???
Nikita Kitaev 254e11
	void queue_scroll();
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	//! ??
Nikita Kitaev 254e11
	void popup_menu();
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	int get_low_res_pixel_size()const { return low_res_pixel_size; }
278ca7
	synfig::String get_renderer() const;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	void set_low_res_pixel_size(int x);
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	int get_w()const { return w; }
Nikita Kitaev 254e11
	int get_h()const { return h; }
d421d7
	int get_thumb_w()const { return thumb_w; }
d421d7
	int get_thumb_h()const { return thumb_h; }
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	//! Converts screen coords (ie: pixels) to composition coordinates
Nikita Kitaev 254e11
	synfig::Point screen_to_comp_coords(synfig::Point pos)const;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	//! Converts composition coordinates to screen coords (ie: pixels)
Nikita Kitaev 254e11
	synfig::Point comp_to_screen_coords(synfig::Point pos)const;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	float get_pw()const { return pw; }
Nikita Kitaev 254e11
	float get_ph()const { return ph; }
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	const synfig::Point &get_window_tl()const { return window_tl; }
Nikita Kitaev 254e11
	const synfig::Point &get_window_br()const { return window_br; }
Nikita Kitaev 254e11
46d84c
	//! initiate background rendering of canvas and wait
6878eb
	void sync_render(bool refresh = true);
Nikita Kitaev 254e11
46d84c
	//! initiate background rendering of canvas
6878eb
	void queue_render(bool refresh = true);
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	void zoom_in();
Nikita Kitaev 254e11
	void zoom_out();
Nikita Kitaev 254e11
	void zoom_fit();
Nikita Kitaev 254e11
	void zoom_norm();
5173ed
	void zoom_edit();
Carlos Lopez 2625d9
	float get_zoom()const { return zoom; } // zoom is declared in Duckmatic
Nikita Kitaev 254e11
	void set_zoom(float z);
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	void set_progress_callback(synfig::ProgressCallback *x)	{ progresscallback=x; }
Nikita Kitaev 254e11
	synfig::ProgressCallback *get_progress_callback() { return progresscallback; }
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	void set_focus_point(const synfig::Point &x);
Nikita Kitaev 254e11
	synfig::Point get_focus_point()const;
Nikita Kitaev 254e11
48f525
	bool refresh(const Cairo::RefPtr<cairo::context> &cr);</cairo::context>
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	void reset_cursor();
Nikita Kitaev 254e11
	void refresh_cursor();
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	void save_meta_data();
Nikita Kitaev 254e11
	void load_meta_data();
[d.j.a.y] Jerome Blanchi d26376
	//! Test initial meta data values
[d.j.a.y] Jerome Blanchi d26376
	bool have_meta_data();
Nikita Kitaev 254e11
46d84c
private:
Nikita Kitaev 254e11
	/*
Nikita Kitaev 254e11
 -- ** -- S I G N A L   T E R M I N A L S -------------------------------------
Nikita Kitaev 254e11
	*/
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	bool on_key_press_event(GdkEventKey* event);
fdcf46
	bool on_key_release_event(GdkEventKey* event);
Nikita Kitaev 254e11
	bool on_drawing_area_event(GdkEvent* event);
Nikita Kitaev 254e11
	bool on_hruler_event(GdkEvent* event);
Nikita Kitaev 254e11
	bool on_vruler_event(GdkEvent* event);
[d.j.a.y] Jerome Blanchi e37ceb
	void on_duck_selection_single(const etl::handle<duck>& duck_guid);</duck>
Nikita Kitaev 254e11
}; // END of class WorkArea
Nikita Kitaev 254e11
Nikita Kitaev 61ece2
Nikita Kitaev 254e11
}; // END of namespace studio
Nikita Kitaev 254e11
Nikita Kitaev 254e11
/* === E N D =============================================================== */
Nikita Kitaev 254e11
Nikita Kitaev 254e11
#endif