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
0d68fec3
Commit
0d68fec3
authored
12 years ago
by
Aleksei Kanash
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of github.com:Sankore/Sankore-3.1
parents
ed45a909
775c9b9e
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
84 additions
and
39 deletions
+84
-39
UBDrawingController.cpp
src/board/UBDrawingController.cpp
+2
-2
UBDrawingController.h
src/board/UBDrawingController.h
+1
-1
UBGraphicsDelegateFrame.cpp
src/domain/UBGraphicsDelegateFrame.cpp
+3
-3
UBGraphicsItemDelegate.cpp
src/domain/UBGraphicsItemDelegate.cpp
+11
-9
UBGraphicsScene.cpp
src/domain/UBGraphicsScene.cpp
+67
-24
No files found.
src/board/UBDrawingController.cpp
View file @
0d68fec3
...
@@ -45,7 +45,7 @@ UBDrawingController::UBDrawingController(QObject * parent)
...
@@ -45,7 +45,7 @@ UBDrawingController::UBDrawingController(QObject * parent)
,
mActiveRuler
(
NULL
)
,
mActiveRuler
(
NULL
)
,
mStylusTool
((
UBStylusTool
::
Enum
)
-
1
)
,
mStylusTool
((
UBStylusTool
::
Enum
)
-
1
)
,
mLatestDrawingTool
((
UBStylusTool
::
Enum
)
-
1
)
,
mLatestDrawingTool
((
UBStylusTool
::
Enum
)
-
1
)
,
mDrawingMode
(
DRAWING_MODE
)
,
mDrawingMode
(
/*DRAWING_MODE*/
eDrawingMode_Vector
)
{
{
connect
(
UBSettings
::
settings
(),
SIGNAL
(
colorContextChanged
()),
this
,
SIGNAL
(
colorPaletteChanged
()));
connect
(
UBSettings
::
settings
(),
SIGNAL
(
colorContextChanged
()),
this
,
SIGNAL
(
colorPaletteChanged
()));
...
@@ -114,7 +114,7 @@ void UBDrawingController::setStylusTool(int tool)
...
@@ -114,7 +114,7 @@ void UBDrawingController::setStylusTool(int tool)
UBApplication
::
mainWindow
->
actionPen
->
setChecked
(
true
);
UBApplication
::
mainWindow
->
actionPen
->
setChecked
(
true
);
else
if
(
mStylusTool
==
UBStylusTool
::
Eraser
){
else
if
(
mStylusTool
==
UBStylusTool
::
Eraser
){
UBApplication
::
mainWindow
->
actionEraser
->
setChecked
(
true
);
UBApplication
::
mainWindow
->
actionEraser
->
setChecked
(
true
);
mDrawingMode
=
eDrawingMode_Artistic
;
//
mDrawingMode = eDrawingMode_Artistic;
}
}
else
if
(
mStylusTool
==
UBStylusTool
::
Marker
)
else
if
(
mStylusTool
==
UBStylusTool
::
Marker
)
UBApplication
::
mainWindow
->
actionMarker
->
setChecked
(
true
);
UBApplication
::
mainWindow
->
actionMarker
->
setChecked
(
true
);
...
...
This diff is collapsed.
Click to expand it.
src/board/UBDrawingController.h
View file @
0d68fec3
...
@@ -27,7 +27,7 @@ typedef enum{
...
@@ -27,7 +27,7 @@ typedef enum{
eDrawingMode_Vector
eDrawingMode_Vector
}
eDrawingMode
;
}
eDrawingMode
;
#define DRAWING_MODE eDrawingMode_
Artistic
#define DRAWING_MODE eDrawingMode_
Vector
class
UBDrawingController
:
public
QObject
class
UBDrawingController
:
public
QObject
{
{
...
...
This diff is collapsed.
Click to expand it.
src/domain/UBGraphicsDelegateFrame.cpp
View file @
0d68fec3
...
@@ -583,9 +583,9 @@ void UBGraphicsDelegateFrame::positionHandles()
...
@@ -583,9 +583,9 @@ void UBGraphicsDelegateFrame::positionHandles()
{
{
QRectF
itemRect
=
delegated
()
->
boundingRect
();
QRectF
itemRect
=
delegated
()
->
boundingRect
();
if
(
mDelegate
->
getToolBarItem
()
->
isVisibleOnBoard
()
// if (mDelegate->getToolBarItem()->isVisibleOnBoard()
&&
mDelegate
->
getToolBarItem
()
->
isShifting
())
//
&& mDelegate->getToolBarItem()->isShifting())
itemRect
.
setHeight
(
itemRect
.
height
()
+
mDelegate
->
getToolBarItem
()
->
rect
().
height
()
*
mDelegate
->
antiScaleRatio
()
*
1.1
);
//
itemRect.setHeight(itemRect.height() + mDelegate->getToolBarItem()->rect().height() * mDelegate->antiScaleRatio() * 1.1);
QTransform
itemTransform
=
delegated
()
->
sceneTransform
();
QTransform
itemTransform
=
delegated
()
->
sceneTransform
();
QPointF
topLeft
=
itemTransform
.
map
(
itemRect
.
topLeft
());
QPointF
topLeft
=
itemTransform
.
map
(
itemRect
.
topLeft
());
...
...
This diff is collapsed.
Click to expand it.
src/domain/UBGraphicsItemDelegate.cpp
View file @
0d68fec3
...
@@ -117,7 +117,7 @@ UBGraphicsItemDelegate::UBGraphicsItemDelegate(QGraphicsItem* pDelegated, QObjec
...
@@ -117,7 +117,7 @@ UBGraphicsItemDelegate::UBGraphicsItemDelegate(QGraphicsItem* pDelegated, QObjec
void
UBGraphicsItemDelegate
::
init
()
void
UBGraphicsItemDelegate
::
init
()
{
{
mToolBarItem
=
new
UBGraphicsToolBarItem
(
delegated
());
//
mToolBarItem = new UBGraphicsToolBarItem(delegated());
mFrame
=
new
UBGraphicsDelegateFrame
(
this
,
QRectF
(
0
,
0
,
0
,
0
),
mFrameWidth
,
mRespectRatio
);
mFrame
=
new
UBGraphicsDelegateFrame
(
this
,
QRectF
(
0
,
0
,
0
,
0
),
mFrameWidth
,
mRespectRatio
);
mFrame
->
hide
();
mFrame
->
hide
();
...
@@ -167,7 +167,9 @@ UBGraphicsItemDelegate::~UBGraphicsItemDelegate()
...
@@ -167,7 +167,9 @@ UBGraphicsItemDelegate::~UBGraphicsItemDelegate()
QVariant
UBGraphicsItemDelegate
::
itemChange
(
QGraphicsItem
::
GraphicsItemChange
change
,
const
QVariant
&
value
)
QVariant
UBGraphicsItemDelegate
::
itemChange
(
QGraphicsItem
::
GraphicsItemChange
change
,
const
QVariant
&
value
)
{
{
if
(
change
==
QGraphicsItem
::
ItemSelectedHasChanged
)
{
if
(
change
==
QGraphicsItem
::
ItemChildAddedChange
){
}
else
if
(
change
==
QGraphicsItem
::
ItemSelectedHasChanged
)
{
bool
ok
;
bool
ok
;
bool
selected
=
value
.
toUInt
(
&
ok
);
bool
selected
=
value
.
toUInt
(
&
ok
);
if
(
ok
)
{
if
(
ok
)
{
...
@@ -321,17 +323,17 @@ void UBGraphicsItemDelegate::positionHandles()
...
@@ -321,17 +323,17 @@ void UBGraphicsItemDelegate::positionHandles()
updateButtons
(
true
);
updateButtons
(
true
);
if
(
mToolBarItem
->
isVisibleOnBoard
())
//
if (mToolBarItem->isVisibleOnBoard())
{
//
{
updateToolBar
();
//
updateToolBar();
mToolBarItem
->
show
();
//
mToolBarItem->show();
}
//
}
}
else
{
}
else
{
foreach
(
DelegateButton
*
button
,
mButtons
)
foreach
(
DelegateButton
*
button
,
mButtons
)
button
->
hide
();
button
->
hide
();
mFrame
->
hide
();
mFrame
->
hide
();
mToolBarItem
->
hide
();
//
mToolBarItem->hide();
}
}
}
}
...
@@ -371,7 +373,7 @@ void UBGraphicsItemDelegate::remove(bool canUndo)
...
@@ -371,7 +373,7 @@ void UBGraphicsItemDelegate::remove(bool canUndo)
scene
->
removeItem
(
mFrame
);
scene
->
removeItem
(
mFrame
);
scene
->
removeItem
(
mDelegated
);
scene
->
removeItem
(
mDelegated
);
scene
->
removeItem
(
mToolBarItem
);
//
scene->removeItem(mToolBarItem);
if
(
canUndo
)
if
(
canUndo
)
{
{
...
...
This diff is collapsed.
Click to expand it.
src/domain/UBGraphicsScene.cpp
View file @
0d68fec3
...
@@ -308,9 +308,11 @@ UBGraphicsScene::~UBGraphicsScene()
...
@@ -308,9 +308,11 @@ UBGraphicsScene::~UBGraphicsScene()
void
UBGraphicsScene
::
selectionChangedProcessing
()
void
UBGraphicsScene
::
selectionChangedProcessing
()
{
{
if
(
selectedItems
().
count
())
if
(
selectedItems
().
count
()){
qDebug
()
<<
"Selected item bounding rect: "
<<
selectedItems
().
first
()
->
boundingRect
();
UBApplication
::
showMessage
(
"ZValue is "
+
QString
::
number
(
selectedItems
().
first
()
->
zValue
(),
'f'
)
+
"own z value is "
UBApplication
::
showMessage
(
"ZValue is "
+
QString
::
number
(
selectedItems
().
first
()
->
zValue
(),
'f'
)
+
"own z value is "
+
QString
::
number
(
selectedItems
().
first
()
->
data
(
UBGraphicsItemData
::
ItemOwnZValue
).
toReal
(),
'f'
));
+
QString
::
number
(
selectedItems
().
first
()
->
data
(
UBGraphicsItemData
::
ItemOwnZValue
).
toReal
(),
'f'
));
}
}
}
void
UBGraphicsScene
::
enableGroupingButton
()
void
UBGraphicsScene
::
enableGroupingButton
()
{
{
...
@@ -747,6 +749,8 @@ void UBGraphicsScene::drawLineTo(const QPointF &pEndPoint, const qreal &pWidth,
...
@@ -747,6 +749,8 @@ void UBGraphicsScene::drawLineTo(const QPointF &pEndPoint, const qreal &pWidth,
void
UBGraphicsScene
::
eraseLineTo
(
const
QPointF
&
pEndPoint
,
const
qreal
&
pWidth
)
void
UBGraphicsScene
::
eraseLineTo
(
const
QPointF
&
pEndPoint
,
const
qreal
&
pWidth
)
{
{
// QList<QGraphicsItem*> itemList;
const
QLineF
line
(
mPreviousPoint
,
pEndPoint
);
const
QLineF
line
(
mPreviousPoint
,
pEndPoint
);
const
QPolygonF
eraserPolygon
=
UBGeometryUtils
::
lineToPolygon
(
line
,
pWidth
);
const
QPolygonF
eraserPolygon
=
UBGeometryUtils
::
lineToPolygon
(
line
,
pWidth
);
...
@@ -793,24 +797,29 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
...
@@ -793,24 +797,29 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
if
(
mShouldUseOMP
)
if
(
mShouldUseOMP
)
{
{
#pragma omp parallel for
//
#pragma omp parallel for
for
(
int
i
=
0
;
i
<
collidItemsSize
;
i
++
)
for
(
int
i
=
0
;
i
<
collidItemsSize
;
i
++
)
{
{
UBGraphicsPolygonItem
*
collidingPolygonItem
=
dynamic
_cast
<
UBGraphicsPolygonItem
*>
(
collidItems
.
at
(
i
));
UBGraphicsPolygonItem
*
collidingPolygonItem
=
qgraphicsitem
_cast
<
UBGraphicsPolygonItem
*>
(
collidItems
.
at
(
i
));
if
(
NULL
!=
collidingPolygonItem
)
if
(
NULL
!=
collidingPolygonItem
)
{
{
collidingPolygonItem
->
setColor
(
QColor
(
Qt
::
green
));
UBGraphicsStrokesGroup
*
pGroup
=
collidingPolygonItem
->
strokesGroup
();
UBGraphicsStrokesGroup
*
pGroup
=
collidingPolygonItem
->
strokesGroup
();
if
(
eraserInnerRect
.
contains
(
collidingPolygonItem
->
boundingRect
()))
if
(
eraserInnerRect
.
contains
(
collidingPolygonItem
->
boundingRect
()))
{
{
#pragma omp critical
// #pragma omp critical
qDebug
()
<<
"case 1"
;
// Put the entire polygon into the remove list
// Put the entire polygon into the remove list
collidingPolygonItem
->
setColor
(
QColor
(
Qt
::
blue
));
toBeRemovedItems
<<
collidingPolygonItem
;
toBeRemovedItems
<<
collidingPolygonItem
;
}
}
else
else
{
{
// Here we get the polygon of the colliding item
// Here we get the polygon of the colliding item
QPolygonF
collidingPolygon
=
collidingPolygonItem
->
polygon
();
QPolygonF
collidingPolygon
=
collidingPolygonItem
->
polygon
();
QPainterPath
collidingPath
;
QPainterPath
collidingPath
;
collidingPath
.
addPolygon
(
collidingPolygon
);
collidingPath
.
addPolygon
(
collidingPolygon
);
...
@@ -819,32 +828,40 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
...
@@ -819,32 +828,40 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
QPainterPath
croppedPath
=
collidingPath
.
subtracted
(
eraserPath
);
QPainterPath
croppedPath
=
collidingPath
.
subtracted
(
eraserPath
);
QPainterPath
croppedPathSimplified
=
croppedPath
.
simplified
();
QPainterPath
croppedPathSimplified
=
croppedPath
.
simplified
();
if
(
croppedPath
==
collidingPath
)
/*
if (croppedPath == collidingPath)
{
{
// NOOP
// NOOP
qDebug() << "case 2";
toBeRemovedItems << collidingPolygonItem;
}
}
else
if
(
croppedPathSimplified
.
isEmpty
())
else
*/
if
(
croppedPathSimplified
.
isEmpty
())
{
{
#pragma omp critical
// #pragma omp critical
qDebug
()
<<
"case 3"
;
// Put the entire polygon into the remove list if the eraser removes all its visible content
// Put the entire polygon into the remove list if the eraser removes all its visible content
collidingPolygonItem
->
setColor
(
QColor
(
Qt
::
blue
));
toBeRemovedItems
<<
collidingPolygonItem
;
toBeRemovedItems
<<
collidingPolygonItem
;
}
}
else
else
{
{
//qDebug() << "case 4";
// Then we convert the remaining path to a list of polygons that will be converted in
// Then we convert the remaining path to a list of polygons that will be converted in
// UBGraphicsPolygonItems and added to the scene
// UBGraphicsPolygonItems and added to the scene
foreach
(
const
QPolygonF
&
pol
,
croppedPathSimplified
.
toFillPolygons
())
foreach
(
const
QPolygonF
&
pol
,
croppedPathSimplified
.
toFillPolygons
())
{
{
UBGraphicsPolygonItem
*
croppedPolygonItem
=
collidingPolygonItem
->
deepCopy
(
pol
);
UBGraphicsPolygonItem
*
croppedPolygonItem
=
collidingPolygonItem
->
deepCopy
(
pol
);
#pragma omp critical
croppedPolygonItem
->
setColor
(
QColor
(
Qt
::
black
));
// Add this new polygon to the 'added' list
// #pragma omp critical
toBeAddedItems
<<
croppedPolygonItem
;
if
(
NULL
!=
pGroup
){
if
(
NULL
!=
pGroup
){
croppedPolygonItem
->
setStrokesGroup
(
pGroup
);
croppedPolygonItem
->
setStrokesGroup
(
pGroup
);
// croppedPolygonItem->setTransform(pGroup->sceneTransform().inverted());
}
}
// Add this new polygon to the 'added' list
toBeAddedItems
<<
croppedPolygonItem
;
}
}
#pragma omp critical
//
#pragma omp critical
// Remove the original polygonitem because it has been replaced by many smaller polygons
// Remove the original polygonitem because it has been replaced by many smaller polygons
collidingPolygonItem
->
setColor
(
QColor
(
Qt
::
blue
));
toBeRemovedItems
<<
collidingPolygonItem
;
toBeRemovedItems
<<
collidingPolygonItem
;
}
}
}
}
...
@@ -855,11 +872,12 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
...
@@ -855,11 +872,12 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
{
{
for
(
int
i
=
0
;
i
<
collidItemsSize
;
i
++
)
for
(
int
i
=
0
;
i
<
collidItemsSize
;
i
++
)
{
{
UBGraphicsPolygonItem
*
collidingPolygonItem
UBGraphicsPolygonItem
*
collidingPolygonItem
=
dynamic_cast
<
UBGraphicsPolygonItem
*>
(
collidItems
.
at
(
i
));
=
qgraphicsitem_cast
<
UBGraphicsPolygonItem
*>
(
collidItems
.
at
(
i
));
if
(
collidingPolygonItem
)
if
(
collidingPolygonItem
)
{
{
UBGraphicsStrokesGroup
*
pGroup
=
collidingPolygonItem
->
strokesGroup
();
if
(
eraserInnerRect
.
contains
(
collidingPolygonItem
->
boundingRect
()))
if
(
eraserInnerRect
.
contains
(
collidingPolygonItem
->
boundingRect
()))
{
{
toBeRemovedItems
<<
collidingPolygonItem
;
toBeRemovedItems
<<
collidingPolygonItem
;
...
@@ -887,6 +905,9 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
...
@@ -887,6 +905,9 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
{
{
UBGraphicsPolygonItem
*
croppedPolygonItem
=
collidingPolygonItem
->
deepCopy
(
pol
);
UBGraphicsPolygonItem
*
croppedPolygonItem
=
collidingPolygonItem
->
deepCopy
(
pol
);
toBeAddedItems
<<
croppedPolygonItem
;
toBeAddedItems
<<
croppedPolygonItem
;
if
(
NULL
!=
pGroup
){
croppedPolygonItem
->
setStrokesGroup
(
pGroup
);
}
}
}
toBeRemovedItems
<<
collidingPolygonItem
;
toBeRemovedItems
<<
collidingPolygonItem
;
...
@@ -896,28 +917,50 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
...
@@ -896,28 +917,50 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth)
}
}
}
}
addItems
(
toBeAddedItems
);
mAddedItems
+=
toBeAddedItems
;
if
(
eDrawingMode_Vector
==
DRAWING_MODE
){
if
(
eDrawingMode_Vector
==
DRAWING_MODE
){
foreach
(
QGraphicsItem
*
item
,
toBe
Add
edItems
){
foreach
(
QGraphicsItem
*
item
,
toBe
Remov
edItems
){
UBGraphicsPolygonItem
*
poly
=
dynamic_cast
<
UBGraphicsPolygonItem
*>
(
item
);
UBGraphicsPolygonItem
*
poly
=
dynamic_cast
<
UBGraphicsPolygonItem
*>
(
item
);
if
(
NULL
!=
poly
&&
NULL
!=
poly
->
strokesGroup
()){
if
(
NULL
!=
poly
){
poly
->
strokesGroup
()
->
addToGroup
(
poly
);
if
(
NULL
!=
poly
->
strokesGroup
()){
poly
->
strokesGroup
()
->
removeFromGroup
(
poly
);
removeItem
(
poly
);
}
else
{
qDebug
()
<<
"No group present"
;
}
}
}
}
}
}
else
{
removeItems
(
toBeRemovedItems
);
mRemovedItems
+=
toBeRemovedItems
;
}
}
removeItems
(
toBeRemovedItems
);
// bool hack = false;
mRemovedItems
+=
toBeRemovedItems
;
// UBGraphicsStrokesGroup* pG = new UBGraphicsStrokesGroup();
if
(
eDrawingMode_Vector
==
DRAWING_MODE
){
if
(
eDrawingMode_Vector
==
DRAWING_MODE
){
foreach
(
QGraphicsItem
*
item
,
toBe
Remov
edItems
){
foreach
(
QGraphicsItem
*
item
,
toBe
Add
edItems
){
UBGraphicsPolygonItem
*
poly
=
dynamic_cast
<
UBGraphicsPolygonItem
*>
(
item
);
UBGraphicsPolygonItem
*
poly
=
dynamic_cast
<
UBGraphicsPolygonItem
*>
(
item
);
if
(
NULL
!=
poly
&&
NULL
!=
poly
->
strokesGroup
()){
if
(
NULL
!=
poly
&&
NULL
!=
poly
->
strokesGroup
()){
poly
->
strokesGroup
()
->
removeFromGroup
(
poly
);
// if(!hack){
// itemList = poly->strokesGroup()->childItems();
// removeItem(poly->strokesGroup());
// foreach(QGraphicsItem* it, itemList){
// pG->addToGroup(it);
// }
// hack = true;
// }
qreal
dx
=
-
poly
->
strokesGroup
()
->
sceneTransform
().
inverted
().
dx
();
qreal
dy
=
-
poly
->
strokesGroup
()
->
sceneTransform
().
inverted
().
dy
();
//poly->setTransform(QTransform().translate(20, 0));
poly
->
setTransform
(
QTransform
().
translate
(
dx
,
dy
));
poly
->
strokesGroup
()
/*pG*/
->
addToGroup
(
poly
);
}
}
}
}
//addItem(pG);
}
else
{
addItems
(
toBeAddedItems
);
mAddedItems
+=
toBeAddedItems
;
}
}
}
}
...
...
This diff is collapsed.
Click to expand it.
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