From b891c42a4d99990c6130e1cabdbd4c4b00d12fc1 Mon Sep 17 00:00:00 2001 From: Aleksei Kanash Date: Wed, 18 Jan 2012 16:33:58 +0200 Subject: [PATCH] Fixed Mask (curtain item) posision after exporting and importing. (a part of SANKPRE-223?) --- src/adaptors/UBSvgSubsetAdaptor.cpp | 25 ++++++++++++++++++++++--- src/domain/UBGraphicsScene.cpp | 15 +++++++-------- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/adaptors/UBSvgSubsetAdaptor.cpp b/src/adaptors/UBSvgSubsetAdaptor.cpp index cae29ac5..d9319887 100644 --- a/src/adaptors/UBSvgSubsetAdaptor.cpp +++ b/src/adaptors/UBSvgSubsetAdaptor.cpp @@ -2424,8 +2424,23 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::curtainItemToSvg(UBGraphicsCurtainIt */ mXmlWriter.writeStartElement(UBSettings::uniboardDocumentNamespaceUri, "curtain"); + mXmlWriter.writeAttribute("x", QString("%1").arg(curtainItem->boundingRect().center().x())); + mXmlWriter.writeAttribute("y", QString("%1").arg(curtainItem->boundingRect().center().y())); + mXmlWriter.writeAttribute("width", QString("%1").arg(curtainItem->boundingRect().width())); + mXmlWriter.writeAttribute("height", QString("%1").arg(curtainItem->boundingRect().height())); + mXmlWriter.writeAttribute("transform", toSvgTransform(curtainItem->sceneMatrix())); + + //graphicsItemToSvg(curtainItem); + QString zs; + zs.setNum(curtainItem->zValue(), 'f'); // 'f' keeps precision + mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri, "z-value", zs); + + UBItem* ubItem = dynamic_cast(curtainItem); - graphicsItemToSvg(curtainItem); + if (ubItem) + { + mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri, "uuid", UBStringUtils::toCanonicalUuid(ubItem->uuid())); + } mXmlWriter.writeEndElement(); } @@ -2437,13 +2452,17 @@ UBGraphicsCurtainItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::curtainItemFromSvg graphicsItemFromSvg(curtainItem); + QStringRef svgX = mXmlReader.attributes().value("x"); + QStringRef svgY = mXmlReader.attributes().value("y"); QStringRef svgWidth = mXmlReader.attributes().value("width"); QStringRef svgHeight = mXmlReader.attributes().value("height"); - QRectF rect = curtainItem->rect(); + + QRect rect; + rect.setX(svgX.toString().toFloat()-svgWidth.toString().toFloat()/2); + rect.setY(svgY.toString().toFloat()-svgHeight.toString().toFloat()/2); rect.setWidth(svgWidth.toString().toFloat()); rect.setHeight(svgHeight.toString().toFloat()); - rect.translate(- rect.center()); curtainItem->setRect(rect); diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 50f3a7b2..0419b3bf 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -1771,18 +1771,17 @@ void UBGraphicsScene::addMask(const QPointF ¢er) view = (QGraphicsView*)UBApplication::boardController->displayView(); else view = (QGraphicsView*)UBApplication::boardController->controlView(); +*/ - // curtain->setZValue(toolLayerStart + toolOffsetCurtain); - UBGraphicsItem::assignZValue(curtain, toolLayerStart + toolOffsetCurtain); - - QRectF rect = UBApplication::boardController->activeScene()->normalizedSceneRect(); - rect.setSize(QSizeF(rect.width()/2, rect.height()/2)); - - QPointF origin = center.isNull() ? rect.bottomRight() : center; - curtain->setRect(rect.translated(origin - rect.topLeft() / 2)); addItem(curtain); + QRectF rect = UBApplication::boardController->activeScene()->normalizedSceneRect(); + rect.setRect(center.x() - rect.width()/4, center.y() - rect.height()/4, rect.width()/2 , rect.height()/2); + QPointF origin = center.isNull() ? rect.bottomRight() : center; + curtain->setRect(rect);//rect.translated(origin - rect.topLeft() / 2)); + UBGraphicsItem::assignZValue(curtain, toolLayerStart + toolOffsetCurtain); + curtain->setVisible(true); curtain->setSelected(true); setModified(true);