vcl/CppunitTest_vcl_gen.mk            |   42 +++++++++++++++++
 vcl/Module_vcl.mk                     |    6 ++
 vcl/opengl/salbmp.cxx                 |    7 --
 vcl/qa/cppunit/gen/data/tdf121120.png |binary
 vcl/qa/cppunit/gen/gen.cxx            |   84 ++++++++++++++++++++++++++++++++++
 5 files changed, 132 insertions(+), 7 deletions(-)

New commits:
commit 20726c61680242eb647253651302dc048348687d
Author:     Miklos Vajna <vmik...@collabora.com>
AuthorDate: Fri Mar 8 16:36:03 2019 +0100
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Mon Mar 11 22:26:36 2019 +0100

    tdf#121120 vcl opengl: handle 8-bit palette bitmap as 24 bit RGB texture
    
    This fixes the black rectangle instead of actual image content in the
    bugdoc.
    
    An alternative would be to handle this in the PNG import, but commit
    66dbd4da3afcadb1393daf9be9cecff71b86509a (tdf#113918: Workaround: Load
    1bpp indexed PNG as 8bpp indexed Bitmap, 2017-11-20) already tried
    something similar and failed, leading to the revert in commit
    25cd843664919974f0d21ca7a0b02cc43e9eeabb (tdf#115297: alternative fix
    for displaying 1bit images, 2018-02-27).
    
    The test is especially useful with SAL_FORCEGL=1 SAL_USE_VCLPLUGIN=gen
    specified on Linux, so the GL codepath is triggered.
    
    (cherry picked from commit ba0abd02df8d62342497018f516535a2f1597fb6)
    
    Change-Id: Ia9d049d09dce2ac34826ee427f74616a96a35c88
    Reviewed-on: https://gerrit.libreoffice.org/69036
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Caolán McNamara <caol...@redhat.com>

diff --git a/vcl/CppunitTest_vcl_gen.mk b/vcl/CppunitTest_vcl_gen.mk
new file mode 100644
index 000000000000..84dd0ca25bb0
--- /dev/null
+++ b/vcl/CppunitTest_vcl_gen.mk
@@ -0,0 +1,42 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#*************************************************************************
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+#*************************************************************************
+
+$(eval $(call gb_CppunitTest_CppunitTest,vcl_gen))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,vcl_gen, \
+       vcl/qa/cppunit/gen/gen \
+))
+
+$(eval $(call gb_CppunitTest_use_libraries,vcl_gen, \
+       comphelper \
+       cppu \
+       cppuhelper \
+       sal \
+       sfx \
+       subsequenttest \
+       test \
+       tl \
+       unotest \
+       vcl \
+))
+
+$(eval $(call gb_CppunitTest_use_external,vcl_gen,boost_headers))
+
+$(eval $(call gb_CppunitTest_use_sdk_api,vcl_gen))
+
+$(eval $(call gb_CppunitTest_use_ure,vcl_gen))
+$(eval $(call gb_CppunitTest_use_vcl_non_headless,vcl_gen))
+
+$(eval $(call gb_CppunitTest_use_rdb,vcl_gen,services))
+
+$(eval $(call gb_CppunitTest_use_configuration,vcl_gen))
+
+# vim: set noet sw=4 ts=4:
diff --git a/vcl/Module_vcl.mk b/vcl/Module_vcl.mk
index baef5f31e34e..cd50d11771f1 100644
--- a/vcl/Module_vcl.mk
+++ b/vcl/Module_vcl.mk
@@ -251,4 +251,10 @@ $(eval $(call gb_Module_add_screenshot_targets,vcl,\
     CppunitTest_vcl_dialogs_test \
 ))
 
+ifneq ($(DISPLAY),)
+$(eval $(call gb_Module_add_slowcheck_targets,vcl,\
+    CppunitTest_vcl_gen \
+))
+endif
+
 # vim: set noet sw=4 ts=4:
diff --git a/vcl/opengl/salbmp.cxx b/vcl/opengl/salbmp.cxx
index ca8f118c8003..2a579e813a5b 100644
--- a/vcl/opengl/salbmp.cxx
+++ b/vcl/opengl/salbmp.cxx
@@ -496,13 +496,6 @@ GLuint OpenGLSalBitmap::CreateTexture()
 
             determineTextureFormat(mnBits, nFormat, nType);
         }
-        else if( mnBits == 8 && maPalette.IsGreyPalette() )
-        {
-            // no conversion needed for grayscale
-            pData = mpUserBuffer.get();
-            nFormat = GL_LUMINANCE;
-            nType = GL_UNSIGNED_BYTE;
-        }
         else
         {
             VCL_GL_INFO( "::CreateTexture - convert from " << mnBits << " to 
24 bits" );
diff --git a/vcl/qa/cppunit/gen/data/tdf121120.png 
b/vcl/qa/cppunit/gen/data/tdf121120.png
new file mode 100644
index 000000000000..8e48fba385f9
Binary files /dev/null and b/vcl/qa/cppunit/gen/data/tdf121120.png differ
diff --git a/vcl/qa/cppunit/gen/gen.cxx b/vcl/qa/cppunit/gen/gen.cxx
new file mode 100644
index 000000000000..f5d1c1c6769c
--- /dev/null
+++ b/vcl/qa/cppunit/gen/gen.cxx
@@ -0,0 +1,84 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <com/sun/star/frame/Desktop.hpp>
+
+#include <comphelper/processfactory.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/objsh.hxx>
+#include <sfx2/sfxbasemodel.hxx>
+#include <test/unoapi_test.hxx>
+#include <vcl/bitmapaccess.hxx>
+#include <vcl/pngwrite.hxx>
+#include <vcl/gdimtf.hxx>
+#include <tools/stream.hxx>
+
+using namespace com::sun::star;
+
+/// This test uses the gen backend (i.e. intentionally not the svp one, which 
is the default.)
+class GenTest : public UnoApiTest
+{
+public:
+    GenTest()
+        : UnoApiTest("/vcl/qa/cppunit/gen/data/")
+    {
+    }
+
+    virtual void setUp() override
+    {
+        UnoApiTest::setUp();
+        mxDesktop.set(
+            
frame::Desktop::create(comphelper::getComponentContext(getMultiServiceFactory())));
+        SfxApplication::GetOrCreate();
+    };
+
+    virtual void tearDown() override
+    {
+        if (mxComponent.is())
+        {
+            closeDocument(mxComponent);
+            mxComponent->dispose();
+        }
+        UnoApiTest::tearDown();
+    };
+
+    Bitmap load(const char* pName)
+    {
+        OUString aFileURL;
+        createFileURL(OUString::createFromAscii(pName), aFileURL);
+        mxComponent = loadFromDesktop(aFileURL, 
"com.sun.star.drawing.DrawingDocument");
+        SfxBaseModel* pModel = dynamic_cast<SfxBaseModel*>(mxComponent.get());
+        CPPUNIT_ASSERT(pModel);
+        SfxObjectShell* pShell = pModel->GetObjectShell();
+        std::shared_ptr<GDIMetaFile> xMetaFile = pShell->GetPreviewMetaFile();
+        BitmapEx aResultBitmap;
+        CPPUNIT_ASSERT(xMetaFile->CreateThumbnail(aResultBitmap));
+        return aResultBitmap.GetBitmap();
+    }
+
+    uno::Reference<lang::XComponent> mxComponent;
+};
+
+CPPUNIT_TEST_FIXTURE(GenTest, testTdf121120)
+{
+    Bitmap aBitmap = load("tdf121120.png");
+    Bitmap::ScopedReadAccess pAccess(aBitmap);
+    const Size& rSize = aBitmap.GetPrefSize();
+    Color aColor(pAccess->GetPixel(rSize.getWidth() / 2, rSize.getHeight() / 
2).GetColor());
+    // Without the accompanying fix in place, this test would have failed with 
'Expected: 255;
+    // Actual  : 1'. I.e. center if the preview (which has the background 
color) was ~black, not
+    // white.
+    CPPUNIT_ASSERT_EQUAL(0xff, int(aColor.GetRed()));
+    CPPUNIT_ASSERT_EQUAL(0xff, int(aColor.GetBlue()));
+    CPPUNIT_ASSERT_EQUAL(0xff, int(aColor.GetGreen()));
+}
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to