X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Flive_effects%2Fparameter%2Fparameter.h;h=61c151b0e9e8398546aed9725df9846a730bfea8;hb=b1af89b4a7095e739b52347155ce76b26d1a2c46;hp=93cdc94ee03a312983f4a47b08bdafbc0865397e;hpb=7f991b154fd88d2ad53558828be8c56018dbc0d7;p=inkscape.git diff --git a/src/live_effects/parameter/parameter.h b/src/live_effects/parameter/parameter.h index 93cdc94ee..61c151b0e 100644 --- a/src/live_effects/parameter/parameter.h +++ b/src/live_effects/parameter/parameter.h @@ -1,92 +1,147 @@ -#ifndef INKSCAPE_LIVEPATHEFFECT_PARAMETER_H -#define INKSCAPE_LIVEPATHEFFECT_PARAMETER_H - -/* - * Inkscape::LivePathEffectParameters - * -* Copyright (C) Johan Engelen 2007 - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -#include -#include <2geom/point.h> -#include <2geom/path.h> - -#include "ui/widget/registry.h" -#include "ui/widget/registered-widget.h" - -namespace Gtk { - class Widget; -} - -namespace Inkscape { - -namespace LivePathEffect { - -class Effect; - -class Parameter { -public: - Parameter( const Glib::ustring& label, - const Glib::ustring& tip, - const Glib::ustring& key, - Inkscape::UI::Widget::Registry* wr, - Effect* effect); - virtual ~Parameter() {}; - - virtual bool param_readSVGValue(const gchar * strvalue) = 0; // returns true if new value is valid / accepted. - virtual gchar * param_writeSVGValue() const = 0; - - // This returns pointer to the parameter's widget to be put in the live-effects dialog. Must also create the - // necessary widget if it does not exist yet. - virtual Gtk::Widget * param_getWidget() = 0; - virtual Glib::ustring * param_getTooltip() { return ¶m_tooltip; }; - - Glib::ustring param_key; - Inkscape::UI::Widget::Registry * param_wr; - Glib::ustring param_label; - -protected: - Glib::ustring param_tooltip; - - Effect* param_effect; - -private: - Parameter(const Parameter&); - Parameter& operator=(const Parameter&); -}; - - -class RealParam : public Parameter { -public: - RealParam( const Glib::ustring& label, - const Glib::ustring& tip, - const Glib::ustring& key, - Inkscape::UI::Widget::Registry* wr, - Effect* effect, - gdouble initial_value = 1.0); - ~RealParam(); - - bool param_readSVGValue(const gchar * strvalue); - gchar * param_writeSVGValue() const; - - Gtk::Widget * param_getWidget(); - - inline operator gdouble() - { return value; }; - -private: - RealParam(const RealParam&); - RealParam& operator=(const RealParam&); - - gdouble value; - Inkscape::UI::Widget::RegisteredScalar * rsu; -}; - - -} //namespace LivePathEffect - -} //namespace Inkscape - -#endif +#ifndef INKSCAPE_LIVEPATHEFFECT_PARAMETER_H +#define INKSCAPE_LIVEPATHEFFECT_PARAMETER_H + +/* + * Inkscape::LivePathEffectParameters + * +* Copyright (C) Johan Engelen 2007 + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include +#include <2geom/forward.h> +#include <2geom/pathvector.h> + +class KnotHolder; +class SPLPEItem; +struct SPDesktop; +struct SPItem; + +namespace Gtk { + class Widget; + class Tooltips; +} + +namespace Inkscape { + +namespace NodePath { + class Path ; +} + +namespace UI { +namespace Widget { + class Registry; +} +} + +namespace LivePathEffect { + +class Effect; + +class Parameter { +public: + Parameter( const Glib::ustring& label, + const Glib::ustring& tip, + const Glib::ustring& key, + Inkscape::UI::Widget::Registry* wr, + Effect* effect); + virtual ~Parameter() {}; + + virtual bool param_readSVGValue(const gchar * strvalue) = 0; // returns true if new value is valid / accepted. + virtual gchar * param_getSVGValue() const = 0; + void write_to_SVG() { param_write_to_repr(param_getSVGValue()); } + + virtual void param_set_default() = 0; + + // This creates a new widget (newed with Gtk::manage(new ...);) + virtual Gtk::Widget * param_newWidget(Gtk::Tooltips * tooltips) = 0; + + virtual Glib::ustring * param_getTooltip() { return ¶m_tooltip; }; + + // overload these for your particular parameter to make it provide knotholder handles or canvas helperpaths + virtual bool providesKnotHolderEntities() { return false; } + virtual void addKnotHolderEntities(KnotHolder */*knotholder*/, SPDesktop */*desktop*/, SPItem */*item*/) {}; + virtual void addCanvasIndicators(SPLPEItem */*lpeitem*/, std::vector &/*hp_vec*/) {}; + + virtual void param_editOncanvas(SPItem * /*item*/, SPDesktop * /*dt*/) {}; + virtual void param_setup_nodepath(Inkscape::NodePath::Path */*np*/) {}; + + virtual void param_transform_multiply(Geom::Matrix const& /*postmul*/, bool /*set*/) {}; + + Glib::ustring param_key; + Inkscape::UI::Widget::Registry * param_wr; + Glib::ustring param_label; + + bool oncanvas_editable; + bool widget_is_visible; + +protected: + Glib::ustring param_tooltip; + + Effect* param_effect; + + void param_write_to_repr(const char * svgd); + +private: + Parameter(const Parameter&); + Parameter& operator=(const Parameter&); +}; + + +class ScalarParam : public Parameter { +public: + ScalarParam( const Glib::ustring& label, + const Glib::ustring& tip, + const Glib::ustring& key, + Inkscape::UI::Widget::Registry* wr, + Effect* effect, + gdouble default_value = 1.0); + virtual ~ScalarParam(); + + virtual bool param_readSVGValue(const gchar * strvalue); + virtual gchar * param_getSVGValue() const; + + virtual void param_set_default(); + void param_set_value(gdouble val); + void param_make_integer(bool yes = true); + void param_set_range(gdouble min, gdouble max); + void param_set_digits(unsigned digits); + void param_set_increments(double step, double page); + + virtual Gtk::Widget * param_newWidget(Gtk::Tooltips * tooltips); + + inline operator gdouble() + { return value; }; + +protected: + gdouble value; + gdouble min; + gdouble max; + bool integer; + gdouble defvalue; + unsigned digits; + double inc_step; + double inc_page; + +private: + ScalarParam(const ScalarParam&); + ScalarParam& operator=(const ScalarParam&); +}; + +} //namespace LivePathEffect + +} //namespace Inkscape + +#endif + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :