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

Carlos Lopez a09598
/* === S Y N F I G ========================================================= */
Carlos Lopez a09598
/*!	\file gtkmm/renddesc.h
Carlos Lopez a09598
**	\brief Header File
Carlos Lopez a09598
**
Carlos Lopez a09598
**	$Id$
Carlos Lopez a09598
**
Carlos Lopez a09598
**	\legal
Carlos Lopez a09598
**	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
Carlos Lopez a09598
**
Carlos Lopez a09598
**	This package is free software; you can redistribute it and/or
Carlos Lopez a09598
**	modify it under the terms of the GNU General Public License as
Carlos Lopez a09598
**	published by the Free Software Foundation; either version 2 of
Carlos Lopez a09598
**	the License, or (at your option) any later version.
Carlos Lopez a09598
**
Carlos Lopez a09598
**	This package is distributed in the hope that it will be useful,
Carlos Lopez a09598
**	but WITHOUT ANY WARRANTY; without even the implied warranty of
Carlos Lopez a09598
**	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Carlos Lopez a09598
**	General Public License for more details.
Carlos Lopez a09598
**	\endlegal
Carlos Lopez a09598
**
Carlos Lopez a09598
** === N O T E S ===========================================================
Carlos Lopez a09598
**
Carlos Lopez a09598
** ========================================================================= */
Carlos Lopez a09598
Carlos Lopez a09598
/* === S T A R T =========================================================== */
Carlos Lopez a09598
Carlos Lopez a09598
#ifndef __SYNFIG_GTKMM_RENDDESC_H
Carlos Lopez a09598
#define __SYNFIG_GTKMM_RENDDESC_H
Carlos Lopez a09598
Carlos Lopez a09598
/* === H E A D E R S ======================================================= */
Carlos Lopez a09598
Carlos Lopez a09598
#include <gtkmm table.h=""></gtkmm>
Carlos Lopez a09598
#include <gtkmm frame.h=""></gtkmm>
a4bbdd
#include <gtkmm scale.h=""></gtkmm>
Carlos Lopez a09598
#include <gtkmm spinbutton.h=""></gtkmm>
Carlos Lopez a09598
#include <gtkmm adjustment.h=""></gtkmm>
Carlos Lopez a09598
#include <gtkmm checkbutton.h=""></gtkmm>
Carlos Lopez a09598
#include <gtkmm notebook.h=""></gtkmm>
a4bbdd
a4bbdd
#include <synfig renddesc.h=""></synfig>
a4bbdd
Nikita Kitaev 3c2324
#include "widgets/widget_vector.h"
Nikita Kitaev 3c2324
#include "widgets/widget_time.h"
[d.j.a.y] Jerome Blanchi bd2b32
#include "widgets/widget_link.h"
Carlos Lopez a09598
Carlos Lopez a09598
/* === M A C R O S ========================================================= */
Carlos Lopez a09598
Carlos Lopez a09598
/* === T Y P E D E F S ===================================================== */
Carlos Lopez a09598
Carlos Lopez a09598
/* === C L A S S E S & S T R U C T S ======================================= */
Carlos Lopez a09598
Carlos Lopez a09598
namespace studio {
Carlos Lopez a09598
Carlos Lopez a09598
class Widget_RendDesc : public Gtk::Notebook
Carlos Lopez a09598
{
Carlos Lopez a09598
	synfig::RendDesc rend_desc_;
Carlos Lopez a09598
	sigc::signal<void> signal_changed_;</void>
Carlos Lopez a09598
536d22
	Glib::RefPtr<gtk::adjustment> adjustment_width;</gtk::adjustment>
536d22
	Glib::RefPtr<gtk::adjustment> adjustment_height;</gtk::adjustment>
536d22
	Glib::RefPtr<gtk::adjustment> adjustment_xres;</gtk::adjustment>
536d22
	Glib::RefPtr<gtk::adjustment> adjustment_yres;</gtk::adjustment>
536d22
	Glib::RefPtr<gtk::adjustment> adjustment_phy_width;</gtk::adjustment>
536d22
	Glib::RefPtr<gtk::adjustment> adjustment_phy_height;</gtk::adjustment>
536d22
	Glib::RefPtr<gtk::adjustment> adjustment_fps;</gtk::adjustment>
536d22
	Glib::RefPtr<gtk::adjustment> adjustment_span;</gtk::adjustment>
a4bbdd
	Glib::RefPtr<gtk::adjustment> adjustment_gamma_r;</gtk::adjustment>
a4bbdd
	Glib::RefPtr<gtk::adjustment> adjustment_gamma_g;</gtk::adjustment>
a4bbdd
	Glib::RefPtr<gtk::adjustment> adjustment_gamma_b;</gtk::adjustment>
Carlos Lopez a09598
Carlos Lopez a09598
	Gtk::SpinButton *entry_width;
Carlos Lopez a09598
	Gtk::SpinButton *entry_height;
Carlos Lopez a09598
	Gtk::SpinButton *entry_xres;
Carlos Lopez a09598
	Gtk::SpinButton *entry_yres;
Carlos Lopez a09598
	Gtk::SpinButton *entry_phy_width;
Carlos Lopez a09598
	Gtk::SpinButton *entry_phy_height;
Carlos Lopez a09598
	Gtk::SpinButton *entry_fps;
Carlos Lopez a09598
	Gtk::SpinButton *entry_span;
a4bbdd
	Gtk::SpinButton *entry_gamma_r;
a4bbdd
	Gtk::SpinButton *entry_gamma_g;
a4bbdd
	Gtk::SpinButton *entry_gamma_b;
a4bbdd
a4bbdd
	Gtk::Scale* scale_gamma_r;
a4bbdd
	Gtk::Scale* scale_gamma_g;
a4bbdd
	Gtk::Scale* scale_gamma_b;
Carlos Lopez a09598
[d.j.a.y] Jerome Blanchi bd2b32
	Widget_Link *toggle_wh_ratio;
[d.j.a.y] Jerome Blanchi 981c82
	Widget_Link *toggle_res_ratio;
[d.j.a.y] Jerome Blanchi 981c82
[d.j.a.y] Jerome Blanchi 981c82
	Gtk::Label *pixel_ratio_label;
[d.j.a.y] Jerome Blanchi bcf30c
Carlos Lopez a09598
	Gtk::CheckButton *toggle_px_aspect;
Carlos Lopez a09598
	Gtk::CheckButton *toggle_px_width;
Carlos Lopez a09598
	Gtk::CheckButton *toggle_px_height;
Carlos Lopez a09598
Carlos Lopez a09598
	Gtk::CheckButton *toggle_im_aspect;
Carlos Lopez a09598
	Gtk::CheckButton *toggle_im_width;
Carlos Lopez a09598
	Gtk::CheckButton *toggle_im_height;
Carlos Lopez a09598
	Gtk::CheckButton *toggle_im_span;
Carlos Lopez a09598
Carlos Lopez a09598
	Gtk::Frame *time_frame;
a4bbdd
	Gtk::Frame *gamma_frame;
a4bbdd
	Gtk::Widget *gamma_pattern;
Carlos Lopez a09598
Carlos Lopez a09598
	Widget_Vector *entry_tl;
Carlos Lopez a09598
	Widget_Vector *entry_br;
Carlos Lopez a09598
Carlos Lopez a09598
	Widget_Vector *entry_focus;
Carlos Lopez a09598
Carlos Lopez a09598
	Widget_Time *entry_start_time;
Carlos Lopez a09598
	Widget_Time *entry_end_time;
Carlos Lopez 3cf655
	Widget_Time *entry_duration;
Carlos Lopez a09598
Carlos Lopez a09598
	mutable int update_lock;
Carlos Lopez a09598
Carlos Lopez a09598
	struct UpdateLock
Carlos Lopez a09598
	{
Carlos Lopez a09598
		int &locked;
Carlos Lopez a09598
		UpdateLock(int &locked):locked(locked){locked++;}
Carlos Lopez a09598
		~UpdateLock(){locked--;}
Carlos Lopez a09598
	};
Carlos Lopez a09598
Carlos Lopez a09598
public:
Carlos Lopez a09598
Carlos Lopez a09598
	sigc::signal<void> &signal_changed() { return signal_changed_; }</void>
Carlos Lopez a09598
Carlos Lopez a09598
	Widget_RendDesc();
Carlos Lopez a09598
	~Widget_RendDesc();
Carlos Lopez a09598
Carlos Lopez a09598
	//! Sets the RendDesc
Carlos Lopez a09598
	void set_rend_desc(const synfig::RendDesc &rend_desc);
Carlos Lopez a09598
Carlos Lopez a09598
	//! Applies the given RendDesc to the current RendDesc
Carlos Lopez a09598
	void apply_rend_desc(const synfig::RendDesc &rend_desc);
Carlos Lopez a09598
Carlos Lopez a09598
	//! Retrieves the current RendDesc
Carlos Lopez a09598
	const synfig::RendDesc &get_rend_desc();
Carlos Lopez a09598
Carlos Lopez a09598
	void disable_time_section();
Carlos Lopez a09598
	void enable_time_section();
Carlos Lopez a09598
a4bbdd
	void disable_gamma_section();
a4bbdd
	void enable_gamma_section();
a4bbdd
	
Carlos Lopez a09598
	void refresh();
rockyhandsome1 718029
	
Carlos Lopez a09598
private:
Carlos Lopez a09598
Carlos Lopez a09598
	void on_width_changed();
Carlos Lopez a09598
	void on_height_changed();
Carlos Lopez a09598
	void on_xres_changed();
Carlos Lopez a09598
	void on_yres_changed();
Carlos Lopez a09598
	void on_phy_width_changed();
Carlos Lopez a09598
	void on_phy_height_changed();
Carlos Lopez a09598
	void on_tl_changed();
Carlos Lopez a09598
	void on_br_changed();
Carlos Lopez a09598
	void on_fps_changed();
Carlos Lopez a09598
	void on_start_time_changed();
Carlos Lopez a09598
	void on_end_time_changed();
Carlos Lopez 3cf655
	void on_duration_changed();
Carlos Lopez a09598
	void on_lock_changed();
Carlos Lopez a09598
	void on_focus_changed();
Carlos Lopez a09598
	void on_span_changed();
a4bbdd
	void on_gamma_changed();
Carlos Lopez a09598
[d.j.a.y] Jerome Blanchi bcf30c
	void on_ratio_wh_toggled();
[d.j.a.y] Jerome Blanchi 981c82
	void on_ratio_res_toggled();
[d.j.a.y] Jerome Blanchi bcf30c
Carlos Lopez a09598
	void create_widgets();
Carlos Lopez a09598
	void connect_signals();
Carlos Lopez a09598
	Gtk::Widget *create_image_tab();
Carlos Lopez a09598
	Gtk::Widget *create_time_tab();
a4bbdd
	Gtk::Widget *create_gamma_tab();
Carlos Lopez a09598
	Gtk::Widget *create_other_tab();
Carlos Lopez a09598
};
Carlos Lopez a09598
Carlos Lopez a09598
}; // END of namespace studio
Carlos Lopez a09598
Carlos Lopez a09598
/* === E N D =============================================================== */
Carlos Lopez a09598
Carlos Lopez a09598
#endif