[Libreoffice-commits] core.git: Branch 'libreoffice-6-1' - drawinglayer/source

2018-11-27 Thread Libreoffice Gerrit user
 drawinglayer/source/tools/emfphelperdata.cxx |5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

New commits:
commit babf033fddf1d1212a268703a7dcd96214560f26
Author: Bartosz Kosiorek 
AuthorDate: Tue Nov 27 11:44:07 2018 +0100
Commit: Bartosz Kosiorek 
CommitDate: Tue Nov 27 11:45:28 2018 +0100

tdf#121648 EMF+ Fix displaying DrawDriverString record

With introduing String rotation support
I made mistake by not removing Maping from DX-Array.
With this commit I'm fixing that issue.
Now drawing with DrawDriverString record,
and rotation is working perfectly.

Change-Id: I7ae051b3791d9d2d8e2143ed33d21b7bfbc551c6
Reviewed-on: https://gerrit.libreoffice.org/64080
Tested-by: Jenkins
Reviewed-by: Patrick Jaap 
Reviewed-by: Bartosz Kosiorek 

diff --git a/drawinglayer/source/tools/emfphelperdata.cxx 
b/drawinglayer/source/tools/emfphelperdata.cxx
index 595fddd96af2..b729c5a6611f 100644
--- a/drawinglayer/source/tools/emfphelperdata.cxx
+++ b/drawinglayer/source/tools/emfphelperdata.cxx
@@ -1796,10 +1796,9 @@ namespace emfplushelper
 
 // generate the DX-Array
 aDXArray.clear();
-double mappedPosX = Map(charsPosX[pos], 
charsPosY[pos]).getX();
-for (size_t i = 0; i < aLength-1; i++)
+for (size_t i = 0; i < aLength - 1; i++)
 {
-aDXArray.push_back(Map(charsPosX[pos + i + 
1], charsPosY[pos + i + 1]).getX() - mappedPosX);
+aDXArray.push_back(charsPosX[pos + i + 1] 
- charsPosX[pos]);
 }
 // last entry
 aDXArray.push_back(0);
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


[Libreoffice-commits] core.git: Branch 'libreoffice-6-1' - drawinglayer/source

2018-11-26 Thread Libreoffice Gerrit user
 drawinglayer/source/tools/emfphelperdata.cxx |   74 +--
 1 file changed, 58 insertions(+), 16 deletions(-)

New commits:
commit 39dbb20bb9a5f73487c5f3e0e685d7c61963a073
Author: Bartosz Kosiorek 
AuthorDate: Sun Nov 4 02:39:09 2018 +0100
Commit: Bartosz Kosiorek 
CommitDate: Tue Nov 27 01:59:09 2018 +0100

tdf#55058 tdf#106084 EMF+ Add support for Underline and Strikeout

Add support of Underline and Strikeout for DrawString and
DrawDriverString EMF+ records

Change-Id: I24c47e0d7524dabc13edd04c6b68aec69fa35e7b
Reviewed-on: https://gerrit.libreoffice.org/62827
Tested-by: Jenkins
Reviewed-by: Patrick Jaap 
Reviewed-by: Bartosz Kosiorek 
(cherry picked from commit 8d4da5429548ba6ef4d3ee4dd6062c25a77ba78b)
Reviewed-on: https://gerrit.libreoffice.org/63576

diff --git a/drawinglayer/source/tools/emfphelperdata.cxx 
b/drawinglayer/source/tools/emfphelperdata.cxx
index 0f827fceb81a..595fddd96af2 100644
--- a/drawinglayer/source/tools/emfphelperdata.cxx
+++ b/drawinglayer/source/tools/emfphelperdata.cxx
@@ -30,6 +30,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -1320,10 +1321,6 @@ namespace emfplushelper
 
mrPropertyHolders.Current().setFont(vcl::Font(font->family, Size(font->emSize, 
font->emSize)));
 // done reading
 
-// transform to TextSimplePortionPrimitive2D
-// TODO add more decorations: underline, 
strikeout, etc
-//  and create a 
TextDecoratedPortionPrimitive2D
-
 const OUString emptyString;
 drawinglayer::attribute::FontAttribute 
fontAttribute(
 font->family,  
// font family
@@ -1376,8 +1373,10 @@ namespace emfplushelper
 if (color.GetTransparency() < 255)
 {
 std::vector emptyVector;
-
drawinglayer::primitive2d::Primitive2DReference aPrimitiveText(
-new 
drawinglayer::primitive2d::TextSimplePortionPrimitive2D(
+drawinglayer::primitive2d::BasePrimitive2D* 
pBaseText = nullptr;
+if (font->Underline() || font->Strikeout())
+{
+pBaseText = new 
drawinglayer::primitive2d::TextDecoratedPortionPrimitive2D(
 transformMatrix,
 text,
 0, // text always 
starts at 0
@@ -1385,8 +1384,28 @@ namespace emfplushelper
 emptyVector,   // EMF-PLUS has 
no DX-array
 fontAttribute,
 locale,
-color.getBColor()));
-
+color.getBColor(),
+COL_TRANSPARENT,
+color.getBColor(),
+color.getBColor(),
+
drawinglayer::primitive2d::TEXT_LINE_NONE,
+font->Underline() ? 
drawinglayer::primitive2d::TEXT_LINE_SINGLE : 
drawinglayer::primitive2d::TEXT_LINE_NONE,
+false,
+font->Strikeout() ? 
drawinglayer::primitive2d::TEXT_STRIKEOUT_SINGLE : 
drawinglayer::primitive2d::TEXT_STRIKEOUT_NONE);
+}
+else
+{
+pBaseText = new 
drawinglayer::primitive2d::TextSimplePortionPrimitive2D(
+transformMatrix,
+text,
+0, // text always 
starts at 0
+stringLength,
+emptyVector,   // EMF-PLUS has 
no DX-array
+fontAttribute,
+locale,
+color.getBColor());
+}
+
drawinglayer::primitive2d::Primitive2DReference aPrimitiveText(pBaseText);
 if (color.GetTransparency() != 0)
 {
 

[Libreoffice-commits] core.git: Branch 'libreoffice-6-1' - drawinglayer/source emfio/qa

2018-11-19 Thread Libreoffice Gerrit user
 drawinglayer/source/tools/emfphelperdata.cxx |  104 ++-
 emfio/qa/cppunit/emf/EmfImportTest.cxx   |   26 +++---
 2 files changed, 55 insertions(+), 75 deletions(-)

New commits:
commit 1f308f95f88eeea3cbb46c78c39678c0f3860d0b
Author: Bartosz Kosiorek 
AuthorDate: Fri Nov 2 15:53:05 2018 +0100
Commit: Bartosz Kosiorek 
CommitDate: Mon Nov 19 15:30:33 2018 +0100

tdf#55058 tdf#106084 tdf#114738 EMF+ Add rotation support for String drawing

Added rotation support for DrawString and DrawDriverString

The EmfPlusDrawString record specifies text output with string formatting.
The EmfPlusDrawDriverString record specifies text output
with character positions.

Now both EMF+ records properly support rotation.

Change-Id: I15a7a6dd2b8a209cf2aac2af75d7dd89cedd1aeb
Reviewed-on: https://gerrit.libreoffice.org/62805
Tested-by: Jenkins
Reviewed-by: Bartosz Kosiorek 

diff --git a/drawinglayer/source/tools/emfphelperdata.cxx 
b/drawinglayer/source/tools/emfphelperdata.cxx
index df96667e0cbf..0f827fceb81a 100644
--- a/drawinglayer/source/tools/emfphelperdata.cxx
+++ b/drawinglayer/source/tools/emfphelperdata.cxx
@@ -33,6 +33,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -1365,7 +1366,8 @@ namespace emfplushelper
 }
 
 const basegfx::B2DHomMatrix transformMatrix = 
basegfx::utils::createScaleTranslateB2DHomMatrix(
-MapSize(font->emSize, font->emSize), 
Map(lx + stringAlignmentHorizontalOffset, ly + font->emSize));
+::basegfx::B2DSize(font->emSize, 
font->emSize),
+::basegfx::B2DPoint(lx + 
stringAlignmentHorizontalOffset, ly + font->emSize));
 
 const Color color = 
EMFPGetBrushColorOrARGBColor(flags, brushId);
 
mrPropertyHolders.Current().setTextColor(color.getBColor());
@@ -1374,38 +1376,28 @@ namespace emfplushelper
 if (color.GetTransparency() < 255)
 {
 std::vector emptyVector;
-if (color.GetTransparency() == 0)
+
drawinglayer::primitive2d::Primitive2DReference aPrimitiveText(
+new 
drawinglayer::primitive2d::TextSimplePortionPrimitive2D(
+transformMatrix,
+text,
+0, // text always 
starts at 0
+stringLength,
+emptyVector,   // EMF-PLUS has 
no DX-array
+fontAttribute,
+locale,
+color.getBColor()));
+
+if (color.GetTransparency() != 0)
 {
-// not transparent
-mrTargetHolders.Current().append(
-
o3tl::make_unique(
-transformMatrix,
-text,
-0, // text 
always starts at 0
-stringLength,
-emptyVector,   // EMF-PLUS 
has no DX-array
-fontAttribute,
-locale,
-color.getBColor()));
+aPrimitiveText = new 
drawinglayer::primitive2d::UnifiedTransparencePrimitive2D(
+
drawinglayer::primitive2d::Primitive2DContainer { aPrimitiveText },
+color.GetTransparency() / 
255.0);
 }
-else
-{
-const 
drawinglayer::primitive2d::Primitive2DReference aPrimitive(
-new 
drawinglayer::primitive2d::TextSimplePortionPrimitive2D(
-transformMatrix,
-text,
-0, // text 
always starts at 0
-stringLength,
-emptyVector,   // EMF-PLUS 
has no 

[Libreoffice-commits] core.git: Branch 'libreoffice-6-1' - drawinglayer/source

2018-09-20 Thread Libreoffice Gerrit user
 drawinglayer/source/tools/emfphelperdata.cxx |4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

New commits:
commit f133621aeb78a37dc4d9db7a0eb7d0bde4637fb2
Author: Caolán McNamara 
AuthorDate: Thu Sep 20 09:39:26 2018 +0100
Commit: Caolán McNamara 
CommitDate: Thu Sep 20 13:01:09 2018 +0200

ofz#10526 check with dynamic_cast its really a EMFPStringFormat

Change-Id: Ifbe81b851b17858a915105c102af6f4d8f2c81fa
Reviewed-on: https://gerrit.libreoffice.org/60799
Reviewed-by: Michael Stahl 
Tested-by: Jenkins

diff --git a/drawinglayer/source/tools/emfphelperdata.cxx 
b/drawinglayer/source/tools/emfphelperdata.cxx
index a5b31b1b4ebe..df96667e0cbf 100644
--- a/drawinglayer/source/tools/emfphelperdata.cxx
+++ b/drawinglayer/source/tools/emfphelperdata.cxx
@@ -1309,7 +1309,7 @@ namespace emfplushelper
 const OUString text = read_uInt16s_ToOUString(rMS, 
stringLength);
 SAL_INFO("drawinglayer", "EMF+ DrawString string: 
" << text);
 // get the stringFormat from the Object table ( 
this is OPTIONAL and may be nullptr )
-const EMFPStringFormat *stringFormat = 
static_cast< EMFPStringFormat* >(maEMFPObjects[formatId & 0xff].get());
+const EMFPStringFormat *stringFormat = 
dynamic_cast(maEMFPObjects[formatId & 0xff].get());
 // get the font from the flags
 const EMFPFont *font = static_cast< EMFPFont* >( 
maEMFPObjects[flags & 0xff].get() );
 if (!font)
@@ -1340,7 +1340,7 @@ namespace emfplushelper
 double stringAlignmentHorizontalOffset = 0.0;
 if (stringFormat)
 {
-SAL_WARN_IF(stringFormat && 
stringFormat->DirectionRightToLeft(), "drawinglayer", "EMF+ DrawString 
Alignment TODO For a right-to-left layout rectangle, the origin should be at 
the upper right.");
+
SAL_WARN_IF(stringFormat->DirectionRightToLeft(), "drawinglayer", "EMF+ 
DrawString Alignment TODO For a right-to-left layout rectangle, the origin 
should be at the upper right.");
 if (stringFormat->stringAlignment == 
StringAlignmentNear)
 // Alignment is to the left side of the layout 
rectangle (lx, ly, lw, lh)
 {
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


[Libreoffice-commits] core.git: Branch 'libreoffice-6-1' - drawinglayer/source

2018-08-20 Thread Libreoffice Gerrit user
 drawinglayer/source/tools/emfphelperdata.cxx |   13 +++--
 1 file changed, 11 insertions(+), 2 deletions(-)

New commits:
commit e16f22b75f84695c58d6612be27364cc5814f51f
Author: Caolán McNamara 
AuthorDate: Mon Aug 13 17:22:43 2018 +0100
Commit: Michael Stahl 
CommitDate: Mon Aug 20 12:17:48 2018 +0200

ofz: Null-deference

Change-Id: I339cfb54379b1c98a04747046ed599a23d49c220
Reviewed-on: https://gerrit.libreoffice.org/58950
Tested-by: Jenkins
Reviewed-by: Michael Stahl 

diff --git a/drawinglayer/source/tools/emfphelperdata.cxx 
b/drawinglayer/source/tools/emfphelperdata.cxx
index c529c255beb1..a5b31b1b4ebe 100644
--- a/drawinglayer/source/tools/emfphelperdata.cxx
+++ b/drawinglayer/source/tools/emfphelperdata.cxx
@@ -1665,8 +1665,13 @@ namespace emfplushelper
 SAL_INFO("drawinglayer", "EMF+ SetClipPath combine 
mode: " << combineMode);
 SAL_INFO("drawinglayer", "EMF+\tpath in slot: " << 
(flags & 0xff));
 
-EMFPPath& path = 
*static_cast(maEMFPObjects[flags & 0xff].get());
-::basegfx::B2DPolyPolygon& 
clipPoly(path.GetPolygon(*this));
+EMFPPath *path = 
static_cast(maEMFPObjects[flags & 0xff].get());
+if (!path)
+{
+break;
+}
+
+::basegfx::B2DPolyPolygon& 
clipPoly(path->GetPolygon(*this));
 // clipPoly.transform(rState.mapModeTransform);
 
 HandleNewClipRegion( 
combineClip(mrPropertyHolders.Current().getClipPolyPolygon(), combineMode, 
clipPoly), mrTargetHolders, mrPropertyHolders);
@@ -1678,6 +1683,10 @@ namespace emfplushelper
 SAL_INFO("drawinglayer", "EMF+ SetClipRegion");
 SAL_INFO("drawinglayer", "EMF+\tregion in slot: " << 
(flags & 0xff) << " combine mode: " << combineMode);
 EMFPRegion *region = 
static_cast(maEMFPObjects[flags & 0xff].get());
+if (!region)
+{
+break;
+}
 
 
HandleNewClipRegion(combineClip(mrPropertyHolders.Current().getClipPolyPolygon(),
 combineMode, region->regionPolyPolygon), mrTargetHolders, mrPropertyHolders);
 break;
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


[Libreoffice-commits] core.git: Branch 'libreoffice-6-1' - drawinglayer/source

2018-06-26 Thread Caolán McNamara
 drawinglayer/source/tools/emfphelperdata.cxx |9 +
 1 file changed, 9 insertions(+)

New commits:
commit 9b3f18ceda930f8e80149a850397ff3040b575f0
Author: Caolán McNamara 
Date:   Tue Jun 26 11:58:30 2018 +0100

forcepoint#47 bail when we detect the emf is broken

Change-Id: I065635393763af774b45cbba6bd85c4334383b93
Reviewed-on: https://gerrit.libreoffice.org/56457
Tested-by: Jenkins
Reviewed-by: Caolán McNamara 
Tested-by: Caolán McNamara 

diff --git a/drawinglayer/source/tools/emfphelperdata.cxx 
b/drawinglayer/source/tools/emfphelperdata.cxx
index 78b76ecfe647..c529c255beb1 100644
--- a/drawinglayer/source/tools/emfphelperdata.cxx
+++ b/drawinglayer/source/tools/emfphelperdata.cxx
@@ -830,12 +830,21 @@ namespace emfplushelper
 next = rMS.Tell() + (size - 12);
 
 if (size < 12)
+{
 SAL_WARN("drawinglayer", "Size field is less than 12 bytes");
+break;
+}
 else if (size > length)
+{
 SAL_WARN("drawinglayer", "Size field is greater than bytes 
left");
+break;
+}
 
 if (dataSize > (size - 12))
+{
 SAL_WARN("drawinglayer", "DataSize field is greater than 
Size-12");
+break;
+}
 
 SAL_INFO("drawinglayer", "EMF+ record size: " << size << " type: " 
<< emfTypeToName(type) << " flags: " << flags << " data size: " << dataSize);
 
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


[Libreoffice-commits] core.git: Branch 'libreoffice-6-1' - drawinglayer/source

2018-06-12 Thread Caolán McNamara
 drawinglayer/source/tools/emfphelperdata.cxx |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit ec1a4c49c075e214e02d07ff83051d11b817ce0a
Author: Caolán McNamara 
Date:   Tue Jun 12 12:14:36 2018 +0100

forcepoint#45 object may not be a EMFPPen

Change-Id: Ifb5c17e13faf6e9d246e1668ef7916957a5296b6
Reviewed-on: https://gerrit.libreoffice.org/55678
Tested-by: Jenkins 
Reviewed-by: Caolán McNamara 
Tested-by: Caolán McNamara 

diff --git a/drawinglayer/source/tools/emfphelperdata.cxx 
b/drawinglayer/source/tools/emfphelperdata.cxx
index a7c455cfc1aa..78b76ecfe647 100644
--- a/drawinglayer/source/tools/emfphelperdata.cxx
+++ b/drawinglayer/source/tools/emfphelperdata.cxx
@@ -389,7 +389,7 @@ namespace emfplushelper
 
 void EmfPlusHelperData::EMFPPlusDrawPolygon(const 
::basegfx::B2DPolyPolygon& polygon, sal_uInt32 penIndex)
 {
-const EMFPPen* pen = static_cast(maEMFPObjects[penIndex & 
0xff].get());
+const EMFPPen* pen = dynamic_cast(maEMFPObjects[penIndex & 
0xff].get());
 SAL_WARN_IF(!pen, "drawinglayer", "emf+ missing pen");
 
 if (pen && polygon.count())
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


[Libreoffice-commits] core.git: Branch 'libreoffice-6-1' - drawinglayer/source

2018-06-07 Thread Armin Le Grand
 drawinglayer/source/primitive2d/svggradientprimitive2d.cxx |   11 +--
 1 file changed, 9 insertions(+), 2 deletions(-)

New commits:
commit a3423a4efd016014158fdeec34e1f75960f8604a
Author: Armin Le Grand 
Date:   Wed Jun 6 13:28:09 2018 +0200

tdf#117949 Use small overlap for SVG gradient representation

Change-Id: Idd55df31aa87cc40dbb15001479cdc79e918ac19
Reviewed-on: https://gerrit.libreoffice.org/55376
Tested-by: Jenkins 
Reviewed-by: Armin Le Grand 
(cherry picked from commit aa5d7477e8e1e4bcd0e56496e745c3dc3b05c369)
Reviewed-on: https://gerrit.libreoffice.org/55398

diff --git a/drawinglayer/source/primitive2d/svggradientprimitive2d.cxx 
b/drawinglayer/source/primitive2d/svggradientprimitive2d.cxx
index 0197b4199fb2..12eef36c16ac 100644
--- a/drawinglayer/source/primitive2d/svggradientprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/svggradientprimitive2d.cxx
@@ -915,14 +915,21 @@ namespace drawinglayer
 // use color distance and discrete lengths to calculate step 
count
 const sal_uInt32 
nSteps(calculateStepsForSvgGradient(getColorA(), getColorB(), fDelta, 
fDiscreteUnit));
 
+// tdf#117949 Use a small amount of discrete overlap at the 
edges. Usually this
+// should be exactly 0.0 and 1.0, but there were cases when 
this gets clipped
+// against the mask polygon which got numerically problematic.
+// This change is unnecessary in that respect, but avoids that 
numerical havoc
+// by at the same time doing no real harm AFAIK
+// : Remove again when clipping is fixed (!)
+
 // prepare polygon in needed width at start position (with 
discrete overlap)
 const basegfx::B2DPolygon aPolygon(
 basegfx::utils::createPolygonFromRect(
 basegfx::B2DRange(
 getOffsetA() - fDiscreteUnit,
-0.0,
+-0.0001, //  -> should be 0.0, see comment 
above
 getOffsetA() + (fDelta / nSteps) + fDiscreteUnit,
-1.0)));
+1.0001))); //  -> should be 1.0, see comment 
above
 
 // prepare loop (inside to outside, [0.0 .. 1.0[)
 double fUnitScale(0.0);
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


[Libreoffice-commits] core.git: Branch 'libreoffice-6-1' - drawinglayer/source

2018-05-29 Thread Caolán McNamara
 drawinglayer/source/texture/texture3d.cxx |   11 +++
 1 file changed, 7 insertions(+), 4 deletions(-)

New commits:
commit f532decefb7881eb5f56864db9fcfd5d2ba85ee4
Author: Caolán McNamara 
Date:   Mon May 28 21:36:16 2018 +0100

forcepoint#41 null deref

Change-Id: I16e9e083811c6e14861da1ba1df7d46e8c8771d7
Reviewed-on: https://gerrit.libreoffice.org/54973
Reviewed-by: Caolán McNamara 
Tested-by: Caolán McNamara 

diff --git a/drawinglayer/source/texture/texture3d.cxx 
b/drawinglayer/source/texture/texture3d.cxx
index fc8750199c8f..0dac447ccf50 100644
--- a/drawinglayer/source/texture/texture3d.cxx
+++ b/drawinglayer/source/texture/texture3d.cxx
@@ -74,8 +74,6 @@ namespace drawinglayer
 {
 // #121194# Todo: use alpha channel, too (for 3d)
 maBitmap = maBitmapEx.GetBitmap();
-mpReadBitmap = Bitmap::ScopedReadAccess(maBitmap);
-OSL_ENSURE(mpReadBitmap, "GeoTexSvxBitmapEx: Got no read access to 
Bitmap (!)");
 
 if(mbIsTransparent)
 {
@@ -92,8 +90,13 @@ namespace drawinglayer
 mpReadTransparence = Bitmap::ScopedReadAccess(maTransparence);
 }
 
-mfMulX = static_cast(mpReadBitmap->Width()) / 
maSize.getX();
-mfMulY = static_cast(mpReadBitmap->Height()) / 
maSize.getY();
+mpReadBitmap = Bitmap::ScopedReadAccess(maBitmap);
+SAL_WARN_IF(!mpReadBitmap, "drawinglayer", "GeoTexSvxBitmapEx: Got 
no read access to Bitmap");
+if (mpReadBitmap)
+{
+mfMulX = static_cast(mpReadBitmap->Width()) / 
maSize.getX();
+mfMulY = static_cast(mpReadBitmap->Height()) / 
maSize.getY();
+}
 
 if(maSize.getX() <= 1.0)
 {
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits