Inkscape
Vector Graphics Editor
Loading...
Searching...
No Matches
sp-rect.h
Go to the documentation of this file.
1// SPDX-License-Identifier: GPL-2.0-or-later
2#ifndef SEEN_SP_RECT_H
3#define SEEN_SP_RECT_H
4
5/*
6 * SVG <rect> implementation
7 *
8 * Authors:
9 * Lauris Kaplinski <lauris@kaplinski.com>
10 * Abhishek Sharma
11 *
12 * Copyright (C) 1999-2002 Lauris Kaplinski
13 * Copyright (C) 2000-2001 Ximian, Inc.
14 *
15 * Released under GNU GPL v2+, read the file 'COPYING' for more information.
16 */
17
18#include <2geom/forward.h>
19
20#include "svg/svg-length.h"
21#include "sp-shape.h"
22
24 SP_GENERIC_RECT_UNDEFINED, // FIXME shouldn't exist
25 SP_GENERIC_RECT, // Default
26 SP_GENERIC_PATH // LPE
27};
28
29class SPRect final : public SPShape {
30public:
31 SPRect();
32 ~SPRect() override;
33 int tag() const override { return tag_of<decltype(*this)>; }
34
35 void tag_name_changed(gchar const* oldname, gchar const* newname) override;
36
37 void setPosition(double x, double y, double width, double height);
38
39 /* If SET if FALSE, VALUE is just ignored */
40 void setRx(bool set, double value);
41 void setRy(bool set, double value);
42
43 double getVisibleRx() const;
44 void setVisibleRx(double rx);
45
46 double getVisibleRy() const;
47 void setVisibleRy(double ry);
48
49 Geom::Rect getRect() const;
50
51 double getVisibleWidth() const;
52 void setVisibleWidth(double rx);
53
54 double getVisibleHeight() const;
55 void setVisibleHeight(double ry);
56
57 void compensateRxRy(Geom::Affine xform);
58
59 void build(SPDocument* doc, Inkscape::XML::Node* repr) override;
60
61 void set(SPAttr key, char const *value) override;
62 void update(SPCtx* ctx, unsigned int flags) override;
63 void modified(unsigned int flags) override;
65
67 const char* typeName() const override;
68 const char* displayName() const override;
69 void update_patheffect(bool write) override;
70 void set_shape() override;
71 Geom::Affine set_transform(Geom::Affine const& xform) override;
72
73 void snappoints(std::vector<Inkscape::SnapCandidatePoint> &p, Inkscape::SnapPreferences const *snapprefs) const override;
74 void convert_to_guides() const override;
82
83private:
84 static double vectorStretch(Geom::Point p0, Geom::Point p1, Geom::Affine xform);
85};
86
87#endif // SEEN_SP_RECT_H
88
89/*
90 Local Variables:
91 mode:c++
92 c-file-style:"stroustrup"
93 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
94 indent-tabs-mode:nil
95 fill-column:99
96 End:
97*/
98// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :
SPAttr
Definition attributes.h:27
constexpr int tag_of
Convenience function to retrieve the tag (class id) of a given type.
Definition cast.h:26
3x3 matrix representing an affine transformation.
Definition affine.h:70
Two-dimensional point that doubles as a vector.
Definition point.h:66
Axis aligned, non-empty rectangle.
Definition rect.h:92
Storing of snapping preferences.
Interface for refcounted XML nodes.
Definition node.h:80
Typed SVG document implementation.
Definition document.h:101
Inkscape::XML::Node * repr
Definition sp-object.h:193
void convert_to_guides() const override
Definition sp-rect.cpp:624
void setVisibleHeight(double ry)
Definition sp-rect.cpp:559
Inkscape::XML::Node * write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, unsigned int flags) override
Definition sp-rect.cpp:176
bool set_rect_path_attribute(Inkscape::XML::Node *repr)
Definition sp-rect.cpp:327
SVGLength rx
Definition sp-rect.h:80
void setRx(bool set, double value)
Definition sp-rect.cpp:361
double getVisibleHeight() const
Definition sp-rect.cpp:579
void setVisibleRx(double rx)
Definition sp-rect.cpp:460
double getVisibleRx() const
Definition sp-rect.cpp:486
void build(SPDocument *doc, Inkscape::XML::Node *repr) override
Definition sp-rect.cpp:56
const char * typeName() const override
The item's type name, not node tag name.
Definition sp-rect.cpp:241
SVGLength height
Definition sp-rect.h:79
SVGLength width
Definition sp-rect.h:78
const char * displayName() const override
The item's type name as a translated human string.
Definition sp-rect.cpp:245
void tag_name_changed(gchar const *oldname, gchar const *newname) override
Definition sp-rect.cpp:46
SVGLength x
Definition sp-rect.h:76
double getVisibleRy() const
Definition sp-rect.cpp:497
GenericRectType type
Definition sp-rect.h:75
~SPRect() override
void setVisibleWidth(double rx)
Definition sp-rect.cpp:550
void modified(unsigned int flags) override
Definition sp-rect.cpp:341
SPRect()
Definition sp-rect.cpp:34
void update_patheffect(bool write) override
Definition sp-rect.cpp:381
void setVisibleRy(double ry)
Definition sp-rect.cpp:473
Geom::Affine set_transform(Geom::Affine const &xform) override
Definition sp-rect.cpp:388
void setRy(bool set, double value)
Definition sp-rect.cpp:371
SVGLength ry
Definition sp-rect.h:81
void snappoints(std::vector< Inkscape::SnapCandidatePoint > &p, Inkscape::SnapPreferences const *snapprefs) const override
Definition sp-rect.cpp:590
void compensateRxRy(Geom::Affine xform)
Definition sp-rect.cpp:515
Geom::Rect getRect() const
Definition sp-rect.cpp:508
void set_shape() override
Definition sp-rect.cpp:251
void setPosition(double x, double y, double width, double height)
Definition sp-rect.cpp:352
void update(SPCtx *ctx, unsigned int flags) override
Definition sp-rect.cpp:145
SVGLength y
Definition sp-rect.h:77
int tag() const override
Definition sp-rect.h:33
static double vectorStretch(Geom::Point p0, Geom::Point p1, Geom::Affine xform)
Returns the ratio in which the vector from p0 to p1 is stretched by transform.
Definition sp-rect.cpp:452
double getVisibleWidth() const
Definition sp-rect.cpp:568
Base class for shapes, including <path> element.
Definition sp-shape.h:38
SVG length type.
Definition svg-length.h:22
Contains forward declarations of 2geom types.
static cairo_user_data_key_t key
GenericRectType
Definition sp-rect.h:23
@ SP_GENERIC_RECT
Definition sp-rect.h:25
@ SP_GENERIC_PATH
Definition sp-rect.h:26
@ SP_GENERIC_RECT_UNDEFINED
Definition sp-rect.h:24
Interface for XML documents.
Definition document.h:43
Unused.
Definition sp-object.h:94