[Libreoffice-commits] core.git: vcl/CppunitTest_vcl_gen.mk vcl/Module_vcl.mk vcl/opengl vcl/qa

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Fri Mar 8 16:58:52 UTC 2019


 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 ba0abd02df8d62342497018f516535a2f1597fb6
Author:     Miklos Vajna <vmiklos at collabora.com>
AuthorDate: Fri Mar 8 16:36:03 2019 +0100
Commit:     Miklos Vajna <vmiklos at collabora.com>
CommitDate: Fri Mar 8 17:58:23 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.
    
    Change-Id: Ia9d049d09dce2ac34826ee427f74616a96a35c88
    Reviewed-on: https://gerrit.libreoffice.org/68925
    Reviewed-by: Miklos Vajna <vmiklos at collabora.com>
    Tested-by: Jenkins

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 c3b491e23088..6c7ed89dfb23 100644
--- a/vcl/Module_vcl.mk
+++ b/vcl/Module_vcl.mk
@@ -247,4 +247,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 8e2eed0479ec..dc7418799e34 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: */


More information about the Libreoffice-commits mailing list