summaryrefslogtreecommitdiff
path: root/vcl/qa
AgeCommit message (Collapse)Author
2024-02-06return string_view from some XmlWalker methodsNoel Grandin
elides some OString temporaries Change-Id: Ic07f18eb3c71637593e64128605c1ebfa8e68474 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163044 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-01-30tdf#105844 unotest,xmlsecurity: fix tests on MacOSXMichael Stahl
The new tests fail with: > core/xmlsecurity/qa/unit/signing/signing2.cxx: > 252: Assertion > Test name: testPasswordPreserveMacroSignatureODFWholesomeLO242::TestBody > equality assertion failed > - Expected: 1 > - Actual : 4 This is because only the first test that runs sees the testing CA certificates that are copied in MacrosTest::setUpNssGpg(); when the second test runs, they have somehow vanished. This is because apparently SQLite on MacOSX, unlike on Linux, monitors the file descriptors of its database files, and then invalidates itself when setUpNssGpg() via osl::File::copy() renames and unlinks the existing database files: > cppunittester[29873:5483181] [logging] BUG IN CLIENT OF libsqlite3.dylib: database integrity compromised by API violation: vnode renamed while in use: core/workdir/CppunitTest/xmlsecurity_signing2.test.user/cert9.db.osl-tmp > cppunittester[29873:5483181] [logging] invalidated open fd: 5 (0x20) > cppunittester[29873:5483181] [logging] BUG IN CLIENT OF libsqlite3.dylib: database integrity compromised by API violation: vnode unlinked while in use: core/workdir/CppunitTest/xmlsecurity_signing2.test.user/cert9.db.osl-tmp > cppunittester[29873:5483181] [logging] invalidated open fd: 5 (0x11) > cppunittester[29873:5483181] [logging] BUG IN CLIENT OF libsqlite3.dylib: database integrity compromised by API violation: vnode renamed while in use: core/workdir/CppunitTest/xmlsecurity_signing2.test.user/key4.db.osl-tmp > cppunittester[29873:5483181] [logging] invalidated open fd: 6 (0x20) > cppunittester[29873:5483181] [logging] BUG IN CLIENT OF libsqlite3.dylib: database integrity compromised by API violation: vnode unlinked while in use: core/workdir/CppunitTest/xmlsecurity_signing2.test.user/key4.db.osl-tmp > cppunittester[29873:5483181] [logging] invalidated open fd: 6 (0x11) Split MacrosTest::setUpNssGpg()/tearDownNssGpg() into functions setUpX509() which only does something on the 1st invocation, and setUpGpg()/tearDownGpg() which may be invoked per-test (they could also be run once for the whole test suite, but not obvious how to do that); PDF related tests don't need GPG. Presumably this is (along with the WNT-specific problem fixed in commit 3e9a700091872480dd085f0928d1d30b7d74cfd7) the reason why most of the tests not only accept the expected result of SignatureState::OK but also SignatureState::NOTVALIDATED. Change-Id: I59b85ca651cecaccfdea729ed1e645c53079c8bf Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162693 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2024-01-27Drop std::as_const from css::uno::Sequence iterationsMike Kaganski
Obsoleted by commit 2484de6728bd11bb7949003d112f1ece2223c7a1 (Remove non-const Sequence::begin()/end() in internal code, 2021-10-15) and commit fb3c04bd1930eedacd406874e1a285d62bbf27d9 (Drop non-const Sequence::operator[] in internal code, 2021-11-05). Change-Id: Idbafef5d34c0d4771cbbf75b9db9712e504164cd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162640 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2024-01-25tdf#142806 sw: PDF export: fix multi-frame links/fieldsMichael Stahl
* SwRootFrame::CalcFrameRects() assumption that there is only 1 frame is wrong, add a loop; also remove dead eMode check in else branch * GetCursorRectsContainingText() cannot call GetCurrFrame() because that returns always the same frame, but it can be split across several * fix GetFrameOfModify() to return the correct frame in case of a field (where it returned always the frame containing the start of the field, but pViewPosAndCalcFrame could be in a follow frame) (regression from commit 5726be1314517d47dd733aabe64a3d85cce094c5) Change-Id: I63a94080ee120f178580e0339db4541691165780 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162523 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2024-01-17tdf#141908: replace hex colors with color keywordsLuv Sharma
Change-Id: I3d23186045c17006e50d9ef48bc26df3c79d28b9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162052 Tested-by: Jenkins Reviewed-by: Hossein <hossein@libreoffice.org>
2024-01-03UnoApiTest::loadFromURL -> UnoApiTest::loadFromFileMike Kaganski
The old name was misleading (it doesn't take an URL, but a filename); also, now it's easier to grep for it - doesn't get mixed with vcl::graphic::loadFromURL. Change-Id: Ib88d2194200a6a54d2326971e0306ba39f0c7025 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161578 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-12-28vcl: BreakLines() -> BreakLine() and BreakLinesSimple() -> BreakLineSimple()Chris Sherlock
Change-Id: I8cb778a09566c1b7d6c2ba4ac5766a5675e62465 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158465 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2023-12-28vcl: test BreakLinesWithIterator with hyphensChris Sherlock
Change-Id: Ied5e688b9eec19c2f1b3d1289cc4a6605703c3e4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157904 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2023-12-28vcl: add test for an invalid index in OutputDevice::GetTextBreak()Chris Sherlock
Change-Id: I0b534e42e041972ad2f92e789fc757e949a33d4e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158394 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2023-12-19tdf#123864 gtk3 a11y: Consider states when mapping BUTTON_DROPDOWNMichael Weghorn
Take the checkable state into account when mapping the `AccessibleRole::BUTTON_DROPDOWN` role. There is no direct ATK equivalent for `AccessibleRole::BUTTON_DROPDOWN`. Don't always use ATK_ROLE_PUSH_BUTTON, but use ATK_ROLE_TOGGLE_BUTTON when the button is CHECKABLE, i.e. it can be toggled. With this in place, Orca now announces the state of the underline button (on/off) when using the gtk3 VCL plugin. Related Orca source code that requires the toggle button role: [1] The state is not announced when using the qt6 VCL plugin yet, and Qt currently doesn't have a toggle button role, so that would have to be added there first to do something similar there. For gtk4, mapping could probably be done similarly, but more is missing for Orca to announce things in custom widgets (e.g. event handling), so leave that for later. [1] https://gitlab.gnome.org/GNOME/orca/-/blob/b80bb951a651f5f12a5ddfb2a5b1c151568d045b/src/orca/scripts/apps/soffice/speech_generator.py#L177 Change-Id: If69e08d2e4939cc709d44e89cc2fd1d01691a70b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160904 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-12-19tdf#123864 a11y: Handle new CHECKABLE state in misc placesMichael Weghorn
Add reporting/handling of the CHECKABLE a11y state added in commit d6c6472bbe1c90b733a4d69c4c8528f4de3750d3 Author: Michael Weghorn <m.weghorn@posteo.de> Date: Mon Nov 13 15:53:44 2023 +0100 tdf#123864 a11y: Add new AccessibleStateType::CHECKABLE in various places where it seems pretty straightforward. `VCLXAccessibleMenuItem` is a bit more complex and will be handled separately. Change-Id: I212b8439609d34410413959973163aa7d809cbf1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160901 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-12-17fix 32 bit buildRene Engelhard
/home/rene/LibreOffice/git/libreoffice-24-2/vcl/qa/cppunit/a11y/atspi2/atspi2.cxx: In static member function 'static void Atspi2TestTree::compareObjects(const com::sun::star::uno::Reference<com::sun::star::accessibility::XAccessible>&, const Atspi::Accessible&, sal_uInt16)': /home/rene/LibreOffice/git/libreoffice-24-2/vcl/qa/cppunit/a11y/atspi2/atspi2.cxx:362:9: error: no matching function for call to 'assertEquals(const long int&, int, CppUnit::SourceLine, const char [1])' 362 | CPPUNIT_ASSERT_EQUAL(nLOTargetsCount, pAtspiRelation.getNTargets()); | ^ /usr/include/cppunit/TestAssert.h:161:6: note: candidate: 'template<class T> void CppUnit::assertEquals(const T&, const T&, SourceLine, const std::string&)' 161 | void assertEquals( const T& expected, | ^~~~~~~~~~~~ /usr/include/cppunit/TestAssert.h:161:6: note: template argument deduction/substitution failed: /home/rene/LibreOffice/git/libreoffice-24-2/vcl/qa/cppunit/a11y/atspi2/atspi2.cxx:362:9: note: deduced conflicting types for parameter 'const T' ('long int' and 'int') 362 | CPPUNIT_ASSERT_EQUAL(nLOTargetsCount, pAtspiRelation.getNTargets()); | ^ make: *** [/home/rene/LibreOffice/git/libreoffice-24-2/solenv/gbuild/LinkTarget.mk:340: /home/rene/LibreOffice/git/libreoffice-24-2/workdir/CxxObject/vcl/qa/cppunit/a11y/atspi2/atspi2.o] Error 1 Change-Id: I7b7e3e756b135d1066af631e92738e7dfc1ede4a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160882 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-12-13Enable Skia in unit testsMike Kaganski
CreateSalInstance will set aUsePlugin to "svp" in case it is in SAL_USE_VCLPLUGIN environment variable (can be controlled using gb_CppunitTest_use_vcl_non_headless in makefiles); when true is returned from Application::IsBitmapRendering(); or when true is returned from IsHeadlessModeRequested() (e.g., when '--headless' is used in the command line). The latter is true for most of the CppunitTests, including CppunitTest_vcl_skia (it may be controlled by gb_CppunitTest_use_vcl_non_headless_with_windows in makefiles). Then this would ensure that Application::EnableBitmapRendering is called. isVCLSkiaEnabled gave false, when Application::IsBitmapRendering was true, which meant that all tests in CppunitTest_vcl_skia effectively didn't run at all. With this change, on platforms where there's no 'svp' plugin, Skia will be enabled in unit tests in software mode: Windows and macOS. Fix bug in a couple of places, where the SkAutoCanvasRestore needs to be destructed before we call other code, otherwise we hit an assert in destroySurface(). Disable the vcl XOR test and CppunitTest_sd_png_export_tests, in skia mode, just so we can just this commit in, that will need further investigation. Tweak assert in addPolygonToPath to account for case where polygon has zero points. Change-Id: Idc0a66d27deb3cf09f631a42bbe037714ebcdc0f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155952 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-12-12tdf#113866 Add test.Adam Seskunas
Test if font color persists when exporting to pdf *and* Print Text in Black is true. Change-Id: I20ccc59cad2e5c7b5d52c69673675fed61a76080 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160321 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2023-12-10add missing #if MORE_FONTSRene Engelhard
since it nededs Source Han Sans since 9b5964cf5931d7c09e4fd624d68595891c2afb58 Change-Id: I35bd30048b298e8cbdaf6de22ae2022d51415aa9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160512 Tested-by: Jenkins Reviewed-by: Chris Sherlock <chris.sherlock79@gmail.com> Reviewed-by: René Engelhard <rene@debian.org>
2023-12-07simplify and modernise ScopedBitmapAccessNoel Grandin
(*) Make all of it use a "Scoped" paradigm (*) pass by value, no need to allocate on heap (*) make all of the construction go via the *Access constructors, instead of it being some via the constructors and some via the Acquire*Access methods. (*) take the Bitmap& by const& in the constructor, so we can avoid doing const_cast in random places. Change-Id: Ie03a9145c0965980ee8df9a89b8714a425e18f74 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160293 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-12-06make AlphaMask separate from BitmapNoel Grandin
Having it subclass Bitmap encourages confusion in passing it around, and I need the extra type-safety for my work on merged-alpha Change-Id: I35819f9b8ee609cbdaf865563c78531e397b529b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160235 Tested-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-12-05vcl: add unit test for cached glyphs based on tdf#103492Chris Sherlock
Change-Id: Id66be996053435c92b667eb142ae1e271ff33b90 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159386 Tested-by: Jenkins Tested-by: Tomaž Vajngerl <quikee@gmail.com> Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2023-12-05vcl: add unit tests for a mixture of CJK and latin charactersChris Sherlock
To influence the fallback fonts chosen, I have introduced a new OutputDevice function ForceFallbackFont() which injects ("forces") a font as the first one in the font fallback chain. Change-Id: I05856cbe829fde0eb140bb48a37795a84d780900 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159221 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2023-12-02AlphaMask::ReleaseAccess is unnecessaryNoel Grandin
There is no way the format can change via the Bitmap*Access mechanisms, and we already perform these asserts in the constructor and operator=. The code has been there since commit 8ab086b6cc054501bfbf7ef6fa509c393691e860 Author: Jens-Heiner Rechtien <hr@openoffice.org> Date: Mon Sep 18 16:07:07 2000 +0000 initial import Change-Id: I75195f6fd4e29d7133e787131b6c8479a9188d1c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160242 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-11-19Extended loplugin:ostr: vclStephan Bergmann
Change-Id: I2a9d5383d1831d8bf61e5280d66556d71fccae52 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159666 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-11-19vcl: add unit tests for simple text 'AV' with kerning and no-kerning enabledChris Sherlock
Change-Id: I72812c9fd83730daf62aeb4a300c548f153ee8a4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159091 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2023-11-08loplugin:unreffun (clang-cl)Stephan Bergmann
...and make things private/protected, while at it Change-Id: I5854f55dfe073e30b853c0d3bbafc4b7293c7f0b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159132 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-11-07simplify OutputDevice::ClipAndDrawGradientMetafileNoel Grandin
using a poly clip is better than using XOR, so make this the default. Change-Id: I48bb6b5d617b8b6dc82760277d72a50a2123ae0f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158957 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-11-03tdf#157028 vcl: PDF export: inline OBJR dictionariesMichael Stahl
There seems to be no reason why SE child OBJR dictionaries are separate objects, they could just be inline. Change-Id: I9e4fcdf56d9b7454325f9d3ef7ba55bdc090f948 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158838 Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> Tested-by: Jenkins
2023-11-02tdf#157816 sw: PDF export: filter out links on empty space, INetAttrsMichael Stahl
Several problems here: * As with fields, there may be selection rectangles with no text * SwRootFrame::CalcFrameRects() adds flys that are anchored in the selection to the selection * A fly text portion causes Link annotations to split, but not Link SE * If a fly only partially overlaps a line vertically, then CalcFrameRects() produces a full-width half-height rectangle and another 2 half-width half-height rectangles on both sides. This is useless, the rectangles must be full line height. Add some code in CalcFrameRects() to use the fly portions in the SwParaPortion instead of the fly frame areas. Change-Id: I93f0c12a5e5a3d5f51fcc4b33052a112e9174863 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158576 Tested-by: Michael Stahl <michael.stahl@allotropia.de> Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-11-02tdf#157816 sw: PDF export: filter out links on empty space, fieldsMichael Stahl
If there is a fly overlapping a paragraph, it may happen (depending on wrap settings and position) that there's an empty space on one side of the fly; the cursor selection region has the flys removed, and this region is used here for the PDF export. So there is a rectangle on the text on one side of the fly, turned into the desired Link annotation, and another rectangle on the other side of the fly, turned into another undesired Link annotation that isn't connected to any SE because without text there is no SE. This is a tricky problem, and the only idea to fix it is to try to see if there is text in the rectangle by first GetModelPositionForViewPoint() resulting in a SwPosition and a SwSpecialPos with an index inside the field; then see if GetCharRect() for this position returns a cursor rectangle that intersects the original selection rectangle. Change-Id: I6918eac16690e7194208a828108bfa968d28d12a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158571 Tested-by: Michael Stahl <michael.stahl@allotropia.de> Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-10-31tdf#157679: vcl_pdfexport: Add unittestXisco Fauli
Change-Id: I31aa7f683e8d9f9a227ba88c58e7fdba94c83bb5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158725 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2023-10-31CppunitTest_vcl_pdfexport: split into twoXisco Fauli
It already has 109 tests Change-Id: Ic16c5ee68f020c2ee1662354786fb82aada62e0b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158667 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2023-10-30Fix typoAndrea Gelmini
Change-Id: I63c8d4f30a1558e3f1cee72cc5d4ba1426409912 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158635 Reviewed-by: Julien Nabet <serval2412@yahoo.fr> Tested-by: Jenkins
2023-10-29CppunitTest_vcl_animate: use CPPUNIT_TEST_FIXTUREofftkp
CPPUNIT_TEST_FIXTURE is easier to write tests for and separate if needed Change-Id: I2c478205847e4d15c0f8d65d498dd8d82079fa5d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158616 Tested-by: Jenkins Reviewed-by: Paris Oplopoios <parisoplop@gmail.com>
2023-10-29tdf#155887 WMF Fix displaying images with size of EOF other that 3Bartosz Kosiorek
The size of W_META_EOF (record indicates the end of the WMF metafile) could be different than 3 (e.g. 6). The MS Office is allowing different sizes of EOF, and just properly finalizine parsing WMF file, and display its content. Original bug report: https://bz.apache.org/ooo/show_bug.cgi?id=42090 Change-Id: I21b72615c7f45fdca145e6240c6451d7d264d238 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153204 Tested-by: Jenkins Reviewed-by: Bartosz Kosiorek <gang65@poczta.onet.pl>
2023-10-28tdf#155887 Add individual WMF records validationBartosz Kosiorek
In previous implementation, there was no proper validation of the records, by it's size. This commit adds validation of the WMF records. It would allow to interrupt reading, if wrong record found and play only records until it it correct. It will allow to mimic the behaviour of MS Office: If the wrong record is detected, the image is displayed till the wrong record. Currently in LibreOffice, if wrong record is found whole read is interrupted. Change-Id: I0c82deabcec7a416ca44540e693822f1986437eb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153351 Tested-by: Jenkins Reviewed-by: Bartosz Kosiorek <gang65@poczta.onet.pl>
2023-10-28tdf#135586 a11y: Add a new BLOCK_QUOTE a11y roleMichael Weghorn
A block quote role exists in all of WAI-ARIA 1.3 (role "blockquote", [1]), IAccessible2 (`IA2_ROLE_BLOCK_QUOTE`, [2]) and AT-SPI (`ROLE_BLOCK_QUOTE`, [3]). Take over the definition that is the same in WAI-ARIA and IAccessible2: > A section of content that is quoted from another source. The intended use for now is for a Writer paragraph using the "Block Quotation" paragraph style, similar to how the HEADING role is used for paragraphs using a corresponding paragraph style. For gtk3 (ATK) and winaccessibility (IAccessible2), map the new role to the equivalant roles. For macOS and the gtk4 as well as the Qt-based VCL plugins on Linux which currently don't have an equivalent role, fall back to the same role that the PARAGRAPH role is mapped to. This way, the behavior there will remain unchanged once the BLOCK_QUOTE role is used for Writer paragraphs with the corresponding style. In general, treat BLOCK_QUOTE like PARAGRAPH in code applying special handling for the PARAGRAPH role. [1] https://w3c.github.io/aria/#blockquote [2] https://github.com/LinuxA11y/IAccessible2/blob/3d8c7f0b833453f761ded6b12d8be431507bfe0b/api/AccessibleRole.idl#L318 [3] https://gitlab.gnome.org/GNOME/at-spi2-core/-/blob/7cc4cee53ddbd22631fd110f0e5ce045dec2e411/xml/Accessible.xml#L615-616 Change-Id: I248c183a2e7ec5d6f0a89bf3cb4829bbd8588c77 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158573 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-10-27tdf#152571 speedup slow draw file saveNoel Grandin
with lots of images, we seem to spend lots of time calculating CRC. Replace the vcl checksum/CRC with rtl_crc32 in sal/, which forwards to the zlib implementation, which has all kinds of nice SIMD code for performance. Change-Id: I295e2ee91b3450fa558b06e67aac0fbb20b85f52 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158529 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-10-25tdf#157703 sw: PDF/UA export: export heading labels as textMichael Stahl
Been advised that a Lbl element is not much use in practice. Change-Id: I4ea339d7b48a7ee8ae40f94a9fc71f3e409c07ad Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158421 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-10-24tdf#157028 vcl: PDF export: inline attribute dictionariesMichael Stahl
There seems to be no reason why SE attribute dictionaries are separate objects, they could just be inline, which saves a little space (1%) and more importantly the PDF file is easier to read with less clutter. Change-Id: Iaaea2432313c0b710edabecae32545205f4f495e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158392 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-10-24tdf#156565 sw: PDF/UA export: only one Link ILSE per linkMichael Stahl
The problem is that for a hyperlink, multiple Link SEs are created, but only one Link annotation; the Link SEs all point to the annotation but the annotation can only point to one Link SE. So try to create only one Link SE for a hyperlink, similar to commit ee3c3fcf5c48964f7bc1d64484409f072c614866. This could be further subdivided by Spans when formatting properties change but it looks complicated and rarely needed. Change-Id: I7d158b599ec744b03e78eeca88d717183f2ba1dc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158387 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-10-24tdf#157817 sw: PDF/UA export: fix ToX header sectionsMichael Stahl
The problem was that a P or equivalent element is not allowed as child of a TOC; previously the P was outside/before the TOC because the ToX header was completely ignored but now it starts a SE for the ToC content section before being ignored. Tagged PDF Best Practice Guide suggests putting the header inside a Caption element. Another problem is that if the ToX header is on one page but the first entry in the ToX content section is on the next page, BeginTag() created a new SE for the ToX content section. (regression from commit 033e37b49b5712df19dbfd2c307a102bce620de1) Change-Id: I3c1f8fdda81c1f10198f5eaefc10bcd14f277a8b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158298 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-10-23Extended loplugin:ostr: Rewrite some O[U]StringLiteral -> O[U]StringStephan Bergmann
...in include files. This is a mix of automatic rewriting in include files and manual fixups (mostly addressing loplugin:redundantfcast) in source files that include those. Change-Id: I1f3cc1e67b9cabd2e9d61a4d9e9a01e587ea35cc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158337 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-10-21tdf#156182, tdf#156685: vcl_pdfexport: Add unittestXisco Fauli
Change-Id: I6756f1f19b9cc178191a47ea81857981f44aced0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158264 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2023-10-20Extended loplugin:ostr: Automatic rewrite O[U]StringLiteral: vclStephan Bergmann
Change-Id: Iaeacacbbb0eec907d884219aa2bcfe7a86f00a2c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158291 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-10-19tdf#157703 sw: PDF/UA export: fix headings with labelsMichael Stahl
The problem is that the new Lbl/LBody elements are produced even for outline nodes, but those aren't represented as lists at all, but as headings H1..H10. Plausible representation of the heading label could be in a Lbl element inside H1, or simply as plain text; i can't find any recommendation either way. Let's try Lbl inside H1, neither veraPDF nor PAC3 complain about it. (regression from commit 9b38beadf9eaf027b201cdf0ecb2bce5611014dd) Change-Id: I691957d0c4a80d1339cb2b87c72c9aa652abfb9a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158127 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-10-17tdf#157792 FILEOPEN: PPT: logo not displayedNoel Grandin
regression from commit 3622404f09448b82c095256140afe6240b522ece Author: Noel Grandin <noel.grandin@collabora.co.uk> Date: Wed Oct 11 12:54:43 2023 +0200 tdf#157636 FILEOPEN: PPT: Images have no background But actually from commit 81994cb2b8b32453a92bcb011830fcb884f22ffe Convert internal vcl bitmap formats transparency->alpha (II) where BitmapEx::CombineMaskOr was not properly updated. To make this stuff more obvious, add a version of CombineOr called AlphaCombineOr that only operates on AlphaMask objects. Change-Id: I8222bcdd7babefb748d21a71d02775c6a74bf068 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158085 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-10-12drawinglayer,svx: PDF/UA export: put Form SE into anchor paragraph SEMichael Stahl
This is like commit d467f1aa3d028f399826c97e2eecedcd79efcf65 and commit 6e5d59c2ca6969e9491f97cd7a00d094fc62cfb3 but for the form controls, which have their own special ControlPrimitive2D. Change-Id: I4b4ac45e81f490a7b625acd9e8753300d10bf119 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157847 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-10-12tdf#157397 vcl: PDF export: fix CreateControl replayMichael Stahl
The problem is that the CreateLink and CreateControl actions are replayed in a different order than they are recorded, because CreateLink is a global action, and CreateControl a page action. This means that the mCurId at the time when PDFExtOutDevData::CreateControl() is called does not correspond to a position in mParaIds when CreateControl is replayed; it will be inserted too early and bump all the CreateLink ones to later indexes. Avoid this by adding another global action CreateControlLink that is added when CreateControl is being replayed, which appears to work. (Another subtle problem is that, in case of PDF/A-1, the page actions could be discarded completely; this should work in that case too.) (regression from commit d4d471fc88fe4fd14f44dfccdfe360dec327d4f0) Change-Id: I92d89ac08db6548e9f0d1480d984aeacb4d22262 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157767 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-10-11cool#7318 Calc rendering accelerationNoel Grandin
we are spending a lot of time in SalLayoutGlyphsCache::GetLayoutGlyphs, and most of that is inserting into the GlyphsCache, which has a very very large key. Shrink that key a little bit on 64-bit machines, where tools::Long is 64-bit, which is quite unnecessary for FontMetric fields. Change-Id: I64983d191ba9aeb76671671443ea90f90fd2c401 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157753 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-10-11Delete OUString UTF-16 string literal ctor/assignment opStephan Bergmann
...that have been made unused by 7ef3d937415185ef66e32dd3043783eddcd03db5 "loplugin:ostr: Rewrite some uses of O[U]String to use ""_ostr/u""_ustr literals". (And which means we can remove the relevant code from that plugin again.) (This also found a handful of remaining uses that had been hard for the plugin to discover, along the lines of > std::map<OUString, int> m = {{u"foo", 0}}; being represented by a > DeclStmt 0xdaca578 <line:103:5, col:50> > `-VarDecl 0xdac9150 <col:5, col:49> col:29 s11 'std::map<OUString, int>':'std::map<rtl::OUString, int>' cinit destroyed > `-ExprWithCleanups 0xdaca548 <col:35, col:49> 'std::map<OUString, int>':'std::map<rtl::OUString, int>' > `-CXXConstructExpr 0xdaca508 <col:35, col:49> 'std::map<OUString, int>':'std::map<rtl::OUString, int>' 'void (initializer_list<value_type>, const std::less<rtl::OUString> &, const allocator_type &)' list std::initializer_list > |-CXXStdInitializerListExpr 0xdaca480 <col:35, col:49> 'initializer_list<value_type>':'std::initializer_list<std::pair<const rtl::OUString, int>>' > | `-MaterializeTemporaryExpr 0xdaca468 <col:35, col:49> 'const std::pair<const rtl::OUString, int>[1]' xvalue > | `-CXXBindTemporaryExpr 0xdaca448 <col:35, col:49> 'const std::pair<const rtl::OUString, int>[1]' (CXXTemporary 0xdaca448) > | `-InitListExpr 0xdac9df0 <col:35, col:49> 'const std::pair<const rtl::OUString, int>[1]' > | `-CXXConstructExpr 0xdaca408 <col:36, col:48> 'const std::pair<const rtl::OUString, int>' 'void (const char16_t (&)[4], int &&) noexcept(_S_nothrow_constructible<const char16_t (&)[4], int>())' list > | |-StringLiteral 0xdac91b8 <col:38> 'const char16_t[4]' lvalue u"foo" > | `-MaterializeTemporaryExpr 0xdaca3f0 <col:46> 'int' xvalue > | `-IntegerLiteral 0xdac91d8 <col:46> 'int' 0 > |-CXXDefaultArgExpr 0xdaca498 <<invalid sloc>> 'const std::less<rtl::OUString>':'const std::less<rtl::OUString>' lvalue > `-CXXDefaultArgExpr 0xdaca4b8 <<invalid sloc>> 'const allocator_type':'const std::allocator<std::pair<const rtl::OUString, int>>' lvalue Clang AST.) Change-Id: I496fe9d4d5e1a033cb7b27b4e04b303f8ddbed4a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157756 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-10-10tdf#157182 vcl,filter: PDF/A export: fix crash due to SE ID mismatchMichael Stahl
The SE IDs in PDFExtOutDevData and PDFWriterImpl are supposed to match. If PDF/A-1 is exported then RemoveTransparenciesFromMetaFile() is called and that does unspeakable things to the Metafile and then we just throw away the PDF related data for the page in PDFExtOutDevData::ResetSyncData(). This means that then EnsureStructureElement are called on PDFExtOutDevData but not on PDFWriterImpl, so on the next page the IDs will no longer match, which is noticed if there is no transparency to be removed on that page. pdfextoutdevdata.cxx:347: bool vcl::PageSyncData::PlaySyncPageAct(): Assertion `id == -1 || id == mParaInts.front()' failed. Guess the easiest way to deal with this is to have the premature ResetSyncData() replay only the EnsureStructureElement actions, which is only possible because they don't really require any extra data stored in the ridiculous vectors in PageSyncData; PDFWriterImpl will eventually remove the elements as they are never initialised. (regression from commit 07d790ca473cd6e71f0343419b819fa6b485dc01) Change-Id: I8eb295504067edff00608e28fd86b0c86d547083 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157748 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-10-08Fix buildMike Kaganski
See e.g. https://ci.libreoffice.org/job/gerrit_linux_clang_dbgutil/148996/consoleFull#699387013baec2b5c-2b20-4190-a3fa-ceac4be9cf93 > error: use a _ustr user-defined string literal instead of constructing an instance > of 'rtl::OUString' from a UTF-16 string literal [loplugin:ostr] Change-Id: Ia813425bc75e4351add73b8665355d02222ccf78 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157629 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>