/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef _EMFWR_HXX #define _EMFWR_HXX #include #include #include #include #include #include // ------------- // - EMFWriter - // ------------- class LineInfo; namespace basegfx { class B2DPolygon; } class EMFWriter { private: VirtualDevice maVDev; MapMode maDestMapMode; FilterConfigItem* mpFilterConfigItem; SvStream* mpStm; sal_Bool* mpHandlesUsed; sal_uLong mnHandleCount; sal_uLong mnLastPercent; sal_uLong mnRecordCount; sal_uLong mnRecordPos; sal_Bool mbRecordOpen; sal_Bool mbLineChanged; sal_uInt32 mnLineHandle; sal_Bool mbFillChanged; sal_uInt32 mnFillHandle; sal_Bool mbTextChanged; sal_uInt32 mnTextHandle; sal_uInt32 mnHorTextAlign; void ImplBeginRecord( sal_uInt32 nType ); void ImplEndRecord(); sal_uLong ImplAcquireHandle(); void ImplReleaseHandle( sal_uLong nHandle ); sal_Bool ImplPrepareHandleSelect( sal_uInt32& rHandle, sal_uLong nSelectType ); void ImplCheckLineAttr(); void ImplCheckFillAttr(); void ImplCheckTextAttr(); void ImplWriteColor( const Color& rColor ); void ImplWriteRasterOp( RasterOp eRop ); void ImplWriteExtent( long nExtent ); void ImplWritePoint( const Point& rPoint ); void ImplWriteSize( const Size& rSize); void ImplWriteRect( const Rectangle& rRect ); void ImplWritePath( const PolyPolygon& rPolyPoly, sal_Bool bClose ); void ImplWritePolygonRecord( const Polygon& rPoly, sal_Bool bClose ); void ImplWritePolyPolygonRecord( const PolyPolygon& rPolyPoly ); void ImplWriteBmpRecord( const Bitmap& rBmp, const Point& rPt, const Size& rSz, sal_uInt32 nROP ); void ImplWriteTextRecord( const Point& rPos, const String rText, const sal_Int32* pDXArray, sal_uInt32 nWidth ); void Impl_handleLineInfoPolyPolygons(const LineInfo& rInfo, const basegfx::B2DPolygon& rLinePolygon); void ImplWrite( const GDIMetaFile& rMtf ); public: EMFWriter() {} sal_Bool WriteEMF( const GDIMetaFile& rMtf, SvStream& rOStm, FilterConfigItem* pConfigItem = NULL ); }; #endif // _EMFWR_HXX