diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:24:48 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:24:48 +0000 |
commit | cca66b9ec4e494c1d919bff0f71a820d8afab1fa (patch) | |
tree | 146f39ded1c938019e1ed42d30923c2ac9e86789 /src/object/sp-rect.h | |
parent | Initial commit. (diff) | |
download | inkscape-upstream.tar.xz inkscape-upstream.zip |
Adding upstream version 1.2.2.upstream/1.2.2upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/object/sp-rect.h')
-rw-r--r-- | src/object/sp-rect.h | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/src/object/sp-rect.h b/src/object/sp-rect.h new file mode 100644 index 0000000..f5ddddb --- /dev/null +++ b/src/object/sp-rect.h @@ -0,0 +1,92 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#ifndef SEEN_SP_RECT_H +#define SEEN_SP_RECT_H + +/* + * SVG <rect> implementation + * + * Authors: + * Lauris Kaplinski <lauris@kaplinski.com> + * 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" + +class SPRect : public SPShape { +public: + SPRect(); + ~SPRect() 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<Inkscape::SnapCandidatePoint> &p, Inkscape::SnapPreferences const *snapprefs) const override; + void convert_to_guides() const override; + + 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); +}; + +MAKE_SP_OBJECT_DOWNCAST_FUNCTIONS(SP_RECT, SPRect) +MAKE_SP_OBJECT_TYPECHECK_FUNCTIONS(SP_IS_RECT, SPRect) + +#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 : |