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

Nikita Kitaev 254e11
/* === S Y N F I G ========================================================= */
Nikita Kitaev 3c2324
/*!	\file widgets/widget_coloredit.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
**
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_STUDIO_WIDGET_COLOREDIT_H
Nikita Kitaev 254e11
#define __SYNFIG_STUDIO_WIDGET_COLOREDIT_H
Nikita Kitaev 254e11
Nikita Kitaev 254e11
/* === H E A D E R S ======================================================= */
Nikita Kitaev 254e11
Nikita Kitaev 254e11
#include <gtkmm box.h=""></gtkmm>
Nikita Kitaev 254e11
#include <gtkmm table.h=""></gtkmm>
Nikita Kitaev 254e11
#include <gtkmm spinbutton.h=""></gtkmm>
Nikita Kitaev 254e11
#include <gtkmm adjustment.h=""></gtkmm>
Nikita Kitaev 254e11
#include <gtkmm drawingarea.h=""></gtkmm>
trizer 5deecb
#include <gtkmm colorselection.h=""></gtkmm>
Nikita Kitaev 254e11
#include <synfig color.h=""></synfig>
Nikita Kitaev 3c2324
#include "widgets/widget_color.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 {
Nikita Kitaev 254e11
	class Notebook;
Nikita Kitaev 254e11
};
Nikita Kitaev 254e11
Nikita Kitaev 254e11
namespace studio {
Nikita Kitaev 254e11
Nikita Kitaev 254e11
class ColorSlider : public Gtk::DrawingArea
Nikita Kitaev 254e11
{
Nikita Kitaev 254e11
public:
Nikita Kitaev 254e11
	enum Type
Nikita Kitaev 254e11
	{
Nikita Kitaev 254e11
		TYPE_R,
Nikita Kitaev 254e11
		TYPE_G,
Nikita Kitaev 254e11
		TYPE_B,
Nikita Kitaev 254e11
		TYPE_Y,
Nikita Kitaev 254e11
		TYPE_U,
Nikita Kitaev 254e11
		TYPE_V,
Nikita Kitaev 254e11
		TYPE_HUE,
Nikita Kitaev 254e11
		TYPE_SAT,
Nikita Kitaev 254e11
		TYPE_A,
Nikita Kitaev 254e11
Nikita Kitaev 254e11
		TYPE_END
Nikita Kitaev 254e11
	};
Nikita Kitaev 254e11
Nikita Kitaev 254e11
private:
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	sigc::signal<void,type,float> signal_slider_moved_;</void,type,float>
Nikita Kitaev 254e11
	sigc::signal<void> signal_activated_;</void>
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	Type type;
Carlos Lopez df1c1c
	synfig::Color color_, orig_color;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
public:
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	sigc::signal<void,type,float>& signal_slider_moved() { return signal_slider_moved_; }</void,type,float>
Nikita Kitaev 254e11
	sigc::signal<void>& signal_activated() { return signal_activated_; }</void>
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	Type
Nikita Kitaev 254e11
	get_type()const { return type; }
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	const synfig::Color&
Nikita Kitaev 254e11
	get_color()const { return color_; }
Nikita Kitaev 254e11
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	ColorSlider(const Type &x=TYPE_Y);
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	void
Nikita Kitaev 254e11
	set_type(Type x);
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	void
Nikita Kitaev 254e11
	set_color(synfig::Color x);
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	static void adjust_color(Type type, synfig::Color &color, float amount);
Nikita Kitaev 254e11
Nikita Kitaev 254e11
private:
Nikita Kitaev 254e11
	typedef void (*slider_color_func)(synfig::Color &,float);
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	static void slider_color_TYPE_R(synfig::Color &color, float amount);
Nikita Kitaev 254e11
	static void slider_color_TYPE_G(synfig::Color &color, float amount);
Nikita Kitaev 254e11
	static void slider_color_TYPE_B(synfig::Color &color, float amount);
Nikita Kitaev 254e11
	static void slider_color_TYPE_Y(synfig::Color &color, float amount);
Nikita Kitaev 254e11
	static void slider_color_TYPE_U(synfig::Color &color, float amount);
Nikita Kitaev 254e11
	static void slider_color_TYPE_V(synfig::Color &color, float amount);
Nikita Kitaev 254e11
	static void slider_color_TYPE_HUE(synfig::Color &color, float amount);
Nikita Kitaev 254e11
	static void slider_color_TYPE_SAT(synfig::Color &color, float amount);
Nikita Kitaev 254e11
	static void slider_color_TYPE_A(synfig::Color &color, float amount);
Nikita Kitaev 254e11
d9a469
	bool on_draw(const Cairo::RefPtr<cairo::context> &cr);</cairo::context>
Nikita Kitaev 254e11
	bool on_event(GdkEvent *event);
[d.j.a.y] Jerome Blanchi 7c97b5
[d.j.a.y] Jerome Blanchi 7c97b5
    ///@brief Draw face to face contrasted arrows
[d.j.a.y] Jerome Blanchi 7c97b5
	void draw_arrow(
[d.j.a.y] Jerome Blanchi 7c97b5
		const Cairo::RefPtr<cairo::context> &cr,</cairo::context>
[d.j.a.y] Jerome Blanchi 7c97b5
		double x, double y,
[d.j.a.y] Jerome Blanchi 7c97b5
		double width, double height,
[d.j.a.y] Jerome Blanchi 7c97b5
		int size,
[d.j.a.y] Jerome Blanchi 7c97b5
		bool fill);
Nikita Kitaev 254e11
}; // END of class ColorSlider
Nikita Kitaev 254e11
Nikita Kitaev 254e11
Nikita Kitaev 254e11
class Widget_ColorEdit : public Gtk::Table
Nikita Kitaev 254e11
{
Nikita Kitaev 254e11
	sigc::signal<void> signal_activated_;</void>
Nikita Kitaev 254e11
	sigc::signal<void> signal_value_changed_;</void>
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	ColorSlider *slider_R;
Nikita Kitaev 254e11
	ColorSlider *slider_G;
Nikita Kitaev 254e11
	ColorSlider *slider_B;
Nikita Kitaev 254e11
	Gtk::Label *hex_color_label;
Nikita Kitaev 254e11
	Gtk::Entry *hex_color;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	ColorSlider *slider_A;
Nikita Kitaev 254e11
	ColorSlider *slider_Y;
Nikita Kitaev 254e11
	ColorSlider *slider_U;
Nikita Kitaev 254e11
	ColorSlider *slider_V;
Nikita Kitaev 254e11
	ColorSlider *slider_SAT;
Nikita Kitaev 254e11
	ColorSlider *slider_HUE;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	Widget_Color widget_color;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	bool hold_signals;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	bool clamp_;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	Gtk::SpinButton *spinbutton_R;
Nikita Kitaev 254e11
	Gtk::SpinButton *spinbutton_G;
Nikita Kitaev 254e11
	Gtk::SpinButton *spinbutton_B;
Nikita Kitaev 254e11
	Gtk::SpinButton *spinbutton_A;
Nikita Kitaev 254e11
trizer 5deecb
	Gtk::ColorSelection * hvsColorWidget;
trizer 5deecb
536d22
	Glib::RefPtr<gtk::adjustment> R_adjustment;</gtk::adjustment>
536d22
	Glib::RefPtr<gtk::adjustment> G_adjustment;</gtk::adjustment>
536d22
	Glib::RefPtr<gtk::adjustment> B_adjustment;</gtk::adjustment>
536d22
	Glib::RefPtr<gtk::adjustment> A_adjustment;</gtk::adjustment>
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	synfig::Color color;
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	Gtk::Notebook* notebook;
Nikita Kitaev 254e11
Denis Zdorovtsov 26bdf0
	static synfig::Gamma hvs_gamma;
Denis Zdorovtsov 26bdf0
	static synfig::Gamma hvs_gamma_in;
Denis Zdorovtsov 26bdf0
Nikita Kitaev 254e11
protected:
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	void on_value_changed();
Nikita Kitaev 254e11
Nikita Kitaev 254e11
public:
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	sigc::signal<void>& signal_activated() { return signal_activated_; }</void>
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	sigc::signal<void>& signal_activate() { return signal_activated_; }</void>
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	void on_slider_moved(ColorSlider::Type type, float amount);
Nikita Kitaev 254e11
	void on_hex_edited();
[d.j.a.y] Jerome Blanchi fc1c95
	bool on_hex_focus_out(GdkEventFocus* event);
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	//Glib::SignalProxy0<void> signal_activate() { return spinbutton_A->signal_activate(); }</void>
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	sigc::signal<void>& signal_value_changed() { return signal_value_changed_; }</void>
trizer 5deecb
	
trizer 5deecb
	void on_color_changed();
Nikita Kitaev 254e11
Nikita Kitaev 254e11
	void activated() { signal_activated_(); }
Nikita Kitaev 254e11
	void activate() { signal_activated_(); }
Nikita Kitaev 254e11
	void set_value(const synfig::Color &data);
Nikita Kitaev 254e11
	const synfig::Color &get_value();
Nikita Kitaev 254e11
	synfig::Color get_value_raw();
Nikita Kitaev 254e11
	void set_has_frame(bool x);
Nikita Kitaev 254e11
	void set_digits(int x);
Nikita Kitaev 254e11
	Widget_ColorEdit();
Nikita Kitaev 254e11
	~Widget_ColorEdit();
trizer 5deecb
trizer 5deecb
private:
trizer 5deecb
	bool colorHVSChanged; //Spike. Look more in the code.
trizer 5deecb
	///@brief Sets color to the widget
trizer 5deecb
	void setHVSColor(synfig::Color color);
trizer 5deecb
	///@brief The function adds slider into the row table with label. 
trizer 5deecb
	void SliderRow(int i,ColorSlider * n, char * l, Pango::AttrList & attr_list, Gtk::Table* table);
trizer 5deecb
	///@brief The function adds spin button into the table.
trizer 5deecb
	void AttachSpinButton(int i, Gtk::SpinButton * n, Gtk::Table * table);
trizer 5deecb
Nikita Kitaev 254e11
}; // END of class Widget_ColorEdit
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