summaryrefslogtreecommitdiff
path: root/filter
diff options
context:
space:
mode:
authorAndras Timar <andras.timar@collabora.com>2015-12-07 21:24:32 +0100
committerAndras Timar <andras.timar@collabora.com>2015-12-07 21:24:32 +0100
commit48f0ba92a6e9828805ce6f5d87147b9d0dcefe3b (patch)
treeca499fc8f8eb4a9ad5aa35089e45f22b33d346d8 /filter
parentb75c47c8e58beb8626f02495a75eb319c77e870a (diff)
Revert "svg export: no more an experimental feature"
Diffstat (limited to 'filter')
-rw-r--r--filter/source/svg/svgexport.cxx431
-rw-r--r--filter/source/svg/svgfilter.cxx2
-rw-r--r--filter/source/svg/svgfilter.hxx2
3 files changed, 254 insertions, 181 deletions
diff --git a/filter/source/svg/svgexport.cxx b/filter/source/svg/svgexport.cxx
index 7005d9284464..6824d959d8e1 100644
--- a/filter/source/svg/svgexport.cxx
+++ b/filter/source/svg/svgexport.cxx
@@ -716,14 +716,17 @@ bool SVGFilter::implExportDocument()
bool bRet = false;
sal_Int32 nLastPage = mSelectedPages.getLength() - 1;
- mbSinglePage = (nLastPage == 0);
+ SvtMiscOptions aMiscOptions;
+ const bool bExperimentalMode = aMiscOptions.IsExperimentalMode();
+
+ mbSinglePage = ((nLastPage == 0) || !bExperimentalMode) && !comphelper::LibreOfficeKit::isActive();
mnVisiblePage = -1;
const Reference< XPropertySet > xDefaultPagePropertySet( mxDefaultPage, UNO_QUERY );
const Reference< XExtendedDocumentHandler > xExtDocHandler( mpSVGExport->GetDocHandler(), UNO_QUERY );
// #i124608#
- mbExportShapeSelection = mbSinglePage && maShapeSelection.is() && maShapeSelection->getCount();
+ mbExportSelection = mbSinglePage && maShapeSelection.is() && maShapeSelection->getCount();
if(xDefaultPagePropertySet.is())
{
@@ -731,7 +734,7 @@ bool SVGFilter::implExportDocument()
xDefaultPagePropertySet->getPropertyValue( "Height" ) >>= nDocHeight;
}
- if(mbExportShapeSelection)
+ if(mbExportSelection)
{
// #i124608# create BoundRange and set nDocX, nDocY, nDocWidth and nDocHeight
basegfx::B2DRange aShapeRange;
@@ -791,7 +794,7 @@ bool SVGFilter::implExportDocument()
// instead of centered.
#define _SVG_WRITE_EXTENTS
#ifdef _SVG_WRITE_EXTENTS
- if( !mbPresentation )
+ if( mbSinglePage )
{
aAttr = OUString::number( nDocWidth * 0.01 ) + "mm";
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "width", aAttr );
@@ -802,7 +805,7 @@ bool SVGFilter::implExportDocument()
#endif
// #i124608# set viewBox explicitely to the exported content
- if (mbExportShapeSelection)
+ if (mbExportSelection)
{
aAttr = OUString::number(nDocX) + " " + OUString::number(nDocY) + " ";
}
@@ -851,10 +854,11 @@ bool SVGFilter::implExportDocument()
if( implLookForFirstVisiblePage() ) // OK! We found at least one visible page.
{
- if( mbPresentation )
+ if( !mbSinglePage )
{
implGenerateMetaData();
- implExportAnimations();
+ if( bExperimentalMode )
+ implExportAnimations();
}
else
{
@@ -893,7 +897,7 @@ bool SVGFilter::implExportDocument()
implExportMasterPages( mMasterPageTargets, 0, mMasterPageTargets.size() - 1 );
implExportDrawPages( mSelectedPages, 0, nLastPage );
- if( mbPresentation )
+ if( !mbSinglePage )
{
implGenerateScript();
}
@@ -1484,7 +1488,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 = (!mbPresentation) ? OUString( "g" ) : OUString( "defs" );
+ OUString aContainerTag = (mbSinglePage) ? OUString( "g" ) : OUString( "defs" );
SvXMLElementExport aContainerElement( *mpSVGExport, XML_NAMESPACE_NONE, aContainerTag, true, true );
bool bRet = false;
@@ -1524,7 +1528,7 @@ bool SVGFilter::implExportDrawPages( const SVGFilter::XDrawPageSequence & rxPage
{
Reference< XShapes > xShapes;
- if (mbExportShapeSelection)
+ if (mbExportSelection)
{
// #i124608# export a given object selection
xShapes = maShapeSelection;
@@ -1540,7 +1544,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( mbPresentation )
+ if( !mbSinglePage )
{
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "visibility", "hidden" );
}
@@ -1579,7 +1583,7 @@ bool SVGFilter::implExportPage( const OUString & sPageId,
{
OUString sPageName = implGetInterfaceName( rxPage );
- if( mbPresentation && !sPageName.isEmpty() )
+ if( !(sPageName.isEmpty() || mbSinglePage ))
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, aOOOAttrName, sPageName );
{
@@ -1619,7 +1623,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( !mbPresentation && bMaster )
+ if( mbSinglePage && bMaster )
{
if( !mVisiblePagePropSet.bIsBackgroundVisible )
{
@@ -1646,7 +1650,7 @@ bool SVGFilter::implExportPage( const OUString & sPageId,
OUString sBackgroundObjectsId = "bo-";
sBackgroundObjectsId += sPageId;
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "id", sBackgroundObjectsId );
- if( !mbPresentation )
+ if( mbSinglePage )
{
if( !mVisiblePagePropSet.bAreBackgroundObjectsVisible )
{
@@ -1752,31 +1756,44 @@ bool SVGFilter::implExportShape( const Reference< XShape >& rxShape,
bool bIsDateTime = ( aShapeClass == "Date/Time" );
if( bIsPageNumber || bIsDateTime || bIsFooter )
{
- // to notify to the SVGActionWriter::ImplWriteActions method
- // that we are dealing with a placeholder shape
- pElementId = &sPlaceholderTag;
+ if( !mbSinglePage )
+ {
+ // 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";
+ switch( nTextAdjust )
+ {
+ case ParagraphAdjust_LEFT:
+ sTextAdjust = "left";
+ break;
+ case ParagraphAdjust_CENTER:
+ sTextAdjust = "center";
+ break;
+ case ParagraphAdjust_RIGHT:
+ sTextAdjust = "right";
+ break;
+ default:
break;
- default:
- break;
+ }
+ mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, aOOOAttrTextAdjust, sTextAdjust );
+ }
+ else // single page case
+ {
+ if( !mVisiblePagePropSet.bAreBackgroundObjectsVisible || (
+ ( bIsPageNumber && !mVisiblePagePropSet.bIsPageNumberFieldVisible ) ||
+ ( bIsDateTime && !mVisiblePagePropSet.bIsDateTimeFieldVisible ) ||
+ ( bIsFooter && !mVisiblePagePropSet.bIsFooterFieldVisible ) ) )
+ {
+ mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "visibility", "hidden" );
+ }
}
- mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, aOOOAttrTextAdjust, sTextAdjust );
}
}
mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "class", aShapeClass );
@@ -1868,7 +1885,7 @@ bool SVGFilter::implExportShape( const Reference< XShape >& rxShape,
bool SVGFilter::implCreateObjects()
{
- if (mbExportShapeSelection)
+ if (mbExportSelection)
{
// #i124608# export a given object selection
if (mSelectedPages.getLength() && mSelectedPages[0].is())
@@ -2163,179 +2180,235 @@ IMPL_LINK_TYPED( SVGFilter, CalcFieldHdl, EditFieldInfo*, pInfo, void )
{
bFieldProcessed = true;
OUString aRepresentation;
- if( mpSVGExport->IsEmbedFonts() && mpSVGExport->IsUsePositionedCharacters() )
+ if( !mbSinglePage )
{
- // to notify to the SVGActionWriter::ImplWriteText method
- // that we are dealing with a placeholder shape
- aRepresentation = sPlaceholderTag;
-
- if( !mCreateOjectsCurrentMasterPage.is() )
+ if( mpSVGExport->IsEmbedFonts() && mpSVGExport->IsUsePositionedCharacters() )
{
- OSL_FAIL( "error: !mCreateOjectsCurrentMasterPage.is()" );
- return;
- }
- bool bHasCharSetMap = !( mTextFieldCharSets.find( mCreateOjectsCurrentMasterPage ) == mTextFieldCharSets.end() );
+ // to notify to the SVGActionWriter::ImplWriteText method
+ // that we are dealing with a placeholder shape
+ aRepresentation = sPlaceholderTag;
- static const OUString aHeaderId( aOOOAttrHeaderField );
- static const OUString aFooterId( aOOOAttrFooterField );
- static const OUString aDateTimeId( aOOOAttrDateTimeField );
- static const OUString aVariableDateTimeId( aOOOAttrDateTimeField + "-variable" );
+ if( !mCreateOjectsCurrentMasterPage.is() )
+ {
+ OSL_FAIL( "error: !mCreateOjectsCurrentMasterPage.is()" );
+ return;
+ }
+ bool bHasCharSetMap = !( mTextFieldCharSets.find( mCreateOjectsCurrentMasterPage ) == mTextFieldCharSets.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() ) )
+ 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() ) )
{
- pCharSet = &( (*pCharSetMap)[ aDateTimeId ] );
+ pCharSet = &( (*pCharSetMap)[ aFooterId ] );
}
- if( bHasCharSetMap && ( pCharSetMap->find( aVariableDateTimeId ) != pCharSetMap->end() ) && !(*pCharSetMap)[ aVariableDateTimeId ].empty() )
+ else if( pField->GetClassId() == text::textfield::Type::PRESENTATION_DATE_TIME )
{
- 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 )
+ if( bHasCharSetMap && ( pCharSetMap->find( aDateTimeId ) != pCharSetMap->end() ) )
{
- eCurDateFormat = (SvxDateFormat)( (int)( *aChar ) & 0x0f );
- switch( eDateFormat )
+ 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 )
{
- 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;
+ 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;
+ }
}
- }
- // 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 )
- {
- 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 )
+ if( 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;
+ 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;
}
- aRepresentation += sDate;
}
}
- }
- else if( pField->GetClassId() == text::textfield::Type::PAGE )
- {
- switch( mVisiblePagePropSet.nPageNumberingType )
+ 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 )
{
- 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;
+ if( pCharSet != nullptr )
+ {
+ UCharSet::const_iterator aChar = pCharSet->begin();
+ for( ; aChar != pCharSet->end(); ++aChar )
+ {
+ aRepresentation += OUString( *aChar );
+ }
+ }
+ pInfo->SetRepresentation( aRepresentation );
}
}
else
{
bFieldProcessed = false;
}
- if( bFieldProcessed )
+ }
+ else // single page case
+ {
+ if( mVisiblePagePropSet.bAreBackgroundObjectsVisible )
{
- if( pCharSet != nullptr )
+ 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 )
{
- UCharSet::const_iterator aChar = pCharSet->begin();
- for( ; aChar != pCharSet->end(); ++aChar )
+ // 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 )
{
- aRepresentation += OUString( *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;
}
}
- pInfo->SetRepresentation( aRepresentation );
+ else
+ {
+ bFieldProcessed = false;
+ }
+ if( bFieldProcessed )
+ {
+ pInfo->SetRepresentation( aRepresentation );
+ }
}
- }
- else
- {
- bFieldProcessed = false;
- }
+ }
}
if (!bFieldProcessed)
maOldFieldHdl.Call( pInfo );
diff --git a/filter/source/svg/svgfilter.cxx b/filter/source/svg/svgfilter.cxx
index f993900f7a3c..d7111e767620 100644
--- a/filter/source/svg/svgfilter.cxx
+++ b/filter/source/svg/svgfilter.cxx
@@ -77,7 +77,7 @@ SVGFilter::SVGFilter( const Reference< XComponentContext >& rxCtx ) :
mxDefaultPage(),
maFilterData(),
maShapeSelection(),
- mbExportShapeSelection(false),
+ mbExportSelection(false),
maOldFieldHdl()
{
}
diff --git a/filter/source/svg/svgfilter.hxx b/filter/source/svg/svgfilter.hxx
index 1e64c8bdedeb..1651f0960fbb 100644
--- a/filter/source/svg/svgfilter.hxx
+++ b/filter/source/svg/svgfilter.hxx
@@ -240,7 +240,7 @@ private:
Sequence< PropertyValue > maFilterData;
// #i124608# explicit ShapeSelection for export when export of the selection is wanted
Reference< XShapes > maShapeSelection;
- bool mbExportShapeSelection;
+ bool mbExportSelection;
XDrawPageSequence mSelectedPages;
std::vector< Reference< XDrawPage > > mMasterPageTargets;