diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 012363d2..70c1f50a 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -507,7 +507,9 @@ bool UBGraphicsScene::inputDeviceRelease() } UBDrawingController *dc = UBDrawingController::drawingController(); - if (dc->isDrawingTool()) + + // TODO: Find a way to detect that we just did a compass drawing and replace the mArcPolygonItem just below + if (dc->isDrawingTool() || mDrawWithCompass) { if (mCurrentStroke) { @@ -525,10 +527,7 @@ bool UBGraphicsScene::inputDeviceRelease() // TODO LATER : Generate well pressure-interpolated polygons and create the line group with them mAddedItems.clear(); - - // Add the groupItem in mAddedItem mAddedItems << pStrokes; - addItem(pStrokes); } @@ -536,6 +535,28 @@ bool UBGraphicsScene::inputDeviceRelease() delete mCurrentStroke; mCurrentStroke = 0; } + }else if(mArcPolygonItem){ + if(eDrawingMode_Vector == dc->drawingMode()){ + UBGraphicsStrokesGroup* pStrokes = new UBGraphicsStrokesGroup(); + + // Add the arc + mAddedItems.remove(mArcPolygonItem); + removeItem(mArcPolygonItem); + UBCoreGraphicsScene::removeItemFromDeletion(mArcPolygonItem); + pStrokes->addToGroup(mArcPolygonItem); + + // Add the center cross + foreach(QGraphicsItem* item, mAddedItems){ + removeItem(item); + UBCoreGraphicsScene::removeItemFromDeletion(item); + pStrokes->addToGroup(item); + } + + mAddedItems.clear(); + mAddedItems << pStrokes; + addItem(pStrokes); + mDrawWithCompass = false; + } } } @@ -635,6 +656,7 @@ void UBGraphicsScene::moveTo(const QPointF &pPoint) mPreviousWidth = -1.0; mPreviousPolygonItems.clear(); mArcPolygonItem = 0; + mDrawWithCompass = false; } @@ -817,6 +839,7 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth) void UBGraphicsScene::drawArcTo(const QPointF& pCenterPoint, qreal pSpanAngle) { + mDrawWithCompass = true; if (mArcPolygonItem) { mAddedItems.remove(mArcPolygonItem); diff --git a/src/domain/UBGraphicsScene.h b/src/domain/UBGraphicsScene.h index 9757cf4e..fa094a3a 100644 --- a/src/domain/UBGraphicsScene.h +++ b/src/domain/UBGraphicsScene.h @@ -397,6 +397,8 @@ public slots: UBZLayerController *mZLayerController; UBGraphicsPolygonItem* mpLastPolygon; + bool mDrawWithCompass; + }; diff --git a/src/tools/UBGraphicsProtractor.cpp b/src/tools/UBGraphicsProtractor.cpp index 129a1250..e73f0d02 100644 --- a/src/tools/UBGraphicsProtractor.cpp +++ b/src/tools/UBGraphicsProtractor.cpp @@ -79,8 +79,7 @@ void UBGraphicsProtractor::paint(QPainter *painter, const QStyleOptionGraphicsIt painter->setFont(QFont("Arial")); painter->setPen(drawColor()); painter->setBrush(fillBrush()); - painter->drawPie(QRectF(rect().center().x() - radius(), rect().center().y() - radius(), - 2 * radius(), 2 * radius()), mStartAngle * 16, mSpan * 16); + painter->drawPie(QRectF(rect().center().x() - radius(), rect().center().y() - radius(), 2 * radius(), 2 * radius()), mStartAngle * 16, mSpan * 16); paintGraduations(painter); paintButtons(painter); paintAngleMarker(painter);