From ce413d81d0976317dbccfb172f66b9897c128fde Mon Sep 17 00:00:00 2001 From: Vikas Pachdha Date: Fri, 23 Oct 2020 13:01:04 +0200 Subject: [PATCH] AssetExport: Export line height value in pixels Task-number: QDS-2597 Change-Id: I96db25b08db55c3107931ab31e4b9342be92e644 Reviewed-by: Thomas Hartmann --- src/plugins/qmldesigner/CMakeLists.txt | 2 +- .../assetexporterplugin/assetexporterplugin.pri | 1 + .../assetexporterplugin/assetexporterplugin.qbs | 6 ++++++ .../assetexporterplugin/parsers/textnodeparser.cpp | 12 ++++++++++++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/CMakeLists.txt b/src/plugins/qmldesigner/CMakeLists.txt index 21b1c9cf647..48c1f2cc874 100644 --- a/src/plugins/qmldesigner/CMakeLists.txt +++ b/src/plugins/qmldesigner/CMakeLists.txt @@ -42,7 +42,7 @@ add_qtc_plugin(QmlDesigner add_qtc_plugin(assetexporterplugin CONDITION TARGET QmlDesigner - DEPENDS Core ProjectExplorer QmlDesigner Utils Qt5::Qml + DEPENDS Core ProjectExplorer QmlDesigner Utils Qt5::Qml Qt5::QuickPrivate PUBLIC_INCLUDES assetexporterplugin SOURCES assetexporterplugin/assetexportdialog.h assetexporterplugin/assetexportdialog.cpp assetexporterplugin/assetexportdialog.ui diff --git a/src/plugins/qmldesigner/assetexporterplugin/assetexporterplugin.pri b/src/plugins/qmldesigner/assetexporterplugin/assetexporterplugin.pri index 713ab1184fb..41b144f6853 100644 --- a/src/plugins/qmldesigner/assetexporterplugin/assetexporterplugin.pri +++ b/src/plugins/qmldesigner/assetexporterplugin/assetexporterplugin.pri @@ -1,4 +1,5 @@ QT *= qml quick core widgets +QT += quick-private VPATH += $$PWD diff --git a/src/plugins/qmldesigner/assetexporterplugin/assetexporterplugin.qbs b/src/plugins/qmldesigner/assetexporterplugin/assetexporterplugin.qbs index e847525324d..39b1b2909cd 100644 --- a/src/plugins/qmldesigner/assetexporterplugin/assetexporterplugin.qbs +++ b/src/plugins/qmldesigner/assetexporterplugin/assetexporterplugin.qbs @@ -10,6 +10,12 @@ QtcProduct { Depends { name: "ProjectExplorer" } Depends { name: "QmlDesigner" } Depends { name: "Utils" } + Depends { + name: "Qt" + submodules: [ + "quick-private" + ] + } cpp.includePaths: base.concat([ "./", diff --git a/src/plugins/qmldesigner/assetexporterplugin/parsers/textnodeparser.cpp b/src/plugins/qmldesigner/assetexporterplugin/parsers/textnodeparser.cpp index dfbc78a75d9..1a0c938a6ad 100644 --- a/src/plugins/qmldesigner/assetexporterplugin/parsers/textnodeparser.cpp +++ b/src/plugins/qmldesigner/assetexporterplugin/parsers/textnodeparser.cpp @@ -28,7 +28,11 @@ #include #include +#include #include +#include + +#include namespace { const QHash AlignMapping{ @@ -86,6 +90,14 @@ QJsonObject TextNodeParser::json(Component &component) const textDetails.insert(IsMultilineTag, propertyValue("wrapMode").toString().compare("NoWrap") != 0); + // Calculate line height in pixels + QFontMetricsF fm(font); + auto lineHeightMode = propertyValue("lineHeightMode").value(); + double lineHeight = propertyValue("lineHeight").toDouble(); + qreal lineHeightPx = (lineHeightMode == QQuickText::FixedHeight) ? + lineHeight : qCeil(fm.height()) * lineHeight; + textDetails.insert(LineHeightTag, lineHeightPx); + QJsonObject metadata = jsonObject.value(MetadataTag).toObject(); metadata.insert(TextDetailsTag, textDetails); jsonObject.insert(MetadataTag, metadata);