Age | Commit message (Collapse) | Author |
|
This allows the VCL backends the apply the extra alpha transformation
as it sees fit, rather than it being done manually elsewhere (and
even if the backend doesn't implement it, at least do it in one
place in the function).
With the document from tdf#136223, going from slide 2 to slide 3,
this easily saves 10-30% of CPU cycles. As an additional bonus,
using AlphaMask::BlendWith() rather than AlphaMask::Replace()
makes edges of shapes noticeably more smooth.
Change-Id: I036dc9b887d6def0c7cdad3982becabdc7cd5206
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111247
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
At least with Skia this is faster than GraphicObject trying
to handle it manually, even in raster mode.
Change-Id: If77d108751f5621878d4ea87a996c2ea0253d111
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111246
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
TopLeft().X() -> Left()
BottomLeft().X() -> Left()
TopRight().X() -> Right()
BottomRight().X() -> Right()
TopLeft().Y() -> Top()
TopRight().Y() -> Top()
BottomLeft().Y() -> Bottom()
BottomRight().Y() -> Bottom()
Change-Id: I5050f619bf92cfc59b6f8dfe7c9f98ef1453c294
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110022
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
to simplify some and make an upcoming change less invasive
Change-Id: I699b2be8fa35b2b72271eda4a0885f89a47b348a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109563
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I125ad3db3ee30833022113da5d78dcf81d0f7edc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108374
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: I6950bdca72b93b34621e0b108c2c8060c59d98d5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108247
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I3ef18a2601a51d56614b5da9b56e871bd33ec79e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108942
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I5d8b92d91530feed92dcdf2e384448b05eebdb0f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108315
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: I02c9cc83fea330ed0ba1539b2682f75d33ba80fd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108132
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
Change-Id: Idb43f57078702f64e9a80a2100b12fa0e6c3e155
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108130
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
Some time ago, in an attempt to remove a check on OutDevType I
refactored some code into the function ScaleBitmap(). When I look at
this more closely, I realise that I missed the point of the function.
The code I refactored actually checked if subsampled scaling could be
done. Thus, the function is inaccurate - it only scales *down* a bitmap,
and in fact scaling is already done in Bitmap.
Instead, I have now moved the function back into the code and replaced
it with a virtual function that checks if the OutputDevice derived class
can actually do bitmap subsampling (Printer is unable to do
subsampling).
Change-Id: I2e6bdbba0bf2153e0421efe6e05c05dd593a4e1e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108323
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
likewise:
DrawOutDevDirectProcess
ImplDrawWavePixel
DrawOutDevDirectCheck
and various members of SalGraphics dropping redundant nullptr checks
Change-Id: Iaa1ab7c8a605361a7c9cce0aeee974eec9ff246e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106788
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Initially (since commit 8ab086b6cc054501bfbf7ef6fa509c393691e860) the code
in vcl/source/outdev/map.cxx used BigInt arithmetics for overflowing cases.
Then in commit 99a299383f2f16e5e8eefbb28e88a6a8f90ab95b, the code started
to use sal_Int64, and ignored the threshold. Immideately in next day's
commit 7bbb9d113a732851831dfadf8dee6b980dc0ab3b, the fallback to BigInt
was restored - "when 64bit arithmetic does not suffice for mapping".
Commit d563ac66ae12353c2c25d154fc9f493df67b3b8b made two modes - one using
sal_Int64, and one using BigInt - separate (dependent on USE_64BIT_INTS),
and introduced shortcut depending on threshold also into USE_64BIT_INTS
code, dependent on SAL_TYPES_SIZEOFLONG ("#i55136# prefer native int math
over int64").
BigInt code was dropped in commit b5100f8a1c76a921406ed3d3a54ba2479b011977.
So now, after the functions take tools::Long, and it is 64-bit on _WIN64,
it's incorrect to depend on SAL_TYPES_SIZEOFLONG for the shortcut. And
making it dependent on sizeof(tools::Long) seems unnecessary, because now
it's only active to 32-bit platforms with decreasing relevance, and the
profit there is unclear, having to calculate threshold for each operation
on all platforms.
So this drops the threshold unconditionally, unifying the code on all
platforms. If BigInt mode would be necessary, this should be reintroduced
on all platforms, but for now we rely on 64-bit arithmetics, as we did
before this patch.
And while at it, replaced outdated uses of LONG_MAX/LONG_MIN with correct
numeric limits for tools::Long, to avoid more BigInt operations.
Change-Id: I8d6039c851d76712b391e754d3f78a97a8463f05
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106121
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
from tdf#69060, to replace with an alternative solution
This reverts commit 98d71c4e0847797a4ba9229a8e6d832a8a3d5e0f.
and
This reverts commit 64d8e5f8db70f4f913abb902b41f4cff8dd1cdad.
Change-Id: I384e994b54aa1bfc735c6ab591b9b1410058451f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104716
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
partly to flush some use of "long" out the codebase,
but also to make it obvious which units are being used
for angle values.
Change-Id: I1dc22494ca42c4677a63f685d5903f2b89886dc2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104548
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: Ice1055021e8568634e9a66ba89d3bb4ef4e731df
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104522
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
A number of powerful functions using B2D polygons such as
OutputDevice::DrawPolyLineDirect() were used only if AA was enabled.
So e.g. dashing for an AA-ed polyline could be drawn directly
using the function, but with AA disabled had to be done manually
by a number of polygon operations. Which doesn't make much sense,
surely these powerful functions can also draw without AA if set so
(and indeed that's mostly the case). And DrawPolyLineDirect() even
had a flag to bypass the check.
So simply try to use B2D-based drawing whenever possible, AA or not.
The previous commit had already changed the naming of the AA option
to not include B2D in the name.
This seems to come from https://bz.apache.org/ooo/show_bug.cgi?id=88795,
which doesn't explain why AA only. There are other bugreports such as
https://bz.apache.org/ooo/show_bug.cgi?id=101491 and
https://bz.apache.org/ooo/show_bug.cgi?id=98289 that are related, but
there I cannot see any difference with this patch. And all unit tests
pass.
Change-Id: Ibb5938e8fff9b7452bac4bf12ed3e42fd3e5d645
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103354
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
This renames AntialiasingFlags::EnableB2dDraw to just Enable,
and the AntiAliasB2DDraw names to just AntiAlias. This is
in preparation for a second commit that will actually separate
the AA and B2D functionality of these flags.
Change-Id: I9cc215c5752dfabce41e00e19d9074fc8dc3d4de
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103416
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
This reverts
commit 0cabffc05f3b40f5ee897df73475e09a3c05fc7
tools::PolyPolygon -> basegfx in canvas
and
commit 2c5d5a6d55a1ebd153f05523972a2c625484bde2
tools::PolyPolygon -> basegfx in filter
Comment from quikee:
The interpretation of integer polygons and floating point polygons
(or any other float vs. int drawing primitives) are different,
so you have to be really careful when changing, that the result
after the change is still the same. A big problem is that we still
have the metafile in OutputDevice, which is completely integer based
- so there will be conversions that go from int representation to
float representation to int again and to float (because backend is
in floating point) and I really fear that because of this there will
be regressions and even if not, it could make changing later more
painful. This is the reason I wouldn't change these things without
having tests that would show when there is a difference in rendering.
Change-Id: I54addca4e5a72196b5f77f6c7689eb716451c1dd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103483
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
which needed an extra method on OutputDevice.
Also add some utility methods to make future conversion work easier.
Change-Id: I57c5bc7505e656a014f2e723fea2aa79271e6515
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103415
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
All other functions calling it already do so, so write it only when
called from the outside.
Change-Id: If17d973a5d6b3797db46e91a1ec36606a89c5d07
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103353
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
|
Make gtk3's 'GtkSalGraphics::drawNativeControl'
take into account a control's background color,
if any is explicitly set:
Set background/fill color (in 'Edit::ApplySettings')
also for the case where the control is drawn "natively",
but don't draw the background in the generic 'Window::Erase'
method for the case of native drawing; instead handle it when
drawing the control itself.
This adds an additional parameter to pass the background color to the
relevant '{d,D}rawNativeControl' methods (defaulting to 'COL_AUTO')
and implements the required handling to apply the background color
for the gtk3 case.
qt5/kf5 will probably be handled in an upcoming commit as well.
Windows as well as the "gen" VCL plugin were not affected by the
issue, so remain unchanged and just ignore the new parameter.
In a quick test on on macOS, the rendering of the controls
in the sample doc was broken beyond just the missing background
colors (s. screenshot attached to tdf#136094); the behavior there
also remains unchanged by this patch, the new parameter is ignored
for now.
Change-Id: I01923a504fea2367ae96032104f09099e35f410e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101284
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Michael Weghorn <m.weghorn@posteo.de>
|
|
Change-Id: Ideee477b0c8f0d472a607ed69ba51351d87f61bc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101010
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Tested-by: Jenkins
|
|
This removes the only place that hadn't used transparent impBufferDevice
yet - in VclProcessor2D::RenderMaskPrimitive2DPixel. Not clearing the vdev
made it draw on whatever garbage was left there from previous paints when
the buffer was taken from maFreeBuffers in VDevBuffer::alloc, so since this
was also the only place left that didn't clear the buffer explicitly, this
makes the clear unconditional in impBufferDevice ctor.
Also this makes sure to clear proper rectangle in VDevBuffer::alloc, and to
clear mpAlphaVDev in OutputDevice::Erase.
Change-Id: I7c1c0cc510a92628f19020b3faf0c0cd81f5a599
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100674
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
Change-Id: Id5144e95ac0120b3125258cdde46e4f7f6e1690b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99109
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: Iba9cc10daa1b6b0ab7097145a3f40832d2165435
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94721
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
Change-Id: I67e430ae1e0834f087a2066ed7bf660ec1309a28
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94726
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: Ibc1818453425cbe5dac3e16bfde9dbe93beb1311
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94725
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: Ie624f0d57aea4d72c69f6cd73508d129e53721d1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94722
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: Icdd9d612b998d260c4cf0e30fb38e72b5ebd3194
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94723
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
and thus SystemFontData
Change-Id: I563a6b7c251194cd73c6b0026d4ae8485a057b28
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94740
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
and thus SystemTextLayoutData and SystemGlyphData
Change-Id: Ib22e4b4f98b9da0337f31645bd26e41475f6d830
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94739
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
Change-Id: Ie35ae8c10eaa66b48c9c79a0356a71ad82ca66e7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94720
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
This function does not set the internal state of anything in
OutputDevice, but rather calculates the background component bounds.
Hence it should be a Get function, not a Set function.
Change-Id: Id33d8febfa012de2b44a671e9bddad18bc86ce78
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94396
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
The check for source device's mpGraphics is moved into drawOutDevDirect,
since failing it must result in immediate return from the function.
Check for this->mpGraphics also moved into drawOutDevDirect, since it's
dereferenced in DrawOutDevDirectProcess, unclear why was it skipped in
some cases previously.
Removed unreachable warning.
Change-Id: I4ad882f8f60d6543786aef2ec1651e499d47874d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94463
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
|
|
Change-Id: Icc1b53f068b94ff3b3f26b144f366344dcbff2ea
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94345
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: Ica4400cdb1e5c24dfb302426548ac976da802c74
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94343
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
excluding the UDK headers of course
Change-Id: Iac7ab83d60265f7d362c860776f1de9d5e444ec0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93268
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Extracted SetBackgroundComponentBounds() which removes need for
checking OutDevType especially whether it is Printer or not in OutputDevice.
Change-Id: Ib8884b861314f595283af9ae3a2cd5645b334d51
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86312
Tested-by: Jenkins
Reviewed-by: Muhammet Kara <muhammet.kara@collabora.com>
|
|
For more info and explanation including state of process
information and discussion(s) see task please.
Adding corrections for gerrit build
Change-Id: Ie10fb8093a86459dee80db5ab4355b47e46c1f8c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88130
Tested-by: Jenkins
Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
|
|
Extracted DrawOutDevDirectCheck and DrawOutDevDirectProcess. DrawoutDevDirectCheck checks OutputDeviceType and define pSrcGraphics according to its type. DrawOutDevDirectProcess perform some operations about drawing out according to its type and checks some pointers for avoiding NULL pointer.
Change-Id: I24247ee42d2dd686dbd13bb5f6b24bbe8fab43ab
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86229
Reviewed-by: Muhammet Kara <muhammet.kara@collabora.com>
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Tested-by: Jenkins
|
|
Change-Id: I32052f3f37946b21564a931787b1547803c778ad
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87047
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
All changes are formatted using clang-format utility.
Change-Id: Icfa7ae22bc06e57c7f7cb512813966dcefd4fc40
Signed-off-by: Adrien Ollier <adr.ollier@hotmail.fr>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/83601
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
|
|
Change-Id: I063cb5b9823d374014fd2c8129eba53384b96870
Reviewed-on: https://gerrit.libreoffice.org/85273
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
|
|
Adds in logic to OutputDevice that takes a font color and the font's
background color - if the font and background is dark then return the
stock white color, if the font and background are bright, then return
the stock black color, otherwise just return the font color.
Also added a unit test to ensure that SmTmpDevice restores font and
test color correctly.
Change-Id: Id805682778d82826c644e7a27017c8d30b1ff5eb
Reviewed-on: https://gerrit.libreoffice.org/75524
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Tested-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Apply the Liskov substitution principle to OutputDevice::GetBackgroundColor().
This helps in SmTmpDevice::Impl_GetColor() because it no longer needs to know
about what type of OutputDevice it is calling to get the background color.
This forced a rename of basctl::ModulWindowLayout::GetBackgroundColor() to be
GetSyntaxBackgroundColor(), but this is a happy coincidence as it makes the
function intent clearer anyway.
Change-Id: I11298a63cb01c187f3a8a4a2c9e90eacda6c3e6b
Reviewed-on: https://gerrit.libreoffice.org/75521
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: I8a51afe0979d83862bbe384e6d67702f4687072d
Signed-off-by: Adrien Ollier <adr.ollier@hotmail.fr>
Reviewed-on: https://gerrit.libreoffice.org/75068
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
|
|
Change-Id: I3e8775845e471517945876a48696747a46e5270a
Reviewed-on: https://gerrit.libreoffice.org/75616
Tested-by: Jenkins
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
|
|
I have done a spot of refactoring - it turns out that the bits where we
save and reset the map mode during background saves should probably be
done in Window::SaveBackground(). As Window::SaveBackground() doesn't
need the animation size (maSzPix) I have rarrange the parameter order
so the Window function can ignore the parameter.
OutputDevice::SaveBackground() has been introduced as a virtual function
and now is overridden by Window for its own purposes - OutputDevice just
does a DrawOutDev(...) operation on the background.
Change-Id: Ifeffe9536c01d8e4737f6e39a4f3dd14ba418f4d
Reviewed-on: https://gerrit.libreoffice.org/76399
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Tested-by: Michael Meeks <michael.meeks@collabora.com>
|
|
Change-Id: I7737c8b19dca787eab70b733d07a34a5e5f01c9c
Reviewed-on: https://gerrit.libreoffice.org/75208
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|