android/source/res/values-de/strings.xml | 1 android/source/res/values-tr/strings.xml | 1 android/source/res/values/strings.xml | 1 android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java | 19 ---- emfio/qa/cppunit/emf/EmfImportTest.cxx | 24 +++++ emfio/qa/cppunit/emf/data/TestFillRegion.emf |binary emfio/source/reader/emfreader.cxx | 46 +++++----- 7 files changed, 50 insertions(+), 42 deletions(-)
New commits: commit 5d4d8278b7fd2a555d6c9678d37877853562bd85 Author: Bartosz Kosiorek <gan...@poczta.onet.pl> AuthorDate: Wed Mar 31 17:50:59 2021 +0200 Commit: Bartosz Kosiorek <gan...@poczta.onet.pl> CommitDate: Wed Mar 31 20:08:37 2021 +0200 tdf#55058 tdf#141394 EMF FILLRGN record is not displayed correctly The EMR_FILLRGN record fills the specified region by using the specified brush. After deep analyse of [EMF] documentation, it seems that bounds from RegionDataHeader was treated as first rectangle of region. As a result whole bounds was treated as the Region. Change-Id: Ie34877b71292c05a1f17381a6de51aaed2386565 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113423 Tested-by: Jenkins Reviewed-by: Bartosz Kosiorek <gan...@poczta.onet.pl> diff --git a/emfio/qa/cppunit/emf/EmfImportTest.cxx b/emfio/qa/cppunit/emf/EmfImportTest.cxx index f587135e1b1e..4213b373eebb 100644 --- a/emfio/qa/cppunit/emf/EmfImportTest.cxx +++ b/emfio/qa/cppunit/emf/EmfImportTest.cxx @@ -51,6 +51,7 @@ class Test : public test::BootstrapFixture, public XmlTestTools, public unotest: void TestLinearGradient(); void TestTextMapMode(); void TestEnglishMapMode(); + void TestFillRegion(); void TestCreatePen(); void TestPdfInEmf(); @@ -69,6 +70,7 @@ public: CPPUNIT_TEST(TestLinearGradient); CPPUNIT_TEST(TestTextMapMode); CPPUNIT_TEST(TestEnglishMapMode); + CPPUNIT_TEST(TestFillRegion); CPPUNIT_TEST(TestCreatePen); CPPUNIT_TEST(TestPdfInEmf); CPPUNIT_TEST_SUITE_END(); @@ -309,6 +311,28 @@ void Test::TestEnglishMapMode() } +void Test::TestFillRegion() +{ + // Check import of EMF image with records: CREATEBRUSHINDIRECT, FILLRGN. The SETICMMODE is also used. + Primitive2DSequence aSequence = parseEmf(u"/emfio/qa/cppunit/emf/data/TestFillRegion.emf"); + CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(aSequence.getLength())); + drawinglayer::Primitive2dXmlDump dumper; + xmlDocUniquePtr pDocument = dumper.dumpAndParse(comphelper::sequenceToContainer<Primitive2DContainer>(aSequence)); + CPPUNIT_ASSERT (pDocument); + + assertXPath(pDocument, "/primitive2D/metafile/transform/mask/polypolygon", "path", "m0 0h3943v3939h-3943z"); + + assertXPath(pDocument, "/primitive2D/metafile/transform/mask/polypolygoncolor", 1); + assertXPath(pDocument, "/primitive2D/metafile/transform/mask/polypolygoncolor[1]/polypolygon", + "path", "m1323 0h1323v1322h1323v1322h-1323v1322h-1323v-1322h-1323v-1322h1323z"); + assertXPath(pDocument, "/primitive2D/metafile/transform/mask/polypolygoncolor[1]", "color", "#ff0000"); + + assertXPath(pDocument, "/primitive2D/metafile/transform/mask/polygonhairline", 1); + assertXPathContent(pDocument, "/primitive2D/metafile/transform/mask/polygonhairline[1]/polygon", + "1323,0 2646,0 2646,1322 3969,1322 3969,2644 2646,2644 2646,3966 1323,3966 1323,2644 0,2644 0,1322 1323,1322"); + assertXPath(pDocument, "/primitive2D/metafile/transform/mask/polygonhairline[1]", "color", "#000000"); +} + void Test::TestCreatePen() { // Check import of EMF image with records: RESTOREDC, SAVEDC, MOVETOEX, LINETO, POLYLINE16, EXTTEXTOUTW with DxBuffer diff --git a/emfio/qa/cppunit/emf/data/TestFillRegion.emf b/emfio/qa/cppunit/emf/data/TestFillRegion.emf new file mode 100644 index 000000000000..da7d4cd65d1f Binary files /dev/null and b/emfio/qa/cppunit/emf/data/TestFillRegion.emf differ diff --git a/emfio/source/reader/emfreader.cxx b/emfio/source/reader/emfreader.cxx index 451c998a7669..12b4fce29323 100644 --- a/emfio/source/reader/emfreader.cxx +++ b/emfio/source/reader/emfreader.cxx @@ -333,38 +333,42 @@ bool ImplReadRegion( tools::PolyPolygon& rPolyPoly, SvStream& rStream, sal_uInt3 if (nLen == 0) return false; - sal_uInt32 nHdSize, nType, nCount, nRgnSize, i; + sal_uInt32 nHdSize, nType, nCountRects, nRgnSize, i; rStream.ReadUInt32(nHdSize); rStream.ReadUInt32(nType); - rStream.ReadUInt32(nCount); + rStream.ReadUInt32(nCountRects); rStream.ReadUInt32(nRgnSize); - if (!rStream.good() || nCount == 0 || nType != RDH_RECTANGLES) + if (!rStream.good() || nCountRects == 0 || nType != RDH_RECTANGLES) return false; sal_uInt32 nSize; - if (o3tl::checked_multiply<sal_uInt32>(nCount, 16, nSize)) + if (o3tl::checked_multiply<sal_uInt32>(nCountRects, 16, nSize)) return false; if (o3tl::checked_add<sal_uInt32>(nSize, nHdSize - 16, nSize)) return false; if (nLen < nSize) return false; - sal_Int32 nx1, ny1, nx2, ny2; - for (i = 0; i < nCount; i++) + sal_Int32 nLeft, nTop, nRight, nBottom; + + //bounds of the region + rStream.ReadInt32(nLeft); + rStream.ReadInt32(nTop); + rStream.ReadInt32(nRight); + rStream.ReadInt32(nBottom); + SAL_INFO("emfio", "\t\tLeft: " << nLeft << ", top: " << nTop << ", right: " << nRight << ", bottom: " << nBottom); + + for (i = 0; i < nCountRects; i++) { - rStream.ReadInt32(nx1); - rStream.ReadInt32(ny1); - rStream.ReadInt32(nx2); - rStream.ReadInt32(ny2); - - tools::Rectangle aRectangle(Point(nx1, ny1), Point(nx2, ny2)); - - tools::Polygon aPolygon(aRectangle); - tools::PolyPolygon aPolyPolyOr1(aPolygon); - tools::PolyPolygon aPolyPolyOr2(rPolyPoly); - rPolyPoly.GetUnion(aPolyPolyOr1, aPolyPolyOr2); - rPolyPoly = aPolyPolyOr2; + rStream.ReadInt32(nLeft); + rStream.ReadInt32(nTop); + rStream.ReadInt32(nRight); + rStream.ReadInt32(nBottom); + + SAL_INFO("emfio", "\t\tLeft: " << nLeft << ", top: " << nTop << ", right: " << nRight << ", bottom: " << nBottom); + tools::PolyPolygon aPolyPolyOr1(tools::Polygon(tools::Rectangle(nLeft, nTop, nRight, nBottom))); + rPolyPoly.GetUnion(aPolyPolyOr1, rPolyPoly); } return true; } @@ -1915,10 +1919,10 @@ namespace emfio case EMR_FILLRGN : { - sal_uInt32 nLen; + sal_uInt32 nRgnDataSize; tools::PolyPolygon aPolyPoly; - mpInputStream->SeekRel( 0x10 ); - mpInputStream->ReadUInt32( nLen ).ReadUInt32( nIndex ); + mpInputStream->SeekRel( 0x10 ); // RectL bounds + mpInputStream->ReadUInt32( nRgnDataSize ).ReadUInt32( nIndex ); if ( ImplReadRegion( aPolyPoly, *mpInputStream, nRecSize ) ) { commit 1477401805e2a88cddb1df259456359398fa2b7d Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Wed Mar 31 14:32:32 2021 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Wed Mar 31 20:08:18 2021 +0200 android: Don't require that user presses 'Back' twice to exit Drop the "Press back again to quit" info shown when pressing "Back" in the file selection dialog in Android Viewer and just quit the app right away. It was originally added in commit d1f671e053864d0bf54d04a855761b43a7f5a9c4 Date: Wed Jun 10 19:04:22 2015 +0200 tdf#87434: android: system back key to go one level up Added an additional check so back has to be pressed twice on the root folder to actually leave the application. It's a check seen in many other apps. but I don't really see any need to bother the user about pressing "Back" again. Nothing is lost at this stage when quitting the app, and I haven't seen anything similar in many current apps myself (but have rather seen some extra confirmation dialogs disappear from desktop applications over the last years). The original request in tdf#87434 to go one level up in the directory hierarchy is unaffected by this, though this only applies for the custom widgets to browse the file system, which will potentially be dropped in the future anyway, now that support for the system file picker has been added in commit d678ee309b02b4cc8af29a097bf5053b8b1b4e06 Author: Michael Weghorn <m.wegh...@posteo.de> Date: Fri Mar 19 14:29:36 2021 +0100 tdf#129833 android: Allow opening files using system file picker Change-Id: Ib324b7f0b82427b04c7708665ff7492a758eec9b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113413 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/android/source/res/values-de/strings.xml b/android/source/res/values-de/strings.xml index 6828066524c9..53854e94929d 100644 --- a/android/source/res/values-de/strings.xml +++ b/android/source/res/values-de/strings.xml @@ -14,7 +14,6 @@ <string name="about_license">Lizenz anzeigen</string> <string name="about_notice">Hinweise anzeigen</string> <string name="about_moreinfo">Weitere Informationen</string> - <string name="back_again_to_quit">Zum Beenden noch einmal \'zurück\' drücken</string> <string name="new_textdocument">Neues Textdokument</string> <string name="new_presentation">Neue Präsentation</string> diff --git a/android/source/res/values-tr/strings.xml b/android/source/res/values-tr/strings.xml index 357f441a8e86..494e0575d0d1 100644 --- a/android/source/res/values-tr/strings.xml +++ b/android/source/res/values-tr/strings.xml @@ -14,7 +14,6 @@ <string name="about_license">Lisansı Görüntüle</string> <string name="about_notice">Bildiriyi Görüntüle</string> <string name="about_moreinfo">Daha Fazla Bilgi</string> - <string name="back_again_to_quit">Çıkış için geri tuşuna tekrar basınız.</string> <string name="new_textdocument">Yeni Kelime İşlemci</string> <string name="new_presentation">Yeni Sunum</string> diff --git a/android/source/res/values/strings.xml b/android/source/res/values/strings.xml index 5cd2c978cef5..ddb396555dfc 100644 --- a/android/source/res/values/strings.xml +++ b/android/source/res/values/strings.xml @@ -14,7 +14,6 @@ <string name="about_license">Show License</string> <string name="about_notice">Show Notice</string> <string name="about_moreinfo">More Info</string> - <string name="back_again_to_quit">Press back again to quit</string> <string name="new_textdocument">New Text Document</string> <string name="new_presentation">New Presentation</string> diff --git a/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java b/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java index 517aa158035d..f05bcae58a49 100644 --- a/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java +++ b/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java @@ -191,8 +191,6 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings private RecyclerView fileRecyclerView; private RecyclerView recentRecyclerView; - private boolean canQuit = false; - private Animation fabOpenAnimation; private Animation fabCloseAnimation; private boolean isFabMenuOpen = false; @@ -440,22 +438,7 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings } else if (isFabMenuOpen) { collapseFabMenu(); } else { - // only exit if warning has been shown - if (canQuit) { - super.onBackPressed(); - return; - } - - // show warning about leaving the app and set a timer - Toast.makeText(this, R.string.back_again_to_quit, - Toast.LENGTH_SHORT).show(); - canQuit = true; - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - canQuit = false; - } - }, 3000); + super.onBackPressed(); } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits