DrawString:
The value 'fontAttribute' is optional and may be null,
results in missing characters.
DrawImage:
The case of 'metafile' was missing and leads to
low resolution rendering.
Change-Id: I81566d884975fda832f4a5af6663c837f355c383
Reviewed-on: https://gerrit.libreoffice.org/43367
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Bartosz Kosiorek <gang65@poczta.onet.pl>
When we get an EMF+ comment record (which is NOT an EMF comment
record, EMF has comment records which is how you store EMF+
records, EMF+ records also have comment records for "private
data") then if we are a debug build then dump the private data
to stdout.
To make this work, set:
SAL_LOG=+INFO.cppcanvas.emf+WARN.cppcanvas.emf
Change-Id: I293875f45b692971379a5945ff7feb273bc54c73
Reviewed-on: https://gerrit.libreoffice.org/42558
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Chris Sherlock <chris.sherlock79@gmail.com>
We should warn if EMF+ record < 12 bytes. Similarly, if the
record size is less than 12 bytes, that's evidence of a
corrupted EMF+ record, same with if the length or datasize
is too long. Thus we should warn at this point.
Also - if an if statement is not part of another if/else block
then best to have a newline separating them so they don't
look like they are part of that block.
Change-Id: I914c754fe7437d6d4b6f2e4aec2d28475eaf5d70
Reviewed-on: https://gerrit.libreoffice.org/43004
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Chris Sherlock <chris.sherlock79@gmail.com>
Since the first guess of the right transformation seemed to be wrong,
here is the next try. The pure float value is multiplied with the pen width.
This is way more intuitive for me and renders the EMF files from the
bugtracker exactly like in MSO.
See 588c5b0cff for the previous patch.
Change-Id: I74e82a0f9800d950e0d989184765a53e520b48e6
Reviewed-on: https://gerrit.libreoffice.org/42810
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Reduce potential confusion with the global tools namespace. Will
hopefully make it possible to remove the annoying initial :: when
referring to the global tools namespace. Unless we have even more
tools subnamespaces somewhere.
Thorsten said it was OK.
Change-Id: Id088dfe8f4244cb79df9aa988995b31a1758c996
Reviewed-on: https://gerrit.libreoffice.org/42644
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
so it doesn't get removed again from sal/inc/pch/precompiled_sal.hxx
(see commit 4af9612f2b).
Also make necessary changes to some of the files that start to fail
building after running bin/update_pch.sh, so that the patch is
self-contained and leaves the tree in fully functional state.
tools namespace had to be prepended with :: to disambiguate from
drawinglayer::tools
vcl/inc/window.h includes were amended, because ExtTextInputAttr is
from vcl/commandevent.hxx, and enum class ShowTrackFlags is from
vcl/window.hxx
Change-Id: I47179622350754cba2f95d26a1bafd3dfbbc935b
Reviewed-on: https://gerrit.libreoffice.org/42559
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
And while moving it, get rid of the 'drawinglyer::tools' subnamespace.
Less potential confusion with the global 'tools' namespace.
Change-Id: Iab3c25be0cec7f3d182228d122837e9f2ac9a529
Reviewed-on: https://gerrit.libreoffice.org/42619
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Tested-by: Tor Lillqvist <tml@collabora.com>
Decompose of BorderLinePrimitive2D extended to take care
of non-perpendicular line endings for matching. Improved
matching, one error in calc fixed
Change-Id: I869a75385711b58e6725daba0f22be8a98158ad9
Extended and checked the expand logic for creating
the line extends. Now creating quite the right lines,
will need to check some speccial cases. Also some
cleanups.
Change-Id: I3a3bd4d23c7017ecd873147df2d93af61de39fa6
Big changes to BorderLinePrimitive2D and BorderLine, freeing
it from one/three entries, going to a free definition using
gaps with width but without color. Adapted usages and creation,
not yet tested much
Change-Id: Ic1255a790401901c3166d200205bc23322b37185
As preparation for more detailed definition of BorderLine
primitives I have adapted the BorderLine definition to
work with motre possibilities to define the LineStartEnd
definitions in a BorderLineExtend class. That one is
flexible to hold all kinds of definitions - from none to
all four possible extends (Start/End, Left/Right of vector)
Cleanup of DiagStyle and others: DiagStyle is not needed
anymore due to no longer using angles calculated, but
being based on vectors defining the geometry. Also cleaned
up quite a bit of no longer needed calculation stuff for
the control.
TextFillColor was added to TextSimplePortionPrimitive2D, but not added to
TextSimplePortionPrimitive2D::operator==, so when this changed it was not
detected. Added this.
Also added was bFilled and nWidthToFill, all defaulted. This is not accessible
for TextDecoratedPortionPrimitive2D and seems to be some special solution
just for one special case in DrawPortionInfo, only used from Outliner::DrawingTab,
so I am not sure if that change to the central TextSimplePortionPrimitive2D is
good and should stay
Change-Id: Ief8da74a8b66281e47c4c8a47131125e30b90e7d
Reviewed-on: https://gerrit.libreoffice.org/42188
Reviewed-by: Armin Le Grand <Armin.Le.Grand@cib.de>
Tested-by: Armin Le Grand <Armin.Le.Grand@cib.de>
When setting a fill or line color on the outputdevice, put it back to its previous
setting when finished with the record, PRIMITIVE2D_ID_POLYPOLYGONCOLORPRIMITIVE2D
was the one in this case but protect the other similar ones here too
Change-Id: Ifb9b182d72bb6c48a9d9480270fde4384be6291e
Reviewed-on: https://gerrit.libreoffice.org/41761
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
We're on par with the old functionality now (modulo a few smaller
issues); overall QoS is much better, we get vector output on pdf
and print, and the need for large offscreen bitmap rendering goes
away.
Change-Id: I1fa92c5cad67579c3fcfa78f1bc68696bf1623ec
Reviewed-on: https://gerrit.libreoffice.org/41406
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Patrick Jaap <patrick.jaap@tu-dresden.de>
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Some basic code for push/pop events of the graphic stacks.
Each draw/fill action is also transferred to the currend state.
The implementation follows the one from the old parser.
Change-Id: Ib6411046801023dfa72b16038a9e8ede4c628942
Reviewed-on: https://gerrit.libreoffice.org/40867
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
The Implementation follows closely EmfPlusRecordTypeDrawString.
For each set of characters with the same PosY a TextSimplePortionPrimitive2D
is created.
Change-Id: I04e4d11dc3c4e1e5bd16aefa8e7f00556aa5282b
Reviewed-on: https://gerrit.libreoffice.org/40716
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
This implementation replaces hte old one.
It uses the workaround hatch blending from the old implentation (basically just copied)
It provides correct linear gradients, with correct transformations
PathGradients are approximated via RadialGradients.
Also, there is a better line width choice, solving problems caused by pictures like tdf#38580.
Change-Id: Ida4f36a5de83b6325702a153b642abe5e45982ee
Reviewed-on: https://gerrit.libreoffice.org/40831
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Bartosz Kosiorek <gang65@poczta.onet.pl>
Implementation of basic text primitives. It supports text, textstyle (bold, italic, font, font size, direction, color, locale.
The positions are well-transformed.
Also a few adjustments and supplements for EMFplus font and stringformat
Change-Id: I2670b5d0f6b9ddcaa9ffc8262d8aee13ba224b77
Reviewed-on: https://gerrit.libreoffice.org/40635
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Armin Le Grand <Armin.Le.Grand@cib.de>
the current implementation uses PolyPolygonHairlinePrimitive2D for
polygons. This patch uses a PolyPolygonStrokePrimitive2D which makes
use of the correct (transformed) pen width and some basic join and cap
attributes.
Change-Id: Ifbd8cbbc41004d9d45f3c48f2c13fe449025a229
Reviewed-on: https://gerrit.libreoffice.org/40638
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Armin Le Grand <Armin.Le.Grand@cib.de>
For text layouted using EditEngine the HitTest in SVX is
identifying Field like URLs. Thus ist is better to use the
anyways more precise primitives for HitTest (rotation/shear/
mirror, ...). This was necessary since the former mechanism
which used a combination of primitive-beased HitTest and then
using an Outliner to get the position/content of the Field
landed on different positions e.g. when the layout needed to
use multiple lines for the contained URL, but there could
be more cases found.
Adapted the text decompositon, the primitive HitTest and
the TextHirearchyFieldPrimitive2D accordingly.
Change-Id: Ice559e20d02547fdcfcf9783e7cc5481706aab03
Reviewed-on: https://gerrit.libreoffice.org/40591
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Armin Le Grand <Armin.Le.Grand@cib.de>