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() {}

Reply via email to