|
 |
135360 |
From e14efbfe1829ea54b5b794903282d3bf834e7e83 Mon Sep 17 00:00:00 2001
|
|
 |
135360 |
From: Miklos Vajna <vmiklos@collabora.co.uk>
|
|
 |
135360 |
Date: Thu, 15 Oct 2015 09:41:52 +0200
|
|
 |
135360 |
Subject: [PATCH 209/398] lok::Document::paintTile: fix non-rectangular tiles
|
|
 |
135360 |
wrt. transparency
|
|
 |
135360 |
|
|
 |
135360 |
When copying the alpha channel, the offset was incorrect when canvas
|
|
 |
135360 |
width/height did not equal.
|
|
 |
135360 |
|
|
 |
135360 |
Change-Id: If0ab3ec7a4ad4dd958419b566fd473732965cfda
|
|
 |
135360 |
(cherry picked from commit d30f5bc3e65463f28c3087acad6f88e12d60e53b)
|
|
 |
135360 |
---
|
|
 |
135360 |
desktop/qa/desktop_lib/test_desktop_lib.cxx | 21 +++++++++++++++++++++
|
|
 |
135360 |
desktop/source/lib/init.cxx | 2 +-
|
|
 |
135360 |
2 files changed, 22 insertions(+), 1 deletion(-)
|
|
 |
135360 |
|
|
 |
135360 |
diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx
|
|
 |
135360 |
index 30d8ae7adaf0..c3cc748a5d61 100644
|
|
 |
135360 |
--- a/desktop/qa/desktop_lib/test_desktop_lib.cxx
|
|
 |
135360 |
+++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx
|
|
 |
135360 |
@@ -61,6 +61,7 @@ public:
|
|
 |
135360 |
void testGetFilterTypes();
|
|
 |
135360 |
void testGetPartPageRectangles();
|
|
 |
135360 |
void testSearchCalc();
|
|
 |
135360 |
+ void testPaintTile();
|
|
 |
135360 |
|
|
 |
135360 |
CPPUNIT_TEST_SUITE(DesktopLOKTest);
|
|
 |
135360 |
CPPUNIT_TEST(testGetStyles);
|
|
 |
135360 |
@@ -69,6 +70,7 @@ public:
|
|
 |
135360 |
CPPUNIT_TEST(testGetFilterTypes);
|
|
 |
135360 |
CPPUNIT_TEST(testGetPartPageRectangles);
|
|
 |
135360 |
CPPUNIT_TEST(testSearchCalc);
|
|
 |
135360 |
+ CPPUNIT_TEST(testPaintTile);
|
|
 |
135360 |
CPPUNIT_TEST_SUITE_END();
|
|
 |
135360 |
|
|
 |
135360 |
uno::Reference<lang::XComponent> mxComponent;
|
|
 |
135360 |
@@ -280,6 +282,25 @@ void DesktopLOKTest::testSearchCalc()
|
|
 |
135360 |
comphelper::LibreOfficeKit::setActive(false);
|
|
 |
135360 |
}
|
|
 |
135360 |
|
|
 |
135360 |
+void DesktopLOKTest::testPaintTile()
|
|
 |
135360 |
+{
|
|
 |
135360 |
+ LibLODocument_Impl* pDocument = loadDoc("blank_text.odt");
|
|
 |
135360 |
+ int nCanvasWidth = 100;
|
|
 |
135360 |
+ int nCanvasHeight = 300;
|
|
 |
135360 |
+ std::vector<unsigned char> aBuffer(nCanvasWidth * nCanvasHeight * 4);
|
|
 |
135360 |
+ int nTilePosX = 0;
|
|
 |
135360 |
+ int nTilePosY = 0;
|
|
 |
135360 |
+ int nTileWidth = 1000;
|
|
 |
135360 |
+ int nTileHeight = 3000;
|
|
 |
135360 |
+
|
|
 |
135360 |
+ // This used to crash: painTile() implementation did not handle
|
|
 |
135360 |
+ // nCanvasWidth != nCanvasHeight correctly, as usually both are just always
|
|
 |
135360 |
+ // 256.
|
|
 |
135360 |
+ pDocument->pClass->paintTile(pDocument, aBuffer.data(), nCanvasWidth, nCanvasHeight, nTilePosX, nTilePosY, nTileWidth, nTileHeight);
|
|
 |
135360 |
+
|
|
 |
135360 |
+ closeDoc();
|
|
 |
135360 |
+}
|
|
 |
135360 |
+
|
|
 |
135360 |
CPPUNIT_TEST_SUITE_REGISTRATION(DesktopLOKTest);
|
|
 |
135360 |
|
|
 |
135360 |
CPPUNIT_PLUGIN_IMPLEMENT();
|
|
 |
135360 |
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
|
|
 |
135360 |
index b69e58a4af1f..053ab440bf55 100644
|
|
 |
135360 |
--- a/desktop/source/lib/init.cxx
|
|
 |
135360 |
+++ b/desktop/source/lib/init.cxx
|
|
 |
135360 |
@@ -788,7 +788,7 @@ void doc_paintTile (LibreOfficeKitDocument* pThis,
|
|
 |
135360 |
{
|
|
 |
135360 |
for (int nCol = 0; nCol < nCanvasWidth; ++nCol)
|
|
 |
135360 |
{
|
|
 |
135360 |
- const int nOffset = (nCanvasHeight * nRow) + nCol;
|
|
 |
135360 |
+ const int nOffset = (nCanvasWidth * nRow) + nCol;
|
|
 |
135360 |
// VCL's transparent is 0, RGBA's transparent is 0xff.
|
|
 |
135360 |
pBuffer[nOffset * 4 +3] = 0xff - aAlpha[nOffset];
|
|
 |
135360 |
}
|
|
 |
135360 |
--
|
|
 |
135360 |
2.12.0
|
|
 |
135360 |
|