From b36627aeaa1fdc91912605842ca030d0fec7dc05 Mon Sep 17 00:00:00 2001 From: Ivan Ilin Date: Fri, 30 Mar 2012 20:37:14 +0300 Subject: [PATCH] Zvalue controller is now finished --- src/adaptors/UBSvgSubsetAdaptor.cpp | 44 +----- src/board/UBBoardController.cpp | 2 - src/core/UB.h | 1 + src/domain/UBGraphicsAudioItem.cpp | 2 - src/domain/UBGraphicsItemDelegate.cpp | 14 +- src/domain/UBGraphicsItemDelegate.h | 2 +- src/domain/UBGraphicsPDFItem.cpp | 4 - src/domain/UBGraphicsPixmapItem.cpp | 2 - src/domain/UBGraphicsPolygonItem.cpp | 3 - src/domain/UBGraphicsScene.cpp | 164 ++++++-------------- src/domain/UBGraphicsScene.h | 27 +--- src/domain/UBGraphicsSvgItem.cpp | 8 +- src/domain/UBGraphicsTextItem.cpp | 2 - src/domain/UBGraphicsVideoItem.cpp | 2 - src/domain/UBGraphicsVideoItemDelegate.cpp | 4 +- src/domain/UBGraphicsWidgetItem.cpp | 1 - src/tools/UBGraphicsCache.cpp | 2 - src/tools/UBGraphicsCompass.cpp | 2 - src/tools/UBGraphicsCurtainItem.cpp | 4 - src/tools/UBGraphicsCurtainItemDelegate.cpp | 1 - src/tools/UBGraphicsProtractor.cpp | 2 - src/tools/UBGraphicsRuler.cpp | 2 - src/tools/UBGraphicsTriangle.cpp | 2 - 23 files changed, 65 insertions(+), 232 deletions(-) diff --git a/src/adaptors/UBSvgSubsetAdaptor.cpp b/src/adaptors/UBSvgSubsetAdaptor.cpp index 95857b3e..b39b7d25 100644 --- a/src/adaptors/UBSvgSubsetAdaptor.cpp +++ b/src/adaptors/UBSvgSubsetAdaptor.cpp @@ -306,9 +306,6 @@ UBSvgSubsetAdaptor::UBSvgSubsetReader::UBSvgSubsetReader(UBDocumentProxy* pProxy UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene() { UBGraphicsScene *scene = 0; - qreal maxDrawingZIndex = 0; - qreal maxObjectZIndex = 0; - UBGraphicsWidgetItem *currentWidget = 0; mFileVersion = 40100; // default to 4.1.0 @@ -481,7 +478,6 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene() scene->addItem(polygonItem); polygonItem->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Graphic)); - maxDrawingZIndex = qMax(polygonItem->zValue(), maxDrawingZIndex); polygonItem->show(); } @@ -501,8 +497,6 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene() scene->addItem(polygonItem); polygonItem->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Graphic)); - maxDrawingZIndex = qMax(polygonItem->zValue(), maxDrawingZIndex); - polygonItem->show(); } } @@ -527,8 +521,6 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene() pixmapItem->setFlag(QGraphicsItem::ItemIsMovable, true); pixmapItem->setFlag(QGraphicsItem::ItemIsSelectable, true); - maxObjectZIndex = qMax(pixmapItem->zValue(), maxObjectZIndex); - scene->addItem(pixmapItem); if (zFromSvg != UBZLayerController::errorNum()) @@ -549,8 +541,6 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene() svgItem->setFlag(QGraphicsItem::ItemIsMovable, true); svgItem->setFlag(QGraphicsItem::ItemIsSelectable, true); - maxObjectZIndex = qMax(svgItem->zValue(), maxObjectZIndex); - scene->addItem(svgItem); if (zFromSvg != UBZLayerController::errorNum()) @@ -577,8 +567,6 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene() audioItem->setFlag(QGraphicsItem::ItemIsMovable, true); audioItem->setFlag(QGraphicsItem::ItemIsSelectable, true); - maxObjectZIndex = qMax(audioItem->zValue(), maxObjectZIndex); - scene->addItem(audioItem); if (zFromSvg != UBZLayerController::errorNum()) @@ -600,8 +588,6 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene() videoItem->setFlag(QGraphicsItem::ItemIsMovable, true); videoItem->setFlag(QGraphicsItem::ItemIsSelectable, true); - maxObjectZIndex = qMax(videoItem->zValue(), maxObjectZIndex); - scene->addItem(videoItem); if (zFromSvg != UBZLayerController::errorNum()) @@ -623,8 +609,6 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene() textItem->setFlag(QGraphicsItem::ItemIsMovable, true); textItem->setFlag(QGraphicsItem::ItemIsSelectable, true); - maxObjectZIndex = qMax(textItem->zValue(), maxObjectZIndex); - scene->addItem(textItem); if (zFromSvg != UBZLayerController::errorNum()) @@ -733,8 +717,6 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene() pdfItem->setFlag(QGraphicsItem::ItemIsMovable, true); pdfItem->setFlag(QGraphicsItem::ItemIsSelectable, true); - maxObjectZIndex = qMax(pdfItem->zValue(), maxObjectZIndex); - scene->addItem(pdfItem); if (zFromSvg != UBZLayerController::errorNum()) @@ -758,8 +740,6 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene() appleWidgetItem->resize(foreignObjectWidth, foreignObjectHeight); - maxObjectZIndex = qMax(appleWidgetItem->zValue(), maxObjectZIndex); - scene->addItem(appleWidgetItem); if (zFromSvg != UBZLayerController::errorNum()) @@ -781,8 +761,6 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene() w3cWidgetItem->resize(foreignObjectWidth, foreignObjectHeight); - maxObjectZIndex = qMax(w3cWidgetItem->zValue(), maxObjectZIndex); - scene->addItem(w3cWidgetItem); if (zFromSvg != UBZLayerController::errorNum()) @@ -802,7 +780,6 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene() textItem->setFlag(QGraphicsItem::ItemIsMovable, true); textItem->setFlag(QGraphicsItem::ItemIsSelectable, true); - maxObjectZIndex = qMax(textItem->zValue(), maxObjectZIndex); scene->addItem(textItem); if (zFromSvg != UBZLayerController::errorNum()) @@ -856,17 +833,14 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene() qWarning() << "error parsing Sankore file " << mXmlReader.errorString(); } - if (scene) - { - scene->setObjectZIndex(maxObjectZIndex); - scene->setDrawingZIndex(maxDrawingZIndex); + if (scene) { scene->setModified(false); } if (annotationGroup) { - if (annotationGroup->polygons().empty()) - delete annotationGroup; + if (annotationGroup->polygons().empty()) + delete annotationGroup; } return scene; @@ -1400,12 +1374,10 @@ UBGraphicsPolygonItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::polygonItemFromPol if (!ubZValue.isNull()) { -// polygonItem->setZValue (ubZValue.toString().toFloat()); UBGraphicsItem::assignZValue(polygonItem, ubZValue.toString().toFloat()); } else { -// polygonItem->setZValue(mGroupZIndex); UBGraphicsItem::assignZValue(polygonItem, mGroupZIndex); } @@ -1509,12 +1481,10 @@ UBGraphicsPolygonItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::polygonItemFromLin if (!ubZValue.isNull()) { -// polygonItem->setZValue(ubZValue.toString().toFloat()); UBGraphicsItem::assignZValue(polygonItem, ubZValue.toString().toFloat()); } else { -// polygonItem->setZValue(mGroupZIndex); UBGraphicsItem::assignZValue(polygonItem, mGroupZIndex); } @@ -1663,7 +1633,6 @@ QList UBSvgSubsetAdaptor::UBSvgSubsetReader::polygonItem { UBGraphicsPolygonItem* polygonItem = new UBGraphicsPolygonItem(QLineF(points.at(i), points.at(i + 1)), lineWidth); polygonItem->setColor(brushColor); -// polygonItem->setZValue(zValue); UBGraphicsItem::assignZValue(polygonItem, zValue); polygonItem->setColorOnDarkBackground(colorOnDarkBackground); polygonItem->setColorOnLightBackground(colorOnLightBackground); @@ -2008,7 +1977,6 @@ void UBSvgSubsetAdaptor::UBSvgSubsetReader::graphicsItemFromSvg(QGraphicsItem* g if (!ubZValue.isNull()) { -// gItem->setZValue(ubZValue.toString().toFloat()); UBGraphicsItem::assignZValue(gItem, ubZValue.toString().toFloat()); } @@ -2591,7 +2559,6 @@ UBGraphicsRuler* UBSvgSubsetAdaptor::UBSvgSubsetReader::rulerFromSvg() graphicsItemFromSvg(ruler); -// ruler->setZValue(UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetRuler); UBGraphicsItem::assignZValue(ruler, UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetRuler); ruler->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool)); @@ -2650,7 +2617,6 @@ UBGraphicsCompass* UBSvgSubsetAdaptor::UBSvgSubsetReader::compassFromSvg() graphicsItemFromSvg(compass); - //compass->setZValue(UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetCompass); UBGraphicsItem::assignZValue(compass, UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetCompass); compass->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool)); @@ -2715,7 +2681,6 @@ UBGraphicsProtractor* UBSvgSubsetAdaptor::UBSvgSubsetReader::protractorFromSvg() { UBGraphicsProtractor* protractor = new UBGraphicsProtractor(); -// protractor->setZValue(UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetProtractor); UBGraphicsItem::assignZValue(protractor, UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetProtractor); protractor->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool)); @@ -2786,7 +2751,6 @@ UBGraphicsTriangle* UBSvgSubsetAdaptor::UBSvgSubsetReader::triangleFromSvg() { UBGraphicsTriangle* triangle = new UBGraphicsTriangle(); -// triangle->setZValue(UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetTriangle); UBGraphicsItem::assignZValue(triangle, UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetTriangle); triangle->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool)); @@ -2813,8 +2777,6 @@ UBGraphicsTriangle* UBSvgSubsetAdaptor::UBSvgSubsetReader::triangleFromSvg() UBGraphicsCache* UBSvgSubsetAdaptor::UBSvgSubsetReader::cacheFromSvg() { UBGraphicsCache* pCache = new UBGraphicsCache(); - pCache->setZValue(UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetCache); -// UBGraphicsItem::assignZValue(pCache, UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetCache); pCache->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool)); graphicsItemFromSvg(pCache); diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index 5bc5653d..961a2dc3 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -1943,8 +1943,6 @@ void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPoint if (gi) { -// gi->setZValue(mActiveScene->getNextObjectZIndex()); - UBGraphicsItem::assignZValue(gi, mActiveScene->getNextObjectZIndex()); mActiveScene->addItem(gi); gi->setPos(gi->pos() + QPointF(50, 50)); } diff --git a/src/core/UB.h b/src/core/UB.h index 0d372469..0ca8d2cd 100644 --- a/src/core/UB.h +++ b/src/core/UB.h @@ -84,6 +84,7 @@ struct itemLayerType , Curtain , Pointer , Cache + , SelectedItem }; }; diff --git a/src/domain/UBGraphicsAudioItem.cpp b/src/domain/UBGraphicsAudioItem.cpp index 88bf64c9..f2d1ab45 100644 --- a/src/domain/UBGraphicsAudioItem.cpp +++ b/src/domain/UBGraphicsAudioItem.cpp @@ -97,8 +97,6 @@ UBItem* UBGraphicsAudioItem::deepCopy() const UBGraphicsAudioItem *copy = new UBGraphicsAudioItem(audioUrl, parentItem()); copy->setPos(this->pos()); -// copy->setZValue(this->zValue()); - UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); copy->setFlag(QGraphicsItem::ItemIsMovable, true); copy->setFlag(QGraphicsItem::ItemIsSelectable, true); diff --git a/src/domain/UBGraphicsItemDelegate.cpp b/src/domain/UBGraphicsItemDelegate.cpp index b4abe891..3d233923 100644 --- a/src/domain/UBGraphicsItemDelegate.cpp +++ b/src/domain/UBGraphicsItemDelegate.cpp @@ -73,8 +73,6 @@ void UBGraphicsItemDelegate::init() { mFrame = new UBGraphicsDelegateFrame(this, QRectF(0, 0, 0, 0), mFrameWidth, mRespectRatio); mFrame->hide(); -// mFrame->setZValue(UBGraphicsScene::toolLayerStart + 1); - UBGraphicsItem::assignZValue(mFrame, UBGraphicsScene::toolLayerStart + 1); mFrame->setFlag(QGraphicsItem::ItemIsSelectable, true); mDeleteButton = new DelegateButton(":/images/close.svg", mDelegated, mFrame, Qt::TopLeftSection); @@ -102,8 +100,6 @@ void UBGraphicsItemDelegate::init() foreach(DelegateButton* button, mButtons) { button->hide(); -// button->setZValue(UBGraphicsScene::toolLayerStart + 2); - UBGraphicsItem::assignZValue(button, UBGraphicsScene::toolLayerStart + 2); button->setFlag(QGraphicsItem::ItemIsSelectable, true); } } @@ -168,18 +164,9 @@ bool UBGraphicsItemDelegate::mousePressEvent(QGraphicsSceneMouseEvent *event) if (!mDelegated->isSelected()) { mDelegated->setSelected(true); - - UBGraphicsScene* scene = static_cast(mDelegated->scene()); - qDebug() << mDelegated->zValue(); - qDebug() << scene->currentObjectZIndex(); - -// To investigate. Z value behavior -// if (mDelegated->zValue() < scene->currentObjectZIndex() && !isLocked()) -// mDelegated->setZValue(scene->getNextObjectZIndex()); positionHandles(); - return true; } else @@ -288,6 +275,7 @@ void UBGraphicsItemDelegate::positionHandles() mDelegated->scene()->addItem(button); } button->show(); + button->setZValue(delegated()->zValue()); } } else { foreach(DelegateButton* button, mButtons) diff --git a/src/domain/UBGraphicsItemDelegate.h b/src/domain/UBGraphicsItemDelegate.h index 59b1b627..b7388665 100644 --- a/src/domain/UBGraphicsItemDelegate.h +++ b/src/domain/UBGraphicsItemDelegate.h @@ -33,7 +33,7 @@ class DelegateButton: public QGraphicsSvgItem Q_OBJECT public: - DelegateButton(const QString & fileName, QGraphicsItem* pDelegated, QGraphicsItem * parent = 0, Qt::WindowFrameSection section = Qt::NoSection) + DelegateButton(const QString & fileName, QGraphicsItem* pDelegated, QGraphicsItem * parent = 0, Qt::WindowFrameSection section = Qt::TopLeftSection) : QGraphicsSvgItem(fileName, parent) , mDelegated(pDelegated) , mIsTransparentToMouseEvent(false) diff --git a/src/domain/UBGraphicsPDFItem.cpp b/src/domain/UBGraphicsPDFItem.cpp index 33aa274b..aa8c7ea3 100644 --- a/src/domain/UBGraphicsPDFItem.cpp +++ b/src/domain/UBGraphicsPDFItem.cpp @@ -85,8 +85,6 @@ UBItem* UBGraphicsPDFItem::deepCopy() const UBGraphicsPDFItem *copy = new UBGraphicsPDFItem(mRenderer, mPageNumber, parentItem()); copy->setPos(this->pos()); -// copy->setZValue(this->zValue()); - UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); copy->setFlag(QGraphicsItem::ItemIsMovable, true); copy->setFlag(QGraphicsItem::ItemIsSelectable, true); @@ -136,8 +134,6 @@ UBGraphicsPixmapItem* UBGraphicsPDFItem::toPixmapItem() const pixmapItem->setPixmap(pixmap); pixmapItem->setPos(this->pos()); -// pixmapItem->setZValue(this->zValue()); - UBGraphicsItem::assignZValue(pixmapItem, this->zValue()); pixmapItem->setTransform(this->transform()); pixmapItem->setFlag(QGraphicsItem::ItemIsMovable, true); pixmapItem->setFlag(QGraphicsItem::ItemIsSelectable, true); diff --git a/src/domain/UBGraphicsPixmapItem.cpp b/src/domain/UBGraphicsPixmapItem.cpp index 527c0359..07dc4679 100644 --- a/src/domain/UBGraphicsPixmapItem.cpp +++ b/src/domain/UBGraphicsPixmapItem.cpp @@ -103,8 +103,6 @@ UBItem* UBGraphicsPixmapItem::deepCopy() const copy->setPixmap(this->pixmap()); copy->setPos(this->pos()); -// copy->setZValue(this->zValue()); - UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); copy->setFlag(QGraphicsItem::ItemIsMovable, true); copy->setFlag(QGraphicsItem::ItemIsSelectable, true); diff --git a/src/domain/UBGraphicsPolygonItem.cpp b/src/domain/UBGraphicsPolygonItem.cpp index dcc750c5..7608e20e 100644 --- a/src/domain/UBGraphicsPolygonItem.cpp +++ b/src/domain/UBGraphicsPolygonItem.cpp @@ -161,9 +161,6 @@ UBGraphicsPolygonItem* UBGraphicsPolygonItem::deepCopy(const QPolygonF& pol) con copy->setPen(this->pen()); copy->mHasAlpha = this->mHasAlpha; -// copy->setZValue(this->zValue()); - UBGraphicsItem::assignZValue(copy, this->zValue()); - copy->setColorOnDarkBackground(this->colorOnDarkBackground()); copy->setColorOnLightBackground(this->colorOnLightBackground()); diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 2729d093..bbd4af62 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -61,8 +61,6 @@ #include "core/memcheck.h" -qreal UBGraphicsScene::backgroundLayerStart = -20000000.0; -qreal UBGraphicsScene::objectLayerStart = -10000000.0; qreal UBGraphicsScene::drawingLayerStart = 0.0; qreal UBGraphicsScene::toolLayerStart = 10000000.0; @@ -88,10 +86,12 @@ UBZLayerController::UBZLayerController() scopeMap.insert(itemLayerType::DrawingItem, ItemLayerTypeData( 0.0, 10000000.0 )); scopeMap.insert(itemLayerType::ToolItem, ItemLayerTypeData( 10000000.0, 10000100.0 )); scopeMap.insert(itemLayerType::CppTool, ItemLayerTypeData( 10000100.0, 10000200.0 )); - scopeMap.insert(itemLayerType::Eraiser, ItemLayerTypeData( 10000200.0, 10001000.0 )); - scopeMap.insert(itemLayerType::Curtain, ItemLayerTypeData( 10001000.0, 10001100.0 )); + scopeMap.insert(itemLayerType::Curtain, ItemLayerTypeData( 10000200.0, 10001000.0 )); + scopeMap.insert(itemLayerType::Eraiser, ItemLayerTypeData( 10001000.0, 10001100.0 )); scopeMap.insert(itemLayerType::Pointer, ItemLayerTypeData( 10001100.0, 10001200.0 )); scopeMap.insert(itemLayerType::Cache, ItemLayerTypeData( 10001300.0, 10001400.0 )); + + scopeMap.insert(itemLayerType::SelectedItem, ItemLayerTypeData( 10001000.0, 10001000.0 )); } qreal UBZLayerController::generateZLevel(itemLayerType::Enum key) @@ -107,8 +107,8 @@ qreal UBZLayerController::generateZLevel(itemLayerType::Enum key) result++; if (result >= top) { - qDebug() << "new values are finished for the scope" << key; - result = top; + qDebug() << "new values are over for the scope" << key; + result = top - 1; } scopeMap[key].curValue = result; @@ -145,38 +145,8 @@ UBGraphicsScene::UBGraphicsScene(UBDocumentProxy* parent) #endif setDocument(parent); - - mDrawingZIndex = drawingLayerStart; - mObjectZIndex = objectLayerStart; - - mEraser = new QGraphicsEllipseItem(); // mem : owned and destroyed by the scene - mEraser->setRect(QRect(0, 0, 0, 0)); - mEraser->setVisible(false); - - mEraser->setZValue(/*toolLayerStart + toolOffsetEraser*/2); - mEraser->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Control)); -// mEraser->setData(UBGraphicsItemData::itemLayerType, QVariant(Eraiser)); - -// qreal zval = mZLayerController.generateZLevel((itmeLayerType)mEraser->data(UBGraphicsItemData::itemLayerType).toInt()); -// qreal zval1 = mZLayerController.generateZLevel(Eraiser); -// qreal zval2 = mZLayerController.generateZLevel(Eraiser); -// mEraser->setZValue(zval); - - mTools << mEraser; - addItem(mEraser); - - mPointer = new QGraphicsEllipseItem(); // mem : owned and destroyed by the scene - mPointer->setRect(QRect(0, 0, 20, 20)); - mPointer->setVisible(false); - - mPointer->setPen(Qt::NoPen); - mPointer->setBrush(QBrush(QColor(255, 0, 0, 186))); - - mPointer->setZValue( /*toolLayerStart + toolOffsetPointer*/ 2); - mPointer->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool)); - - mTools << mPointer; - addItem(mPointer); + createEraiser(); + createPointer(); if (UBApplication::applicationController) { @@ -204,23 +174,14 @@ void UBGraphicsScene::selectionChangedProcessing() + QString::number(selectedItems().first()->data(UBGraphicsItemData::ItemOwnZValue).toReal(), 'f')); QList allItemsList = items(); - qreal maxZ = 0.; for( int i = 0; i < allItemsList.size(); i++ ) { QGraphicsItem *nextItem = allItemsList.at(i); - //Temporary stub. Due to ugly z-order implementation I need to do this (sankore 360) - //z-order behavior should be reimplemented and this stub should be deleted - if (nextItem == mBackgroundObject) - continue; - //Temporary stub end (sankore 360) - if (nextItem->zValue() > maxZ) - maxZ = nextItem->zValue(); - nextItem->setZValue(nextItem->data(UBGraphicsItemData::ItemOwnZValue).toReal()); -// nextItem->setZValue(qreal(1)); - } - QList selItemsList = selectedItems(); - for( int i = 0; i < selItemsList.size(); i++ ) { - QGraphicsItem *nextItem = selItemsList.at(i); - nextItem->setZValue(maxZ + 0.0001); + + if (nextItem->isSelected()) { + nextItem->setZValue(mZLayerController.generateZLevel(itemLayerType::SelectedItem)); + } else { + nextItem->setZValue(nextItem->data(UBGraphicsItemData::ItemOwnZValue).toReal()); + } } } @@ -449,25 +410,11 @@ void UBGraphicsScene::drawEraser(const QPointF &pPoint, bool isFirstDraw) qreal eraserRadius = eraserWidth / 2; // TODO UB 4.x optimize - no need to do that every time we move it - if (mEraser) - { + if (mEraser) { mEraser->setRect(QRectF(pPoint.x() - eraserRadius, pPoint.y() - eraserRadius, eraserWidth, eraserWidth)); - if(isFirstDraw) - { - qreal maxZ = 0.; - QList allItemsList = items(); - for( int i = 0; i < allItemsList.size(); i++ ) - { - QGraphicsItem *nextItem = allItemsList.at(i); - qreal zValue = nextItem->zValue(); - if (zValue > maxZ) - maxZ = zValue; - nextItem->setZValue(nextItem->data(UBGraphicsItemData::ItemOwnZValue).toReal()); - } - - mEraser->setZValue(maxZ + 0.0001); - mEraser->show(); + if(isFirstDraw) { + mEraser->show(); } } } @@ -478,27 +425,12 @@ void UBGraphicsScene::drawPointer(const QPointF &pPoint, bool isFirstDraw) qreal pointerRadius = pointerDiameter / 2; // TODO UB 4.x optimize - no need to do that every time we move it - if (mPointer) - { + if (mPointer) { mPointer->setRect(QRectF(pPoint.x() - pointerRadius, - pPoint.y() - pointerRadius, - pointerDiameter, - pointerDiameter)); - - if(isFirstDraw) - { - qreal maxZ = 0.; - QList allItemsList = items(); - for( int i = 0; i < allItemsList.size(); i++ ) - { - QGraphicsItem *nextItem = allItemsList.at(i); - qreal zValue = nextItem->zValue(); - if (zValue > maxZ) - maxZ = zValue; - nextItem->setZValue(nextItem->data(UBGraphicsItemData::ItemOwnZValue).toReal()); - } - - mPointer->setZValue(maxZ + 0.0001); + pPoint.y() - pointerRadius, + pointerDiameter, + pointerDiameter)); + if(isFirstDraw) { mPointer->show(); } } @@ -735,21 +667,6 @@ void UBGraphicsScene::drawArcTo(const QPointF& pCenterPoint, qreal pSpanAngle) setDocumentUpdated(); } - -qreal UBGraphicsScene::getNextDrawingZIndex() -{ - mDrawingZIndex = mDrawingZIndex + 1.0; - return mDrawingZIndex; -} - - -qreal UBGraphicsScene::getNextObjectZIndex() -{ - mObjectZIndex = mObjectZIndex + 1.0; - return mObjectZIndex; -} - - void UBGraphicsScene::setBackground(bool pIsDark, bool pIsCrossed) { bool needRepaint = false; @@ -912,9 +829,6 @@ UBGraphicsScene* UBGraphicsScene::sceneDeepCopy() const UBGraphicsScene* copy = new UBGraphicsScene(this->document()); copy->setBackground(this->isDarkBackground(), this->isCrossedBackground()); - - copy->mDrawingZIndex = this->mDrawingZIndex; - copy->mObjectZIndex = this->mObjectZIndex; copy->setSceneRect(this->sceneRect()); if (this->mNominalSize.isValid()) @@ -1092,7 +1006,6 @@ UBGraphicsPixmapItem* UBGraphicsScene::addPixmap(const QPixmap& pPixmap, const Q pixmapItem->setFlag(QGraphicsItem::ItemIsMovable, true); pixmapItem->setFlag(QGraphicsItem::ItemIsSelectable, true); -// pixmapItem->setZValue(getNextObjectZIndex()); pixmapItem->setPixmap(pPixmap); @@ -1144,7 +1057,6 @@ UBGraphicsVideoItem* UBGraphicsScene::addVideo(const QUrl& pVideoFileUrl, bool s videoItem->setFlag(QGraphicsItem::ItemIsMovable, true); videoItem->setFlag(QGraphicsItem::ItemIsSelectable, true); -// videoItem->setZValue(getNextObjectZIndex()); addItem(videoItem); @@ -1176,7 +1088,6 @@ UBGraphicsAudioItem* UBGraphicsScene::addAudio(const QUrl& pAudioFileUrl, bool s audioItem->setFlag(QGraphicsItem::ItemIsMovable, true); audioItem->setFlag(QGraphicsItem::ItemIsSelectable, true); -// audioItem->setZValue(getNextObjectZIndex()); addItem(audioItem); @@ -1495,8 +1406,7 @@ QGraphicsItem* UBGraphicsScene::setAsBackgroundObject(QGraphicsItem* item, bool item->setAcceptedMouseButtons(Qt::NoButton); item->setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::FixedBackground); -// item->setZValue(backgroundLayerStart); - UBGraphicsItem::assignZValue(item, generateZLevel(item)); + UBGraphicsItem::assignZValue(item, mZLayerController.generateZLevel(itemLayerType::BackgroundItem)); if (pAdaptTransformation) { @@ -2012,6 +1922,34 @@ void UBGraphicsScene::setDocumentUpdated() document()->setMetaData(UBSettings::documentUpdatedAt , UBStringUtils::toUtcIsoDateTime(QDateTime::currentDateTime())); } +void UBGraphicsScene::createEraiser() +{ + mEraser = new QGraphicsEllipseItem(); // mem : owned and destroyed by the scene + mEraser->setRect(QRect(0, 0, 0, 0)); + mEraser->setVisible(false); + + mEraser->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Control)); + mEraser->setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::Eraiser)); //Necessary to set if we want z value to be assigned correctly + + mTools << mEraser; + addItem(mEraser); + +} +void UBGraphicsScene::createPointer() +{ + mPointer = new QGraphicsEllipseItem(); // mem : owned and destroyed by the scene + mPointer->setRect(QRect(0, 0, 20, 20)); + mPointer->setVisible(false); + + mPointer->setPen(Qt::NoPen); + mPointer->setBrush(QBrush(QColor(255, 0, 0, 186))); + + mPointer->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool)); + mPointer->setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::Pointer)); //Necessary to set if we want z value to be assigned correctly + + mTools << mPointer; + addItem(mPointer); +} qreal UBGraphicsScene::generateZLevel(QGraphicsItem *item) { diff --git a/src/domain/UBGraphicsScene.h b/src/domain/UBGraphicsScene.h index 3d7820ff..8fa84053 100644 --- a/src/domain/UBGraphicsScene.h +++ b/src/domain/UBGraphicsScene.h @@ -181,23 +181,11 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem return mCrossedBackground; } - void setDrawingZIndex(qreal pDrawingZIndex) - { - mDrawingZIndex = pDrawingZIndex; - } - - void setObjectZIndex(qreal pObjectZIndex) - { - mObjectZIndex = pObjectZIndex; - } - bool hasBackground() { return (mBackgroundObject != 0); } - qreal getNextObjectZIndex(); - void addRuler(QPointF center); void addProtractor(QPointF center); void addCompass(QPointF center); @@ -254,11 +242,6 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem void setNominalSize(int pWidth, int pHeight); - qreal currentObjectZIndex() - { - return mObjectZIndex; - } - enum RenderingContext { Screen = 0, NonScreen, PdfExport, Podcast @@ -343,19 +326,17 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem void recolorAllItems(); - qreal getNextDrawingZIndex(); - - virtual void drawItems (QPainter * painter, int numItems, + virtual void drawItems (QPainter * painter, int numItems, QGraphicsItem * items[], const QStyleOptionGraphicsItem options[], QWidget * widget = 0); QGraphicsItem* rootItem(QGraphicsItem* item) const; private: void setDocumentUpdated(); - qreal generateZLevel(QGraphicsItem *item); + void createEraiser(); + void createPointer(); - qreal mDrawingZIndex; - qreal mObjectZIndex; + qreal generateZLevel(QGraphicsItem *item); QGraphicsEllipseItem* mEraser; QGraphicsEllipseItem* mPointer; diff --git a/src/domain/UBGraphicsSvgItem.cpp b/src/domain/UBGraphicsSvgItem.cpp index a4fe1034..5e572b19 100644 --- a/src/domain/UBGraphicsSvgItem.cpp +++ b/src/domain/UBGraphicsSvgItem.cpp @@ -46,8 +46,6 @@ UBGraphicsSvgItem::UBGraphicsSvgItem(const QByteArray& pFileData, QGraphicsItem* setSharedRenderer(renderer); mFileData = pFileData; - - setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly } @@ -62,6 +60,8 @@ void UBGraphicsSvgItem::init() setCacheMode(QGraphicsItem::DeviceCoordinateCache); setMaximumCacheSize(boundingRect().size().toSize() * UB_MAX_ZOOM); + + setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly } @@ -133,8 +133,6 @@ UBItem* UBGraphicsSvgItem::deepCopy() const UBGraphicsSvgItem* copy = new UBGraphicsSvgItem(this->fileData()); copy->setPos(this->pos()); -// copy->setZValue(this->zValue()); - UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); copy->setFlag(QGraphicsItem::ItemIsMovable, true); copy->setFlag(QGraphicsItem::ItemIsSelectable, true); @@ -188,8 +186,6 @@ UBGraphicsPixmapItem* UBGraphicsSvgItem::toPixmapItem() const pixmapItem->setPixmap(QPixmap::fromImage(image)); pixmapItem->setPos(this->pos()); -// pixmapItem->setZValue(this->zValue()); - UBGraphicsItem::assignZValue(pixmapItem, this->zValue()); pixmapItem->setTransform(this->transform()); pixmapItem->setFlag(QGraphicsItem::ItemIsMovable, true); pixmapItem->setFlag(QGraphicsItem::ItemIsSelectable, true); diff --git a/src/domain/UBGraphicsTextItem.cpp b/src/domain/UBGraphicsTextItem.cpp index 6a47b9eb..f42158f3 100644 --- a/src/domain/UBGraphicsTextItem.cpp +++ b/src/domain/UBGraphicsTextItem.cpp @@ -193,8 +193,6 @@ UBItem* UBGraphicsTextItem::deepCopy() const copy->setHtml(toHtml()); copy->setPos(this->pos()); -// copy->setZValue(this->zValue()); - UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); copy->setFlag(QGraphicsItem::ItemIsMovable, true); copy->setFlag(QGraphicsItem::ItemIsSelectable, true); diff --git a/src/domain/UBGraphicsVideoItem.cpp b/src/domain/UBGraphicsVideoItem.cpp index 68e53971..887fdb7a 100644 --- a/src/domain/UBGraphicsVideoItem.cpp +++ b/src/domain/UBGraphicsVideoItem.cpp @@ -70,8 +70,6 @@ UBItem* UBGraphicsVideoItem::deepCopy() const UBGraphicsVideoItem *copy = new UBGraphicsVideoItem(videoUrl, parentItem()); copy->setPos(this->pos()); -// copy->setZValue(this->zValue()); - UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); copy->setFlag(QGraphicsItem::ItemIsMovable, true); copy->setFlag(QGraphicsItem::ItemIsSelectable, true); diff --git a/src/domain/UBGraphicsVideoItemDelegate.cpp b/src/domain/UBGraphicsVideoItemDelegate.cpp index 99ba687b..35620cf0 100644 --- a/src/domain/UBGraphicsVideoItemDelegate.cpp +++ b/src/domain/UBGraphicsVideoItemDelegate.cpp @@ -52,8 +52,7 @@ void UBGraphicsVideoItemDelegate::buildButtons() mMuteButton->hide(); mVideoControl = new DelegateVideoControl(delegated(), mFrame); -// mVideoControl->setZValue(UBGraphicsScene::toolLayerStart + 2); - UBGraphicsItem::assignZValue(mVideoControl, UBGraphicsScene::toolLayerStart + 2); + UBGraphicsItem::assignZValue(mVideoControl, delegated()->zValue()); mVideoControl->setFlag(QGraphicsItem::ItemIsSelectable, true); connect(mPlayPauseButton, SIGNAL(clicked(bool)), this, SLOT(togglePlayPause())); @@ -106,6 +105,7 @@ void UBGraphicsVideoItemDelegate::positionHandles() } mVideoControl->setAntiScale(mAntiScaleRatio); + mVideoControl->setZValue(delegated()->zValue()); mVideoControl->show(); } else diff --git a/src/domain/UBGraphicsWidgetItem.cpp b/src/domain/UBGraphicsWidgetItem.cpp index c5144d53..899a7714 100644 --- a/src/domain/UBGraphicsWidgetItem.cpp +++ b/src/domain/UBGraphicsWidgetItem.cpp @@ -411,7 +411,6 @@ UBItem* UBGraphicsW3CWidgetItem::deepCopy() const UBGraphicsW3CWidgetItem *copy = new UBGraphicsW3CWidgetItem(mWebKitWidget->widgetUrl(), parentItem()); copy->setPos(this->pos()); - UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); copy->setFlag(QGraphicsItem::ItemIsMovable, true); copy->setFlag(QGraphicsItem::ItemIsSelectable, true); diff --git a/src/tools/UBGraphicsCache.cpp b/src/tools/UBGraphicsCache.cpp index be90eb97..ae178ea9 100644 --- a/src/tools/UBGraphicsCache.cpp +++ b/src/tools/UBGraphicsCache.cpp @@ -47,8 +47,6 @@ UBItem* UBGraphicsCache::deepCopy() const copy->setPos(this->pos()); copy->setRect(this->rect()); -// copy->setZValue(this->zValue()); - UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); // TODO UB 4.7 ... complete all members ? diff --git a/src/tools/UBGraphicsCompass.cpp b/src/tools/UBGraphicsCompass.cpp index 7d6231a9..f2bc45df 100644 --- a/src/tools/UBGraphicsCompass.cpp +++ b/src/tools/UBGraphicsCompass.cpp @@ -87,8 +87,6 @@ UBItem* UBGraphicsCompass::deepCopy() const copy->setPos(this->pos()); copy->setRect(this->rect()); -// copy->setZValue(this->zValue()); - UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); // TODO UB 4.7 ... complete all members ? diff --git a/src/tools/UBGraphicsCurtainItem.cpp b/src/tools/UBGraphicsCurtainItem.cpp index e4cde85f..6f0154d8 100644 --- a/src/tools/UBGraphicsCurtainItem.cpp +++ b/src/tools/UBGraphicsCurtainItem.cpp @@ -60,8 +60,6 @@ UBGraphicsCurtainItem::~UBGraphicsCurtainItem() QVariant UBGraphicsCurtainItem::itemChange(GraphicsItemChange change, const QVariant &value) { -// if (change == QGraphicsItem::ItemSelectedHasChanged && QGraphicsRectItem::scene() && isSelected()) -// setZValue(UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetCurtain); QVariant newValue = value; @@ -133,8 +131,6 @@ UBItem* UBGraphicsCurtainItem::deepCopy() const copy->setPos(this->pos()); copy->setBrush(this->brush()); copy->setPen(this->pen()); -// copy->setZValue(this->zValue()); - UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); copy->setFlag(QGraphicsItem::ItemIsMovable, true); copy->setFlag(QGraphicsItem::ItemIsSelectable, true); diff --git a/src/tools/UBGraphicsCurtainItemDelegate.cpp b/src/tools/UBGraphicsCurtainItemDelegate.cpp index a16685b6..4161c50d 100644 --- a/src/tools/UBGraphicsCurtainItemDelegate.cpp +++ b/src/tools/UBGraphicsCurtainItemDelegate.cpp @@ -52,7 +52,6 @@ bool UBGraphicsCurtainItemDelegate::mousePressEvent(QGraphicsSceneMouseEvent *ev if (!mDelegated->isSelected()) { mDelegated->setSelected(true); -// mDelegated->setZValue(UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetCurtain); positionHandles(); return true; diff --git a/src/tools/UBGraphicsProtractor.cpp b/src/tools/UBGraphicsProtractor.cpp index 3267994b..129a1250 100644 --- a/src/tools/UBGraphicsProtractor.cpp +++ b/src/tools/UBGraphicsProtractor.cpp @@ -581,8 +581,6 @@ UBItem* UBGraphicsProtractor::deepCopy() const copy->setPos(this->pos()); copy->setRect(this->rect()); -// copy->setZValue(this->zValue()); - UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); copy->mCurrentAngle = this->mCurrentAngle; diff --git a/src/tools/UBGraphicsRuler.cpp b/src/tools/UBGraphicsRuler.cpp index 53312e11..728b5bad 100644 --- a/src/tools/UBGraphicsRuler.cpp +++ b/src/tools/UBGraphicsRuler.cpp @@ -76,8 +76,6 @@ UBItem* UBGraphicsRuler::deepCopy() const copy->setPos(this->pos()); copy->setRect(this->rect()); -// copy->setZValue(this->zValue()); - UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); // TODO UB 4.7 ... complete all members ? diff --git a/src/tools/UBGraphicsTriangle.cpp b/src/tools/UBGraphicsTriangle.cpp index 81956642..bd4156e0 100644 --- a/src/tools/UBGraphicsTriangle.cpp +++ b/src/tools/UBGraphicsTriangle.cpp @@ -95,8 +95,6 @@ UBItem* UBGraphicsTriangle::deepCopy(void) const copy->setPos(this->pos()); copy->setPolygon(this->polygon()); -// copy->setZValue(this->zValue()); - UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); // TODO UB 4.7 ... complete all members ?