From 8dafb4d98fcf2045dfd03909b713f8086b70fe08 Mon Sep 17 00:00:00 2001 From: shibakaneki Date: Wed, 23 May 2012 13:26:07 +0200 Subject: [PATCH 1/4] Resolved an issue with the eraser o the strokes as object story --- src/adaptors/UBSvgSubsetAdaptor.cpp | 56 ++++++++++++++++++++--------- src/core/UBPersistenceManager.cpp | 1 - src/domain/UBGraphicsScene.cpp | 19 +++++----- 3 files changed, 50 insertions(+), 26 deletions(-) diff --git a/src/adaptors/UBSvgSubsetAdaptor.cpp b/src/adaptors/UBSvgSubsetAdaptor.cpp index baf2fb87..fb933963 100644 --- a/src/adaptors/UBSvgSubsetAdaptor.cpp +++ b/src/adaptors/UBSvgSubsetAdaptor.cpp @@ -544,6 +544,7 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene() if(strokesGroup){ polygonItem->setTransform(strokesGroup->transform()); strokesGroup->addToGroup(polygonItem); + polygonItem->setStrokesGroup(strokesGroup); } }else{ scene->addItem(polygonItem); @@ -1005,8 +1006,6 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::writeSvgElement() bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex) { - - if (mScene->isModified()) { static int i = 0; @@ -1029,6 +1028,7 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex) writeSvgElement(); + // Get the items from the scene QList items = mScene->items(); qSort(items.begin(), items.end(), itemZIndexComp); @@ -1041,10 +1041,32 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex) { QGraphicsItem *item = items.takeFirst(); - UBGraphicsPolygonItem *polygonItem = qgraphicsitem_cast (item); + // Is the item a strokes group? + UBGraphicsStrokesGroup* strokesGroupItem = qgraphicsitem_cast(item); + if(strokesGroupItem && strokesGroupItem->isVisible()){ + mXmlWriter.writeStartElement("g"); + QMatrix matrix = item->sceneMatrix(); + if (!matrix.isIdentity()){ + mXmlWriter.writeAttribute("transform", toSvgTransform(matrix)); + } + + // Add the polygons + foreach(QGraphicsItem* item, strokesGroupItem->childItems()){ + UBGraphicsPolygonItem* poly = qgraphicsitem_cast(item); + if(NULL != poly){ + polygonItemToSvgPolygon(poly, true); + items.removeOne(poly); + } + } + + mXmlWriter.writeEndElement(); //g + } + // Is the item a polygon? + UBGraphicsPolygonItem *polygonItem = qgraphicsitem_cast (item); if (polygonItem && polygonItem->isVisible()) { + UBGraphicsStroke* currentStroke = polygonItem->stroke(); if (openStroke && (currentStroke != openStroke)) @@ -1116,84 +1138,86 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex) openStroke = 0; } + // Is the item a picture? UBGraphicsPixmapItem *pixmapItem = qgraphicsitem_cast (item); - if (pixmapItem && pixmapItem->isVisible()) { pixmapItemToLinkedImage(pixmapItem); continue; } + // Is the item a shape? UBGraphicsSvgItem *svgItem = qgraphicsitem_cast (item); - if (svgItem && svgItem->isVisible()) { svgItemToLinkedSvg(svgItem); continue; } + // Is the Item a video? UBGraphicsVideoItem *videoItem = qgraphicsitem_cast (item); - if (videoItem && videoItem->isVisible()) { videoItemToLinkedVideo(videoItem); continue; } + // Is the item an audio? UBGraphicsAudioItem* audioItem = qgraphicsitem_cast (item); if (audioItem && audioItem->isVisible()) { audioItemToLinkedAudio(audioItem); continue; } + // Is the item an app? UBGraphicsAppleWidgetItem *appleWidgetItem = qgraphicsitem_cast (item); - if (appleWidgetItem && appleWidgetItem->isVisible()) { graphicsAppleWidgetToSvg(appleWidgetItem); continue; } + // Is the item a W3C? UBGraphicsW3CWidgetItem *w3cWidgetItem = qgraphicsitem_cast (item); - if (w3cWidgetItem && w3cWidgetItem->isVisible()) { graphicsW3CWidgetToSvg(w3cWidgetItem); continue; } + // Is the item a PDF? UBGraphicsPDFItem *pdfItem = qgraphicsitem_cast (item); - if (pdfItem && pdfItem->isVisible()) { pdfItemToLinkedPDF(pdfItem); continue; } + // Is the item a text? UBGraphicsTextItem *textItem = qgraphicsitem_cast (item); - if (textItem && textItem->isVisible()) { textItemToSvg(textItem); continue; } + // Is the item a curtain? UBGraphicsCurtainItem *curtainItem = qgraphicsitem_cast (item); - if (curtainItem && curtainItem->isVisible()) { curtainItemToSvg(curtainItem); continue; } + // Is the item a ruler? UBGraphicsRuler *ruler = qgraphicsitem_cast (item); - if (ruler && ruler->isVisible()) { rulerToSvg(ruler); continue; } + // Is the item a cache? UBGraphicsCache* cache = qgraphicsitem_cast(item); if(cache && cache->isVisible()) { @@ -1201,32 +1225,32 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex) continue; } + // Is the item a compass UBGraphicsCompass *compass = qgraphicsitem_cast (item); - if (compass && compass->isVisible()) { compassToSvg(compass); continue; } + // Is the item a protractor? UBGraphicsProtractor *protractor = qgraphicsitem_cast (item); - if (protractor && protractor->isVisible()) { protractorToSvg(protractor); continue; } + // Is the item a triangle? UBGraphicsTriangle *triangle = qgraphicsitem_cast (item); - if (triangle && triangle->isVisible()) { triangleToSvg(triangle); continue; } + // Is the item a group? UBGraphicsGroupContainerItem *groupItem = qgraphicsitem_cast(item); - if (groupItem && groupItem->isVisible()) { qDebug() << "came across the group during the parsing"; diff --git a/src/core/UBPersistenceManager.cpp b/src/core/UBPersistenceManager.cpp index 29e0ef71..98261e3a 100644 --- a/src/core/UBPersistenceManager.cpp +++ b/src/core/UBPersistenceManager.cpp @@ -582,7 +582,6 @@ UBGraphicsScene* UBPersistenceManager::loadDocumentScene(UBDocumentProxy* proxy, if (mSceneCache.contains(proxy, sceneIndex)) return mSceneCache.value(proxy, sceneIndex); else { - qDebug() << "scene" << sceneIndex << "retrieved from file ..."; UBGraphicsScene* scene = UBSvgSubsetAdaptor::loadScene(proxy, sceneIndex); if (scene) diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index a01aad4e..d85ce6af 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -834,18 +834,17 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth) if (mShouldUseOMP) { - #pragma omp parallel for + //#pragma omp parallel for for (int i = 0; i < collidItemsSize; i++) { UBGraphicsPolygonItem *collidingPolygonItem = qgraphicsitem_cast(collidItems.at(i)); - - if (NULL != collidingPolygonItem) + if(NULL != collidingPolygonItem) { UBGraphicsStrokesGroup* pGroup = collidingPolygonItem->strokesGroup(); if(eraserInnerRect.contains(collidingPolygonItem->boundingRect())) { - #pragma omp critical + //#pragma omp critical // Put the entire polygon into the remove list toBeRemovedItems << collidingPolygonItem; } @@ -882,7 +881,7 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth) } else */if (croppedPathSimplified.isEmpty()) { - #pragma omp critical + //#pragma omp critical // Put the entire polygon into the remove list if the eraser removes all its visible content toBeRemovedItems << collidingPolygonItem; } @@ -893,14 +892,15 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth) foreach(const QPolygonF &pol, croppedPathSimplified.toFillPolygons()) { UBGraphicsPolygonItem* croppedPolygonItem = collidingPolygonItem->deepCopy(pol); - #pragma omp critical + //#pragma omp critical if(NULL != pGroup){ croppedPolygonItem->setStrokesGroup(pGroup); + //pGroup->addToGroup(croppedPolygonItem); } // 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 toBeRemovedItems << collidingPolygonItem; } @@ -961,8 +961,9 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth) foreach(QGraphicsItem* item, toBeRemovedItems){ UBGraphicsPolygonItem* poly = dynamic_cast(item); if(NULL != poly){ - if(NULL != poly->strokesGroup()){ - poly->strokesGroup()->removeFromGroup(poly); + UBGraphicsStrokesGroup* group = poly->strokesGroup(); + if(NULL != group){ + group->removeFromGroup(poly); removeItem(poly); }else{ qDebug() << "No group present"; From bd266b2f495141176d4a754b1472c7448be421a3 Mon Sep 17 00:00:00 2001 From: shibakaneki Date: Wed, 23 May 2012 14:44:04 +0200 Subject: [PATCH 2/4] commit for claudio --- src/domain/UBGraphicsMediaItem.cpp | 2 +- src/domain/UBGraphicsTextItem.cpp | 2 +- src/domain/UBGraphicsTextItemDelegate.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/domain/UBGraphicsMediaItem.cpp b/src/domain/UBGraphicsMediaItem.cpp index 8a25a217..da60415a 100644 --- a/src/domain/UBGraphicsMediaItem.cpp +++ b/src/domain/UBGraphicsMediaItem.cpp @@ -13,7 +13,7 @@ * along with this program. If not, see . */ -#include "UBGraphicsGroupContainerItem.h" +#include "ubgraphicsgroupcontaineritem.h" #include "UBGraphicsMediaItem.h" #include "UBGraphicsMediaItemDelegate.h" #include "UBGraphicsScene.h" diff --git a/src/domain/UBGraphicsTextItem.cpp b/src/domain/UBGraphicsTextItem.cpp index 16328d3e..c0450aa8 100644 --- a/src/domain/UBGraphicsTextItem.cpp +++ b/src/domain/UBGraphicsTextItem.cpp @@ -14,7 +14,7 @@ */ #include -#include "UBGraphicsGroupContainerItem.h" +#include "ubgraphicsgroupcontaineritem.h" #include "UBGraphicsTextItem.h" #include "UBGraphicsTextItemDelegate.h" #include "UBGraphicsScene.h" diff --git a/src/domain/UBGraphicsTextItemDelegate.cpp b/src/domain/UBGraphicsTextItemDelegate.cpp index ce47c04c..d5f3a36c 100644 --- a/src/domain/UBGraphicsTextItemDelegate.cpp +++ b/src/domain/UBGraphicsTextItemDelegate.cpp @@ -17,7 +17,7 @@ #include #include "core/UBApplication.h" -#include "UBGraphicsGroupContainerItem.h" +#include "ubgraphicsgroupcontaineritem.h" #include "UBGraphicsTextItemDelegate.h" #include "UBGraphicsScene.h" #include "gui/UBResources.h" From e4d333229197dbf77e5ed14c4ee45d084f9af591 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Wed, 23 May 2012 15:42:42 +0200 Subject: [PATCH 3/4] fixed lowercase class --- src/adaptors/UBSvgSubsetAdaptor.cpp | 2 +- src/board/UBBoardController.cpp | 2 +- src/board/UBBoardView.cpp | 2 +- ...roupcontaineritem.cpp => UBGraphicsGroupContainerItem.cpp} | 4 ++-- ...icsgroupcontaineritem.h => UBGraphicsGroupContainerItem.h} | 0 ...mdelegate.cpp => UBGraphicsGroupContainerItemDelegate.cpp} | 4 ++-- ...ritemdelegate.h => UBGraphicsGroupContainerItemDelegate.h} | 0 src/domain/UBGraphicsItemDelegate.cpp | 2 +- src/domain/UBGraphicsMediaItem.cpp | 2 +- src/domain/UBGraphicsScene.cpp | 2 +- src/domain/UBGraphicsTextItem.cpp | 2 +- src/domain/UBGraphicsTextItemDelegate.cpp | 2 +- src/domain/domain.pri | 4 ++-- 13 files changed, 14 insertions(+), 14 deletions(-) rename src/domain/{ubgraphicsgroupcontaineritem.cpp => UBGraphicsGroupContainerItem.cpp} (98%) rename src/domain/{ubgraphicsgroupcontaineritem.h => UBGraphicsGroupContainerItem.h} (100%) rename src/domain/{ubgraphicsgroupcontaineritemdelegate.cpp => UBGraphicsGroupContainerItemDelegate.cpp} (95%) rename src/domain/{ubgraphicsgroupcontaineritemdelegate.h => UBGraphicsGroupContainerItemDelegate.h} (100%) diff --git a/src/adaptors/UBSvgSubsetAdaptor.cpp b/src/adaptors/UBSvgSubsetAdaptor.cpp index 0515fd54..516e9827 100644 --- a/src/adaptors/UBSvgSubsetAdaptor.cpp +++ b/src/adaptors/UBSvgSubsetAdaptor.cpp @@ -29,7 +29,7 @@ #include "domain/UBAbstractWidget.h" #include "domain/UBGraphicsStroke.h" #include "domain/UBGraphicsStrokesGroup.h" -#include "domain/ubgraphicsgroupcontaineritem.h" +#include "domain/UBGraphicsGroupContainerItem.h" #include "domain/UBItem.h" #include "tools/UBGraphicsRuler.h" diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index 85872574..b94fbc16 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -49,7 +49,7 @@ #include "domain/UBW3CWidget.h" #include "domain/UBGraphicsTextItem.h" #include "domain/UBPageSizeUndoCommand.h" -#include "domain/ubgraphicsgroupcontaineritem.h" +#include "domain/UBGraphicsGroupContainerItem.h" #include "tools/UBToolsManager.h" diff --git a/src/board/UBBoardView.cpp b/src/board/UBBoardView.cpp index 4f8eddab..2185125d 100644 --- a/src/board/UBBoardView.cpp +++ b/src/board/UBBoardView.cpp @@ -49,7 +49,7 @@ #include "domain/UBItem.h" #include "domain/UBGraphicsMediaItem.h" #include "domain/UBGraphicsSvgItem.h" -#include "domain/ubgraphicsgroupcontaineritem.h" +#include "domain/UBGraphicsGroupContainerItem.h" #include "domain/UBGraphicsStrokesGroup.h" #include "document/UBDocumentProxy.h" diff --git a/src/domain/ubgraphicsgroupcontaineritem.cpp b/src/domain/UBGraphicsGroupContainerItem.cpp similarity index 98% rename from src/domain/ubgraphicsgroupcontaineritem.cpp rename to src/domain/UBGraphicsGroupContainerItem.cpp index cea31fb9..a342d848 100644 --- a/src/domain/ubgraphicsgroupcontaineritem.cpp +++ b/src/domain/UBGraphicsGroupContainerItem.cpp @@ -1,11 +1,11 @@ -#include "ubgraphicsgroupcontaineritem.h" +#include "UBGraphicsGroupContainerItem.h" #include #include "UBGraphicsMediaItem.h" #include "UBGraphicsTextItem.h" #include "domain/UBGraphicsItemDelegate.h" -#include "domain/ubgraphicsgroupcontaineritemdelegate.h" +#include "domain/UBGraphicsGroupContainerItemDelegate.h" #include "domain/UBGraphicsScene.h" #include "core/memcheck.h" diff --git a/src/domain/ubgraphicsgroupcontaineritem.h b/src/domain/UBGraphicsGroupContainerItem.h similarity index 100% rename from src/domain/ubgraphicsgroupcontaineritem.h rename to src/domain/UBGraphicsGroupContainerItem.h diff --git a/src/domain/ubgraphicsgroupcontaineritemdelegate.cpp b/src/domain/UBGraphicsGroupContainerItemDelegate.cpp similarity index 95% rename from src/domain/ubgraphicsgroupcontaineritemdelegate.cpp rename to src/domain/UBGraphicsGroupContainerItemDelegate.cpp index 48f1270f..a78749f1 100644 --- a/src/domain/ubgraphicsgroupcontaineritemdelegate.cpp +++ b/src/domain/UBGraphicsGroupContainerItemDelegate.cpp @@ -1,4 +1,4 @@ -#include "ubgraphicsgroupcontaineritemdelegate.h" +#include "UBGraphicsGroupContainerItemDelegate.h" #include @@ -6,7 +6,7 @@ #include "gui/UBResources.h" #include "domain/UBGraphicsDelegateFrame.h" -#include "domain/ubgraphicsgroupcontaineritem.h" +#include "domain/UBGraphicsGroupContainerItem.h" #include "board/UBBoardController.h" diff --git a/src/domain/ubgraphicsgroupcontaineritemdelegate.h b/src/domain/UBGraphicsGroupContainerItemDelegate.h similarity index 100% rename from src/domain/ubgraphicsgroupcontaineritemdelegate.h rename to src/domain/UBGraphicsGroupContainerItemDelegate.h diff --git a/src/domain/UBGraphicsItemDelegate.cpp b/src/domain/UBGraphicsItemDelegate.cpp index bbc13a99..d1759d3f 100644 --- a/src/domain/UBGraphicsItemDelegate.cpp +++ b/src/domain/UBGraphicsItemDelegate.cpp @@ -40,7 +40,7 @@ #include "domain/UBAbstractWidget.h" #include "domain/UBGraphicsTextItem.h" #include "domain/UBGraphicsMediaItem.h" -#include "domain/ubgraphicsgroupcontaineritem.h" +#include "domain/UBGraphicsGroupContainerItem.h" #include "web/UBWebController.h" diff --git a/src/domain/UBGraphicsMediaItem.cpp b/src/domain/UBGraphicsMediaItem.cpp index da60415a..8a25a217 100644 --- a/src/domain/UBGraphicsMediaItem.cpp +++ b/src/domain/UBGraphicsMediaItem.cpp @@ -13,7 +13,7 @@ * along with this program. If not, see . */ -#include "ubgraphicsgroupcontaineritem.h" +#include "UBGraphicsGroupContainerItem.h" #include "UBGraphicsMediaItem.h" #include "UBGraphicsMediaItemDelegate.h" #include "UBGraphicsScene.h" diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 61f6ccee..f958f4ef 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -56,7 +56,7 @@ #include "UBGraphicsTextItem.h" #include "UBGraphicsStrokesGroup.h" -#include "domain/ubgraphicsgroupcontaineritem.h" +#include "domain/UBGraphicsGroupContainerItem.h" #include "UBAppleWidget.h" #include "UBW3CWidget.h" diff --git a/src/domain/UBGraphicsTextItem.cpp b/src/domain/UBGraphicsTextItem.cpp index c0450aa8..16328d3e 100644 --- a/src/domain/UBGraphicsTextItem.cpp +++ b/src/domain/UBGraphicsTextItem.cpp @@ -14,7 +14,7 @@ */ #include -#include "ubgraphicsgroupcontaineritem.h" +#include "UBGraphicsGroupContainerItem.h" #include "UBGraphicsTextItem.h" #include "UBGraphicsTextItemDelegate.h" #include "UBGraphicsScene.h" diff --git a/src/domain/UBGraphicsTextItemDelegate.cpp b/src/domain/UBGraphicsTextItemDelegate.cpp index d5f3a36c..ce47c04c 100644 --- a/src/domain/UBGraphicsTextItemDelegate.cpp +++ b/src/domain/UBGraphicsTextItemDelegate.cpp @@ -17,7 +17,7 @@ #include #include "core/UBApplication.h" -#include "ubgraphicsgroupcontaineritem.h" +#include "UBGraphicsGroupContainerItem.h" #include "UBGraphicsTextItemDelegate.h" #include "UBGraphicsScene.h" #include "gui/UBResources.h" diff --git a/src/domain/domain.pri b/src/domain/domain.pri index 4028dfed..96dbe679 100644 --- a/src/domain/domain.pri +++ b/src/domain/domain.pri @@ -21,8 +21,8 @@ HEADERS += src/domain/UBGraphicsScene.h \ src/domain/UBGraphicsMediaItem.h \ src/domain/UBAbstractUndoCommand.h\ src/domain/UBAngleWidget.h \ - src/domain/ubgraphicsgroupcontaineritem.h \ - src/domain/ubgraphicsgroupcontaineritemdelegate.h \ + src/domain/UBGraphicsGroupContainerItem.h \ + src/domain/UBGraphicsGroupContainerItemDelegate.h \ src/domain/UBGraphicsStrokesGroup.h HEADERS += src/domain/UBGraphicsItemDelegate.h \ From 7a2df0297263cd4002c535937529e9a0dd54a94a Mon Sep 17 00:00:00 2001 From: Ivan Ilyin Date: Wed, 23 May 2012 17:07:50 +0200 Subject: [PATCH 4/4] test group uuid qgraphicsitem --- src/adaptors/UBSvgSubsetAdaptor.cpp | 2 +- src/domain/UBGraphicsScene.cpp | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/adaptors/UBSvgSubsetAdaptor.cpp b/src/adaptors/UBSvgSubsetAdaptor.cpp index 286d148d..583e0826 100644 --- a/src/adaptors/UBSvgSubsetAdaptor.cpp +++ b/src/adaptors/UBSvgSubsetAdaptor.cpp @@ -1229,7 +1229,7 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex) if (groupItem && groupItem->isVisible()) { - qDebug() << "came across the group during the parsing"; + qDebug() << "came across the group during the parsing, uuid is " << groupItem->data(UBGraphicsItemData::ItemUuid).toString(); continue; } } diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index bbe74fc1..61633201 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -1509,6 +1509,11 @@ UBGraphicsGroupContainerItem *UBGraphicsScene::createGroup(QListsetVisible(true); groupItem->setFocus(); + qDebug() << groupItem->uuid().toString(); + if (groupItem->uuid().isNull()) { + groupItem->setUuid(QUuid::createUuid()); + } + if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, groupItem); UBApplication::undoStack->push(uc);