From c853ffb5b2f75f5a889ed2e3ef89b818a736e87a Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 13 Apr 2024 13:50:49 +0200 Subject: Adding upstream version 1.3+ds. Signed-off-by: Daniel Baumann --- src/object/sp-rect.h | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 src/object/sp-rect.h (limited to 'src/object/sp-rect.h') diff --git a/src/object/sp-rect.h b/src/object/sp-rect.h new file mode 100644 index 0000000..f157e81 --- /dev/null +++ b/src/object/sp-rect.h @@ -0,0 +1,98 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#ifndef SEEN_SP_RECT_H +#define SEEN_SP_RECT_H + +/* + * SVG implementation + * + * Authors: + * Lauris Kaplinski + * Abhishek Sharma + * + * Copyright (C) 1999-2002 Lauris Kaplinski + * Copyright (C) 2000-2001 Ximian, Inc. + * + * Released under GNU GPL v2+, read the file 'COPYING' for more information. + */ + +#include <2geom/forward.h> + +#include "svg/svg-length.h" +#include "sp-shape.h" + +enum GenericRectType { + SP_GENERIC_RECT_UNDEFINED, // FIXME shouldn't exist + SP_GENERIC_RECT, // Default + SP_GENERIC_PATH // LPE +}; + +class SPRect final : public SPShape { +public: + SPRect(); + ~SPRect() override; + int tag() const override { return tag_of; } + + void tag_name_changed(gchar const* oldname, gchar const* newname) override; + + void setPosition(double x, double y, double width, double height); + + /* If SET if FALSE, VALUE is just ignored */ + void setRx(bool set, double value); + void setRy(bool set, double value); + + double getVisibleRx() const; + void setVisibleRx(double rx); + + double getVisibleRy() const; + void setVisibleRy(double ry); + + Geom::Rect getRect() const; + + double getVisibleWidth() const; + void setVisibleWidth(double rx); + + double getVisibleHeight() const; + void setVisibleHeight(double ry); + + void compensateRxRy(Geom::Affine xform); + + void build(SPDocument* doc, Inkscape::XML::Node* repr) override; + + void set(SPAttr key, char const *value) override; + void update(SPCtx* ctx, unsigned int flags) override; + void modified(unsigned int flags) override; + bool set_rect_path_attribute(Inkscape::XML::Node *repr); + + Inkscape::XML::Node* write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, unsigned int flags) override; + const char* typeName() const override; + const char* displayName() const override; + void update_patheffect(bool write) override; + void set_shape() override; + Geom::Affine set_transform(Geom::Affine const& xform) override; + + void snappoints(std::vector &p, Inkscape::SnapPreferences const *snapprefs) const override; + void convert_to_guides() const override; + GenericRectType type; + SVGLength x; + SVGLength y; + SVGLength width; + SVGLength height; + SVGLength rx; + SVGLength ry; + +private: + static double vectorStretch(Geom::Point p0, Geom::Point p1, Geom::Affine xform); +}; + +#endif // SEEN_SP_RECT_H + +/* + 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:fileencoding=utf-8:textwidth=99 : -- cgit v1.2.3