Age | Commit message (Collapse) | Author |
|
Change-Id: I6ab5840487f7676d5070ea4be00272f13dd47f96
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95162
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
Change-Id: I0d73bb7d8d3fde426edc0a10c0750758b68aceb5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95099
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Since we need objects' bounds here, antialiasing them would make the
resulting non-fully-transparent areas thicker, thus making the effect
also thicker. Disable it here; also slightly increases performance.
We can't do that for soft edge: the effect draws all its children as
bitmap, so disabling AA would make all children areas unaffected by
soft edge to have worse image quality.
Change-Id: Ifc9a60ec7894bfe9d0209e04532c9ca0a1eb3867
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95096
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
Change-Id: I365f4bcfc8d772ea77cec1e4ce139b9fc16d9d7d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95000
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
This allows UnifiedTransparencePrimitive2D to produce truly transparent image,
usable later in the stack - specifically by glow and soft edge effect.
Change-Id: I27e9bfbfb9c60856bc3fad1a483623c90d5cabff
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94969
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
Change-Id: Iddc94a5cfdee03befdf245ee086a872f0bfaf7a3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95051
Tested-by: Jenkins
Tested-by: Mike Kaganski <mike.kaganski@collabora.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
Change-Id: Ie660ae372fc0b5f97f685b6d1e82b9e8a12e7e30
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94192
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
This allows TransparencePrimitive2D to produce truly transparent image,
usable later in the stack - specifically by soft edge effect.
Change-Id: I54e6f9a8fd196247b1130446af3d21b082820f01
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95038
Tested-by: Mike Kaganski <mike.kaganski@collabora.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
So the objects that were semi-transparent don't become opaque upon
applying soft edge effect. This requires that the objects are
actually semi-transparent, so that we can get alpha mask from bitmap
Change-Id: Ic4af9bea19e5e71139d3f065797583f7c7c78815
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95034
Tested-by: Jenkins
Tested-by: Mike Kaganski <mike.kaganski@collabora.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
impBufferDevice now can create its mpContent with alpha; that is used
when painting, blending mpContent's alpha with mpMask/mpAlpha/fTrans.
That allows to paint to the buffer device and get actual transparency
of the painted objects in one pass, to process further (e.g., modify
transparency separately, or use it to get mask).
Required for subsequent soft edge effect improvement
Change-Id: If19c160581ce9a515d86222dd2fab06f746df2da
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95030
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
Scale it back explicitly in ProcessAndBlurAlphaMask
Change-Id: I8e8a58c117d8b59db40b416edadc559b47dc300a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95021
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
This will avoid cutting rightmost and bottommost pixels from the effects,
caused by casting of range dimensions to integers.
Change-Id: Icad9c06c33bafae9531bc45559acecd3581fad89
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95020
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
...where the get member function is defined on a std::__shared_ptr base class,
so loplugin:simplifypointertobool used to miss those until now. (While e.g.
using libc++ on macOS found those cases.)
366d08f2f6d4de922f6099c62bb81b49d89e0a68 "new loplugin:simplifypointertobool"
was mistaken in breaking isSmartPointerType(const clang::Type* t) out of
isSmartPointerType(const Expr* e); c874294ad9fb178df47c66875bfbdec466e39763 "Fix
detection of std::unique_ptr/shared_ptr in loplugin:redundantpointerops" had
introduced that indivisible two-step algorithm on purpose.
The amount of additional hits (on Linux) apparently asked for turning
loplugin:simplifypointertobool into a rewriting plugin. Which in turn showed
that the naive adivce to just "drop the get()" is not sufficient in places that
are not contextually converted to bool, as those places need to be wrapped in a
bool(...) functional cast now. If the expression was already wrapped in
parentheses, those could be reused as part of the functional cast, but
implementing that showed that such cases are not yet found at all by the
existing loplugin:simplifypointertobool. Lets leave that TODO for another
commit.
Besides the changes to compilerplugins/ itself, this change has been generated
fully automatically with the rewriting plugin on Linux.
Change-Id: I83107d6f634fc9ac232986f49044d7017df83e2a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94888
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Jenkins
|
|
When scrolling down in tdf#130431 this is the major CPU cost.
Move the dynamic_cast out of the loops as much as possible.
Change-Id: I0ea9f457bb17fbdde880f09b059f07dec4b1790b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94858
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
I added these files more or less recently and they have long lines. Use
clang-format to break at a sane column limit.
Change-Id: Id608fffbbc0673c9bc350dd696cb0a31906840d3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94423
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
|
|
Change-Id: I907c4bddb1ec05a9d68af8939e58d576714a3d0a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94283
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
This factors out the common code for blurring used both in glow and
soft edges into ProcessAndBlurAlphaMask.
Also this reverts commit a98bdbae459ad7341bf7f484c402e77e4062cd16,
since its use was removed from VclPixelProcessor2D.
Change-Id: Icd7fdb06bef3932ff3b9ce7e283b515b15d246a5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94087
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
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
|
|
Change-Id: Iff68e8f379614a6ab6a6e0d1bad18e70bc76d76a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91907
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I24b11ccc7d82a9d3380fc8aa32c90ad0256485f9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93831
Tested-by: Tomaž Vajngerl <quikee@gmail.com>
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: I0977858ea5b9d2b7ddfaa8012ef50170ee02f27d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93829
Tested-by: Tomaž Vajngerl <quikee@gmail.com>
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: I53f7660a22ed66ab7d50370d871f9d10d1bedc10
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93825
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: I3fd36b3d58aa35d68b3582baf87bf020ec894a63
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93824
Tested-by: Tomaž Vajngerl <quikee@gmail.com>
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: I4112e33c92d189a2dab15e4a17b9cb06afd99048
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93823
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: Ic6be2a42a7b1ed294cc86e3aee967ffec7b1e514
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93822
Tested-by: Tomaž Vajngerl <quikee@gmail.com>
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: I85c10cb957f5065d964863360ca03355c87b7980
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93821
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: Ie4b619dd19cc4d12d240759abea9c3ffdedd5c7e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93718
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
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>
|
|
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>
|
|
in unit tests
Change-Id: Id16731bbbe2f1b0e3642722d77aba04fc98db4cc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93508
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: Idb98314877518beefdd12dd95bbbb055f3aa429d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93549
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
Change-Id: I1f692f706f2e688384c01e99c14307190bf70104
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93548
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
Change-Id: I131e2d5620d027f32dc2929cd12fedb168e30e9c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93390
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: I93ff19f9f54b6f14c660af554d697b9ba525f81c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93389
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: Ib0b1f389189012ab27dd061481737ac6a6a1a84e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93388
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: I25aac069b9212824fee50240a1b6682bf7e6f0f7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93387
Tested-by: Tomaž Vajngerl <quikee@gmail.com>
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: I1590e437946aaa4bd3a8b6a2c47d2ee17d2060a5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93386
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: I1117eb86823762882d463c6e4d3b295efaa3151c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93365
Tested-by: Tomaž Vajngerl <quikee@gmail.com>
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: I457b9310109157da03b6c310783651f5232d2054
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93364
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Also use back() method on vector instead of end() - 1
Change-Id: I944691d097f82b1651cff87a7bb0d7c457ece27a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93363
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: I0ab6572ab700756322f96b982f7faeb6d8dc9fb6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93362
Tested-by: Tomaž Vajngerl <quikee@gmail.com>
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: I12e53849fa23496799ba5e45fc0077cb9b54048c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93361
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: I03ad72d0754cb8c180f4eab0e8040c3dab533ef9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93321
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: I359dfb0fe6fdf88e9c8141186a770c4cde777161
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93320
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
The main reason for the "home-grown" UpCast introduced with
904b3d1fceee5827076758ed2a81f80cb73493ca "Up-cast conversion constructor for
css::uno::Reference" in 2013 was probably that we could not yet rely on C++11
std::is_base_of back then. A (welcome) side effect was that the derived class
could be incomplete.
However, specializations of UpCast relying on whether or not T2 is incomplete
are obviously an ODR violation if the type is incomplete in some TUs and
complete (and derived from T1) in others. And even if UpCast had internal
linkage, it would still be brittle that its behavior depends on the completeness
of T2 at the point of the template's instantiation, and not necessarily at the
point of use.
That means we should better base that ctor on std::is_base_of (which we can do
now since 39a1edd6fec902ef378acce8af42c4d7fba280d0 "Make css::uno::Reference
upcast ctor LIBO_INTERNAL_ONLY"), which causes a compilation error at least on
Clang and GCC if the completeness requirements are not met. This change fixes
all the cases where types need to be complete now, plus any resulting
loplugin:referencecasting warnings ("the source reference is already a subtype
of the destination reference").
Change-Id: Ieb9e3552e90adbf2c5a5af933dcb872e20661a2f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92950
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
Change-Id: I83a61da7dda6c72552eecd377f1c3744c92a797e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92909
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
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>
|
|
Turns out we can save about 500Mb of preprocessor input if we use
rtl_math_approxEqual from rtl/math.h instead of its C++ wrapper
rtl::math::approxEqual from rtl/math.hxx
and manage the fallout accordingly.
Before:
bin/includebloat.awk | head
sum total bytes included (excluding system headers): 19017296671
After:
$ bin/includebloat.awk | head
sum total bytes included (excluding system headers): 18535432672
Change-Id: I1691171f3a309405a7099882ad9989d147f59118
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92508
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
|
|
and update pches accordingly
Change-Id: I411712532fd85961bffe6678416fcdc1d9c7f53d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92617
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: Ieb5f682ec627c8d8ddfc286ec0e4422104b4d847
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92494
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|