summaryrefslogtreecommitdiff
path: root/filter
diff options
context:
space:
mode:
authorIvan Timofeev <timofeev.i.s@gmail.com>2011-10-19 21:52:17 +0400
committerIvan Timofeev <timofeev.i.s@gmail.com>2011-10-19 23:13:05 +0400
commit5ad4d151dac1eb887d92200330e31af269d8d1fd (patch)
tree2c961fca9047d72e916f10d95488ca2bd7b01d21 /filter
parentf9f4c631b100ace66999933dc06668ac107fb2bf (diff)
migrate to StringRangeEnumerator in pdfexport
Notes
Notes: win32 working build
Diffstat (limited to 'filter')
-rw-r--r--filter/source/pdf/pdfexport.cxx42
-rw-r--r--filter/source/pdf/pdfexport.hxx8
2 files changed, 28 insertions, 22 deletions
diff --git a/filter/source/pdf/pdfexport.cxx b/filter/source/pdf/pdfexport.cxx
index 43d665dfd1f7..9e1d4efa3487 100644
--- a/filter/source/pdf/pdfexport.cxx
+++ b/filter/source/pdf/pdfexport.cxx
@@ -168,8 +168,12 @@ PDFExport::~PDFExport()
// -----------------------------------------------------------------------------
-sal_Bool PDFExport::ExportSelection( vcl::PDFWriter& rPDFWriter, Reference< com::sun::star::view::XRenderable >& rRenderable, Any& rSelection,
- MultiSelection aMultiSelection, Sequence< PropertyValue >& rRenderOptions, sal_Int32 nPageCount )
+sal_Bool PDFExport::ExportSelection( vcl::PDFWriter& rPDFWriter,
+ Reference< com::sun::star::view::XRenderable >& rRenderable,
+ const Any& rSelection,
+ const StringRangeEnumerator& rRangeEnum,
+ Sequence< PropertyValue >& rRenderOptions,
+ sal_Int32 nPageCount )
{
sal_Bool bRet = sal_False;
try
@@ -192,11 +196,12 @@ sal_Bool PDFExport::ExportSelection( vcl::PDFWriter& rPDFWriter, Reference< com:
vcl::PDFExtOutDevData* pPDFExtOutDevData = PTR_CAST( vcl::PDFExtOutDevData, pOut->GetExtOutDevData() );
if ( nPageCount )
{
- sal_Int32 nSel = aMultiSelection.FirstSelected();
sal_Int32 nCurrentPage(0);
- while ( nSel != sal_Int32(SFX_ENDOFSELECTION) )
+ StringRangeEnumerator::Iterator aIter = rRangeEnum.begin();
+ StringRangeEnumerator::Iterator aEnd = rRangeEnum.end();
+ while ( aIter != aEnd )
{
- Sequence< PropertyValue > aRenderer( rRenderable->getRenderer( nSel - 1, rSelection, rRenderOptions ) );
+ Sequence< PropertyValue > aRenderer( rRenderable->getRenderer( *aIter, rSelection, rRenderOptions ) );
awt::Size aPageSize;
for( sal_Int32 nProperty = 0, nPropertyCount = aRenderer.getLength(); nProperty < nPropertyCount; ++nProperty )
@@ -221,9 +226,9 @@ sal_Bool PDFExport::ExportSelection( vcl::PDFWriter& rPDFWriter, Reference< com:
// #i35176#
// IsLastPage property.
- const sal_Int32 nCurrentRenderer = nSel - 1;
- nSel = aMultiSelection.NextSelected();
- if ( pLastPage && sal_Int32(SFX_ENDOFSELECTION) == nSel )
+ const sal_Int32 nCurrentRenderer = *aIter;
+ ++aIter;
+ if ( pLastPage && aIter == aEnd )
*pLastPage <<= sal_True;
rRenderable->render( nCurrentRenderer, rSelection, rRenderOptions );
@@ -862,8 +867,6 @@ sal_Bool PDFExport::Export( const OUString& rFile, const Sequence< PropertyValue
}
const sal_Int32 nPageCount = xRenderable->getRendererCount( aSelection, aRenderOptions );
- const Range aRange( 1, nPageCount );
- MultiSelection aMultiSelection;
if ( mbExportNotesPages && aCreator.EqualsAscii( "Impress" ) )
{
@@ -874,21 +877,20 @@ sal_Bool PDFExport::Export( const OUString& rFile, const Sequence< PropertyValue
if( !aPageRange.getLength() )
{
- aMultiSelection.SetTotalRange( aRange );
- aMultiSelection.Select( aRange );
- }
- else
- {
- aMultiSelection = MultiSelection( aPageRange );
- aMultiSelection.SetTotalRange( aRange );
+ aPageRange = OUStringBuffer()
+ .append( static_cast< sal_Int32 >( 1 ) )
+ .append( static_cast< sal_Unicode >( '-' ) )
+ .append( nPageCount ).makeStringAndClear();
}
+ StringRangeEnumerator aRangeEnum( aPageRange, 0, nPageCount-1 );
+
if ( mxStatusIndicator.is() )
{
ByteString aResMgrName( "pdffilter" );
ResMgr* pResMgr = ResMgr::CreateResMgr( aResMgrName.GetBuffer(), Application::GetSettings().GetUILocale() );
if ( pResMgr )
{
- sal_Int32 nTotalPageCount = aMultiSelection.GetSelectCount();
+ sal_Int32 nTotalPageCount = aRangeEnum.size();
if ( bSecondPassForImpressNotes )
nTotalPageCount *= 2;
mxStatusIndicator->start( String( ResId( PDF_PROGRESS_BAR, *pResMgr ) ), nTotalPageCount );
@@ -897,14 +899,14 @@ sal_Bool PDFExport::Export( const OUString& rFile, const Sequence< PropertyValue
}
if( nPageCount > 0 )
- bRet = ExportSelection( *pPDFWriter, xRenderable, aSelection, aMultiSelection, aRenderOptions, nPageCount );
+ bRet = ExportSelection( *pPDFWriter, xRenderable, aSelection, aRangeEnum, aRenderOptions, nPageCount );
else
bRet = sal_False;
if ( bRet && bSecondPassForImpressNotes )
{
rExportNotesValue <<= sal_True;
- bRet = ExportSelection( *pPDFWriter, xRenderable, aSelection, aMultiSelection, aRenderOptions, nPageCount );
+ bRet = ExportSelection( *pPDFWriter, xRenderable, aSelection, aRangeEnum, aRenderOptions, nPageCount );
}
if ( mxStatusIndicator.is() )
mxStatusIndicator->end();
diff --git a/filter/source/pdf/pdfexport.hxx b/filter/source/pdf/pdfexport.hxx
index f9159f2591c5..12355d18efa7 100644
--- a/filter/source/pdf/pdfexport.hxx
+++ b/filter/source/pdf/pdfexport.hxx
@@ -125,8 +125,12 @@ public:
const Reference< lang::XMultiServiceFactory >& xFact );
~PDFExport();
- sal_Bool ExportSelection( vcl::PDFWriter& rPDFWriter, Reference< com::sun::star::view::XRenderable >& rRenderable, Any& rSelection,
- MultiSelection aMultiSelection, Sequence< PropertyValue >& rRenderOptions, sal_Int32 nPageCount );
+ sal_Bool ExportSelection( vcl::PDFWriter& rPDFWriter,
+ Reference< com::sun::star::view::XRenderable >& rRenderable,
+ const Any& rSelection,
+ const StringRangeEnumerator& rRangeEnum,
+ Sequence< PropertyValue >& rRenderOptions,
+ sal_Int32 nPageCount );
sal_Bool Export( const OUString& rFile, const Sequence< PropertyValue >& rFilterData );