summaryrefslogtreecommitdiff
path: root/drawinglayer
AgeCommit message (Collapse)AuthorFilesLines
2024-01-02tdf#158913 secure Primitive 'visit' using mutexArmin Le Grand (allotropia)2-36/+72
See text in tdf task for detailed description. Change-Id: I4677c9f2ecfdcb760d05fe916a2aa2dd25ad40b6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161543 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2024-01-02Add flush mechanism to buffered Primitives IVArmin Le Grand (allotropia)2-12/+26
Now trying not to delete a LocalCallbackTimer if it gets used - no limitation since this only happens when a time is given (maCallbackSeconds). Also added to reset callback ptr (clearCallback()) to nullptr and make onShot dependent of that, hope is that destruction of LocalCallbackTimer in ~BufferedDecompositionPrimitive2D gets safer that way, excluding race conditions. Change-Id: Id474962bdae14631afc42d2d92db635408fb67d9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161434 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2023-12-30move IsFuzzing to comphelperCaolán McNamara1-3/+2
and try something a bit more generic Change-Id: I1d8256576cd02f0a589df350ba7b53059dd586a5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161250 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-12-29tdf#158743 use maCurrentTransformation for embeddingArmin Le Grand (allotropia)1-1/+4
Seems to be an error in the preparation to Bitmap conversion in VclMetafileProcessor2D::processTransparencePrimitive2D. While for calculating the LogicRange maCurrentTransformation is used (and that is correct) it is *not* used in the embedding for calling convertToBitmapEx. It is correct to get back to logic/world coordinates for calculating the embedding, but maCurrentTransformation is needed to define the correct full embedding. I might have overlooked that in the original change because maCurrentTransformation is local to the VclMetafileProcessor2D in action right at that moment and is usually empty for simple cases, but - as can be seen - not always. Change-Id: Ib2deaa2c8328655ecc80964ba2e23e67964ac3ef Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161409 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2023-12-29Typo: opertator->operator (drawinglayer)Julien Nabet2-2/+2
Change-Id: I20128a8e0068e6eb29af9e7114100fb437e9e079 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161407 Tested-by: Julien Nabet <serval2412@yahoo.fr> Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2023-12-23cid#1546006 COPY_INSTEAD_OF_MOVECaolán McNamara1-2/+3
and cid#1545999 COPY_INSTEAD_OF_MOVE cid#1545995 COPY_INSTEAD_OF_MOVE cid#1545994 COPY_INSTEAD_OF_MOVE cid#1545989 COPY_INSTEAD_OF_MOVE cid#1545982 COPY_INSTEAD_OF_MOVE cid#1545977 COPY_INSTEAD_OF_MOVE cid#1545970 COPY_INSTEAD_OF_MOVE cid#1545856 COPY_INSTEAD_OF_MOVE cid#1545845 COPY_INSTEAD_OF_MOVE cid#1545838 COPY_INSTEAD_OF_MOVE cid#1545776 COPY_INSTEAD_OF_MOVE cid#1545774 COPY_INSTEAD_OF_MOVE cid#1545744 COPY_INSTEAD_OF_MOVE cid#1545719 COPY_INSTEAD_OF_MOVE cid#1545716 COPY_INSTEAD_OF_MOVE cid#1545687 COPY_INSTEAD_OF_MOVE cid#1545648 COPY_INSTEAD_OF_MOVE cid#1545643 COPY_INSTEAD_OF_MOVE cid#1545641 COPY_INSTEAD_OF_MOVE cid#1545604 COPY_INSTEAD_OF_MOVE cid#1545531 COPY_INSTEAD_OF_MOVE cid#1545530 COPY_INSTEAD_OF_MOVE cid#1545524 COPY_INSTEAD_OF_MOVE cid#1545516 COPY_INSTEAD_OF_MOVE cid#1545501 COPY_INSTEAD_OF_MOVE cid#1545486 COPY_INSTEAD_OF_MOVE Change-Id: Idcf3e27bb9e81b6a77d5ef75c9376eb1d6aff8c9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161245 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-12-23Related: tdf#158807 mutex must be locked when disposing a VirtualDevicePatrick Luby1-0/+18
If the following .ppt document is opened in a debug build and the document is left open for a minute or two without changing any content, this destructor will be called on a non-main thread with the mutex unlocked: https://bugs.documentfoundation.org/attachment.cgi?id=46801 This hits an assert in VirtualDevice::ReleaseGraphics() so explicitly lock the mutex and explicitly dispose and clear the VirtualDevice instances variables. Change-Id: I5d371a4e99fca4aae2b6edc8b53eca10cb143aef Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161243 Tested-by: Jenkins Reviewed-by: Patrick Luby <plubius@libreoffice.org>
2023-12-21Add flush mechanism to buffered Primitives IIArmin Le Grand (allotropia)2-19/+45
As sberg mentioned in previous change this might be responsible for heap-use-after-free problems. I took a look and it seems to be possible that the timer calls back while deletion of the helper is in progress, so I try now to first stop the timer and then delete so that it cannot trigger. Will see if that works - if not I might have to use another lock... Change-Id: I1ae27d9ed890f352904cab18c3292b449659a3ce Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161128 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2023-12-19Drop some wrapper methods from SvtOptionsDrawinglayerGabor Kelemen4-6/+11
just use the wrapped officecfg methods instead of: IsSolidDragCreate IsRenderDecoratedTextDirect IsRenderSimpleTextDirect GetQuadratic3DRenderLimit GetQuadraticFormControlRenderLimit IsTransparentSelection Change-Id: Ie0f3ec0f8fdbbf08facfff1a372c666c8a0c8979 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160654 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2023-12-19Add flush mechanism to buffered PrimitivesArmin Le Grand (allotropia)8-2/+154
There are the classes BufferedDecompositionPrimitive2D and BufferedDecompositionGroupPrimitive2D that offer a unified mechanism to preserve/buffer the decomposition of a Primitive, independent of the complexity. This may include e.g. the pixel representation of a 3D Scene, for Charts/CustomShapes and others. Until now these were refreshed when the objects change, or when the buffered decomposition decides that it is necessary, but there was no general mechanism in place to clean these up while the Primitive owning them was alive/used. This is not a big thing in Draw/Impress since this would only be relevant when zooming deep into a SdrPage, so the non-vislible parts would still hold data that would not be needed. But for Calc and Writer this is more relevant: A 3D Chart on the 1st page of a Writer document would be held buffered all the time a user would work on pages below that. This is good for guaranteeing fast re-visualization when scrolling up again, but until then would just block memory. So I added this general mechanism that allows activating flushing timer-based, on Seconds. The default is null seconds, thus deactivated. It should only be used for Primitives that can get expensive, not for all. NOTE: I checked activating for all Primitives to be on the safe side, works. It is now (initially) activated for: - GlowPrimitive2D - GraphicPrimitive2D - MetafilePrimitive2D - ScenePrimitive2D - ShadowPrimitive2D (softShadow) - SoftEdgePrimitive2D - SdrCustomShapePrimitive2D - SdrGrafPrimitive2D These are the usual suspects that may use some memory to buffer their decomposition (for good reasons, each repaint uses it). Other Primitives which may show need to be treated this way can easily be added, just by calling setCallbackSeconds(s) in their constructor. This is true for all Primitives derived from the two classes mentioned above. NOTE: Too short buffering times are *not* useful - e.g. for a expensive-to-be-recreated 3D chart representation this may not pay out, so I chose times in a way that try to respect this. NOTE: This change needs 7397fa7cdfc33f5a079df42e4d6cfa59ae9e062d to work correctly (thanks to sberg for this). Without this the office hangs/does not terminate regularly in trying to destroy the 'TimerManager'. Change-Id: Id4802afcb6d12480bb2935cc1ef67fe443b3b788 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160926 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2023-12-16cid#1545970 COPY_INSTEAD_OF_MOVECaolán McNamara3-22/+20
and cid#1545957 COPY_INSTEAD_OF_MOVE cid#1545944 COPY_INSTEAD_OF_MOVE cid#1545939 COPY_INSTEAD_OF_MOVE cid#1545931 COPY_INSTEAD_OF_MOVE cid#1545926 COPY_INSTEAD_OF_MOVE cid#1545909 COPY_INSTEAD_OF_MOVE cid#1545899 COPY_INSTEAD_OF_MOVE cid#1545896 COPY_INSTEAD_OF_MOVE cid#1545894 COPY_INSTEAD_OF_MOVE cid#1545858 COPY_INSTEAD_OF_MOVE cid#1545823 COPY_INSTEAD_OF_MOVE cid#1545820 COPY_INSTEAD_OF_MOVE cid#1545819 COPY_INSTEAD_OF_MOVE cid#1545772 COPY_INSTEAD_OF_MOVE cid#1545749 COPY_INSTEAD_OF_MOVE cid#1545743 COPY_INSTEAD_OF_MOVE cid#1545739 COPY_INSTEAD_OF_MOVE cid#1545635 COPY_INSTEAD_OF_MOVE cid#1545603 COPY_INSTEAD_OF_MOVE cid#1545602 COPY_INSTEAD_OF_MOVE cid#1545592 COPY_INSTEAD_OF_MOVE cid#1545544 COPY_INSTEAD_OF_MOVE cid#1545532 COPY_INSTEAD_OF_MOVE cid#1545520 COPY_INSTEAD_OF_MOVE cid#1545512 COPY_INSTEAD_OF_MOVE cid#1545490 COPY_INSTEAD_OF_MOVE cid#1545483 COPY_INSTEAD_OF_MOVE cid#1545467 COPY_INSTEAD_OF_MOVE cid#1545461 COPY_INSTEAD_OF_MOVE cid#1545458 COPY_INSTEAD_OF_MOVE cid#1545428 COPY_INSTEAD_OF_MOVE cid#1545394 COPY_INSTEAD_OF_MOVE cid#1545385 COPY_INSTEAD_OF_MOVE cid#1545383 COPY_INSTEAD_OF_MOVE cid#1545366 COPY_INSTEAD_OF_MOVE cid#1545357 COPY_INSTEAD_OF_MOVE Change-Id: I76224326977b4067b94ca3176cad1ca6de17930a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160847 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-12-16cid#1546456 COPY_INSTEAD_OF_MOVECaolán McNamara2-9/+6
and cid#1546450 COPY_INSTEAD_OF_MOVE cid#1546430 COPY_INSTEAD_OF_MOVE cid#1546401 COPY_INSTEAD_OF_MOVE cid#1546313 COPY_INSTEAD_OF_MOVE cid#1546302 COPY_INSTEAD_OF_MOVE cid#1546301 COPY_INSTEAD_OF_MOVE cid#1546299 COPY_INSTEAD_OF_MOVE cid#1546280 COPY_INSTEAD_OF_MOVE cid#1546233 COPY_INSTEAD_OF_MOVE cid#1546217 COPY_INSTEAD_OF_MOVE cid#1546215 COPY_INSTEAD_OF_MOVE cid#1546204 COPY_INSTEAD_OF_MOVE Change-Id: Iaab419509ad4a0bea9cae3665723af0e99c60ee4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160849 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-12-14cid#1545211 COPY_INSTEAD_OF_MOVECaolán McNamara1-12/+14
and cid#1545218 COPY_INSTEAD_OF_MOVE cid#1545232 COPY_INSTEAD_OF_MOVE cid#1545243 COPY_INSTEAD_OF_MOVE cid#1545246 COPY_INSTEAD_OF_MOVE cid#1545251 COPY_INSTEAD_OF_MOVE cid#1545260 COPY_INSTEAD_OF_MOVE cid#1545261 COPY_INSTEAD_OF_MOVE cid#1545276 COPY_INSTEAD_OF_MOVE cid#1545295 COPY_INSTEAD_OF_MOVE cid#1545297 COPY_INSTEAD_OF_MOVE cid#1545301 COPY_INSTEAD_OF_MOVE cid#1545302 COPY_INSTEAD_OF_MOVE Change-Id: I97ba935a4a2b8715b55ebbf6e853a66260b2eb90 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160686 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-12-14cid#1545734 COPY_INSTEAD_OF_MOVECaolán McNamara2-8/+7
and cid#1545723 COPY_INSTEAD_OF_MOVE cid#1545708 COPY_INSTEAD_OF_MOVE cid#1545705 COPY_INSTEAD_OF_MOVE cid#1545684 COPY_INSTEAD_OF_MOVE cid#1545674 COPY_INSTEAD_OF_MOVE cid#1545673 COPY_INSTEAD_OF_MOVE cid#1545667 COPY_INSTEAD_OF_MOVE cid#1545661 COPY_INSTEAD_OF_MOVE cid#1545660 COPY_INSTEAD_OF_MOVE cid#1545657 COPY_INSTEAD_OF_MOVE cid#1545653 COPY_INSTEAD_OF_MOVE cid#1545636 COPY_INSTEAD_OF_MOVE cid#1545624 COPY_INSTEAD_OF_MOVE cid#1546124 COPY_INSTEAD_OF_MOVE Change-Id: I7d50594e046a022147d9ddf077b8b2d8027f9bca Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160721 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-12-12cid#1546444 COPY_INSTEAD_OF_MOVECaolán McNamara1-7/+3
and cid#1546389 COPY_INSTEAD_OF_MOVE cid#1546388 COPY_INSTEAD_OF_MOVE cid#1546360 COPY_INSTEAD_OF_MOVE cid#1546158 COPY_INSTEAD_OF_MOVE Change-Id: I3707d55b88674dfb5ae786fc2cc45000862340de Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160611 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-12-11Fix typoAndrea Gelmini2-2/+2
Change-Id: I628574420b9ac84f6f249002236d8970e348f0b5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160590 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2023-12-113D SW-Renderer: Add functionality to balance quality/speedArmin Le Grand (allotropia)1-5/+56
For this purpose allow reduced 3D quality in some circumstances and make a compromize between quality and speed. This is balanced between those two targets, fine-tuning/experimenting can be done with some static local values if needed. Change-Id: Ib00b6e9c3c3ff165d82ff12d23bf15196f0a0ee0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160467 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2023-12-07simplify and modernise ScopedBitmapAccessNoel Grandin6-13/+14
(*) 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 Grandin2-4/+4
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-03Split the *Bitmap::CopyPixel functionsNoel Grandin1-6/+6
into the two entire separate cases they want to handle, there is no reason to mix the two different cases like this. Change-Id: I38e99e7ad6168a84e7a744f61407887825158902 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160248 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-12-03ProcessAndBlurAlphaMask should take an AlphaMask as paramNoel Grandin2-3/+3
Change-Id: I9235e74499d95750ca93da050014657b418c27d1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160249 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-11-27tdf#158302 fix build against system-libxml-2.12Miklos Vajna1-0/+1
Seen in a fedora:40 container, using --with-system-libcmis, --with-system-liblangtag and --with-system-xmlsec. Change-Id: I9d748d3dc0b70dbfdfcb6b99c9ce8440bda6f326 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159980 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2023-11-21tdf#157558 invert and remove blended white colorPatrick Luby1-0/+15
Before commit 81994cb2b8b32453a92bcb011830fcb884f22ff3, RemoveBlendedStartColor(COL_BLACK, aAlpha) would darken the bitmap when running a slideshow, printing, or exporting to PDF. To get the same effect, the alpha mask must be inverted, RemoveBlendedStartColor(COL_WHITE, aAlpha) called, and the alpha mask uninverted. Change-Id: I8e81b11aab05954c821f833f4a2fc77eec7b7701 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159742 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-11-20Extended loplugin:ostr: drawinglayerStephan Bergmann2-67/+67
Change-Id: If37d6fac8e1cabd7c1609c26259366fb0d3d81ad Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159716 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-11-05tdf#158014 Skia adds filled white areas in .svg when exporting to PDFNoel Grandin3-11/+9
So my strategy here is to assume that ProcessAndBlurAlphaMask was doing the right thing before commit 81994cb2b8b32453a92bcb011830fcb884f22ff3 Date: Fri Apr 16 20:33:10 2021 +0200 Convert internal vcl bitmap formats transparency->alpha (II) but the subsequent naiving changing of its logic undermines it because of some subtle interaction. So take the brute force approach of reverting most of the code to its prior state (i.e. working in the transparency domain), and doing an Invert() before and after the original code. This seems to fix all of the test files I have on hand for this situation for both Skia and non-Skia cases. Change-Id: If4c4d4c5351a4ec55897bed96b57d28eda88f5dd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158793 Tested-by: Jenkins Reviewed-by: Patrick Luby <plubius@neooffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-10-28Fix variable names according to documentationBartosz Kosiorek1-5/+6
Change-Id: I8a5b675a124b3f229ec71fc56aae27038aeedeb0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158558 Tested-by: Jenkins Reviewed-by: Bartosz Kosiorek <gang65@poczta.onet.pl>
2023-10-26tdf#157083 Artifacts in logos (gen)Noel Grandin1-1/+1
regression from commit commit 81994cb2b8b32453a92bcb011830fcb884f22ff3 Author: Noel Grandin <noelgrandin@gmail.com> Date: Fri Apr 16 20:33:10 2021 +0200 Convert internal vcl bitmap formats transparency->alpha (II) Change-Id: I1c269bcfa9b565258bc99c2810e960ae965f9b54 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158491 Tested-by: Jenkins Reviewed-by: Patrick Luby <plubius@neooffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-10-19Extended loplugin:ostr: Automatic rewrite O[U]StringLiteral: drawinglayerStephan Bergmann1-3/+3
Change-Id: I668041773862b380772d0425ac4eab1d37d310e3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158189 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-10-18tdf#157792 followupNoel Grandin1-1/+1
avoid doing some extra Invert() operations by creating an AlphaMask instead of a Bitmap to pass to the BitmapEx constructor. Change-Id: I1af3a5e65010b346fa0d0c56836d567e51c9b58b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158106 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 Stahl2-1/+23
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-09tdf#157502 and tdf#157652 invert alpha maskPatrick Luby1-3/+9
Due to the switch from transparency to alpha in commit 81994cb2b8b32453a92bcb011830fcb884f22ff3, invert the alpha mask. Change-Id: Ib6df3523be36ba5d5aaf3887557d4a6a8fa6098c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157731 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-10-09vcl: render scaled fonts for LOKPranam Lashkari1-1/+3
problem: In online calc when fonts are not scaled, text box disappears when not active Change-Id: I9c8fdb3c0d14a3e7ed502ddb2b46c0769a855280 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153624 Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com> (cherry picked from commit 6460c685c3bc3f4929263c7681080056b59948fe) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153654 Tested-by: Jenkins Reviewed-by: Pranam Lashkari <lpranam@collabora.com>
2023-10-04vcl,drawinglayer,sw: PDF/UA export: footnote-container-in-list problemMichael Stahl1-5/+5
The problem is that if there is a footnote in a list, the footnote container becomes a child of the LI element that contains the footnote anchor, which is of course nonsense. This is because SwTaggedPDFHelper::CheckReopenTag() stopped using SetCurrentStructureElement(), but unfortunately it's required so that once the list ends, the correct parent element is restored for whatever follows the list. There is a similar problem in VclMetafileProcessor2D. (regression from commit d467f1aa3d028f399826c97e2eecedcd79efcf65) Change-Id: I03dee5dc2e11accb97279e5f325808c5b85507a1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157501 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-09-29Use less libxml2 external headers dependencyGabor Kelemen3-3/+0
Change-Id: I1749628e0104dff856161bc0bdfd343ef0db208e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156784 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2023-09-14tdf#156808 force an alpha mask to be created even if it has no alphaPatrick Luby2-3/+8
We need an alpha mask, even if it is totally opaque, so that drawinglayer::primitive2d::ProcessAndBlurAlphaMask() can be called. Otherwise, blurring of edges will fail in cases like running in a slideshow or exporting to PDF. Change-Id: If03b32a8a22ed960f1475710a9831cab33799b60 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156903 Tested-by: Jenkins Reviewed-by: Patrick Luby <plubius@neooffice.org>
2023-09-12tdf#157086 invert the blur mask instead of the alpha maskPatrick Luby1-2/+5
An invert is needed to fix tdf#156808 but inverting the alpha mask causes tdf#157086 so invert the blur mask instead. Change-Id: Id695d04f008932caadb0fc2b477b0a4b152fa66c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156854 Tested-by: Jenkins Reviewed-by: Patrick Luby <plubius@neooffice.org>
2023-09-08XPrimitive2DRenderer does not need to implement XAggreggationNoel Grandin1-1/+1
Checked on jenkins using 'make check' and + void SAL_CALL setDelegator(css::uno::Reference<css::uno::XInterface> const &) final { assert(false); } + Change-Id: I2b3c0cfd43a3437a1376e64421a66c595083e486 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156661 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-08-28tdf#156808 soft edge effect makes image (except for soft edge) disappearNoel Grandin1-0/+1
This is clearly fallout from commit 81994cb2b8b32453a92bcb011830fcb884f22ff3 Date: Fri Apr 16 20:33:10 2021 +0200 Convert internal vcl bitmap formats transparency->alpha (II) And it clearly fixes the problem, but I'm not sure __why__ it fixes the problem. Change-Id: I805ed85dd22b2124328e6b4dba098c5f093aec55 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156198 Tested-by: Jenkins Reviewed-by: Patrick Luby <plubius@neooffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-08-21split to allow getting decoration on its ownCaolán McNamara1-0/+13
Change-Id: Ib65750245906de0852c39e4a4bdaa85a2f822282 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155899 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-08-17Simplify a bitMike Kaganski1-2/+1
Change-Id: I4cc8f6dbaec0edd8a7a761f03868035350e01734 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155760 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-08-13Related tdf#156630 and tdf#156629 force snapshot of alpha maskPatrick Luby1-13/+1
On macOS, with Skia/Metal or Skia/Raster with a Retina display (i.e. 2.0 window scale), the alpha mask gets upscaled in certain cases. This bug appears to be caused by pending scaling of an existing SkImage in the bitmap parameter. So, force the SkiaSalBitmap to handle its pending scaling. This change consolidates the three duplicate fixes added in the following commits into the AlphaMask(const Bitmap&) constructor. commit 12fd870113a663dde5ceb38c61f1986a34095d0e commit ce2d9f5dd4b6a26847c4779bce4866d969ff4400 From my light testing, the bitmap's SkImage is not scaled except when running macOS with a Retina display. The only exception is that this fix will be triggered on all platforms when exporting to PDF images with an alpha mask. Change-Id: Iea5afd55aac984ca606b2b4b44e457d81d76fac0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155568 Tested-by: Jenkins Reviewed-by: Patrick Luby <plubius@neooffice.org>
2023-08-10tdf#156630 eliminate opaque parts when drawing animated PNG imagesPatrick Luby1-2/+20
Due to the switch from transparency to alpha in commit 81994cb2b8b32453a92bcb011830fcb884f22ff3, flip the background colors for the VirtualDevices and invert an alpha mask. On macOS, with Skia/Raster with a Retina display (i.e. 2.0 window scale), the alpha mask gets upscaled. Also, when Skia is enabled, the alpha mask gets inverted in the first export to PDF after launching the application. These two bugs appear to be caused by asynchronous rendering of the returned bitmap. So, we force a copy of the alpha mask in case it changes before the bitmap is actually drawn. Lastly, respect system animation settings when determining if the image should be animated. Change-Id: I8144691a6c99bf8361b301b88d22172991463f26 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155429 Tested-by: Jenkins Reviewed-by: Patrick Luby <plubius@neooffice.org>
2023-08-05Related tdf#156508 fix rendering of the About dialog .svgPatrick Luby1-1/+1
After 0e7d4ea64f84bdc62c10692dcd97c3a32e72e16e, white polygons are drawn in the LibreOffice about .svg in both the About dialog and with the .svg in a document. Creating the mask with COL_WHITE instead of COL_BLACK appears to fix this without causing tdf#156508 to reoccur. Change-Id: I886451245126c2b7f936e30275965148bf029627 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155362 Tested-by: Jenkins Reviewed-by: Patrick Luby <plubius@neooffice.org>
2023-08-04tdf#156508 Blur shadow is solid in edit and presentation modeNoel Grandin1-4/+2
regression from commit 81994cb2b8b32453a92bcb011830fcb884f22ff3 Author: Noel Grandin <noelgrandin@gmail.com> Date: Fri Apr 16 20:33:10 2021 +0200 Convert internal vcl bitmap formats transparency->alpha (II) Change-Id: I14f62547e3301cab0eff79716bf7bc2a51ead563 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155338 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-08-02split Point/Size/Rectangle into AbsoluteScreenPixel* typesNoel Grandin1-1/+1
to attempt to make it obvious in code what kind of coordinate system we are dealing with. The idea is that by doing this, the compile-time type checking will flush out inconsistencies between different code. I started with vcl::Window::OutputToAbsoluteScreenPixel and worked outwards from there. Change-Id: Ia967d7a0bb38886695f3a761b85c8b9340ddb1c0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154676 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-07-27crashtesting: crash on export of forum-en-41439.odp to pdfCaolán McNamara1-0/+2
and various others. since: commit 81994cb2b8b32453a92bcb011830fcb884f22ff3 Date: Fri Apr 16 20:33:10 2021 +0200 Convert internal vcl bitmap formats transparency->alpha (II) changed drawinglayer/source/tools/converters.cxx convertToBitmapEx return BitmapEx(aRetval, aAlpha); if (aAlpha.hasAlpha()) return BitmapEx(aRetval, aAlpha); else return BitmapEx(aRetval); and SoftEdgePrimitive2D::create2DDecomposition assumes a mask exists. Presumably no mask -> fully opaque -> do nothing is the right outcome here. Change-Id: I7379c55c822c149a4320509d27a159cf5a07cc09 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154985 Tested-by: Jenkins Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-07-25Convert internal vcl bitmap formats transparency->alpha (II)Noel Grandin5-11/+26
(Second attempt at landing this) Image formats and graphics APIs use alpha, not transparency, so change our internal formats and data structures to work directly with alpha, so we don't need to modify data before we push it to graphics APIs. Add a couple of new Color constants to make the intention of the vcl code clearer. Notes (*) On macOS, tweaking the logic in CreateWithSalBitmapAndMask to more accurately reflect the requirements of the CGImageCreateWithMask function seems to fix some tests. (*) The vcl code does not properly support gradients with transparency. So the previous code was wrong, and this change is going to result in slightly different wrongness. Change-Id: I9e21c2e98d88ecfdc5f75db13bd1ffff7c38db98 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114168 Tested-by: Jenkins Reviewed-by: Patrick Luby <plubius@neooffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-07-23drawinglayer: Drop recently unused TextLayouterDevice::getCaretPositions()Khaled Hosny1-23/+0
Change-Id: I07255d45bc03a5f86a22d7f392c14053eec7f6ad Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154648 Tested-by: Jenkins Reviewed-by: خالد حسني <khaled@libreoffice.org>
2023-07-23vcl: Use GetTextArray() when drawing mnemonicsKhaled Hosny1-2/+2
Instead of using a different function to get the character width, use the same function used for getting the character widths elsewhere. Change-Id: I21428f34bb0f3a60fa17f5e8ecc3420545356337 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154609 Tested-by: Jenkins Reviewed-by: خالد حسني <khaled@libreoffice.org>
2023-07-22simplify some calls to XmlWriter::attributeNoel Grandin1-4/+2
Change-Id: Ibc3aa732dec2f6c26750ba056f5f8d71ae34b63e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154765 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>