11#include <glibmm/i18n.h>
13#include <sigc++/functors/mem_fun.h>
30 Effect *
const effect, std::optional<Glib::ustring> htip,
Geom::Point default_value,
33 , defvalue{
std::move(default_value)}
34 , liveupdate(live_update)
35 , handle_tip{
std::move(htip)}
153 auto const pointwdg = Gtk::make_managed<UI::Widget::RegisteredTransformedPoint>(
param_label,
167 auto const hbox = Gtk::make_managed<Gtk::Box>(Gtk::Orientation::HORIZONTAL);
185 PointParamKnotHolderEntity(
PointParam *
const p) : pparam{p} {}
186 ~PointParamKnotHolderEntity() final { this->pparam->
_knot_entity =
nullptr;}
191 void knot_click(
unsigned state) final;
194 PointParam *pparam =
nullptr;
199 unsigned const state)
202 if (state & GDK_CONTROL_MASK) {
207 if(distanceA > distanceB){
213 if(this->pparam->liveupdate){
214 pparam->param_setValue(s,
true);
216 pparam->param_setValue(s);
222 unsigned const state)
224 pparam->param_effect->makeUndoDone(_(
"Move handle"));
228PointParamKnotHolderEntity::knot_get()
const
234PointParamKnotHolderEntity::knot_click(
unsigned const state)
236 if (state & GDK_CONTROL_MASK) {
237 if (state & GDK_ALT_MASK) {
238 this->pparam->param_set_default();
239 pparam->param_setValue(*pparam,
true);
247 _knot_entity =
new PointParamKnotHolderEntity(
this);
250 handleTip(), knot_color);
251 knotholder->
add(_knot_entity);
pair< double, double > Point
3x3 matrix representing an affine transformation.
Two-dimensional point that doubles as a vector.
constexpr Coord x() const noexcept
Inkscape::XML::Node * getRepr()
Inkscape::UI::Widget::Registry * param_wr
Glib::ustring param_tooltip
void param_write_to_repr(const char *svgd)
Glib::ustring param_label
Glib::ustring param_getSVGValue() const final
void param_update_default(Geom::Point default_point)
Inkscape::CanvasItemCtrlShape knot_shape
PointParam(const Glib::ustring &label, const Glib::ustring &tip, const Glib::ustring &key, Inkscape::UI::Widget::Registry *wr, Effect *effect, std::optional< Glib::ustring > handle_tip={}, Geom::Point default_value=Geom::Point(0, 0), bool live_update=true)
void set_oncanvas_looks(Inkscape::CanvasItemCtrlShape shape, std::uint32_t color)
bool param_readSVGValue(char const *strvalue) final
Geom::Point param_get_default() const
void param_setValue(Geom::Point newpoint, bool write=false)
Glib::ustring param_getDefaultSVGValue() const final
void param_set_liveupdate(bool live_update)
void addKnotHolderEntities(KnotHolder *knotholder, SPItem *item) final
void param_set_default() final
void param_hide_knot(bool hide)
KnotHolderEntity * _knot_entity
Gtk::Widget * param_newWidget() final
void param_transform_multiply(Geom::Affine const &, bool set) final
KnotHolderEntity definition.
Geom::Point snap_knot_position(Geom::Point const &p, unsigned state)
KnotHolder * parent_holder
virtual void update_knot()
void remove(KnotHolderEntity *e)
void add(KnotHolderEntity *e)
Base class for visual SVG elements.
void hide()
Hide knot on its canvas.
void show()
Show knot on its canvas.
Utilities to more easily use Gtk::EventController & subclasses like Gesture.
Macro for icon names used in Inkscape.
Various utility functions.
Angle distance(Angle const &a, Angle const &b)
void pack_start(Gtk::Box &box, Gtk::Widget &child, bool const expand, bool const fill, unsigned const padding)
Adds child to box, packed with reference to the start of box.
@ CANVAS_ITEM_CTRL_TYPE_LPE
static cairo_user_data_key_t key
Helpers for using Gtk::Boxes, encapsulating large changes between GTK3 & GTK4.
unsigned int sp_svg_number_read_d(gchar const *str, double *val)
TODO: insert short description here.