vcl/qt5/QtFontFace.cxx | 27 ++++++++++++++++++++++----- vcl/qt5/QtGraphics_Text.cxx | 8 +++++++- vcl/source/filter/itiff/itiff.cxx | 13 ++++++++++++- 3 files changed, 41 insertions(+), 7 deletions(-)
New commits: commit c90db9e43db509bef6892c8443480ffa9ed8bbe0 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Wed Jun 1 12:40:23 2022 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Wed Jun 1 16:03:32 2022 +0200 Resolves: tdf#149417 allow one short read in tiff import as not a failure Change-Id: I77bff41abd51cfd3050836fff04e9644b0828c09 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135239 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/vcl/source/filter/itiff/itiff.cxx b/vcl/source/filter/itiff/itiff.cxx index 9c0b6efff6b6..672ef92d902a 100644 --- a/vcl/source/filter/itiff/itiff.cxx +++ b/vcl/source/filter/itiff/itiff.cxx @@ -37,9 +37,11 @@ namespace { SvStream& rStream; tsize_t nSize; + int nShortReads; Context(SvStream& rInStream, tsize_t nInSize) : rStream(rInStream) , nSize(nInSize) + , nShortReads(0) { } }; @@ -48,7 +50,16 @@ namespace static tsize_t tiff_read(thandle_t handle, tdata_t buf, tsize_t size) { Context* pContext = static_cast<Context*>(handle); - return pContext->rStream.ReadBytes(buf, size); + tsize_t nRead = pContext->rStream.ReadBytes(buf, size); + // tdf#149417 allow one short read, which is similar to what + // we do for jpeg since tdf#138950 + if (nRead < size && !pContext->nShortReads) + { + memset(static_cast<char*>(buf) + nRead, 0, size - nRead); + ++pContext->nShortReads; + return size; + } + return nRead; } static tsize_t tiff_write(thandle_t, tdata_t, tsize_t) commit 3483df997170378dc44d4f025b960e489e0c7924 Author: Stephan Bergmann <sberg...@redhat.com> AuthorDate: Wed Jun 1 10:11:24 2022 +0200 Commit: Stephan Bergmann <sberg...@redhat.com> CommitDate: Wed Jun 1 16:03:18 2022 +0200 Avoid -Werror,-Wdeprecated-declarations when building Library_vclplug_qt6 > vcl/qt6/../qt5/QtFontFace.cxx:132:19: error: 'QFontDatabase' is deprecated: Call the static functions instead [-Werror,-Wdeprecated-declarations] > QFontDatabase aFDB; > ^ > /usr/include/qt6/QtGui/qfontdatabase.h:113:5: note: 'QFontDatabase' has been explicitly marked deprecated here > QT_DEPRECATED_VERSION_X_6_0("Call the static functions instead") explicit QFontDatabase() = default; > ^ > /usr/include/qt6/QtCore/qglobal.h:382:44: note: expanded from macro 'QT_DEPRECATED_VERSION_X_6_0' > # define QT_DEPRECATED_VERSION_X_6_0(text) QT_DEPRECATED_X(text) > ^ > /usr/include/qt6/QtCore/qglobal.h:294:33: note: expanded from macro 'QT_DEPRECATED_X' > # define QT_DEPRECATED_X(text) Q_DECL_DEPRECATED_X(text) > ^ > /usr/include/qt6/QtCore/qcompilerdetection.h:1146:36: note: expanded from macro 'Q_DECL_DEPRECATED_X' > # define Q_DECL_DEPRECATED_X(x) [[deprecated(x)]] > ^ etc. Change-Id: Icc6a5f2f78af9b287b71bdd347f396928a100b25 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135225 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glo...@fbihome.de> Reviewed-by: Stephan Bergmann <sberg...@redhat.com> diff --git a/vcl/qt5/QtFontFace.cxx b/vcl/qt5/QtFontFace.cxx index 89182d115756..291d7e90fdef 100644 --- a/vcl/qt5/QtFontFace.cxx +++ b/vcl/qt5/QtFontFace.cxx @@ -129,19 +129,30 @@ QtFontFace* QtFontFace::fromQFont(const QFont& rFont) QtFontFace* QtFontFace::fromQFontDatabase(const QString& aFamily, const QString& aStyle) { +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + auto const isFixedPitch = QFontDatabase::isFixedPitch(aFamily, aStyle); + auto const weigh = QFontDatabase::weight(aFamily, aStyle); + auto const italic = QFontDatabase::italic(aFamily, aStyle); + auto const aPointList = QFontDatabase::pointSizes(aFamily, aStyle); +#else QFontDatabase aFDB; + auto const isFixedPitch = aFDB.isFixedPitch(aFamily, aStyle); + auto const weigh = aFDB.weight(aFamily, aStyle); + auto const italic = aFDB.italic(aFamily, aStyle); + auto const aPointList = aFDB.pointSizes(aFamily, aStyle); +#endif + FontAttributes aFA; aFA.SetFamilyName(toOUString(aFamily)); if (IsStarSymbol(aFA.GetFamilyName())) aFA.SetSymbolFlag(true); aFA.SetStyleName(toOUString(aStyle)); - aFA.SetPitch(aFDB.isFixedPitch(aFamily, aStyle) ? PITCH_FIXED : PITCH_VARIABLE); - aFA.SetWeight(QtFontFace::toFontWeight(aFDB.weight(aFamily, aStyle))); - aFA.SetItalic(aFDB.italic(aFamily, aStyle) ? ITALIC_NORMAL : ITALIC_NONE); + aFA.SetPitch(isFixedPitch ? PITCH_FIXED : PITCH_VARIABLE); + aFA.SetWeight(QtFontFace::toFontWeight(weigh)); + aFA.SetItalic(italic ? ITALIC_NORMAL : ITALIC_NONE); int nPointSize = 0; - QList<int> aPointList = aFDB.pointSizes(aFamily, aStyle); if (!aPointList.empty()) nPointSize = aPointList[0]; @@ -167,10 +178,16 @@ QFont QtFontFace::CreateFont() const { case FontDB: { - QFontDatabase aFDB; QStringList aStrList = m_aFontId.split(","); if (3 == aStrList.size()) + { +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + aFont = QFontDatabase::font(aStrList[0], aStrList[1], aStrList[2].toInt()); +#else + QFontDatabase aFDB; aFont = aFDB.font(aStrList[0], aStrList[1], aStrList[2].toInt()); +#endif + } else SAL_WARN("vcl.qt", "Invalid QFontDatabase font ID " << m_aFontId); break; diff --git a/vcl/qt5/QtGraphics_Text.cxx b/vcl/qt5/QtGraphics_Text.cxx index 9859ff02f061..940578c5d8bf 100644 --- a/vcl/qt5/QtGraphics_Text.cxx +++ b/vcl/qt5/QtGraphics_Text.cxx @@ -92,7 +92,6 @@ void QtGraphics::GetDevFontList(vcl::font::PhysicalFontCollection* pPFC) if (pPFC->Count()) return; - QFontDatabase aFDB; FreetypeManager& rFontManager = FreetypeManager::get(); psp::PrintFontManager& rMgr = psp::PrintFontManager::get(); ::std::vector<psp::fontID> aList; @@ -118,9 +117,16 @@ void QtGraphics::GetDevFontList(vcl::font::PhysicalFontCollection* pPFC) if (bUseFontconfig) SalGenericInstance::RegisterFontSubstitutors(pPFC); +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + for (auto& family : QFontDatabase::families()) + for (auto& style : QFontDatabase::styles(family)) + pPFC->Add(QtFontFace::fromQFontDatabase(family, style)); +#else + QFontDatabase aFDB; for (auto& family : aFDB.families()) for (auto& style : aFDB.styles(family)) pPFC->Add(QtFontFace::fromQFontDatabase(family, style)); +#endif } void QtGraphics::ClearDevFontCache() {}