diff --git a/plugins/cffadaptor/src/UBCFFAdaptor.cpp b/plugins/cffadaptor/src/UBCFFAdaptor.cpp index 3ddceb7d..5630c01d 100644 --- a/plugins/cffadaptor/src/UBCFFAdaptor.cpp +++ b/plugins/cffadaptor/src/UBCFFAdaptor.cpp @@ -1794,6 +1794,7 @@ bool UBCFFAdaptor::UBToCFFConverter::parseUBZPolygon(const QDomElement &element, if (setCommonAttributesFromUBZ(element, iwbElementPart, svgElementPart)) { + svgElementPart.setAttribute(aStroke, svgElementPart.attribute(aFill)); addSVGElementToResultModel(svgElementPart, dstSvgList, getElementLayer(element)); if (0 < iwbElementPart.attributes().count()) @@ -1827,6 +1828,7 @@ bool UBCFFAdaptor::UBToCFFConverter::parseUBZPolyline(const QDomElement &element if (setCommonAttributesFromUBZ(element, iwbElementPart, svgElementPart)) { + svgElementPart.setAttribute(aStroke, svgElementPart.attribute(aFill)); addSVGElementToResultModel(svgElementPart, dstSvgList, getElementLayer(element)); if (0 < iwbElementPart.attributes().count()) @@ -1859,6 +1861,7 @@ bool UBCFFAdaptor::UBToCFFConverter::parseUBZLine(const QDomElement &element, QM if (setCommonAttributesFromUBZ(element, iwbElementPart, svgElementPart)) { + svgElementPart.setAttribute(aStroke, svgElementPart.attribute(aFill)); addSVGElementToResultModel(svgElementPart, dstSvgList, getElementLayer(element)); if (0 < iwbElementPart.attributes().count()) diff --git a/src/adaptors/UBCFFSubsetAdaptor.cpp b/src/adaptors/UBCFFSubsetAdaptor.cpp index 0bf967f7..f156e4c5 100644 --- a/src/adaptors/UBCFFSubsetAdaptor.cpp +++ b/src/adaptors/UBCFFSubsetAdaptor.cpp @@ -547,7 +547,7 @@ void UBCFFSubsetAdaptor::UBCFFSubsetReader::readTextCharAttr(const QDomElement & { QString fontSz = element.attribute(aFontSize); if (!fontSz.isNull()) { - qreal fontSize = fontSz.toDouble() * 72 / QApplication::desktop()->physicalDpiY(); + qreal fontSize = fontSz.remove("pt").toDouble(); format.setFontPointSize(fontSize); } QString fontColorText = element.attribute(aFill); @@ -712,12 +712,14 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgTextarea(const QDomElement & blockFormat.setAlignment(Qt::AlignLeft); QTextCharFormat textFormat; - textFormat.setFontPointSize(12 * 72 / QApplication::desktop()->physicalDpiY()); + // default values + textFormat.setFontPointSize(12); textFormat.setForeground(qApp->palette().foreground().color()); textFormat.setFontFamily("Arial"); textFormat.setFontItalic(false); textFormat.setFontWeight(QFont::Normal); + // readed values readTextBlockAttr(element, blockFormat); readTextCharAttr(element, textFormat); @@ -1140,7 +1142,13 @@ void UBCFFSubsetAdaptor::UBCFFSubsetReader::repositionSvgItem(QGraphicsItem *ite QTransform tr = item->sceneTransform(); item->setTransform(rTransform.scale(fullScaleX, fullScaleY), true); tr = item->sceneTransform(); - QPoint pos ((int)((x + mShiftVector.x() + (newVector - oldVector).x()) * mVBTransFactor), (int)((y +mShiftVector.y() + (newVector - oldVector).y()) * mVBTransFactor)); + QPoint pos; + if (UBGraphicsTextItem::Type == item->type()) + pos = QPoint((int)((x + mShiftVector.x() + (newVector - oldVector).x())), (int)((y +mShiftVector.y() + (newVector - oldVector).y()) * mVBTransFactor)); + else + pos = QPoint((int)((x + mShiftVector.x() + (newVector - oldVector).x()) * mVBTransFactor), (int)((y +mShiftVector.y() + (newVector - oldVector).y()) * mVBTransFactor)); + + item->setPos(pos); } diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 1b1afe81..9c3d2e16 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -775,7 +775,9 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth) QList collidItems = items(eraserBoundingRect, Qt::IntersectsItemBoundingRect); QList intersectedItems; - QList intersectedPolygons; + QList> intersectedPolygons; + + //qDebug() << "Start, eraser is " << eraserPath; #pragma omp parallel for for(int i=0; isceneTransform().map(pi->polygon())); + if (eraserPath.contains(itemPainterPath)) { #pragma omp critical { + //qDebug() << itemPainterPath << " - delete!"; // Compele remove item intersectedItems << pi; - intersectedPolygons << QPolygonF(); + intersectedPolygons << QList(); } } else if (eraserPath.intersects(itemPainterPath)) { + QPainterPath newPath = itemPainterPath.subtracted(eraserPath); #pragma omp critical { + //qDebug() << itemPainterPath << " - modify to - " << newPath; intersectedItems << pi; - intersectedPolygons << newPath.simplified().toFillPolygon(pi->sceneTransform().inverted()); + intersectedPolygons << newPath.simplified().toFillPolygons(pi->sceneTransform().inverted()); } } } @@ -814,7 +820,23 @@ void UBGraphicsScene::eraseLineTo(const QPointF &pEndPoint, const qreal &pWidth) } else { - intersectedItems[i]->setPolygon(intersectedPolygons[i]); + UBGraphicsPolygonItem *pi = intersectedItems[i]; + + for(int j = 0; j < intersectedPolygons[i].size(); j++) + { + QPolygonF p = intersectedPolygons[i][j]; + if (j==0) + pi->setPolygon(intersectedPolygons[i][j]); + else + { + UBGraphicsPolygonItem* polygonItem = new UBGraphicsPolygonItem(intersectedPolygons[i][j], pi->parentItem()); + pi->copyItemParameters(polygonItem); + + polygonItem->setStroke(pi->stroke()); + polygonItem->setStrokesGroup(pi->strokesGroup()); + pi->strokesGroup()->addToGroup(polygonItem); + } + } } }