00001
00021
00022
00023
00024
00025 #ifndef __SYNFIG_STUDIO_WIDGET_GRADIENT_H
00026 #define __SYNFIG_STUDIO_WIDGET_GRADIENT_H
00027
00028
00029
00030 #include <gtkmm/drawingarea.h>
00031 #include <synfig/gradient.h>
00032
00033
00034
00035
00036
00037
00038
00039 namespace studio {
00040
00041 void render_gradient_to_window(const Glib::RefPtr<Gdk::Drawable>& window,const Gdk::Rectangle& ca,const synfig::Gradient &gradient);
00042
00043 class Widget_Gradient : public Gtk::DrawingArea
00044 {
00045 sigc::signal<void> signal_value_changed_;
00046 sigc::signal<void> signal_clicked_;
00047
00048 sigc::signal<void,synfig::Gradient::CPoint> signal_cpoint_selected_;
00049
00050 synfig::Gradient gradient_;
00051
00052 bool editable_;
00053
00054 bool changed_;
00055
00056 synfig::Gradient::CPoint selected_cpoint;
00057
00058 void popup_menu(float x);
00059
00060 void insert_cpoint(float x);
00061
00062 void remove_cpoint(float x);
00063
00064 public:
00065
00066 Widget_Gradient();
00067
00068 ~Widget_Gradient();
00069
00070 sigc::signal<void>& signal_value_changed() { return signal_value_changed_; }
00071 sigc::signal<void>& signal_clicked() { return signal_clicked_; }
00072
00073 sigc::signal<void,synfig::Gradient::CPoint>& signal_cpoint_selected() { return signal_cpoint_selected_; }
00074
00075 void set_value(const synfig::Gradient& x);
00076
00077 const synfig::Gradient& get_value()const { return gradient_; }
00078
00079 void set_editable(bool x=true) { editable_=x; }
00080
00081 bool get_editable()const { return editable_; }
00082
00083
00084
00085 void set_selected_cpoint(const synfig::Gradient::CPoint &x);
00086
00087 const synfig::Gradient::CPoint& get_selected_cpoint() { return selected_cpoint; }
00088
00089 void update_cpoint(const synfig::Gradient::CPoint &x);
00090
00091
00092
00093 bool redraw(GdkEventExpose*bleh=NULL);
00094
00095 bool on_event(GdkEvent *event);
00096 };
00097
00098 };
00099
00100
00101
00102 #endif