summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartosz Kosiorek <gang65@poczta.onet.pl>2017-11-15 23:04:53 +0100
committerBartosz Kosiorek <gang65@poczta.onet.pl>2017-11-17 01:41:00 +0100
commitd552f67f5ee508ac6fbe03d16e6ba3ac429c3a48 (patch)
tree817cc56c33f023a434b6544a83894f3cf0705887
parent0f73433b13ba9e3f38193ddd86f4b9b767a36bb2 (diff)
tdf#113704 EMF+ Add support for EmfPlusRecordTypeFillRegion record
Change-Id: I60366d4a27fdf5a3cc020ca54f4a2aa9b974db5e Reviewed-on: https://gerrit.libreoffice.org/44795 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Bartosz Kosiorek <gang65@poczta.onet.pl>
-rw-r--r--drawinglayer/source/tools/emfphelperdata.cxx39
-rw-r--r--drawinglayer/source/tools/emfphelperdata.hxx2
2 files changed, 23 insertions, 18 deletions
diff --git a/drawinglayer/source/tools/emfphelperdata.cxx b/drawinglayer/source/tools/emfphelperdata.cxx
index 9d2c7db10008..d9accffe80af 100644
--- a/drawinglayer/source/tools/emfphelperdata.cxx
+++ b/drawinglayer/source/tools/emfphelperdata.cxx
@@ -63,6 +63,7 @@ namespace emfplushelper
case EmfPlusRecordTypeFillPie: return "EmfPlusRecordTypeFillPie";
case EmfPlusRecordTypeDrawPie: return "EmfPlusRecordTypeDrawPie";
case EmfPlusRecordTypeDrawArc: return "EmfPlusRecordTypeDrawArc";
+ case EmfPlusRecordTypeFillRegion: return "EmfPlusRecordTypeFillRegion";
case EmfPlusRecordTypeFillPath: return "EmfPlusRecordTypeFillPath";
case EmfPlusRecordTypeDrawPath: return "EmfPlusRecordTypeDrawPath";
case EmfPlusRecordTypeDrawBeziers: return "EmfPlusRecordTypeDrawBeziers";
@@ -179,17 +180,17 @@ namespace emfplushelper
}
case EmfPlusObjectTypeImageAttributes:
{
- SAL_INFO("drawinglayer", "EMF+\t Object type 'image attributes' not yet implemented");
+ SAL_WARN("drawinglayer", "EMF+\t TODO Object type 'image attributes' not yet implemented");
break;
}
case EmfPlusObjectTypeCustomLineCap:
{
- SAL_INFO("drawinglayer", "EMF+\t Object type 'custom line cap' not yet implemented");
+ SAL_WARN("drawinglayer", "EMF+\t TODO Object type 'custom line cap' not yet implemented");
break;
}
default:
{
- SAL_INFO("drawinglayer", "EMF+\tObject unhandled flags: 0x" << std::hex << (flags & 0xff00) << std::dec);
+ SAL_WARN("drawinglayer", "EMF+\t TODO Object unhandled flags: 0x" << std::hex << (flags & 0xff00) << std::dec);
}
}
}
@@ -459,9 +460,9 @@ namespace emfplushelper
if (!polygon.count())
return;
- SAL_INFO("drawinglayer", "EMF+\tfill polygon");
if (isColor) // use Color
{
+ SAL_INFO("drawinglayer", "EMF+\t Fill polygon, ARGB color: 0x" << std::hex << brushIndexOrColor << std::dec);
mrTargetHolders.Current().append(
o3tl::make_unique<drawinglayer::primitive2d::PolyPolygonColorPrimitive2D>(
polygon,
@@ -474,7 +475,7 @@ namespace emfplushelper
else // use Brush
{
EMFPBrush* brush = static_cast<EMFPBrush*>( maEMFPObjects[brushIndexOrColor & 0xff].get() );
- SAL_INFO("drawinglayer", "EMF+\tbrush fill slot: " << brushIndexOrColor << " (type: " << (brush ? brush->GetType() : -1) << ")");
+ SAL_INFO("drawinglayer", "EMF+\t Fill polygon, brush slot: " << brushIndexOrColor << " (brush type: " << (brush ? brush->GetType() : -1) << ")");
// give up in case something wrong happened
if( !brush )
@@ -942,6 +943,16 @@ namespace emfplushelper
EMFPPlusFillPolygon(static_cast<EMFPPath*>(maEMFPObjects[index].get())->GetPolygon(*this), flags & 0x8000, brushIndexOrColor);
}
break;
+ case EmfPlusRecordTypeFillRegion:
+ {
+ sal_uInt32 index = flags & 0xff;
+ sal_uInt32 brushIndexOrColor;
+ rMS.ReadUInt32(brushIndexOrColor);
+ SAL_INFO("drawinglayer", "EMF+ FillRegion slot: " << index);
+
+ EMFPPlusFillPolygon(static_cast<EMFPRegion*>(maEMFPObjects[flags & 0xff].get())->regionPolyPolygon, flags & 0x8000, brushIndexOrColor);
+ }
+ break;
case EmfPlusRecordTypeDrawEllipse:
case EmfPlusRecordTypeFillEllipse:
{
@@ -1301,38 +1312,32 @@ namespace emfplushelper
case EmfPlusRecordTypeSetRenderingOrigin:
{
rMS.ReadInt32(mnOriginX).ReadInt32(mnOriginY);
- SAL_INFO("drawinglayer", "EMF+ SetRenderingOrigin");
- SAL_INFO("drawinglayer", "EMF+\torigin [x,y]: " << mnOriginX << "," << mnOriginY);
+ SAL_INFO("drawinglayer", "EMF+ SetRenderingOrigin, [x,y]: " << mnOriginX << "," << mnOriginY);
break;
}
case EmfPlusRecordTypeSetTextRenderingHint:
{
- SAL_INFO("drawinglayer", "EMF+ SetTextRenderingHint");
- SAL_INFO("drawinglayer", "EMF+\tTODO");
+ SAL_INFO("drawinglayer", "TODO\t EMF+ SetTextRenderingHint");
break;
}
case EmfPlusRecordTypeSetAntiAliasMode:
{
- SAL_INFO("drawinglayer", "EMF+ SetAntiAliasMode");
- SAL_INFO("drawinglayer", "EMF+\tTODO");
+ SAL_INFO("drawinglayer", "TODO\t EMF+ SetAntiAliasMode");
break;
}
case EmfPlusRecordTypeSetInterpolationMode:
{
- SAL_INFO("drawinglayer", "EMF+ InterpolationMode");
- SAL_INFO("drawinglayer", "EMF+\tTODO");
+ SAL_INFO("drawinglayer", "TODO\t EMF+ InterpolationMode");
break;
}
case EmfPlusRecordTypeSetPixelOffsetMode:
{
- SAL_INFO("drawinglayer", "EMF+ SetPixelOffsetMode");
- SAL_INFO("drawinglayer", "EMF+\tTODO");
+ SAL_INFO("drawinglayer", "TODO\t EMF+ SetPixelOffsetMode");
break;
}
case EmfPlusRecordTypeSetCompositingQuality:
{
- SAL_INFO("drawinglayer", "EMF+ SetCompositingQuality");
- SAL_INFO("drawinglayer", "EMF+\tTODO");
+ SAL_INFO("drawinglayer", "TODO\t EMF+ SetCompositingQuality");
break;
}
case EmfPlusRecordTypeSave:
diff --git a/drawinglayer/source/tools/emfphelperdata.hxx b/drawinglayer/source/tools/emfphelperdata.hxx
index 98a90ab49b36..431e9b0a5c72 100644
--- a/drawinglayer/source/tools/emfphelperdata.hxx
+++ b/drawinglayer/source/tools/emfphelperdata.hxx
@@ -53,7 +53,7 @@ namespace emfplushelper
#define EmfPlusRecordTypeFillPie 0x4010
#define EmfPlusRecordTypeDrawPie 0x4011
#define EmfPlusRecordTypeDrawArc 0x4012
- //TODO EmfPlusRecordTypeFillRegion 0x4013
+ #define EmfPlusRecordTypeFillRegion 0x4013
#define EmfPlusRecordTypeFillPath 0x4014
#define EmfPlusRecordTypeDrawPath 0x4015
//TODO EmfPlusRecordTypeFillClosedCurve 0x4016