summaryrefslogtreecommitdiff
path: root/svx/source/sdr
AgeCommit message (Collapse)Author
2020-05-12Drop unused variableMike Kaganski
Change-Id: Ib92dc7c9f728eb40015ca96dd3c8708366bcf950 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93991 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-05-12Rename attributes to reflect that they represent different effectsMike Kaganski
... not only shadow. In preparation to add soft edge effect (tdf#49247). Change-Id: Ia5b17fff00e1c2d7f717179687dbd44410795a71 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94007 Tested-by: Mike Kaganski <mike.kaganski@collabora.com> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-05-11tdf#129916 svx: fix origin of scaled shadowMiklos Vajna
We assumed that the top left corner is the origin for scaling, but that is not necessarily the case. The intention is that the shadow direction can be determined from its x and y offset, and the origin is the opposite corner of the shape. Change-Id: I6759302767d20739b6e2be79d379740dd06f70f5 (cherry picked from commit a1dde1a85a8d1c54521a0ac6310571ffcdd4bb5a) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93974 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2020-05-11Limit utility function's visibilityMike Kaganski
Change-Id: I1d1a89a197d90dcb1e7de9b4090e1fe6baf53e1c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93972 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-05-11Related: tdf#129916 svx: clean up duplicated matrix decompose for shadow sizeMiklos Vajna
Pass the object's transform matrix to createEmbeddedShadowPrimitive(), this allows decomposing it only at a single place. Also, this will allow creating the shadow based on the object size. Change-Id: I8d8bf59934b00e13cda1da0398910aa9f1ce3c59 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93950 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2020-05-11tdf#49247: implement soft edges document model and import/exportMike Kaganski
... for ODF and OOXML. Two object properties added: SoftEdge (boolean, effect enabled/disabled) SoftEdgeRad (sal_Int32, effect radius in 100ths of mm) Two corresponding ODF attributes added: loext:softedge ("visible"/"hidden") loext:softedge-radius (metric) Change-Id: I0dc4d7fc3e5b0c2c36092d430568ebcfd3a68c9c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93833 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-05-10compact namespace in svxNoel Grandin
Change-Id: I9229775999aa70c2b37c0527ba1c332143f9f2cb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93877 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-05-08Related: tdf#129916 svx: improve shadow size of custom shapesMiklos Vajna
There are multiple problems with this bug document, the first is that the shadow primitive got the default position (0) of the owning shape. Do it the same way as commit 6454b6336b8de9a4c5899adeab552af6f794cdc4 (tdf#130058 Import shadow size., 2020-04-14) did for graphic objects. This requires constructing a transform matrix in ViewContactOfSdrObjCustomShape::createViewIndependentPrimitive2DSequence(), include position and size in that as a start. Change-Id: Ia51df555c1984971afe7c52ba3f2658099a4e7b3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93771 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2020-05-07tdf#132199: put glow before shadow, to have shadow of the glowMike Kaganski
Also take modified color into account when drawing glow. Change-Id: Iba136d2695cb783d13ff251d087066c2e8803d63 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93605 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-05-07tdf#101181: store glow radius in 100ths of mm instead of EMUsMike Kaganski
... as we do for all metric values. This fixes storing values like "190.5cm" in ODF for 15 pt (should be "0.529cm"). Change-Id: I382756af56464424dcb24ed8801d0a4203658c11 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93640 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-05-07tdf#101181: improve glow effectMike Kaganski
The shadow of objects must not be scaled: this displaces any internal areas that need blur, e.g. holes. Instead, it needs to dilate the shadow using kernel with radius equal to blur radius: this allows the borders of dilated objects to be in the middle of the blur area. The following blur makes those new margin points to have 50% intensity, and full glow intensity at the point of old object margins. This also removed artifacts when moving objects with glow effect caused by mismatch between scaling and D2D range calculation. The D2D range therefore is not calculated by scaling, but using grow. Blur filter's "extend bitmap by blur radius" option got obsoleted and removed. There's no need to blur the glow color (24-bit RGB). Instead, glow bitmap must be filled by glow color, and have an alpha mask that is blurred accordingly. This makes the glow properly transparent, and also reduces the blur complexity which now only needs to process 8 bits of alpha channel. The object shadow is created using basegfx::BColorModifier_replace inserted into the 2d decomposition of the effect, as before. To make sure that any non-fully-transparent pixel will become black pixel in the shadow, black color is used, and the result is further processed in VclPixelProcessor2D::processGlowPrimitive2D with monochrome filter using threshold 255. Glow transparency attribute is taken into account: the initial value at the margins of the objects. Color replacement filter is used to replace the object shadow with the attribute value before blur pass. Correct blur radius is used, calculated from glow effect radius, instead of hardcoded value of 5 pixels. This makes the glow to fade gradually along the full width of the effect, instead of only fading in narrow outer border previously. Since blur filter is only implemented for radius up to 254 pixels, and since downsampling the shadow before blur increases performance without noticeable quality loss, the image is downsampled before filtering. It should be noted that the glow effect is almost identical to soft shadow effect, likely with the only difference of using dilation in the former, but not in the latter. The code might be reused later to implement soft shadow as well. Change-Id: I728c532f9df7ccf85f353c23c6c7d8352d7b2086 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93235 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-05-06tdf#101181: implement glow effect also for SdrGrafPrimitive2DMike Kaganski
... using the implementation from f9fc420dceb1ece2c98767da16a21aaff771f140 that is already functional for SdrCustomShapePrimitive2D. For now, only for Draw/Impress. Change-Id: I4936e8276df2b21cb5c438e89c215b819e9b8a40 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92636 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-04-23Don't call default ctor only to reassign laterMike Kaganski
Change-Id: Ia725652f5124a2288bcca319a35d549c0bc3e351 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92793 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-04-23tdf#130058 Import shadow size.Gülşah Köse
Change-Id: Ie1cee377a33567088fb76ea47f0e6fc51d47f0fa Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92188 Tested-by: Jenkins Reviewed-by: Gülşah Köse <gulsah.kose@collabora.com>
2020-04-10Make BitmapPrimitive2D vcl-independentArmin Le Grand
as preparation to have drawinglayer module independent from vcl in the future Change-Id: Iaa01370f27b51cba5114a54f37d1ec73d0719918 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92048 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2020-04-08run svx animations at POST_PAINT priority (tdf#131753)Luboš Luňák
Skia VCL drawing (and GL too) set first drawing to POST_PAINT, so that the contents aren't drawn prematurely the first time, but only after the first paint has been finished. But animations constantly running at a normal priority will starve that. It doesn't make sense to run animations at REPAINT or higher priorities anyway, if LO is busy painting then animating more will just make it even busier. Change-Id: I6ee3356c9ef9acb577f8d81976aa3df968ca2155 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91836 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2020-04-03split up polypolygonprimitive2d.hxx into separate filesTomaž Vajngerl
This patch splits the polypolygonprimitive2d.hxx into: - PolyPolygonColorPrimitive2D.hxx - PolyPolygonGradientPrimitive2D.hxx - PolyPolygonGraphicPrimitive2D.hxx - PolyPolygonHairlinePrimitive2D.hxx - PolyPolygonHatchPrimitive2D.hxx - PolyPolygonMarkerPrimitive2D.hxx - PolyPolygonSelectionPrimitive2D.hxx - PolyPolygonStrokePrimitive2D.hxx ... and fixes the include files and pre-compiled headers Change-Id: I23982e0c81e8992f69e14cbac8e86858266b9999 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91603 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2020-03-30tdf#101181 related: fix SdrShadowTextAttribute::operator==Mike Kaganski
This fixes rendering of glow after its radius becomes 0 once. Change-Id: I7cb13989496bb113689f56ccdb53190d9b5d4ac6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91372 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-03-30Use dynamic_cast resultMike Kaganski
Change-Id: I7f91935e2b0230c17456a810c6e7553a103c04f1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91299 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-03-25Remove unused using declarations in oox...xmlsecurityGabor Kelemen
Found by: run-clang-tidy-10 -checks=-*,misc-unused-using-decls Change-Id: I3e95791e223ef01e140a6217e29a9efae428a784 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90876 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2020-03-23Fix typosAndrea Gelmini
Change-Id: Iba46fbe8559211403118a23cd198a2217b333a81 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90900 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr> Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
2020-03-13Revert "loplugin:constfields in svx"Noel Grandin
This reverts commit 1a6397030381a45f27ab7a2a02e6e6d0f9987c84. Change-Id: Iaa706bb4ea3144ef57ab359b982400abc589b97e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90454 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-03-06tdf#120216 improve svx table performance.Mark Hung
By defining operator== for SdrConnectStyleData and SdrFrameBorderData, and make a deeper comparison instead of the pointer stored shared_ptr in SdrFrameBorderPrimitive2D. The SdrFrameBorderPrimitive2D::operator== always return false before. The response time of clicking a cell and then entering editing mode improved from 4s to 0.5s in my environment. Change-Id: I625d9f69a07f42cac4a6cba45ec9e1c4195b6d58 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90120 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-03-03tdf#101181 Implement glow effect on shapesTamas Bunth
Glow effect is a color-blurred outline outside of the shape. In ooxml document it is specified with the <a:glow> element. The commit contains the following: - Add support for importing and exporting <a:glow> from ooxml documents. - Assign new properties to XShape which stores glow-related attributes. - A new 2D primitive is introduced in module 'drawinglayer' which is responsible for representing the glow primitive which is to be rendered. + A glow primitive is a clone of the original shape which has been scaled up slightly and a new color has been assigned to it. The radius of the glow effect and the color is defined in the <a:glow> element being imported. - A blur algorithm is introduced in module 'vcl', which is called during rendering the primitive. + The blur algorithm works on a bitmap. + Since the algorithm is CPU-intensive, the result is cached in the processor and it is recalculated only if needed. - Add support for importing and exporting glow effect to ODF format. For that, new attributes of element <style:graphic-properties> has been added: + loext:glow, which can have the values "visible" or "hidden" + loext:glow-radius: which holds the radius of the glow effect in cm. + loext:glow-color: holds the color of the glow effect - Tests have been added to assert properties after pptx import and export. Change-Id: I836aeb5e0f24e2c8d5725834c8c0f98083bc82e7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89125 Tested-by: Jenkins Reviewed-by: Tamás Bunth <btomi96@gmail.com>
2020-02-27loplugin:constantparamNoel Grandin
Change-Id: I62a0b760e49e38a4565eebf272492159047dda5b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89613 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-02-25tdf#42949 Fix IWYU warnings in svx/source/sdr/*/*cxxGabor Kelemen
Found with bin/find-unneeded-includes Only removal proposals are dealt with here. Change-Id: I332729acbf2f5b5b24b6907dad09c5c5ded94f40 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89290 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2020-02-22Fix typoTamas Bunth
Change-Id: I4308e9957368845059d837a3ace79b5c78b7db51 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89124 Tested-by: Jenkins Reviewed-by: Tamás Bunth <btomi96@gmail.com>
2020-02-12move some svx/ headers inside the moduleNoel Grandin
Change-Id: I8d9a50039a8139caebb2cfb83ca476d39432f255 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88238 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-02-07remove use of macro DeclPrimitive2DIDBlock in everywhereTomaž Vajngerl
Change-Id: I3fcba604ee3bc95274700ae7406f27e292cd09ac Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88154 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2020-02-03loplugin:constantparamNoel Grandin
Change-Id: If2dee122bf07dc179fd8f6e766442ec1891a5f3d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87845 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-01-31new loplugin:namespaceindentationNoel Grandin
check indentation of braces in namespace decls, and the comments that often appear with them. This is my penance for messing up the indentation with clang-tidy-modernize-namespaces. As such I have limited it to new-style namespaces for now, and the check is off by default. Change-Id: I4db7f10a81c79bc0eece8f8e3ee564da8bc7f168 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87723 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-01-29gtk: resizing video elements has no effect once the video has played onceCaolán McNamara
Change-Id: Ice8e688a7909bcfffc477479110a69e4770996d8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87695 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2020-01-28tdf#96505: Get rid of cargo cult long integer literalsOnur Yilmaz
I checked return values. Long variables didn't affect the calculation. Change-Id: I0c33c20b872ff6b1dc6c87c4032ccf19705db8e2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87503 Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Tested-by: Stephan Bergmann <sbergman@redhat.com>
2020-01-28tdf#96505: Get rid of cargo cult long integer literalsOnur Yilmaz
I checked return values. Long variables didn't affect the calculation. Change-Id: I1d5b5cffa291c20f7940dc14efa05cc64f3ff1ed Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87499 Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Tested-by: Stephan Bergmann <sbergman@redhat.com>
2020-01-26rename some local variablesNoel Grandin
mostly to make the job of my very aggressive unused local vars plugin easier Change-Id: Ifc21a920841f8589f8b7e10de39dba6622a5d501 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87399 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-01-25loplugin:makeshared in svl..svxNoel Grandin
Change-Id: I067ea2f3cb651fdc5c3d1a09b0c55583618b9d1f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87355 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-01-22flush out unused MapModesCaolán McNamara
Change-Id: I691143162bf9a26171f3ede3bded34c7fb985244 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87207 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2020-01-21Drop empty eventhandler files from svx/Gabor Kelemen
Change-Id: I42e33999cbfc5a39bd79f2711c2df7ad13d14f1a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86945 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-01-15clang-tidy modernize-concat-nested-namespace in svxNoel Grandin
Change-Id: I8a00f2823aa956afb995ee68c9f995bf08ad5239 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86824 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-01-10tdf#42949 Fix IWYU warnings in svx/inc/ and svx/source/inc/Gabor Kelemen
Found with bin/find-unneeded-includes Only removal proposals are dealt with here. Change-Id: Ic19dbb807b6c35e7772878e53a4f00bbb8688b7c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/85788 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2020-01-06tdf#129708 speed-up: check if we could create outline instead of creation of itSerge Krot
Change-Id: I0629b4e6ccae4ab9be0142fe39c627f2f9a8f5ea Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86199 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
2020-01-06Removed redundant semicolonsAndrea Gelmini
Change-Id: Ife14b8c3f7d121deb390deb5f405dd42d3016acf Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86156 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2020-01-04drawinglayer: extract classes from baseprimitive2d.hxx to own filesTomaž Vajngerl
This extracts Primitive2DContainer class to its own file, common typedefs for PrimitiveReference, Primitive2DSequence to own file CommonTypes.hxx, some commonly used and independent functions to Tools.hxx. But for not BufferedDecompositionPrimitive2D class is left as it is. Change-Id: Ia55bafd32fb95eba945d091e2c2ae89b160140d3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86086 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2020-01-02tdf#96505 Get rid of cargo cult long integer literalsYusuf Keten
Change-Id: I6b21f25738458a1d85905a3a02eb17c51a626b0d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/85932 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2019-12-23sal_Char->char in svxNoel Grandin
Change-Id: If7fb907575640b95399419beee5af6cfbd5fafb2 Reviewed-on: https://gerrit.libreoffice.org/85714 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-12-17loplugin:expandablemethodsNoel Grandin
Change-Id: Ifc269d9996928085a3ab78033788465b4f029368 Reviewed-on: https://gerrit.libreoffice.org/85255 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-12-14loplugin:expandablemethodsNoel Grandin
Change-Id: Ia8192e03feda9e8ae70e29d8dc98d995f015f9ce Reviewed-on: https://gerrit.libreoffice.org/85135 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-12-11Fix typoAndrea Gelmini
Change-Id: I72f8f3b6ace69f69cdfb2b4ee6de280edbb4291a Reviewed-on: https://gerrit.libreoffice.org/84941 Reviewed-by: Julien Nabet <serval2412@yahoo.fr> Tested-by: Julien Nabet <serval2412@yahoo.fr>
2019-11-30Let getPageViewOutputDevice return const OutputDevice*Stephan Bergmann
...instead of boost::optional<const OutputDevice&> (in preparation for replacing boost::optional with std::optional, which doesn't support references types as template arguments) Change-Id: I02d2b617123cfa9ca0d6436c8a4104c5987f4eb5 Reviewed-on: https://gerrit.libreoffice.org/84121 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-11-22Extend loplugin:external to warn about classesStephan Bergmann
...following up on 314f15bff08b76bf96acf99141776ef64d2f1355 "Extend loplugin:external to warn about enums". Cases where free functions were moved into an unnamed namespace along with a class, to not break ADL, are in: filter/source/svg/svgexport.cxx sc/source/filter/excel/xelink.cxx sc/source/filter/excel/xilink.cxx svx/source/sdr/contact/viewobjectcontactofunocontrol.cxx All other free functions mentioning moved classes appear to be harmless and not give rise to (silent, even) ADL breakage. (One remaining TODO in compilerplugins/clang/external.cxx is that derived classes are not covered by computeAffectedTypes, even though they could also be affected by ADL-breakage--- but don't seem to be in any acutal case across the code base.) For friend declarations using elaborate type specifiers, like class C1 {}; class C2 { friend class C1; }; * If C2 (but not C1) is moved into an unnamed namespace, the friend declaration must be changed to not use an elaborate type specifier (i.e., "friend C1;"; see C++17 [namespace.memdef]/3: "If the name in a friend declaration is neither qualified nor a template-id and the declaration is a function or an elaborated-type-specifier, the lookup to determine whether the entity has been previously declared shall not consider any scopes outside the innermost enclosing namespace.") * If C1 (but not C2) is moved into an unnamed namespace, the friend declaration must be changed too, see <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71882> "elaborated-type-specifier friend not looked up in unnamed namespace". Apart from that, to keep changes simple and mostly mechanical (which should help avoid regressions), out-of-line definitions of class members have been left in the enclosing (named) namespace. But explicit specializations of class templates had to be moved into the unnamed namespace to appease <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92598> "explicit specialization of template from unnamed namespace using unqualified-id in enclosing namespace". Also, accompanying declarations (of e.g. typedefs or static variables) that could arguably be moved into the unnamed namespace too have been left alone. And in some cases, mention of affected types in blacklists in other loplugins needed to be adapted. And sc/qa/unit/mark_test.cxx uses a hack of including other .cxx, one of which is sc/source/core/data/segmenttree.cxx where e.g. ScFlatUInt16SegmentsImpl is not moved into an unnamed namespace (because it is declared in sc/inc/segmenttree.hxx), but its base ScFlatSegmentsImpl is. GCC warns about such combinations with enabled-by-default -Wsubobject-linkage, but "The compiler doesn’t give this warning for types defined in the main .C file, as those are unlikely to have multiple definitions." (<https://gcc.gnu.org/onlinedocs/gcc-9.2.0/gcc/Warning-Options.html>) The warned-about classes also don't have multiple definitions in the given test, so disable the warning when including the .cxx. Change-Id: Ib694094c0d8168be68f8fe90dfd0acbb66a3f1e4 Reviewed-on: https://gerrit.libreoffice.org/83239 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>