| 1398 | } |
| 1399 | |
| 1400 | std::shared_ptr<UBGraphicsScene> UBGraphicsScene::sceneDeepCopy() const |
| 1401 | { |
| 1402 | std::shared_ptr<UBGraphicsScene> copy = std::make_shared<UBGraphicsScene>(this->document(), this->mUndoRedoStackEnabled); |
| 1403 | |
| 1404 | copy->setBackground(this->isDarkBackground(), mPageBackground); |
| 1405 | copy->setBackgroundGridSize(mBackgroundGridSize); |
| 1406 | copy->setSceneRect(this->sceneRect()); |
| 1407 | |
| 1408 | if (this->mNominalSize.isValid()) |
| 1409 | copy->setNominalSize(this->mNominalSize); |
| 1410 | |
| 1411 | foreach (auto item, items()) |
| 1412 | { |
| 1413 | UBItem* ubItem = dynamic_cast<UBItem*>(item); |
| 1414 | |
| 1415 | // copy visible top-level items |
| 1416 | if (ubItem && item->isVisible() && !item->parentItem()) |
| 1417 | { |
| 1418 | QGraphicsItem* cloneItem = nullptr; |
| 1419 | UBGraphicsGroupContainerItem* group = dynamic_cast<UBGraphicsGroupContainerItem*>(item); |
| 1420 | |
| 1421 | if (group) |
| 1422 | { |
| 1423 | UBGraphicsGroupContainerItem* groupCloned = group->deepCopyNoChildDuplication(); |
| 1424 | groupCloned->resetTransform(); |
| 1425 | groupCloned->setPos(0, 0); |
| 1426 | |
| 1427 | foreach (QGraphicsItem* childItem, group->childItems()) |
| 1428 | { |
| 1429 | UBItem* childUBItem = dynamic_cast<UBItem*>(childItem); |
| 1430 | if (childUBItem) |
| 1431 | { |
| 1432 | UBItem* childUBItemCopy = childUBItem->deepCopy(); |
| 1433 | QGraphicsItem* copiedChild = dynamic_cast<QGraphicsItem*>(childUBItemCopy); |
| 1434 | groupCloned->addToGroup(copiedChild); |
| 1435 | } |
| 1436 | } |
| 1437 | |
| 1438 | bool locked = group->Delegate()->isLocked(); |
| 1439 | |
| 1440 | if (locked) |
| 1441 | groupCloned->setData(UBGraphicsItemData::ItemLocked, QVariant(true)); |
| 1442 | |
| 1443 | groupCloned->setData(UBGraphicsItemData::ItemIsHiddenOnDisplay, QVariant(group->data(UBGraphicsItemData::ItemIsHiddenOnDisplay))); |
| 1444 | |
| 1445 | groupCloned->setTransform(QTransform::fromTranslate(group->pos().x(), group->pos().y())); |
| 1446 | groupCloned->setTransform(group->transform(), true); |
| 1447 | cloneItem = groupCloned; |
| 1448 | } |
| 1449 | else |
| 1450 | { |
| 1451 | cloneItem = dynamic_cast<QGraphicsItem*>(ubItem->deepCopy()); |
| 1452 | } |
| 1453 | |
| 1454 | if (cloneItem) |
| 1455 | { |
| 1456 | copy->addItem(cloneItem); |
| 1457 |
no test coverage detected