[Libreoffice-commits] .: Branch 'integration/dev300_m106' - filter/source
Jan Holesovsky
kendy at kemper.freedesktop.org
Fri May 13 12:38:00 PDT 2011
filter/source/svg/makefile.mk | 1
filter/source/svg/svgexport.cxx | 2
filter/source/svg/svgfilter.hxx | 21 ------
filter/source/svg/svguno.cxx | 93 ---------------------------
filter/source/svg/svgwriter.cxx | 133 +++++++++++++++++++++-------------------
filter/source/svg/svgwriter.hxx | 14 +++-
6 files changed, 84 insertions(+), 180 deletions(-)
New commits:
commit 05d5de91e8960d95b02aab4076e2c3c09773336a
Author: Jan Holesovsky <kendy at suse.cz>
Date: Fri May 13 21:34:35 2011 +0200
Make SVG export filter building again.
diff --git a/filter/source/svg/makefile.mk b/filter/source/svg/makefile.mk
index 50b48a3..4c91453 100644
--- a/filter/source/svg/makefile.mk
+++ b/filter/source/svg/makefile.mk
@@ -46,7 +46,6 @@ VISIBILITY_HIDDEN=TRUE
SLOFILES= \
$(SLO)$/b2dellipse.obj \
$(SLO)$/parserfragments.obj \
- $(SLO)$/svguno.obj \
$(SLO)$/svgdialog.obj \
$(SLO)$/impsvgdialog.obj \
$(SLO)$/svgexport.obj \
diff --git a/filter/source/svg/svgexport.cxx b/filter/source/svg/svgexport.cxx
index 0a0ab1c..4e91dd8 100644
--- a/filter/source/svg/svgexport.cxx
+++ b/filter/source/svg/svgexport.cxx
@@ -845,6 +845,8 @@ sal_Bool SVGFilter::implExportShape( const Reference< XShape >& rxShape )
{
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "class", implGetClassFromShape( rxShape ) );
SvXMLElementExport aExp( *mpSVGExport, XML_NAMESPACE_NONE, "g", sal_True, sal_True );
+ OUString aId( B2UCONST( "DrawingGroup_" ) );
+ OUString aObjName( implGetValidIDFromInterface( rxShape, true ) ), aObjDesc;
Reference< XExtendedDocumentHandler > xExtDocHandler( mpSVGExport->GetDocHandler(), UNO_QUERY );
diff --git a/filter/source/svg/svgfilter.hxx b/filter/source/svg/svgfilter.hxx
index a0fd56d..340ece3 100644
--- a/filter/source/svg/svgfilter.hxx
+++ b/filter/source/svg/svgfilter.hxx
@@ -285,27 +285,6 @@ public:
// -----------------------------------------------------------------------------
-::rtl::OUString SVGFilter_getImplementationName ()
- throw ( ::com::sun::star::uno::RuntimeException );
-
-// -----------------------------------------------------------------------------
-
-sal_Bool SAL_CALL SVGFilter_supportsService( const ::rtl::OUString& ServiceName )
- throw ( ::com::sun::star::uno::RuntimeException );
-
-// -----------------------------------------------------------------------------
-
-::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL SVGFilter_getSupportedServiceNames( )
- throw ( ::com::sun::star::uno::RuntimeException );
-
-// -----------------------------------------------------------------------------
-
-::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
-SAL_CALL SVGFilter_createInstance( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & rSMgr)
- throw ( ::com::sun::star::uno::Exception );
-
-// -----------------------------------------------------------------------------
-
class SvStream;
class Graphic;
diff --git a/filter/source/svg/svguno.cxx b/filter/source/svg/svguno.cxx
deleted file mode 100644
index 3247dd5..0000000
--- a/filter/source/svg/svguno.cxx
+++ /dev/null
@@ -1,93 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_filter.hxx"
-
-#include <stdio.h>
-#include <osl/mutex.hxx>
-#include <osl/thread.h>
-#include <cppuhelper/factory.hxx>
-#include <com/sun/star/lang/XSingleServiceFactory.hpp>
-
-#include <svgfilter.hxx>
-#include <svgdialog.hxx>
-
-using ::rtl::OUString;
-using namespace ::cppu;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::registry;
-
-extern "C"
-{
- //==================================================================================================
- SAL_DLLPUBLIC_EXPORT void SAL_CALL component_getImplementationEnvironment(
- const sal_Char ** ppEnvTypeName, uno_Environment ** /* ppEnv */ )
- {
- *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
- }
- //==================================================================================================
- SAL_DLLPUBLIC_EXPORT void * SAL_CALL component_getFactory(
- const sal_Char * pImplName, void * pServiceManager, void * /* pRegistryKey */ )
- {
- void * pRet = 0;
-
- const OUString aImplName = OUString::createFromAscii( pImplName );
-
- if( pServiceManager )
- {
- Reference< XSingleServiceFactory > xFactory;
-
- if( aImplName.equals( SVGFilter_getImplementationName() ) )
- {
- xFactory = Reference< XSingleServiceFactory >( createSingleFactory(
- reinterpret_cast< XMultiServiceFactory * >( pServiceManager ),
- OUString::createFromAscii( pImplName ),
- SVGFilter_createInstance, SVGFilter_getSupportedServiceNames() ) );
- }
- else if( aImplName.equals( SVGDialog_getImplementationName() ) )
- {
- xFactory = Reference< XSingleServiceFactory >( createSingleFactory(
- reinterpret_cast< XMultiServiceFactory * >( pServiceManager ),
- OUString::createFromAscii( pImplName ),
- SVGDialog_createInstance, SVGDialog_getSupportedServiceNames() ) );
- }
-
- if (xFactory.is())
- {
- xFactory->acquire();
- pRet = xFactory.get();
- }
- }
-
- return pRet;
- }
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/filter/source/svg/svgwriter.cxx b/filter/source/svg/svgwriter.cxx
index 6d7be3b..b8fa4d7 100644
--- a/filter/source/svg/svgwriter.cxx
+++ b/filter/source/svg/svgwriter.cxx
@@ -36,6 +36,8 @@
#include "svgwriter.hxx"
#include <vcl/unohelp.hxx>
+using ::rtl::OUString;
+
// -----------
// - statics -
// -----------
@@ -386,6 +388,9 @@ void SVGAttributeWriter::SetFontAttr( const Font& rFont )
// -------------------
SVGActionWriter::SVGActionWriter( SVGExport& rExport, SVGFontExport& rFontExport ) :
+ mnCurGradientId( 1 ),
+ mnCurMaskId( 1 ),
+ mnCurPatternId( 1 ),
mrExport( rExport ),
mrFontExport( rFontExport ),
mpContext( NULL ),
@@ -704,7 +709,6 @@ void SVGActionWriter::ImplWriteShape( const SVGShapeDescriptor& rShape, sal_Bool
void SVGActionWriter::ImplWritePattern( const PolyPolygon& rPolyPoly,
const Hatch* pHatch,
const Gradient* pGradient,
- const rtl::OUString* pStyle,
sal_uInt32 nWriteFlags )
{
if( rPolyPoly.Count() )
@@ -713,18 +717,20 @@ void SVGActionWriter::ImplWritePattern( const PolyPolygon& rPolyPoly,
::rtl::OUString aPatternId;
aPatternId += B2UCONST( "pattern" );
- aPatternId += GetValueString( ImplGetNextPatternId() );
+ aPatternId += OUString::valueOf( mnCurPatternId++ );
{
SvXMLElementExport aElemDefs( mrExport, XML_NAMESPACE_NONE, aXMLElemDefs, sal_True, sal_True );
- mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrId, aPatternId.GetString() );
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrId, aPatternId );
+
+ Rectangle aRect;
+ ImplMap( rPolyPoly.GetBoundRect(), aRect );
- Rectangle aRect( ImplMap( rPolyPoly.GetBoundRect() ) );
- mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrX, GetValueString( aRect.Left() ) );
- mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrY, GetValueString( aRect.Top() ) );
- mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrWidth, GetValueString( aRect.GetWidth() ) );
- mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrHeight, GetValueString( aRect.GetHeight() ) );
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrX, OUString::valueOf( aRect.Left() ) );
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrY, OUString::valueOf( aRect.Top() ) );
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrWidth, OUString::valueOf( aRect.GetWidth() ) );
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrHeight, OUString::valueOf( aRect.GetHeight() ) );
mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrPatternUnits, rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "userSpaceOnUse") ) );
@@ -736,11 +742,11 @@ void SVGActionWriter::ImplWritePattern( const PolyPolygon& rPolyPoly,
::rtl::OUString aTransform;
aTransform += B2UCONST( "translate" );
aTransform += B2UCONST( "(" );
- aTransform += GetValueString( -aRect.Left() );
+ aTransform += OUString::valueOf( -aRect.Left() );
aTransform += B2UCONST( "," );
- aTransform += GetValueString( -aRect.Top() );
+ aTransform += OUString::valueOf( -aRect.Top() );
aTransform += B2UCONST( ")" );
- mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrTransform, aTransform.GetString() );
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrTransform, aTransform );
{
SvXMLElementExport aElemG2( mrExport, XML_NAMESPACE_NONE, aXMLElemG, sal_True, sal_True );
@@ -750,19 +756,18 @@ void SVGActionWriter::ImplWritePattern( const PolyPolygon& rPolyPoly,
mpVDev->AddHatchActions( rPolyPoly, *pHatch, aTmpMtf );
else if ( pGradient )
mpVDev->AddGradientActions( rPolyPoly.GetBoundRect(), *pGradient, aTmpMtf );
- ImplWriteActions( aTmpMtf, pStyle, nWriteFlags );
+ ImplWriteActions( aTmpMtf, nWriteFlags, NULL );
}
}
}
::rtl::OUString aPatternStyle;
aPatternStyle += B2UCONST( "fill:url(#" );
- aPatternStyle += aPatternId.GetString();
+ aPatternStyle += aPatternId;
aPatternStyle += B2UCONST( ")" );
- {
- ImplWritePolyPolygon( rPolyPoly, sal_False, &aPatternStyle.GetString() );
- }
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrStyle, aPatternStyle );
+ ImplWritePolyPolygon( rPolyPoly, sal_False );
}
}
@@ -800,18 +805,19 @@ void SVGActionWriter::ImplWriteGradientLinear( const PolyPolygon& rPolyPoly,
::rtl::OUString aGradientId;
aGradientId += B2UCONST( "gradient" );
- aGradientId += GetValueString( ImplGetNextGradientId() );
+ aGradientId += OUString::valueOf( mnCurGradientId++ );
{
SvXMLElementExport aElemDefs( mrExport, XML_NAMESPACE_NONE, aXMLElemDefs, sal_True, sal_True );
- mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrId, aGradientId.GetString() );
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrId, aGradientId );
{
- Rectangle aTmpRect;
- Point aTmpCenter;
+ Rectangle aTmpRect, aRect;
+ Point aTmpCenter, aCenter;
+
rGradient.GetBoundRect( rPolyPoly.GetBoundRect(), aTmpRect, aTmpCenter );
- const Rectangle aRect( ImplMap( aTmpRect) );
- const Point aCenter( ImplMap( aTmpCenter) );
+ ImplMap( aTmpRect, aRect );
+ ImplMap( aTmpCenter, aCenter );
const sal_uInt16 nAngle = rGradient.GetAngle() % 3600;
Polygon aPoly( 2 );
@@ -823,10 +829,10 @@ void SVGActionWriter::ImplWriteGradientLinear( const PolyPolygon& rPolyPoly,
aPoly[ 1 ].Y() = aRect.Bottom();
aPoly.Rotate( aCenter, nAngle );
- mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrX1, GetValueString( aPoly[ 0 ].X() ) );
- mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrY1, GetValueString( aPoly[ 0 ].Y() ) );
- mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrX2, GetValueString( aPoly[ 1 ].X() ) );
- mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrY2, GetValueString( aPoly[ 1 ].Y() ) );
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrX1, OUString::valueOf( aPoly[ 0 ].X() ) );
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrY1, OUString::valueOf( aPoly[ 0 ].Y() ) );
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrX2, OUString::valueOf( aPoly[ 1 ].X() ) );
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrY2, OUString::valueOf( aPoly[ 1 ].Y() ) );
mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrGradientUnits,
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "userSpaceOnUse" ) ) );
@@ -895,12 +901,11 @@ void SVGActionWriter::ImplWriteGradientLinear( const PolyPolygon& rPolyPoly,
::rtl::OUString aGradientStyle;
aGradientStyle += B2UCONST( "fill:" );
aGradientStyle += B2UCONST( "url(#" );
- aGradientStyle += aGradientId.GetString();
+ aGradientStyle += aGradientId;
aGradientStyle += B2UCONST( ")" );
- {
- ImplWritePolyPolygon( rPolyPoly, sal_False, &aGradientStyle.GetString() );
- }
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrStyle, aGradientStyle );
+ ImplWritePolyPolygon( rPolyPoly, sal_False );
}
}
@@ -908,11 +913,12 @@ void SVGActionWriter::ImplWriteGradientStop( const Color& rColor, double fOffset
{
mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrOffset, rtl::OUString::valueOf( fOffset ) );
- ::rtl::OUString aStyle;
+ ::rtl::OUString aStyle, aColor;
aStyle += B2UCONST( "stop-color:" );
- aStyle += mpContext->GetColorStyle ( rColor );
+ SVGAttributeWriter::ImplGetColorStr ( rColor, aColor );
+ aStyle += aColor;
- mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrStyle, aStyle.GetString() );
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrStyle, aStyle );
{
SvXMLElementExport aElemStartStop( mrExport, XML_NAMESPACE_NONE, aXMLElemStop, sal_True, sal_True );
}
@@ -952,7 +958,6 @@ void SVGActionWriter::ImplWriteMask( GDIMetaFile& rMtf,
const Point& rDestPt,
const Size& rDestSize,
const Gradient& rGradient,
- const rtl::OUString* pStyle,
sal_uInt32 nWriteFlags )
{
Point aSrcPt( rMtf.GetPrefMapMode().GetOrigin() );
@@ -974,12 +979,12 @@ void SVGActionWriter::ImplWriteMask( GDIMetaFile& rMtf,
::rtl::OUString aMaskId;
aMaskId += B2UCONST( "mask" );
- aMaskId += GetValueString( ImplGetNextMaskId() );
+ aMaskId += OUString::valueOf( mnCurMaskId++ );
{
SvXMLElementExport aElemDefs( mrExport, XML_NAMESPACE_NONE, aXMLElemDefs, sal_True, sal_True );
- mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrId, aMaskId.GetString() );
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrId, aMaskId );
{
SvXMLElementExport aElemMask( mrExport, XML_NAMESPACE_NONE, aXMLElemMask, sal_True, sal_True );
@@ -994,21 +999,21 @@ void SVGActionWriter::ImplWriteMask( GDIMetaFile& rMtf,
aGradient.SetEndColor( aTmpColor );
aGradient.SetEndIntensity( nTmpIntensity );
- ImplWriteGradientEx( aPolyPolygon, aGradient, pStyle, nWriteFlags );
+ ImplWriteGradientEx( aPolyPolygon, aGradient, nWriteFlags );
}
}
::rtl::OUString aMaskStyle;
aMaskStyle += B2UCONST( "mask:url(#" );
- aMaskStyle += aMaskId.GetString();
+ aMaskStyle += aMaskId;
aMaskStyle += B2UCONST( ")" );
- mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrStyle, aMaskStyle.GetString() );
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrStyle, aMaskStyle );
{
SvXMLElementExport aElemG( mrExport, XML_NAMESPACE_NONE, aXMLElemG, sal_True, sal_True );
mpVDev->Push();
- ImplWriteActions( rMtf, pStyle, nWriteFlags );
+ ImplWriteActions( rMtf, nWriteFlags, NULL );
mpVDev->Pop();
}
}
@@ -1025,7 +1030,7 @@ void SVGActionWriter::ImplWriteText( const Point& rPos, const String& rText,
if( !bTextSpecial )
{
- ImplWriteText( rPos, rText, pDXArray, nWidth, mpVDev->GetTextColor() );
+ ImplWriteText( rPos, rText, pDXArray, nWidth, mpVDev->GetTextColor(), bApplyMapping );
}
else
{
@@ -1053,8 +1058,8 @@ void SVGActionWriter::ImplWriteText( const Point& rPos, const String& rText,
aPos += aOffset;
}
- ImplWriteText( aPos, rText, pDXArray, nWidth, aReliefColor );
- ImplWriteText( rPos, rText, pDXArray, nWidth, aTextColor );
+ ImplWriteText( aPos, rText, pDXArray, nWidth, aReliefColor, bApplyMapping );
+ ImplWriteText( rPos, rText, pDXArray, nWidth, aTextColor, bApplyMapping );
}
else
{
@@ -1072,34 +1077,34 @@ void SVGActionWriter::ImplWriteText( const Point& rPos, const String& rText,
Point aPos( rPos );
aPos += Point( nOff, nOff );
- ImplWriteText( aPos, rText, pDXArray, nWidth, aShadowColor );
+ ImplWriteText( aPos, rText, pDXArray, nWidth, aShadowColor, bApplyMapping );
if( !aMetric.IsOutline() )
{
- ImplWriteText( rPos, rText, pDXArray, nWidth, aTextColor );
+ ImplWriteText( rPos, rText, pDXArray, nWidth, aTextColor, bApplyMapping );
}
}
if( aMetric.IsOutline() )
{
Point aPos = rPos + Point( -6, -6 );
- ImplWriteText( aPos, rText, pDXArray, nWidth, mpVDev->GetTextColor() );
+ ImplWriteText( aPos, rText, pDXArray, nWidth, mpVDev->GetTextColor(), bApplyMapping );
aPos = rPos + Point( +6, +6);
- ImplWriteText( aPos, rText, pDXArray, nWidth, mpVDev->GetTextColor() );
+ ImplWriteText( aPos, rText, pDXArray, nWidth, mpVDev->GetTextColor(), bApplyMapping );
aPos = rPos + Point( -6, +0);
- ImplWriteText( aPos, rText, pDXArray, nWidth, mpVDev->GetTextColor() );
+ ImplWriteText( aPos, rText, pDXArray, nWidth, mpVDev->GetTextColor(), bApplyMapping );
aPos = rPos + Point( -6, +6);
- ImplWriteText( aPos, rText, pDXArray, nWidth, mpVDev->GetTextColor() );
+ ImplWriteText( aPos, rText, pDXArray, nWidth, mpVDev->GetTextColor(), bApplyMapping );
aPos = rPos + Point( +0, +6);
- ImplWriteText( aPos, rText, pDXArray, nWidth, mpVDev->GetTextColor() );
+ ImplWriteText( aPos, rText, pDXArray, nWidth, mpVDev->GetTextColor(), bApplyMapping );
aPos = rPos + Point( +0, -6);
- ImplWriteText( aPos, rText, pDXArray, nWidth, mpVDev->GetTextColor() );
+ ImplWriteText( aPos, rText, pDXArray, nWidth, mpVDev->GetTextColor(), bApplyMapping );
aPos = rPos + Point( +6, -1);
- ImplWriteText( aPos, rText, pDXArray, nWidth, mpVDev->GetTextColor() );
+ ImplWriteText( aPos, rText, pDXArray, nWidth, mpVDev->GetTextColor(), bApplyMapping );
aPos = rPos + Point( +6, +0);
- ImplWriteText( aPos, rText, pDXArray, nWidth, mpVDev->GetTextColor() );
+ ImplWriteText( aPos, rText, pDXArray, nWidth, mpVDev->GetTextColor(), bApplyMapping );
- ImplWriteText( rPos, rText, pDXArray, nWidth, Color( COL_WHITE ) );
+ ImplWriteText( rPos, rText, pDXArray, nWidth, Color( COL_WHITE ), bApplyMapping );
}
}
}
@@ -1107,9 +1112,9 @@ void SVGActionWriter::ImplWriteText( const Point& rPos, const String& rText,
void SVGActionWriter::ImplWriteText( const Point& rPos, const String& rText,
const sal_Int32* pDXArray, long nWidth,
- Color aTextColor )
+ Color aTextColor, sal_Bool bApplyMapping )
{
- sal_Int32 nLen = rText.Len(), i;
+ sal_Int32 nLen = rText.Len();
Size aNormSize;
::std::auto_ptr< sal_Int32 > apTmpArray;
sal_Int32* pDX;
@@ -1169,6 +1174,8 @@ void SVGActionWriter::ImplWriteText( const Point& rPos, const String& rText,
mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrTransform, aTransform );
}
+ mpContext->AddPaintAttr( COL_TRANSPARENT, aTextColor );
+
if( nLen > 1 )
{
aNormSize.Width() = pDX[ nLen - 2 ] + mpVDev->GetTextWidth( rText.GetChar( nLen - 1 ) );
@@ -1177,7 +1184,7 @@ void SVGActionWriter::ImplWriteText( const Point& rPos, const String& rText,
{
const double fFactor = (double) nWidth / aNormSize.Width();
- for(long i = 0; i < ( nLen - 1 ); i++ )
+ for( long i = 0; i < ( nLen - 1 ); i++ )
pDX[ i ] = FRound( pDX[ i ] * fFactor );
}
else
@@ -1303,10 +1310,10 @@ void SVGActionWriter::ImplWriteBmp( const BitmapEx& rBmpEx,
aSz = rSz;
}
- mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrX, GetValueString( aPt.X() ) );
- mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrY, GetValueString( aPt.Y() ) );
- mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrWidth, GetValueString( aSz.Width() ) );
- mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrHeight, GetValueString( aSz.Height() ) );
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrX, OUString::valueOf( aPt.X() ) );
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrY, OUString::valueOf( aPt.Y() ) );
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrWidth, OUString::valueOf( aSz.Width() ) );
+ mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrHeight, OUString::valueOf( aSz.Height() ) );
mrExport.AddAttribute( XML_NAMESPACE_NONE, aXMLAttrXLinkHRef, aBuffer.makeStringAndClear() );
{
SvXMLElementExport aElem( mrExport, XML_NAMESPACE_NONE, aXMLElemImage, sal_True, sal_True );
@@ -1509,7 +1516,7 @@ void SVGActionWriter::ImplWriteActions( const GDIMetaFile& rMtf,
if( nWriteFlags & SVGWRITER_WRITE_FILL )
{
const MetaHatchAction* pA = (const MetaHatchAction*) pAction;
- ImplWritePattern( pA->GetPolyPolygon(), &pA->GetHatch(), NULL, pStyle, nWriteFlags );
+ ImplWritePattern( pA->GetPolyPolygon(), &pA->GetHatch(), NULL, nWriteFlags );
}
}
break;
@@ -1542,7 +1549,7 @@ void SVGActionWriter::ImplWriteActions( const GDIMetaFile& rMtf,
const MetaFloatTransparentAction* pA = (const MetaFloatTransparentAction*) pAction;
GDIMetaFile aTmpMtf( pA->GetGDIMetaFile() );
ImplWriteMask( aTmpMtf, pA->GetPoint(), pA->GetSize(),
- pA->GetGradient(), pStyle, nWriteFlags );
+ pA->GetGradient(), nWriteFlags );
}
}
break;
diff --git a/filter/source/svg/svgwriter.hxx b/filter/source/svg/svgwriter.hxx
index d62f208..0d34195 100644
--- a/filter/source/svg/svgwriter.hxx
+++ b/filter/source/svg/svgwriter.hxx
@@ -114,7 +114,6 @@ private:
SVGAttributeWriter();
- void ImplGetColorStr( const Color& rColor, ::rtl::OUString& rColorStr );
double ImplRound( double fVal, sal_Int32 nDecs = 3 );
public:
@@ -123,7 +122,6 @@ public:
virtual ~SVGAttributeWriter();
::rtl::OUString GetFontStyle( const Font& rFont );
- ::rtl::OUString GetColorStyle( const Color& rColor );
::rtl::OUString GetPaintStyle( const Color& rLineColor, const Color& rFillColor, const LineInfo* pLineInfo );
void AddColorAttr( const char* pColorAttrName, const char* pColorOpacityAttrName, const Color& rColor );
void AddGradientDef( const Rectangle& rObjRect,const Gradient& rGradient, ::rtl::OUString& rGradientId );
@@ -131,6 +129,8 @@ public:
const Rectangle* pObjBoundRect = NULL, const Gradient* pFillGradient = NULL );
void SetFontAttr( const Font& rFont );
+
+ static void ImplGetColorStr( const Color& rColor, ::rtl::OUString& rColorStr );
};
struct SVGShapeDescriptor
@@ -165,6 +165,9 @@ class SVGActionWriter
{
private:
+ sal_Int32 mnCurGradientId;
+ sal_Int32 mnCurMaskId;
+ sal_Int32 mnCurPatternId;
Stack maContextStack;
::std::auto_ptr< SVGShapeDescriptor > mapCurShape;
SVGExport& mrExport;
@@ -194,13 +197,20 @@ private:
sal_Bool bApplyMapping = sal_True );
void ImplWriteEllipse( const Point& rCenter, long nRadX, long nRadY,
sal_Bool bApplyMapping = sal_True );
+ void ImplWritePattern( const PolyPolygon& rPolyPoly, const Hatch* pHatch, const Gradient* pGradient, sal_uInt32 nWriteFlags );
void ImplWritePolyPolygon( const PolyPolygon& rPolyPoly, sal_Bool bLineOnly,
sal_Bool bApplyMapping = sal_True );
void ImplWriteShape( const SVGShapeDescriptor& rShape, sal_Bool bApplyMapping = sal_True );
void ImplWriteGradientEx( const PolyPolygon& rPolyPoly, const Gradient& rGradient, sal_uInt32 nWriteFlags,
sal_Bool bApplyMapping = sal_True );
+ void ImplWriteGradientLinear( const PolyPolygon& rPolyPoly, const Gradient& rGradient );
+ void ImplWriteGradientStop( const Color& rColor, double fOffset );
+ Color ImplGetColorWithIntensity( const Color& rColor, sal_uInt16 nIntensity );
+ Color ImplGetGradientColor( const Color& rStartColor, const Color& rEndColor, double fOffset );
+ void ImplWriteMask( GDIMetaFile& rMtf, const Point& rDestPt, const Size& rDestSize, const Gradient& rGradient, sal_uInt32 nWriteFlags );
void ImplWriteText( const Point& rPos, const String& rText, const sal_Int32* pDXArray, long nWidth,
sal_Bool bApplyMapping = sal_True );
+ void ImplWriteText( const Point& rPos, const String& rText, const sal_Int32* pDXArray, long nWidth, Color aTextColor, sal_Bool bApplyMapping );
void ImplWriteBmp( const BitmapEx& rBmpEx, const Point& rPt, const Size& rSz, const Point& rSrcPt, const Size& rSrcSz,
sal_Bool bApplyMapping = sal_True );
More information about the Libreoffice-commits
mailing list