QCAD
Open Source 2D CAD
Loading...
Searching...
No Matches
RRestrictAngleLength.h
Go to the documentation of this file.
1
20#ifndef RRESTRICTANGLELENGTH_H
21#define RRESTRICTANGLELENGTH_H
22
23#include "snap_global.h"
24
25#include "RSnapRestriction.h"
26
28
38public:
43 AngleLength
44 };
45
47 RSnapRestriction(documentInterface),
48 mode(RRestrictAngleLength::AngleLength),
49 baseAngle(0.0),
50 angle(0.0),
51 baseLength(0.0),
52 length(0.0) {}
53
54 RRestrictAngleLength(RDocumentInterface* documentInterface, double baseAngle, double angle, double baseLength, double length)
55 : RSnapRestriction(documentInterface),
56 mode(RRestrictAngleLength::AngleLength),
57 baseAngle(baseAngle), angle(angle),
58 baseLength(baseLength), length(length),
59 repeatAngle(false), repeatLength(false) {}
60
62
63 virtual RVector restrictSnap(const RVector& position, const RVector& relativeZero);
64
65 virtual void setBaseAngle(double a) {
66 baseAngle = a;
67 }
68
69 virtual void setAngle(double a) {
70 angle = a;
71 }
72
73 virtual void setBaseLength(double l) {
74 baseLength = l;
75 }
76
77 virtual void setLength(double l) {
78 length = l;
79 }
80
81 virtual void setRestrictAngle(bool on) {
82 if (on) {
83 if (mode==None) {
84 mode = Angle;
85 }
86 if (mode==Length) {
87 mode = AngleLength;
88 }
89 }
90 else {
91 if (mode==Angle) {
92 mode = None;
93 }
94 if (mode==AngleLength) {
95 mode = Length;
96 }
97 }
98 }
99
100 virtual void setRestrictLength(bool on) {
101 if (on) {
102 if (mode==None) {
103 mode = Length;
104 }
105 if (mode==Angle) {
106 mode = AngleLength;
107 }
108 }
109 else {
110 if (mode==Length) {
111 mode = None;
112 }
113 if (mode==AngleLength) {
114 mode = Angle;
115 }
116 }
117 }
118
119 virtual void setRepeatAngle(bool on) {
120 repeatAngle = on;
121 }
122
123 virtual void setRepeatLength(bool on) {
124 repeatLength = on;
125 }
126
127protected:
129 double baseAngle;
130 double angle;
132 double length;
135};
136
139
140#endif
Q_DECLARE_METATYPE(RMath *)
Interface for interaction between a graphics document and a user.
Definition RDocumentInterface.h:97
Angle and length snap restriction implementation.
Definition RRestrictAngleLength.h:37
double length
Definition RRestrictAngleLength.h:132
RRestrictAngleLength(RDocumentInterface *documentInterface, double baseAngle, double angle, double baseLength, double length)
Definition RRestrictAngleLength.h:54
bool repeatLength
Definition RRestrictAngleLength.h:134
virtual void setRepeatAngle(bool on)
Definition RRestrictAngleLength.h:119
virtual void setAngle(double a)
Definition RRestrictAngleLength.h:69
virtual void setRepeatLength(bool on)
Definition RRestrictAngleLength.h:123
bool repeatAngle
Definition RRestrictAngleLength.h:133
virtual ~RRestrictAngleLength()
Definition RRestrictAngleLength.h:61
virtual void setBaseAngle(double a)
Definition RRestrictAngleLength.h:65
virtual void setBaseLength(double l)
Definition RRestrictAngleLength.h:73
RRestrictAngleLength(RDocumentInterface *documentInterface=NULL)
Definition RRestrictAngleLength.h:46
AngleLengthMode
Definition RRestrictAngleLength.h:39
@ Length
Definition RRestrictAngleLength.h:42
@ None
Definition RRestrictAngleLength.h:40
@ Angle
Definition RRestrictAngleLength.h:41
double baseLength
Definition RRestrictAngleLength.h:131
virtual void setRestrictLength(bool on)
Definition RRestrictAngleLength.h:100
double baseAngle
Definition RRestrictAngleLength.h:129
virtual void setRestrictAngle(bool on)
Definition RRestrictAngleLength.h:81
AngleLengthMode mode
Definition RRestrictAngleLength.h:128
double angle
Definition RRestrictAngleLength.h:130
virtual void setLength(double l)
Definition RRestrictAngleLength.h:77
Abstract base class for all snap restriction implementations.
Definition RSnapRestriction.h:37
virtual RVector restrictSnap(const RVector &position, const RVector &relativeZero)=0
Represents a 3d vector (x/y/z).
Definition RVector.h:47
#define NULL
Definition opennurbs_system.h:256
#define false
Definition opennurbs_system.h:252
#define QCADSNAP_EXPORT
Definition snap_global.h:10