summaryrefslogtreecommitdiff
path: root/emfio/inc
diff options
context:
space:
mode:
authorArmin Le Grand <Armin.Le.Grand@cib.de>2017-06-16 09:23:08 +0200
committerThorsten Behrens <Thorsten.Behrens@CIB.de>2017-07-15 11:01:30 +0200
commita3f09ab5b0ad192d62a1df6126726e4c3ffa3e0a (patch)
tree5a8861c86be3edb405eba9297f6841a880d12eb8 /emfio/inc
parentc7470f5be441d8fe80155ff29605d74d5838be26 (diff)
emfplus: reorganized some old filter aspects
Change-Id: I1949e851c560a81a461ec42a992f3b2cb0d019f8
Diffstat (limited to 'emfio/inc')
-rw-r--r--emfio/inc/emfreader.hxx13
-rw-r--r--emfio/inc/mtftools.hxx112
-rw-r--r--emfio/inc/wmfreader.hxx55
3 files changed, 65 insertions, 115 deletions
diff --git a/emfio/inc/emfreader.hxx b/emfio/inc/emfreader.hxx
index c4f7e17e574d..c926ee0a317e 100644
--- a/emfio/inc/emfreader.hxx
+++ b/emfio/inc/emfreader.hxx
@@ -26,24 +26,27 @@ namespace emfio
{
class EmfReader : public MtfTools
{
- bool bRecordPath;
- sal_Int32 nRecordCount;
- bool bEMFPlus;
+ private:
+ sal_Int32 mnRecordCount;
+
+ bool mbRecordPath : 1;
+ bool mbEMFPlus : 1;
bool ReadHeader();
// reads and converts the rectangle
static tools::Rectangle ReadRectangle(sal_Int32, sal_Int32, sal_Int32, sal_Int32);
public:
- EmfReader(SvStream& rStreamWMF, GDIMetaFile& rGDIMetaFile, FilterConfigItem* pConfigItem = nullptr);
+ EmfReader(SvStream& rStreamWMF, GDIMetaFile& rGDIMetaFile);
~EmfReader();
bool ReadEnhWMF();
+
private:
template <class T> void ReadAndDrawPolyPolygon();
template <class T> void ReadAndDrawPolyLine();
template <class T> tools::Polygon ReadPolygon(sal_uInt32 nStartIndex, sal_uInt32 nPoints);
- template <class T, class Drawer> void ReadAndDrawPolygon(Drawer drawer, const bool skipFirst);
+ template <class T> tools::Polygon ReadPolygonWithSkip(const bool skipFirst);
tools::Rectangle ReadRectangle();
void ReadEMFPlusComment(sal_uInt32 length, bool& bHaveDC);
diff --git a/emfio/inc/mtftools.hxx b/emfio/inc/mtftools.hxx
index f20925f5a147..9565df89cfe1 100644
--- a/emfio/inc/mtftools.hxx
+++ b/emfio/inc/mtftools.hxx
@@ -134,7 +134,6 @@ namespace emfio
sal_uInt8 lfPitchAndFamily;
OUString alfFaceName;
};
- struct WMF_EXTERNALHEADER;
}
#define TA_NOUPDATECP 0x0000
@@ -423,8 +422,8 @@ namespace emfio
RasterOp eRasterOp;
Point aActPos;
- WinMtfPathObj aPathObj;
- WinMtfClipPath aClipPath;
+ WinMtfPathObj maPathObj;
+ WinMtfClipPath maClipPath;
XForm aXForm;
bool bFillStyleSelected;
@@ -432,9 +431,9 @@ namespace emfio
struct BSaveStruct
{
- BitmapEx aBmpEx;
- tools::Rectangle aOutRect;
- sal_uInt32 nWinRop;
+ BitmapEx aBmpEx;
+ tools::Rectangle aOutRect;
+ sal_uInt32 nWinRop;
BSaveStruct(const Bitmap& rBmp, const tools::Rectangle& rOutRect, sal_uInt32 nRop)
: aBmpEx(rBmp)
@@ -449,17 +448,19 @@ namespace emfio
{}
};
- class MtfToolsWriter final
+ class MtfTools
{
- WinMtfPathObj aPathObj;
- WinMtfClipPath aClipPath;
+ protected:
+ WinMtfPathObj maPathObj;
+ WinMtfClipPath maClipPath;
WinMtfLineStyle maLatestLineStyle;
WinMtfLineStyle maLineStyle;
- WinMtfLineStyle m_NopLineStyle;
+ WinMtfLineStyle maNopLineStyle;
WinMtfFillStyle maLatestFillStyle;
WinMtfFillStyle maFillStyle;
- WinMtfFillStyle m_NopFillStyle;
+ WinMtfFillStyle maNopFillStyle;
+
vcl::Font maLatestFont;
vcl::Font maFont;
sal_uInt32 mnLatestTextAlign;
@@ -475,43 +476,52 @@ namespace emfio
RasterOp meLatestRasterOp;
RasterOp meRasterOp;
- std::vector< std::unique_ptr<GDIObj> > vGDIObj;
-
+ std::vector< std::unique_ptr<GDIObj> > mvGDIObj;
Point maActPos;
-
WMFRasterOp mnRop;
- bool mbNopMode;
- bool mbFillStyleSelected;
- bool mbClipNeedsUpdate;
- bool mbComplexClip;
-
- std::vector< std::shared_ptr<SaveStruct> > vSaveStack;
+ std::vector< std::shared_ptr<SaveStruct> > mvSaveStack;
sal_uInt32 mnGfxMode;
sal_uInt32 mnMapMode;
XForm maXForm;
- sal_Int32 mnDevOrgX, mnDevOrgY;
- sal_Int32 mnDevWidth, mnDevHeight;
- sal_Int32 mnWinOrgX, mnWinOrgY; // aktuel window origin
- sal_Int32 mnWinExtX, mnWinExtY; // aktuel window extend
- bool mbIsMapWinSet;
- bool mbIsMapDevSet;
-
- sal_Int32 mnPixX, mnPixY; // Reference Device in pixel
- sal_Int32 mnMillX, mnMillY; // Reference Device in Mill
- tools::Rectangle mrclFrame; // rectangle in logical units 1/100th mm
- tools::Rectangle mrclBounds;
+ sal_Int32 mnDevOrgX;
+ sal_Int32 mnDevOrgY;
+ sal_Int32 mnDevWidth;
+ sal_Int32 mnDevHeight;
+ sal_Int32 mnWinOrgX;
+ sal_Int32 mnWinOrgY;
+ sal_Int32 mnWinExtX;
+ sal_Int32 mnWinExtY;
+
+ sal_Int32 mnPixX; // Reference Device in pixel
+ sal_Int32 mnPixY; // Reference Device in pixel
+ sal_Int32 mnMillX; // Reference Device in Mill
+ sal_Int32 mnMillY; // Reference Device in Mill
+ tools::Rectangle mrclFrame;
+ tools::Rectangle mrclBounds;
GDIMetaFile* mpGDIMetaFile;
+ SvStream* mpWMF; // the WMF/EMF file to be read
+ sal_uInt32 mnStartPos;
+ sal_uInt32 mnEndPos;
+ std::vector<std::unique_ptr<BSaveStruct>> maBmpSaveList;
+
+ bool mbNopMode : 1;
+ bool mbFillStyleSelected : 1;
+ bool mbClipNeedsUpdate : 1;
+ bool mbComplexClip : 1;
+ bool mbIsMapWinSet : 1;
+ bool mbIsMapDevSet : 1;
+
void UpdateLineStyle();
void UpdateFillStyle();
Point ImplMap(const Point& rPt);
Point ImplScale(const Point& rPt);
Size ImplMap(const Size& rSize, bool bDoWorldTransform = true);
- tools::Rectangle ImplMap(const tools::Rectangle& rRectangle);
+ tools::Rectangle ImplMap(const tools::Rectangle& rRectangle);
void ImplMap(vcl::Font& rFont);
tools::Polygon& ImplMap(tools::Polygon& rPolygon);
tools::PolyPolygon& ImplMap(tools::PolyPolygon& rPolyPolygon);
@@ -559,11 +569,7 @@ namespace emfio
void CreateObject(std::unique_ptr<GDIObj> pObject);
void CreateObjectIndexed(sal_Int32 nIndex, std::unique_ptr<GDIObj> pObject);
-
- void CreateObject()
- {
- CreateObject(o3tl::make_unique<GDIObj>());
- }
+ void CreateObject();
void DeleteObject(sal_Int32 nIndex);
void SelectObject(sal_Int32 nIndex);
@@ -571,9 +577,9 @@ namespace emfio
const vcl::Font& GetFont() const { return maFont; }
void SetTextLayoutMode(ComplexTextLayoutFlags nLayoutMode);
- void ClearPath() { aPathObj.Init(); };
- void ClosePath() { aPathObj.ClosePath(); };
- const tools::PolyPolygon& GetPathObj() { return aPathObj; };
+ void ClearPath() { maPathObj.Init(); };
+ void ClosePath() { maPathObj.ClosePath(); };
+ const tools::PolyPolygon& GetPathObj() { return maPathObj; };
void MoveTo(const Point& rPoint, bool bRecordPath = false);
void LineTo(const Point& rPoint, bool bRecordPath = false);
@@ -631,33 +637,9 @@ namespace emfio
void PassEMFPlus(void* pBuffer, sal_uInt32 nLength);
void PassEMFPlusHeaderInfo();
- explicit MtfToolsWriter(GDIMetaFile& rGDIMetaFile);
- ~MtfToolsWriter();
- };
-
- class MtfTools
- {
- protected:
- std::unique_ptr<MtfToolsWriter> pOut;
- SvStream* pWMF; // the WMF/EMF file to be read
-
- sal_uInt32 nStartPos, nEndPos;
- std::vector<std::unique_ptr<BSaveStruct>> aBmpSaveList;
-
- FilterConfigItem* pFilterConfigItem;
-
- css::uno::Reference< css::task::XStatusIndicator > xStatusIndicator;
-
- // assures aSampledBrush is the actual brush of the GDIMetaFile
-
Color ReadColor();
- void Callback(sal_uInt16 nPercent);
- MtfTools(
- GDIMetaFile& rGDIMetaFile,
- SvStream& rStreamWMF,
- FilterConfigItem* pConfigItem
- );
+ explicit MtfTools(GDIMetaFile& rGDIMetaFile, SvStream& rStreamWMF);
~MtfTools();
};
}
diff --git a/emfio/inc/wmfreader.hxx b/emfio/inc/wmfreader.hxx
index 734becbb5886..e0566bb95cfb 100644
--- a/emfio/inc/wmfreader.hxx
+++ b/emfio/inc/wmfreader.hxx
@@ -25,61 +25,29 @@
namespace emfio
{
- struct WMF_EXTERNALHEADER
- {
- sal_uInt16 xExt;
- sal_uInt16 yExt;
-
- /** One of the following values:
- <ul>
- <li>MM_TEXT</li>
- <li>MM_LOMETRIC</li>
- <li>MM_HIMETRIC</li>
- <li>MM_LOENGLISH</li>
- <li>MM_HIENGLISH</li>
- <li>MM_TWIPS</li>
- <li>MM_ISOTROPIC</li>
- <li>MM_ANISOTROPIC</li>
- </ul>
- If this value is 0, then no external mapmode has been defined,
- the internal one should then be used.
- */
- sal_uInt16 mapMode;
-
- WMF_EXTERNALHEADER() :
- xExt(0),
- yExt(0),
- mapMode(0)
- {
- }
- };
-
class WmfReader : public MtfTools
{
private:
-
- sal_uInt16 nUnitsPerInch;
- sal_uInt32 nRecSize;
+ sal_uInt16 mnUnitsPerInch;
+ sal_uInt32 mnRecSize;
// embedded EMF data
- std::unique_ptr<SvMemoryStream> pEMFStream;
+ std::unique_ptr<SvMemoryStream> mpEMFStream;
// total number of comment records containing EMF data
- sal_uInt32 nEMFRecCount;
+ sal_uInt32 mnEMFRecCount;
// number of EMF records read
- sal_uInt32 nEMFRec;
+ sal_uInt32 mnEMFRec;
// total size of embedded EMF data
- sal_uInt32 nEMFSize;
+ sal_uInt32 mnEMFSize;
- sal_uInt32 nSkipActions;
- sal_uInt32 nCurrentAction;
-
- WMF_EXTERNALHEADER* pExternalHeader;
+ sal_uInt32 mnSkipActions;
+ sal_uInt32 mnCurrentAction;
// reads header of the WMF-Datei
- bool ReadHeader();
+ bool ReadHeader();
// reads parameters of the record with the functionnumber nFunction.
void ReadRecordParams(sal_uInt16 nFunction);
@@ -91,10 +59,7 @@ namespace emfio
void GetPlaceableBound(tools::Rectangle& rSize, SvStream* pStrm);
public:
-
- WmfReader(SvStream& rStreamWMF, GDIMetaFile& rGDIMetaFile,
- FilterConfigItem* pConfigItem,
- WMF_EXTERNALHEADER* pExtHeader = nullptr);
+ WmfReader(SvStream& rStreamWMF, GDIMetaFile& rGDIMetaFile);
// read WMF file from stream and fill the GDIMetaFile
void ReadWMF();