Inkscape
Vector Graphics Editor
Loading...
Searching...
No Matches
sp-grid.h
Go to the documentation of this file.
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Inkscape SPGrid implementation
4 *
5 * Authors:
6 * James Ferrarelli
7 * Johan Engelen <johan@shouraizou.nl>
8 * Lauris Kaplinski
9 * Abhishek Sharma
10 * Jon A. Cruz <jon@joncruz.org>
11 * Tavmong Bah <tavmjong@free.fr>
12 * see git history
13 *
14 * Copyright (C) 2022 Authors
15 *
16 * Released under GNU GPL v2+, read the file 'COPYING' for more information.
17 */
18#ifndef SEEN_SP_GRID_H_
19#define SEEN_SP_GRID_H_
20
21#include "colors/color.h"
23#include "object/sp-object.h"
24#include "svg/svg-bool.h"
25#include "svg/svg-length.h"
26#include "svg/svg-angle.h"
27#include <memory>
28#include <vector>
29
30class SPDesktop;
31
32namespace Inkscape {
33 class CanvasItemGrid;
34 class Snapper;
35
36 namespace Util {
37 class Unit;
38 }
39} // namespace Inkscape
40
41enum class GridType
42{
46};
47
48class SPGrid final : public SPObject {
49public:
50 SPGrid();
51 ~SPGrid() override;
52 int tag() const override { return tag_of<decltype(*this)>; }
53
55
56 void setPrefValues();
57
58 void show(SPDesktop *desktop);
59 void hide(SPDesktop const *desktop);
60
61 bool isEnabled() const;
62 void setEnabled(bool v);
63
64 bool isVisible() const { return isEnabled() && _visible; }
65 void setVisible(bool v);
66
67 bool isDotted() const { return _dotted; }
68 void setDotted(bool v);
69
71 void setSnapToVisibleOnly(bool v);
72
74 void setMajorColor(Inkscape::Colors::Color const &color);
75
77 void setMinorColor(Inkscape::Colors::Color const &color);
78
79 Geom::Point getOrigin() const;
80 void setOrigin(Geom::Point const &new_origin);
81
82 Geom::Point getSpacing() const;
83 void setSpacing(Geom::Point const &spacing);
84
86 void setMajorLineInterval(guint32 interval);
87
88 double getAngleX() const { return _angle_x.computed; }
89 void setAngleX(double deg);
90
91 double getAngleZ() const { return _angle_z.computed; }
92 void setAngleZ(double deg);
93
96
97 const char *typeName() const;
98 const char *displayName() const;
99
100 GridType getType() const { return _grid_type; }
101 const char *getSVGType() const;
102 void setSVGType(const char *svgtype);
103
104 void setUnit(const Glib::ustring &units);
105 const Inkscape::Util::Unit *getUnit() const;
106
107 bool isPixel() const { return _pixel; }
108 bool isLegacy() const { return _legacy; }
109
110 void scale(const Geom::Scale &scale);
112
114
115 std::pair<Geom::Point, Geom::Point> getEffectiveOriginAndSpacing(int index = -1) const;
116
117 std::vector<CanvasItemPtr<Inkscape::CanvasItemGrid>> views;
118
119 void setType(GridType type);
120protected:
121 void build(SPDocument *doc, Inkscape::XML::Node *repr) override;
122 void set(SPAttr key, const char *value) override;
123 void release() override;
124 void modified(unsigned int flags) override;
125 void update(SPCtx *ctx, unsigned int flags) override;
126
127private:
129 void _recreateViews();
130
139 SVGAngle _angle_x; // only for axonomgrid, stored in degrees
140 SVGAngle _angle_z; // only for axonomgrid, stored in degrees
141 SVGLength _gap_x; // only for modular grid
143 SVGLength _margin_x; // only for modular grid
145
147
150
151 bool _pixel; // is in user units
152 bool _legacy; // a grid from versions prior to inkscape 0.98
153
155
156 std::unique_ptr<Inkscape::Snapper> _snapper;
157
159
162};
163
164#endif // SEEN_SP_GRID_H_
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
Two-dimensional point that doubles as a vector.
Definition point.h:66
Scaling from the origin.
Definition transforms.h:150
Parent for classes that can snap points to something.
Definition snapper.h:39
Interface for refcounted XML nodes.
Definition node.h:80
To do: update description of desktop.
Definition desktop.h:149
Typed SVG document implementation.
Definition document.h:101
sigc::connection _page_modified_connection
Definition sp-grid.h:161
SVGAngle _angle_z
Definition sp-grid.h:140
Inkscape::CanvasItemGrid * getAssociatedView(SPDesktop const *desktop)
Definition sp-grid.cpp:638
SVGBool _snap_to_visible_only
Definition sp-grid.h:133
void setType(GridType type)
Definition sp-grid.cpp:775
static void create_new(SPDocument *doc, Inkscape::XML::Node *parent, GridType type)
Definition sp-grid.cpp:57
Geom::Point get_margin() const
Definition sp-grid.h:95
void modified(unsigned int flags) override
Definition sp-grid.cpp:458
void setEnabled(bool v)
Definition sp-grid.cpp:660
~SPGrid() override
double getAngleX() const
Definition sp-grid.h:88
SVGLength _gap_x
Definition sp-grid.h:141
bool _legacy
Definition sp-grid.h:152
Geom::Point getSpacing() const
Definition sp-grid.cpp:699
int tag() const override
Definition sp-grid.h:52
void show(SPDesktop *desktop)
creates a new grid canvasitem for the SPDesktop given as parameter.
Definition sp-grid.cpp:500
const char * getSVGType() const
Definition sp-grid.cpp:615
bool isVisible() const
Definition sp-grid.h:64
Inkscape::Colors::Color _minor_color
Definition sp-grid.h:149
void _recreateViews()
Definition sp-grid.cpp:449
void hide(SPDesktop const *desktop)
Definition sp-grid.cpp:517
SVGLength _origin_y
Definition sp-grid.h:136
bool _pixel
Definition sp-grid.h:151
Inkscape::Colors::Color const & getMinorColor() const
Definition sp-grid.h:76
Inkscape::Snapper * snapper()
Definition sp-grid.cpp:536
guint32 getMajorLineInterval() const
Definition sp-grid.h:85
SVGLength _margin_x
Definition sp-grid.h:143
bool isLegacy() const
Definition sp-grid.h:108
double getAngleZ() const
Definition sp-grid.h:91
void setOrigin(Geom::Point const &new_origin)
Definition sp-grid.cpp:675
void _checkOldGrid(SPDocument *doc, Inkscape::XML::Node *repr)
checks for old grid attriubte keys from version 0.46 to determine if there needs to be legacy attribu...
Definition sp-grid.cpp:259
void setAngleX(double deg)
Definition sp-grid.cpp:735
const char * typeName() const
Definition sp-grid.cpp:749
void update(SPCtx *ctx, unsigned int flags) override
Definition sp-grid.cpp:466
Inkscape::Colors::Color const & getMajorColor() const
Definition sp-grid.h:73
void release() override
Definition sp-grid.cpp:115
bool isEnabled() const
Definition sp-grid.cpp:655
void setMajorColor(Inkscape::Colors::Color const &color)
Definition sp-grid.cpp:684
void setDotted(bool v)
Definition sp-grid.cpp:720
void setSVGType(const char *svgtype)
Definition sp-grid.cpp:625
bool isDotted() const
Definition sp-grid.h:67
SVGBool _enabled
Definition sp-grid.h:132
SVGBool _dotted
Definition sp-grid.h:134
Inkscape::Util::Unit const * _display_unit
Definition sp-grid.h:158
Geom::Point get_gap() const
Definition sp-grid.h:94
SVGAngle _angle_x
Definition sp-grid.h:139
SVGLength _spacing_x
Definition sp-grid.h:137
std::pair< Geom::Point, Geom::Point > getEffectiveOriginAndSpacing(int index=-1) const
Definition sp-grid.cpp:547
bool isPixel() const
Definition sp-grid.h:107
void setAngleZ(double deg)
Definition sp-grid.cpp:742
const Inkscape::Util::Unit * getUnit() const
Definition sp-grid.cpp:759
Inkscape::Colors::Color _major_color
Definition sp-grid.h:148
SVGLength _origin_x
Definition sp-grid.h:135
const char * displayName() const
Definition sp-grid.cpp:605
SVGLength _spacing_y
Definition sp-grid.h:138
void setSnapToVisibleOnly(bool v)
Definition sp-grid.cpp:727
GridType getType() const
Definition sp-grid.h:100
std::unique_ptr< Inkscape::Snapper > _snapper
Definition sp-grid.h:156
void setSpacing(Geom::Point const &spacing)
Definition sp-grid.cpp:704
SVGBool _visible
Definition sp-grid.h:131
void setPrefValues()
Definition sp-grid.cpp:372
sigc::connection _page_selected_connection
Definition sp-grid.h:160
GridType _grid_type
Definition sp-grid.h:154
SVGLength _gap_y
Definition sp-grid.h:142
void setUnit(const Glib::ustring &units)
Definition sp-grid.cpp:764
Geom::Point getOrigin() const
Definition sp-grid.cpp:670
void build(SPDocument *doc, Inkscape::XML::Node *repr) override
Definition sp-grid.cpp:83
void setMinorColor(Inkscape::Colors::Color const &color)
Definition sp-grid.cpp:691
void setMajorLineInterval(guint32 interval)
Definition sp-grid.cpp:713
std::vector< CanvasItemPtr< Inkscape::CanvasItemGrid > > views
Definition sp-grid.h:117
SVGLength _margin_y
Definition sp-grid.h:144
void setVisible(bool v)
Definition sp-grid.cpp:648
SPGrid()
Definition sp-grid.cpp:45
guint32 _major_line_interval
Definition sp-grid.h:146
bool getSnapToVisibleOnly() const
Definition sp-grid.h:70
SPObject is an abstract base class of all of the document nodes at the SVG document level.
Definition sp-object.h:160
Inkscape::XML::Node * repr
Definition sp-object.h:193
SPObject * parent
Definition sp-object.h:189
double computed
Definition svg-angle.h:45
SVG length type.
Definition svg-length.h:22
float computed
Definition svg-length.h:50
unsigned int guint32
Miscellaneous supporting code.
Definition document.h:93
Helper class to stream background task notifications as a series of messages.
static cairo_user_data_key_t key
GridType
Definition sp-grid.h:42
Unused.
Definition sp-object.h:94
SVG angle type.
int index
SPDesktop * desktop