[Libreoffice-commits] core.git: drawinglayer/source

Chris Sherlock (via logerrit) logerrit at kemper.freedesktop.org
Fri Dec 20 07:43:30 UTC 2019


 drawinglayer/source/tools/emfphelperdata.cxx |   36 ++++++-------------
 drawinglayer/source/tools/emfppen.cxx        |   50 +++++++++++++++++++++++++--
 drawinglayer/source/tools/emfppen.hxx        |   14 +++++++
 3 files changed, 74 insertions(+), 26 deletions(-)

New commits:
commit 1bd303a4c38a1bc04c3cf7bf0e7a44ac0fdb209d
Author:     Chris Sherlock <chris.sherlock79 at gmail.com>
AuthorDate: Tue Dec 10 03:04:18 2019 +1100
Commit:     Bartosz Kosiorek <gang65 at poczta.onet.pl>
CommitDate: Fri Dec 20 08:42:18 2019 +0100

    drawinglayer: improve pen object logging
    
    Change-Id: Iaae081ddee8097346000b7c2d987a2321d5e98cd
    Reviewed-on: https://gerrit.libreoffice.org/84833
    Tested-by: Jenkins
    Reviewed-by: Bartosz Kosiorek <gang65 at poczta.onet.pl>

diff --git a/drawinglayer/source/tools/emfphelperdata.cxx b/drawinglayer/source/tools/emfphelperdata.cxx
index 51a727bdcc61..b7a0c893c7af 100644
--- a/drawinglayer/source/tools/emfphelperdata.cxx
+++ b/drawinglayer/source/tools/emfphelperdata.cxx
@@ -204,40 +204,28 @@ namespace emfplushelper
         switch (aUnitType)
         {
             case UnitTypePixel:
-            {
                 return 1.0f;
-            }
+
             case UnitTypePoint:
-            {
-                SAL_INFO("drawinglayer", "EMF+\t Converting Points to Pixels.");
                 return Application::GetDefaultDevice()->GetDPIX() / 72;
-            }
+
             case UnitTypeInch:
-            {
-                SAL_INFO("drawinglayer", "EMF+\t Converting Inches to Pixels.");
                 return Application::GetDefaultDevice()->GetDPIX();
-            }
+
             case UnitTypeMillimeter:
-            {
-                SAL_INFO("drawinglayer", "EMF+\t Converting Millimeters to Pixels");
                 return Application::GetDefaultDevice()->GetDPIX() / 25.4;
-            }
+
             case UnitTypeDocument:
-            {
-                SAL_INFO("drawinglayer", "EMF+\t Converting Documents to Pixels.");
                 return Application::GetDefaultDevice()->GetDPIX() / 300;
-            }
+
             case UnitTypeWorld:
             case UnitTypeDisplay:
-            {
                 SAL_WARN("drawinglayer", "EMF+\t Converting to World/Display.");
                 return 1.0f;
-            }
+
             default:
-            {
                 SAL_WARN("drawinglayer", "EMF+\tTODO Unimplemented support of Unit Type: 0x" << std::hex << aUnitType);
                 return 1.0f;
-            }
         }
     }
 
@@ -491,14 +479,14 @@ namespace emfplushelper
         {
             // we need a line join attribute
             basegfx::B2DLineJoin lineJoin = basegfx::B2DLineJoin::Round;
-            if (pen->penDataFlags & 0x00000008) // additional line join information
+            if (pen->penDataFlags & EmfPlusPenDataJoin) // additional line join information
             {
                 lineJoin = static_cast<basegfx::B2DLineJoin>(EMFPPen::lcl_convertLineJoinType(pen->lineJoin));
             }
 
             // we need a line cap attribute
             css::drawing::LineCap lineCap = css::drawing::LineCap_BUTT;
-            if (pen->penDataFlags & 0x00000002) // additional line cap information
+            if (pen->penDataFlags & EmfPlusPenDataStartCap) // additional line cap information
             {
                 lineCap = static_cast<css::drawing::LineCap>(EMFPPen::lcl_convertStrokeCap(pen->startCap));
                 SAL_WARN_IF(pen->startCap != pen->endCap, "drawinglayer", "emf+ pen uses different start and end cap");
@@ -511,7 +499,7 @@ namespace emfplushelper
                                                                  lineCap);
 
             drawinglayer::attribute::StrokeAttribute aStrokeAttribute;
-            if (pen->penDataFlags & 0x00000020 && pen->dashStyle != EmfPlusLineStyleCustom) // pen has a predefined line style
+            if (pen->penDataFlags & EmfPlusPenDataLineStyle && pen->dashStyle != EmfPlusLineStyleCustom) // pen has a predefined line style
             {
                 // short writing
                 const double pw = maMapTransform.get(1, 1) * pen->penWidth;
@@ -539,7 +527,7 @@ namespace emfplushelper
                         break;
                 }
             }
-            else if (pen->penDataFlags & 0x00000100) // pen has a custom dash line
+            else if (pen->penDataFlags & EmfPlusPenDataMiterLimit) // pen has a custom dash line
             {
                 // StrokeAttribute needs a double vector while the pen provides a float vector
                 std::vector<double> aPattern(pen->dashPattern.size());
@@ -573,7 +561,7 @@ namespace emfplushelper
                                 pen->GetColor().GetTransparency() / 255.0));
             }
 
-            if ((pen->penDataFlags & 0x00000800) && (pen->customStartCap->polygon.begin()->count() > 1))
+            if ((pen->penDataFlags & EmfPlusPenDataCustomStartCap) && (pen->customStartCap->polygon.begin()->count() > 1))
             {
                 SAL_WARN("drawinglayer", "EMF+\tCustom Start Line Cap");
                 ::basegfx::B2DPolyPolygon startCapPolygon(pen->customStartCap->polygon);
@@ -618,7 +606,7 @@ namespace emfplushelper
                 }
             }
 
-            if ((pen->penDataFlags & 0x00001000) && (pen->customEndCap->polygon.begin()->count() > 1))
+            if ((pen->penDataFlags & EmfPlusPenDataCustomEndCap) && (pen->customEndCap->polygon.begin()->count() > 1))
             {
                 SAL_WARN("drawinglayer", "EMF+\tCustom End Line Cap");
 
diff --git a/drawinglayer/source/tools/emfppen.cxx b/drawinglayer/source/tools/emfppen.cxx
index 353d6faea687..fa0ea00d503d 100644
--- a/drawinglayer/source/tools/emfppen.cxx
+++ b/drawinglayer/source/tools/emfppen.cxx
@@ -71,6 +71,52 @@ namespace emfplushelper
     {
     }
 
+    static OUString PenDataFlagsToString(sal_uInt32 flags)
+    {
+        OUString sFlags;
+
+        if (flags & EmfPlusPenDataTransform)
+            sFlags = "\nEMF+\t\t\tEmfPlusPenDataTransform";
+
+        if (flags & EmfPlusPenDataStartCap)
+            sFlags = sFlags.concat("\nEMF+\t\t\tEmfPlusPenDataStartCap");
+
+        if (flags & EmfPlusPenDataEndCap)
+             sFlags = sFlags.concat("\nEMF+\t\t\tEmfPlusPenDataEndCap");
+
+        if (flags & EmfPlusPenDataJoin)
+            sFlags = sFlags.concat("\nEMF+\t\t\tEmfPlusPenDataJoin");
+
+        if (flags & EmfPlusPenDataMiterLimit)
+            sFlags = sFlags.concat("\nEMF+\t\t\tEmfPlusPenDataMiterLimit");
+
+        if (flags & EmfPlusPenDataLineStyle)
+            sFlags = sFlags.concat("\nEMF+\t\t\tEmfPlusPenDataLineStyle");
+
+        if (flags & EmfPlusPenDataDashedLineCap)
+            sFlags = sFlags.concat("\nEMF+\t\t\tEmfPlusPenDataDashedLineCap");
+
+        if (flags & EmfPlusPenDataDashedLineOffset)
+            sFlags = sFlags.concat("\nEMF+\t\t\tEmfPlusPenDataDashedLineOffset");
+
+        if (flags & EmfPlusPenDataDashedLine)
+            sFlags = sFlags.concat("\nEMF+\t\t\tEmfPlusPenDataDashedLine");
+
+        if (flags & EmfPlusPenDataNonCenter)
+            sFlags = sFlags.concat("\nEMF+\t\t\tEmfPlusPenDataNonCenter");
+
+        if (flags & EmfPlusPenDataCompoundLine)
+            sFlags = sFlags.concat("\nEMF+\t\t\tEmfPlusPenDataCompoundLine");
+
+        if (flags & EmfPlusPenDataCustomStartCap)
+            sFlags = sFlags.concat("\nEMF+\t\t\tEmfPlusPenDataCustomStartCap");
+
+        if (flags & EmfPlusPenDataCustomEndCap)
+            sFlags = sFlags.concat("\nEMF+\t\t\tEmfPlusPenDataCustomEndCap");
+
+        return sFlags;
+    }
+
     /// Convert stroke caps between EMF+ and rendering API
     sal_Int8 EMFPPen::lcl_convertStrokeCap(sal_uInt32 nEmfStroke)
     {
@@ -106,8 +152,8 @@ namespace emfplushelper
         s.ReadUInt32(graphicsVersion).ReadUInt32(penType).ReadUInt32(penDataFlags).ReadUInt32(penUnit).ReadFloat(penWidth);
         SAL_INFO("drawinglayer", "EMF+\t\tGraphics version: 0x" << std::hex << graphicsVersion);
         SAL_INFO("drawinglayer", "EMF+\t\tType: " << penType);
-        SAL_INFO("drawinglayer", "EMF+\t\tPen data flags: 0x" << penDataFlags);
-        SAL_INFO("drawinglayer", "EMF+\t\tUnit: " << penUnit);
+        SAL_INFO("drawinglayer", "EMF+\t\tPen data flags: 0x" << penDataFlags << PenDataFlagsToString(penDataFlags));
+        SAL_INFO("drawinglayer", "EMF+\t\tUnit: " << UnitTypeToString(penUnit));
         SAL_INFO("drawinglayer", "EMF+\t\tWidth: " << std::dec << penWidth);
 
         penWidth = penWidth * EmfPlusHelperData::getUnitToPixelMultiplier(static_cast<UnitType>(penUnit));
diff --git a/drawinglayer/source/tools/emfppen.hxx b/drawinglayer/source/tools/emfppen.hxx
index 7570ee49bb40..ecc6f1c83dc3 100644
--- a/drawinglayer/source/tools/emfppen.hxx
+++ b/drawinglayer/source/tools/emfppen.hxx
@@ -40,6 +40,20 @@ namespace emfplushelper
     const sal_Int32 EmfPlusLineStyleDashDotDot = 0x00000004;
     const sal_Int32 EmfPlusLineStyleCustom = 0x00000005;
 
+    const sal_uInt32 EmfPlusPenDataTransform = 0x00000001;
+    const sal_uInt32 EmfPlusPenDataStartCap = 0x00000002;
+    const sal_uInt32 EmfPlusPenDataEndCap = 0x00000004;
+    const sal_uInt32 EmfPlusPenDataJoin = 0x00000008;
+    const sal_uInt32 EmfPlusPenDataMiterLimit = 0x00000010;
+    const sal_uInt32 EmfPlusPenDataLineStyle = 0x00000020;
+    const sal_uInt32 EmfPlusPenDataDashedLineCap = 0x00000040;
+    const sal_uInt32 EmfPlusPenDataDashedLineOffset = 0x00000080;
+    const sal_uInt32 EmfPlusPenDataDashedLine = 0x00000100;
+    const sal_uInt32 EmfPlusPenDataNonCenter = 0x00000200;
+    const sal_uInt32 EmfPlusPenDataCompoundLine = 0x00000400;
+    const sal_uInt32 EmfPlusPenDataCustomStartCap = 0x00000800;
+    const sal_uInt32 EmfPlusPenDataCustomEndCap = 0x000001000;
+
     struct EMFPCustomLineCap;
 
     struct EMFPPen : public EMFPBrush


More information about the Libreoffice-commits mailing list