Kaydet (Commit) 15452177 authored tarafından Marco Cecchetti's avatar Marco Cecchetti Kaydeden (comit) Andras Timar

svg export: no more an experimental feature

Removed experimental feature check.
Single slide exporting works as for multi slides exporting.

SVGExportTextDecorations unit test - fixed wrong XPath
The new way single slide are exported caused the xpath to the slide
group to be wrong,

Change-Id: I4db4dc77de4f0d1208418455e1fca3b5732c8477
Reviewed-on: https://gerrit.libreoffice.org/20459Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarAndras Timar <andras.timar@collabora.com>
üst 689962fe
......@@ -716,17 +716,14 @@ bool SVGFilter::implExportDocument()
bool bRet = false;
sal_Int32 nLastPage = mSelectedPages.getLength() - 1;
SvtMiscOptions aMiscOptions;
const bool bExperimentalMode = aMiscOptions.IsExperimentalMode();
mbSinglePage = ((nLastPage == 0) || !bExperimentalMode) && !comphelper::LibreOfficeKit::isActive();
mbSinglePage = (nLastPage == 0);
mnVisiblePage = -1;
const Reference< XPropertySet > xDefaultPagePropertySet( mxDefaultPage, UNO_QUERY );
const Reference< XExtendedDocumentHandler > xExtDocHandler( mpSVGExport->GetDocHandler(), UNO_QUERY );
// #i124608#
mbExportSelection = mbSinglePage && maShapeSelection.is() && maShapeSelection->getCount();
mbExportShapeSelection = mbSinglePage && maShapeSelection.is() && maShapeSelection->getCount();
if(xDefaultPagePropertySet.is())
{
......@@ -734,7 +731,7 @@ bool SVGFilter::implExportDocument()
xDefaultPagePropertySet->getPropertyValue( "Height" ) >>= nDocHeight;
}
if(mbExportSelection)
if(mbExportShapeSelection)
{
// #i124608# create BoundRange and set nDocX, nDocY, nDocWidth and nDocHeight
basegfx::B2DRange aShapeRange;
......@@ -794,7 +791,7 @@ bool SVGFilter::implExportDocument()
// instead of centered.
#define _SVG_WRITE_EXTENTS
#ifdef _SVG_WRITE_EXTENTS
if( mbSinglePage )
if( !mbPresentation )
{
aAttr = OUString::number( nDocWidth * 0.01 ) + "mm";
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "width", aAttr );
......@@ -805,7 +802,7 @@ bool SVGFilter::implExportDocument()
#endif
// #i124608# set viewBox explicitely to the exported content
if (mbExportSelection)
if (mbExportShapeSelection)
{
aAttr = OUString::number(nDocX) + " " + OUString::number(nDocY) + " ";
}
......@@ -854,11 +851,10 @@ bool SVGFilter::implExportDocument()
if( implLookForFirstVisiblePage() ) // OK! We found at least one visible page.
{
if( !mbSinglePage )
if( mbPresentation )
{
implGenerateMetaData();
if( bExperimentalMode )
implExportAnimations();
implExportAnimations();
}
else
{
......@@ -893,11 +889,11 @@ bool SVGFilter::implExportDocument()
}
// #i124608# export a given object selection, so no MasterPage export at all
if (!mbExportSelection)
if (!mbExportShapeSelection)
implExportMasterPages( mMasterPageTargets, 0, mMasterPageTargets.size() - 1 );
implExportDrawPages( mSelectedPages, 0, nLastPage );
if( !mbSinglePage )
if( mbPresentation )
{
implGenerateScript();
}
......@@ -1488,7 +1484,7 @@ bool SVGFilter::implExportMasterPages( const std::vector< Reference< XDrawPage >
// When the exported slides are more than one we wrap master page elements
// with a svg <defs> element.
OUString aContainerTag = (mbSinglePage) ? OUString( "g" ) : OUString( "defs" );
OUString aContainerTag = (!mbPresentation) ? OUString( "g" ) : OUString( "defs" );
SvXMLElementExport aContainerElement( *mpSVGExport, XML_NAMESPACE_NONE, aContainerTag, true, true );
bool bRet = false;
......@@ -1528,7 +1524,7 @@ bool SVGFilter::implExportDrawPages( const SVGFilter::XDrawPageSequence & rxPage
{
Reference< XShapes > xShapes;
if (mbExportSelection)
if (mbExportShapeSelection)
{
// #i124608# export a given object selection
xShapes = maShapeSelection;
......@@ -1544,7 +1540,7 @@ bool SVGFilter::implExportDrawPages( const SVGFilter::XDrawPageSequence & rxPage
// handling a slide visibility.
// In case the exported slides are more than one the initial
// visibility of each slide is set to 'hidden'.
if( !mbSinglePage )
if( mbPresentation )
{
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "visibility", "hidden" );
}
......@@ -1583,7 +1579,7 @@ bool SVGFilter::implExportPage( const OUString & sPageId,
{
OUString sPageName = implGetInterfaceName( rxPage );
if( !(sPageName.isEmpty() || mbSinglePage ))
if( mbPresentation && !sPageName.isEmpty() )
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, aOOOAttrName, sPageName );
{
......@@ -1623,7 +1619,7 @@ bool SVGFilter::implExportPage( const OUString & sPageId,
// of the parent slide regardless of the value of the 'IsBackgroundVisible' property.
// This means that we need to set up the visibility attribute only for the background
// element of a master page.
if( mbSinglePage && bMaster )
if( !mbPresentation && bMaster )
{
if( !mVisiblePagePropSet.bIsBackgroundVisible )
{
......@@ -1650,7 +1646,7 @@ bool SVGFilter::implExportPage( const OUString & sPageId,
OUString sBackgroundObjectsId = "bo-";
sBackgroundObjectsId += sPageId;
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "id", sBackgroundObjectsId );
if( mbSinglePage )
if( !mbPresentation )
{
if( !mVisiblePagePropSet.bAreBackgroundObjectsVisible )
{
......@@ -1756,44 +1752,31 @@ bool SVGFilter::implExportShape( const Reference< XShape >& rxShape,
bool bIsDateTime = ( aShapeClass == "Date/Time" );
if( bIsPageNumber || bIsDateTime || bIsFooter )
{
if( !mbSinglePage )
{
// to notify to the SVGActionWriter::ImplWriteActions method
// that we are dealing with a placeholder shape
pElementId = &sPlaceholderTag;
// to notify to the SVGActionWriter::ImplWriteActions method
// that we are dealing with a placeholder shape
pElementId = &sPlaceholderTag;
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "visibility", "hidden" );
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "visibility", "hidden" );
sal_uInt16 nTextAdjust = ParagraphAdjust_LEFT;
OUString sTextAdjust;
xShapePropSet->getPropertyValue( "ParaAdjust" ) >>= nTextAdjust;
sal_uInt16 nTextAdjust = ParagraphAdjust_LEFT;
OUString sTextAdjust;
xShapePropSet->getPropertyValue( "ParaAdjust" ) >>= nTextAdjust;
switch( nTextAdjust )
{
case ParagraphAdjust_LEFT:
sTextAdjust = "left";
break;
case ParagraphAdjust_CENTER:
sTextAdjust = "center";
break;
case ParagraphAdjust_RIGHT:
sTextAdjust = "right";
break;
default:
break;
}
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, aOOOAttrTextAdjust, sTextAdjust );
}
else // single page case
switch( nTextAdjust )
{
if( !mVisiblePagePropSet.bAreBackgroundObjectsVisible || (
( bIsPageNumber && !mVisiblePagePropSet.bIsPageNumberFieldVisible ) ||
( bIsDateTime && !mVisiblePagePropSet.bIsDateTimeFieldVisible ) ||
( bIsFooter && !mVisiblePagePropSet.bIsFooterFieldVisible ) ) )
{
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "visibility", "hidden" );
}
case ParagraphAdjust_LEFT:
sTextAdjust = "left";
break;
case ParagraphAdjust_CENTER:
sTextAdjust = "center";
break;
case ParagraphAdjust_RIGHT:
sTextAdjust = "right";
break;
default:
break;
}
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, aOOOAttrTextAdjust, sTextAdjust );
}
}
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "class", aShapeClass );
......@@ -1885,7 +1868,7 @@ bool SVGFilter::implExportShape( const Reference< XShape >& rxShape,
bool SVGFilter::implCreateObjects()
{
if (mbExportSelection)
if (mbExportShapeSelection)
{
// #i124608# export a given object selection
if (mSelectedPages.getLength() && mSelectedPages[0].is())
......@@ -2180,235 +2163,179 @@ IMPL_LINK_TYPED( SVGFilter, CalcFieldHdl, EditFieldInfo*, pInfo, void )
{
bFieldProcessed = true;
OUString aRepresentation;
if( !mbSinglePage )
if( mpSVGExport->IsEmbedFonts() && mpSVGExport->IsUsePositionedCharacters() )
{
if( mpSVGExport->IsEmbedFonts() && mpSVGExport->IsUsePositionedCharacters() )
{
// to notify to the SVGActionWriter::ImplWriteText method
// that we are dealing with a placeholder shape
aRepresentation = sPlaceholderTag;
// to notify to the SVGActionWriter::ImplWriteText method
// that we are dealing with a placeholder shape
aRepresentation = sPlaceholderTag;
if( !mCreateOjectsCurrentMasterPage.is() )
{
OSL_FAIL( "error: !mCreateOjectsCurrentMasterPage.is()" );
return;
}
bool bHasCharSetMap = !( mTextFieldCharSets.find( mCreateOjectsCurrentMasterPage ) == mTextFieldCharSets.end() );
if( !mCreateOjectsCurrentMasterPage.is() )
{
OSL_FAIL( "error: !mCreateOjectsCurrentMasterPage.is()" );
return;
}
bool bHasCharSetMap = !( mTextFieldCharSets.find( mCreateOjectsCurrentMasterPage ) == mTextFieldCharSets.end() );
static const OUString aHeaderId( aOOOAttrHeaderField );
static const OUString aFooterId( aOOOAttrFooterField );
static const OUString aDateTimeId( aOOOAttrDateTimeField );
static const OUString aVariableDateTimeId( aOOOAttrDateTimeField + "-variable" );
static const OUString aHeaderId( aOOOAttrHeaderField );
static const OUString aFooterId( aOOOAttrFooterField );
static const OUString aDateTimeId( aOOOAttrDateTimeField );
static const OUString aVariableDateTimeId( aOOOAttrDateTimeField + "-variable" );
const UCharSet * pCharSet = nullptr;
UCharSetMap * pCharSetMap = nullptr;
if( bHasCharSetMap )
{
pCharSetMap = &( mTextFieldCharSets[ mCreateOjectsCurrentMasterPage ] );
}
const SvxFieldData* pField = pInfo->GetField().GetField();
if( bHasCharSetMap && ( pField->GetClassId() == text::textfield::Type::PRESENTATION_HEADER ) && ( pCharSetMap->find( aHeaderId ) != pCharSetMap->end() ) )
{
pCharSet = &( (*pCharSetMap)[ aHeaderId ] );
}
else if( bHasCharSetMap && ( pField->GetClassId() == text::textfield::Type::PRESENTATION_FOOTER ) && ( pCharSetMap->find( aFooterId ) != pCharSetMap->end() ) )
const UCharSet * pCharSet = nullptr;
UCharSetMap * pCharSetMap = nullptr;
if( bHasCharSetMap )
{
pCharSetMap = &( mTextFieldCharSets[ mCreateOjectsCurrentMasterPage ] );
}
const SvxFieldData* pField = pInfo->GetField().GetField();
if( bHasCharSetMap && ( pField->GetClassId() == text::textfield::Type::PRESENTATION_HEADER ) && ( pCharSetMap->find( aHeaderId ) != pCharSetMap->end() ) )
{
pCharSet = &( (*pCharSetMap)[ aHeaderId ] );
}
else if( bHasCharSetMap && ( pField->GetClassId() == text::textfield::Type::PRESENTATION_FOOTER ) && ( pCharSetMap->find( aFooterId ) != pCharSetMap->end() ) )
{
pCharSet = &( (*pCharSetMap)[ aFooterId ] );
}
else if( pField->GetClassId() == text::textfield::Type::PRESENTATION_DATE_TIME )
{
if( bHasCharSetMap && ( pCharSetMap->find( aDateTimeId ) != pCharSetMap->end() ) )
{
pCharSet = &( (*pCharSetMap)[ aFooterId ] );
pCharSet = &( (*pCharSetMap)[ aDateTimeId ] );
}
else if( pField->GetClassId() == text::textfield::Type::PRESENTATION_DATE_TIME )
if( bHasCharSetMap && ( pCharSetMap->find( aVariableDateTimeId ) != pCharSetMap->end() ) && !(*pCharSetMap)[ aVariableDateTimeId ].empty() )
{
if( bHasCharSetMap && ( pCharSetMap->find( aDateTimeId ) != pCharSetMap->end() ) )
SvxDateFormat eDateFormat = SVXDATEFORMAT_B, eCurDateFormat;
const UCharSet & aCharSet = (*pCharSetMap)[ aVariableDateTimeId ];
UCharSet::const_iterator aChar = aCharSet.begin();
// we look for the most verbose date format
for( ; aChar != aCharSet.end(); ++aChar )
{
pCharSet = &( (*pCharSetMap)[ aDateTimeId ] );
}
if( bHasCharSetMap && ( pCharSetMap->find( aVariableDateTimeId ) != pCharSetMap->end() ) && !(*pCharSetMap)[ aVariableDateTimeId ].empty() )
{
SvxDateFormat eDateFormat = SVXDATEFORMAT_B, eCurDateFormat;
const UCharSet & aCharSet = (*pCharSetMap)[ aVariableDateTimeId ];
UCharSet::const_iterator aChar = aCharSet.begin();
// we look for the most verbose date format
for( ; aChar != aCharSet.end(); ++aChar )
eCurDateFormat = (SvxDateFormat)( (int)( *aChar ) & 0x0f );
switch( eDateFormat )
{
eCurDateFormat = (SvxDateFormat)( (int)( *aChar ) & 0x0f );
switch( eDateFormat )
{
case SVXDATEFORMAT_STDSMALL:
case SVXDATEFORMAT_A: // 13.02.96
case SVXDATEFORMAT_B: // 13.02.1996
switch( eCurDateFormat )
{
case SVXDATEFORMAT_C: // 13.Feb 1996
case SVXDATEFORMAT_D: // 13.February 1996
case SVXDATEFORMAT_E: // Tue, 13.February 1996
case SVXDATEFORMAT_STDBIG:
case SVXDATEFORMAT_F: // Tuesday, 13.February 1996
eDateFormat = eCurDateFormat;
break;
default:
break;
}
break;
case SVXDATEFORMAT_C: // 13.Feb 1996
case SVXDATEFORMAT_D: // 13.February 1996
switch( eCurDateFormat )
{
case SVXDATEFORMAT_E: // Tue, 13.February 1996
case SVXDATEFORMAT_STDBIG:
case SVXDATEFORMAT_F: // Tuesday, 13.February 1996
eDateFormat = eCurDateFormat;
break;
default:
break;
}
break;
default:
break;
}
case SVXDATEFORMAT_STDSMALL:
case SVXDATEFORMAT_A: // 13.02.96
case SVXDATEFORMAT_B: // 13.02.1996
switch( eCurDateFormat )
{
case SVXDATEFORMAT_C: // 13.Feb 1996
case SVXDATEFORMAT_D: // 13.February 1996
case SVXDATEFORMAT_E: // Tue, 13.February 1996
case SVXDATEFORMAT_STDBIG:
case SVXDATEFORMAT_F: // Tuesday, 13.February 1996
eDateFormat = eCurDateFormat;
break;
default:
break;
}
break;
case SVXDATEFORMAT_C: // 13.Feb 1996
case SVXDATEFORMAT_D: // 13.February 1996
switch( eCurDateFormat )
{
case SVXDATEFORMAT_E: // Tue, 13.February 1996
case SVXDATEFORMAT_STDBIG:
case SVXDATEFORMAT_F: // Tuesday, 13.February 1996
eDateFormat = eCurDateFormat;
break;
default:
break;
}
break;
default:
break;
}
// Independently of the date format, we always put all these characters by default.
// They should be enough to cover every time format.
aRepresentation += "0123456789.:/-APM";
}
// Independently of the date format, we always put all these characters by default.
// They should be enough to cover every time format.
aRepresentation += "0123456789.:/-APM";
if( eDateFormat )
if( eDateFormat )
{
OUString sDate;
LanguageType eLang = pInfo->GetOutliner()->GetLanguage( pInfo->GetPara(), pInfo->GetPos() );
SvNumberFormatter * pNumberFormatter = new SvNumberFormatter( ::comphelper::getProcessComponentContext(), LANGUAGE_SYSTEM );
// We always collect the characters obtained by using the SVXDATEFORMAT_B (as: 13.02.1996)
// so we are sure to include any unusual day|month|year separator.
Date aDate( 1, 1, 1996 );
sDate += SvxDateField::GetFormatted( aDate, SVXDATEFORMAT_B, *pNumberFormatter, eLang );
switch( eDateFormat )
{
OUString sDate;
LanguageType eLang = pInfo->GetOutliner()->GetLanguage( pInfo->GetPara(), pInfo->GetPos() );
SvNumberFormatter * pNumberFormatter = new SvNumberFormatter( ::comphelper::getProcessComponentContext(), LANGUAGE_SYSTEM );
// We always collect the characters obtained by using the SVXDATEFORMAT_B (as: 13.02.1996)
// so we are sure to include any unusual day|month|year separator.
Date aDate( 1, 1, 1996 );
sDate += SvxDateField::GetFormatted( aDate, SVXDATEFORMAT_B, *pNumberFormatter, eLang );
switch( eDateFormat )
{
case SVXDATEFORMAT_E: // Tue, 13.February 1996
case SVXDATEFORMAT_STDBIG:
case SVXDATEFORMAT_F: // Tuesday, 13.February 1996
for( sal_uInt16 i = 1; i <= 7; ++i ) // we get all days in a week
{
aDate.SetDay( i );
sDate += SvxDateField::GetFormatted( aDate, eDateFormat, *pNumberFormatter, eLang );
}
// No break here! We need months too!
case SVXDATEFORMAT_C: // 13.Feb 1996
case SVXDATEFORMAT_D: // 13.February 1996
for( sal_uInt16 i = 1; i <= 12; ++i ) // we get all months in a year
{
aDate.SetMonth( i );
sDate += SvxDateField::GetFormatted( aDate, eDateFormat, *pNumberFormatter, eLang );
}
break;
// coverity[dead_error_begin] - following conditions exist to avoid compiler warning
case SVXDATEFORMAT_STDSMALL:
case SVXDATEFORMAT_A: // 13.02.96
case SVXDATEFORMAT_B: // 13.02.1996
default:
// nothing to do here, we always collect the characters needed for these cases.
break;
}
aRepresentation += sDate;
case SVXDATEFORMAT_E: // Tue, 13.February 1996
case SVXDATEFORMAT_STDBIG:
case SVXDATEFORMAT_F: // Tuesday, 13.February 1996
for( sal_uInt16 i = 1; i <= 7; ++i ) // we get all days in a week
{
aDate.SetDay( i );
sDate += SvxDateField::GetFormatted( aDate, eDateFormat, *pNumberFormatter, eLang );
}
// No break here! We need months too!
case SVXDATEFORMAT_C: // 13.Feb 1996
case SVXDATEFORMAT_D: // 13.February 1996
for( sal_uInt16 i = 1; i <= 12; ++i ) // we get all months in a year
{
aDate.SetMonth( i );
sDate += SvxDateField::GetFormatted( aDate, eDateFormat, *pNumberFormatter, eLang );
}
break;
// coverity[dead_error_begin] - following conditions exist to avoid compiler warning
case SVXDATEFORMAT_STDSMALL:
case SVXDATEFORMAT_A: // 13.02.96
case SVXDATEFORMAT_B: // 13.02.1996
default:
// nothing to do here, we always collect the characters needed for these cases.
break;
}
aRepresentation += sDate;
}
}
else if( pField->GetClassId() == text::textfield::Type::PAGE )
{
switch( mVisiblePagePropSet.nPageNumberingType )
{
case SVX_CHARS_UPPER_LETTER:
aRepresentation += "QWERTYUIOPASDFGHJKLZXCVBNM";
break;
case SVX_CHARS_LOWER_LETTER:
aRepresentation += "qwertyuiopasdfghjklzxcvbnm";
break;
case SVX_ROMAN_UPPER:
aRepresentation += "IVXLCDM";
break;
case SVX_ROMAN_LOWER:
aRepresentation += "ivxlcdm";
break;
// arabic numbering type is the default
case SVX_ARABIC:
// in case the numbering type is not handled we fall back on arabic numbering
default:
aRepresentation += "0123456789";
break;
}
}
else
{
bFieldProcessed = false;
}
if( bFieldProcessed )
}
else if( pField->GetClassId() == text::textfield::Type::PAGE )
{
switch( mVisiblePagePropSet.nPageNumberingType )
{
if( pCharSet != nullptr )
{
UCharSet::const_iterator aChar = pCharSet->begin();
for( ; aChar != pCharSet->end(); ++aChar )
{
aRepresentation += OUString( *aChar );
}
}
pInfo->SetRepresentation( aRepresentation );
case SVX_CHARS_UPPER_LETTER:
aRepresentation += "QWERTYUIOPASDFGHJKLZXCVBNM";
break;
case SVX_CHARS_LOWER_LETTER:
aRepresentation += "qwertyuiopasdfghjklzxcvbnm";
break;
case SVX_ROMAN_UPPER:
aRepresentation += "IVXLCDM";
break;
case SVX_ROMAN_LOWER:
aRepresentation += "ivxlcdm";
break;
// arabic numbering type is the default
case SVX_ARABIC:
// in case the numbering type is not handled we fall back on arabic numbering
default:
aRepresentation += "0123456789";
break;
}
}
else
{
bFieldProcessed = false;
}
}
else // single page case
{
if( mVisiblePagePropSet.bAreBackgroundObjectsVisible )
if( bFieldProcessed )
{
const SvxFieldData* pField = pInfo->GetField().GetField();
if( ( pField->GetClassId() == text::textfield::Type::PRESENTATION_HEADER ) && mVisiblePagePropSet.bIsHeaderFieldVisible )
{
aRepresentation += mVisiblePagePropSet.sHeaderText;
}
else if( ( pField->GetClassId() == text::textfield::Type::PRESENTATION_FOOTER ) && mVisiblePagePropSet.bIsFooterFieldVisible )
{
aRepresentation += mVisiblePagePropSet.sFooterText;
}
else if( ( pField->GetClassId() == text::textfield::Type::PRESENTATION_DATE_TIME ) && mVisiblePagePropSet.bIsDateTimeFieldVisible )
if( pCharSet != nullptr )
{
// TODO: implement the variable case
aRepresentation += mVisiblePagePropSet.sDateTimeText;
}
else if( ( pField->GetClassId() == text::textfield::Type::PAGE ) && mVisiblePagePropSet.bIsPageNumberFieldVisible )
{
sal_Int16 nPageNumber = mVisiblePagePropSet.nPageNumber;
switch( mVisiblePagePropSet.nPageNumberingType )
UCharSet::const_iterator aChar = pCharSet->begin();
for( ; aChar != pCharSet->end(); ++aChar )
{
case SVX_CHARS_UPPER_LETTER:
aRepresentation += OUString( (sal_Unicode)(char)( ( nPageNumber - 1 ) % 26 + 'A' ) );
break;
case SVX_CHARS_LOWER_LETTER:
aRepresentation += OUString( (sal_Unicode)(char)( ( nPageNumber - 1 ) % 26 + 'a' ) );
break;
case SVX_ROMAN_UPPER:
aRepresentation += SvxNumberFormat::CreateRomanString( nPageNumber, true /* upper */ );
break;
case SVX_ROMAN_LOWER:
aRepresentation += SvxNumberFormat::CreateRomanString( nPageNumber, false /* lower */ );
break;
// arabic numbering type is the default
case SVX_ARABIC:
// in case the numbering type is not handled we fall back on arabic numbering
default:
aRepresentation += OUString::number( nPageNumber );
break;
aRepresentation += OUString( *aChar );
}
}
else
{
bFieldProcessed = false;
}
if( bFieldProcessed )
{
pInfo->SetRepresentation( aRepresentation );
}
pInfo->SetRepresentation( aRepresentation );
}
}
else
{
bFieldProcessed = false;
}
}
if (!bFieldProcessed)
maOldFieldHdl.Call( pInfo );
......
......@@ -77,7 +77,7 @@ SVGFilter::SVGFilter( const Reference< XComponentContext >& rxCtx ) :
mxDefaultPage(),
maFilterData(),
maShapeSelection(),
mbExportSelection(false),
mbExportShapeSelection(false),
maOldFieldHdl()
{
}
......
......@@ -240,7 +240,7 @@ private:
Sequence< PropertyValue > maFilterData;
// #i124608# explicit ShapeSelection for export when export of the selection is wanted
Reference< XShapes > maShapeSelection;
bool mbExportSelection;
bool mbExportShapeSelection;
XDrawPageSequence mSelectedPages;
std::vector< Reference< XDrawPage > > mMasterPageTargets;
......
......@@ -99,16 +99,16 @@ public:
svgDoc->name = reinterpret_cast<char *>(xmlStrdup(reinterpret_cast<xmlChar const *>(OUStringToOString(maTempFile.GetURL(), RTL_TEXTENCODING_UTF8).getStr())));
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG ), 1);
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[2] ), "class", "SlideGroup");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[2]/SVG_G/SVG_G ), "class", "Slide");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[2]/SVG_G/SVG_G/SVG_G/SVG_G[1] ), "class", "TitleText");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[2]/SVG_G/SVG_G/SVG_G/SVG_G[1]/SVG_G/SVG_TEXT ), "class", "TextShape");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[2]/SVG_G/SVG_G/SVG_G/SVG_G[1]/SVG_G/SVG_TEXT/SVG_TSPAN ), "class", "TextParagraph");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[2]/SVG_G/SVG_G/SVG_G/SVG_G[1]/SVG_G/SVG_TEXT/SVG_TSPAN ), "text-decoration", "underline");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[2]/SVG_G/SVG_G/SVG_G/SVG_G[2]/SVG_G/SVG_TEXT ), "class", "TextShape");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[2]/SVG_G/SVG_G/SVG_G/SVG_G[2]/SVG_G/SVG_TEXT/SVG_TSPAN ), "class", "TextParagraph");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[2]/SVG_G/SVG_G/SVG_G/SVG_G[2]/SVG_G/SVG_TEXT/SVG_TSPAN ), "text-decoration", "line-through");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[1] ), "class", "SlideGroup");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[1]/SVG_G/SVG_G ), "class", "Slide");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[1]/SVG_G/SVG_G/SVG_G/SVG_G[1] ), "class", "TitleText");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[1]/SVG_G/SVG_G/SVG_G/SVG_G[1]/SVG_G/SVG_TEXT ), "class", "TextShape");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[1]/SVG_G/SVG_G/SVG_G/SVG_G[1]/SVG_G/SVG_TEXT/SVG_TSPAN ), "class", "TextParagraph");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[1]/SVG_G/SVG_G/SVG_G/SVG_G[1]/SVG_G/SVG_TEXT/SVG_TSPAN ), "text-decoration", "underline");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[1]/SVG_G/SVG_G/SVG_G/SVG_G[2]/SVG_G/SVG_TEXT ), "class", "TextShape");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[1]/SVG_G/SVG_G/SVG_G/SVG_G[2]/SVG_G/SVG_TEXT/SVG_TSPAN ), "class", "TextParagraph");
assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[1]/SVG_G/SVG_G/SVG_G/SVG_G[2]/SVG_G/SVG_TEXT/SVG_TSPAN ), "text-decoration", "line-through");
}
CPPUNIT_TEST_SUITE(SdSVGFilterTest);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment