1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
#define __SNAPPREFERENCES_CPP__
/**
* \file snap-preferences.cpp
* \brief Storing of snapping preferences
*
* Authors:
* Diederik van Lierop <mail@diedenrezi.nl>
*
* Copyright (C) 2008 Authors
*
* Released under GNU GPL, read the file 'COPYING' for more information
*/
#include "inkscape.h"
#include "snap-preferences.h"
Inkscape::SnapPreferences::PointType const Inkscape::SnapPreferences::SNAPPOINT_NODE = 0x1;
Inkscape::SnapPreferences::PointType const Inkscape::SnapPreferences::SNAPPOINT_BBOX = 0x2;
Inkscape::SnapPreferences::PointType const Inkscape::SnapPreferences::SNAPPOINT_GUIDE = 0x4;
Inkscape::SnapPreferences::SnapPreferences() :
_include_item_center(false),
_intersectionGG(true),
_snap_to_grids(true),
_snap_to_guides(true),
_snap_enabled_globally(true),
_snap_postponed_globally(false),
_snap_to_itemnode(true), _snap_to_itempath(true),
_snap_to_bboxnode(true), _snap_to_bboxpath(true),
_snap_to_page_border(false),
_strict_snapping(true)
{
setSnapFrom(SNAPPOINT_BBOX | SNAPPOINT_NODE | SNAPPOINT_GUIDE, true); //Snap any point. In v0.45 and earlier, this was controlled in the preferences tab
}
/*
* The snappers have too many parameters to adjust individually. Therefore only
* two snapping modes are presented to the user: snapping bounding box corners (to
* other bounding boxes, grids or guides), and/or snapping nodes (to other nodes,
* paths, grids or guides). To select either of these modes (or both), use the
* methods defined below: setSnapModeBBox() and setSnapModeNode().
*
* */
void Inkscape::SnapPreferences::setSnapModeBBox(bool enabled)
{
if (enabled) {
_snap_from |= Inkscape::SnapPreferences::SNAPPOINT_BBOX;
} else {
_snap_from &= ~Inkscape::SnapPreferences::SNAPPOINT_BBOX;
}
}
bool Inkscape::SnapPreferences::getSnapModeBBox() const
{
return (_snap_from & Inkscape::SnapPreferences::SNAPPOINT_BBOX);
}
void Inkscape::SnapPreferences::setSnapModeNode(bool enabled)
{
if (enabled) {
_snap_from |= Inkscape::SnapPreferences::SNAPPOINT_NODE;
} else {
_snap_from &= ~Inkscape::SnapPreferences::SNAPPOINT_NODE;
}
}
bool Inkscape::SnapPreferences::getSnapModeNode() const
{
return (_snap_from & Inkscape::SnapPreferences::SNAPPOINT_NODE);
}
bool Inkscape::SnapPreferences::getSnapModeBBoxOrNodes() const
{
return (_snap_from & (Inkscape::SnapPreferences::SNAPPOINT_BBOX | Inkscape::SnapPreferences::SNAPPOINT_NODE) );
}
bool Inkscape::SnapPreferences::getSnapModeAny() const
{
return (_snap_from != 0);
}
void Inkscape::SnapPreferences::setSnapModeGuide(bool enabled)
{
if (enabled) {
_snap_from |= Inkscape::SnapPreferences::SNAPPOINT_GUIDE;
} else {
_snap_from &= ~Inkscape::SnapPreferences::SNAPPOINT_GUIDE;
}
}
bool Inkscape::SnapPreferences::getSnapModeGuide() const
{
return (_snap_from & Inkscape::SnapPreferences::SNAPPOINT_GUIDE);
}
/**
* Turn on/off snapping of specific point types.
* \param t Point type.
* \param s true to snap to this point type, otherwise false;
*/
void Inkscape::SnapPreferences::setSnapFrom(PointType t, bool s)
{
if (s) {
_snap_from |= t;
} else {
_snap_from &= ~t;
}
}
/**
* \param t Point type.
* \return true if snapper will snap this type of point, otherwise false.
*/
bool Inkscape::SnapPreferences::getSnapFrom(PointType t) const
{
return (_snap_from & t);
}
/*
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:encoding=utf-8:textwidth=99 :
|