Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
OpenBoard
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lifo
Nicolas Ollinger
OpenBoard
Commits
44d5c087
Commit
44d5c087
authored
Sep 21, 2012
by
Guillaume Burel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed deep copy.
Angles are now copied when saving tool state.
parent
519c39c8
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
30 additions
and
27 deletions
+30
-27
UBGraphicsAristo.cpp
src/tools/UBGraphicsAristo.cpp
+28
-25
UBGraphicsAristo.h
src/tools/UBGraphicsAristo.h
+2
-2
No files found.
src/tools/UBGraphicsAristo.cpp
View file @
44d5c087
...
...
@@ -40,8 +40,8 @@ UBGraphicsAristo::UBGraphicsAristo()
,
mResizing
(
false
)
,
mRotating
(
false
)
,
mOrientation
(
Undefined
)
,
mAngle
(
0
)
,
m
Current
Angle
(
0
)
,
m
Rotated
Angle
(
0
)
,
m
Marker
Angle
(
0
)
,
mStartAngle
(
0
)
,
mSpan
(
180
)
,
mHFlipSvgItem
(
0
)
...
...
@@ -190,8 +190,11 @@ void UBGraphicsAristo::copyItemParameters(UBItem *copy) const
{
/* TODO: copy all members */
cp
->
setPos
(
this
->
pos
());
cp
->
setPath
(
this
->
path
());
cp
->
setTransform
(
this
->
transform
());
cp
->
setBoundingRect
(
boundingRect
());
cp
->
setOrientation
(
mOrientation
);
cp
->
mRotatedAngle
=
mRotatedAngle
;
cp
->
mMarkerAngle
=
mMarkerAngle
;
}
}
...
...
@@ -401,23 +404,23 @@ void UBGraphicsAristo::paintMarker(QPainter *painter)
/* adjusting marker button */
mMarkerSvgItem
->
resetTransform
();
mMarkerSvgItem
->
translate
(
-
markerButtonRect
().
left
(),
-
markerButtonRect
().
top
());
mMarkerSvgItem
->
rotate
(
m
Current
Angle
);
mMarkerSvgItem
->
rotate
(
m
Marker
Angle
);
mMarkerSvgItem
->
translate
(
markerButtonRect
().
left
(),
markerButtonRect
().
top
());
qreal
co
=
cos
((
m
Current
Angle
)
*
PI
/
180
);
qreal
si
=
sin
((
m
Current
Angle
)
*
PI
/
180
);
qreal
co
=
cos
((
m
Marker
Angle
)
*
PI
/
180
);
qreal
si
=
sin
((
m
Marker
Angle
)
*
PI
/
180
);
/* Setting point composing the line (from point C) which intersects the line we want to draw. */
QPointF
referencePoint
;
if
(
mOrientation
==
Bottom
)
{
if
((
int
)
m
Current
Angle
%
360
<
90
)
if
((
int
)
m
Marker
Angle
%
360
<
90
)
referencePoint
=
B
;
else
referencePoint
=
A
;
}
else
if
(
mOrientation
==
Top
)
{
if
((
int
)
m
CurrentAngle
%
360
<
270
&&
(
int
)
mCurrent
Angle
%
360
>
0
)
if
((
int
)
m
MarkerAngle
%
360
<
270
&&
(
int
)
mMarker
Angle
%
360
>
0
)
referencePoint
=
A
;
else
referencePoint
=
B
;
...
...
@@ -430,7 +433,7 @@ void UBGraphicsAristo::paintMarker(QPainter *painter)
painter
->
drawLine
(
QLineF
(
intersectionPoint
,
rotationCenter
()));
/* drawing angle value */
qreal
rightAngle
=
mOrientation
==
Bottom
?
m
CurrentAngle
:
360
-
mCurrent
Angle
;
qreal
rightAngle
=
mOrientation
==
Bottom
?
m
MarkerAngle
:
360
-
mMarker
Angle
;
QString
angleText
=
QString
(
"%1°"
).
arg
(
rightAngle
,
0
,
'f'
,
1
);
...
...
@@ -450,18 +453,18 @@ void UBGraphicsAristo::paintMarker(QPainter *painter)
void
UBGraphicsAristo
::
rotateAroundCenter
(
qreal
angle
)
{
qreal
oldAngle
=
mAngle
;
mAngle
=
angle
;
qreal
oldAngle
=
m
Rotated
Angle
;
m
Rotated
Angle
=
angle
;
QTransform
transform
;
rotateAroundCenter
(
transform
,
rotationCenter
());
setTransform
(
transform
,
true
);
mAngle
=
oldAngle
+
angle
;
// We have to store absolute value for FLIP case
m
Rotated
Angle
=
oldAngle
+
angle
;
// We have to store absolute value for FLIP case
}
void
UBGraphicsAristo
::
rotateAroundCenter
(
QTransform
&
transform
,
QPointF
center
)
{
transform
.
translate
(
center
.
x
(),
center
.
y
());
transform
.
rotate
(
mAngle
);
transform
.
rotate
(
m
Rotated
Angle
);
transform
.
translate
(
-
center
.
x
(),
-
center
.
y
());
}
...
...
@@ -582,20 +585,20 @@ void UBGraphicsAristo::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
else
if
(
mMarking
)
{
qreal
angle
=
currentLine
.
angleTo
(
lastLine
);
m
Current
Angle
+=
angle
;
m
CurrentAngle
-=
(
int
)(
mCurrent
Angle
/
360
)
*
360
;
m
Marker
Angle
+=
angle
;
m
MarkerAngle
-=
(
int
)(
mMarker
Angle
/
360
)
*
360
;
if
(
mOrientation
==
Bottom
)
{
if
(
m
Current
Angle
>=
270
)
m
Current
Angle
=
0
;
else
if
(
m
Current
Angle
>
180
)
m
Current
Angle
=
180
;
if
(
m
Marker
Angle
>=
270
)
m
Marker
Angle
=
0
;
else
if
(
m
Marker
Angle
>
180
)
m
Marker
Angle
=
180
;
}
else
if
(
mOrientation
==
Top
)
{
if
(
m
Current
Angle
<
90
)
m
Current
Angle
=
360
;
else
if
(
m
Current
Angle
<
180
)
m
Current
Angle
=
180
;
if
(
m
Marker
Angle
<
90
)
m
Marker
Angle
=
360
;
else
if
(
m
Marker
Angle
<
180
)
m
Marker
Angle
=
180
;
}
update
();
}
...
...
@@ -622,7 +625,7 @@ void UBGraphicsAristo::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
break
;
case
HorizontalFlip
:
/* substracting difference to zero [2pi] twice, to obtain the desired angle */
m
CurrentAngle
-=
2
*
(
mCurrentAngle
-
(
int
)(
mCurrent
Angle
/
360
)
*
360
)
-
360
;
m
MarkerAngle
-=
2
*
(
mMarkerAngle
-
(
int
)(
mMarker
Angle
/
360
)
*
360
)
-
360
;
/* setting new orientation */
switch
(
mOrientation
)
{
case
Bottom
:
...
...
@@ -749,7 +752,7 @@ UBGraphicsAristo::Tool UBGraphicsAristo::toolFromPos(QPointF pos)
{
pos
=
pos
-
rotationCenter
();
qreal
rotationAngle
=
mOrientation
==
Bottom
?
-
m
CurrentAngle
:
Top
?
360
*
(
int
)(
mCurrentAngle
/
360
+
1
)
-
mCurrent
Angle
:
0
;
qreal
rotationAngle
=
mOrientation
==
Bottom
?
-
m
MarkerAngle
:
Top
?
360
*
(
int
)(
mMarkerAngle
/
360
+
1
)
-
mMarker
Angle
:
0
;
QTransform
t
;
t
.
rotate
(
rotationAngle
);
...
...
src/tools/UBGraphicsAristo.h
View file @
44d5c087
...
...
@@ -132,8 +132,8 @@ private:
Orientation
mOrientation
;
qreal
mAngle
;
qreal
m
Current
Angle
;
qreal
m
Rotated
Angle
;
qreal
m
Marker
Angle
;
qreal
mStartAngle
;
qreal
mSpan
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment