share spPaperSizeTable ( and associated access code ) in msfilter
PageSetup.PaperSize implementation more or less copy&pasted the papersize conversion code from oox, this is a followup to remove the duplication. ( Probably the binary filter could be converted to use this also saving yet another nearly similar implementation ) Change-Id: I479f0322163161f7819c5d650a9511910ac2e781
This commit is contained in:
@@ -306,6 +306,127 @@ OString ConvertColor( const Color &rColor )
|
||||
}
|
||||
return color;
|
||||
}
|
||||
|
||||
|
||||
#define IN2MM100( v ) static_cast< sal_Int32 >( (v) * 2540.0 + 0.5 )
|
||||
#define MM2MM100( v ) static_cast< sal_Int32 >( (v) * 100.0 + 0.5 )
|
||||
|
||||
static const ApiPaperSize spPaperSizeTable[] =
|
||||
{
|
||||
{ 0, 0 }, // 0 - (undefined)
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 11 ) }, // 1 - Letter paper
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 11 ) }, // 2 - Letter small paper
|
||||
{ IN2MM100( 11 ), IN2MM100( 17 ) }, // 3 - Tabloid paper
|
||||
{ IN2MM100( 17 ), IN2MM100( 11 ) }, // 4 - Ledger paper
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 14 ) }, // 5 - Legal paper
|
||||
{ IN2MM100( 5.5 ), IN2MM100( 8.5 ) }, // 6 - Statement paper
|
||||
{ IN2MM100( 7.25 ), IN2MM100( 10.5 ) }, // 7 - Executive paper
|
||||
{ MM2MM100( 297 ), MM2MM100( 420 ) }, // 8 - A3 paper
|
||||
{ MM2MM100( 210 ), MM2MM100( 297 ) }, // 9 - A4 paper
|
||||
{ MM2MM100( 210 ), MM2MM100( 297 ) }, // 10 - A4 small paper
|
||||
{ MM2MM100( 148 ), MM2MM100( 210 ) }, // 11 - A5 paper
|
||||
{ MM2MM100( 250 ), MM2MM100( 353 ) }, // 12 - B4 paper
|
||||
{ MM2MM100( 176 ), MM2MM100( 250 ) }, // 13 - B5 paper
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 13 ) }, // 14 - Folio paper
|
||||
{ MM2MM100( 215 ), MM2MM100( 275 ) }, // 15 - Quarto paper
|
||||
{ IN2MM100( 10 ), IN2MM100( 14 ) }, // 16 - Standard paper
|
||||
{ IN2MM100( 11 ), IN2MM100( 17 ) }, // 17 - Standard paper
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 11 ) }, // 18 - Note paper
|
||||
{ IN2MM100( 3.875 ), IN2MM100( 8.875 ) }, // 19 - #9 envelope
|
||||
{ IN2MM100( 4.125 ), IN2MM100( 9.5 ) }, // 20 - #10 envelope
|
||||
{ IN2MM100( 4.5 ), IN2MM100( 10.375 ) }, // 21 - #11 envelope
|
||||
{ IN2MM100( 4.75 ), IN2MM100( 11 ) }, // 22 - #12 envelope
|
||||
{ IN2MM100( 5 ), IN2MM100( 11.5 ) }, // 23 - #14 envelope
|
||||
{ IN2MM100( 17 ), IN2MM100( 22 ) }, // 24 - C paper
|
||||
{ IN2MM100( 22 ), IN2MM100( 34 ) }, // 25 - D paper
|
||||
{ IN2MM100( 34 ), IN2MM100( 44 ) }, // 26 - E paper
|
||||
{ MM2MM100( 110 ), MM2MM100( 220 ) }, // 27 - DL envelope
|
||||
{ MM2MM100( 162 ), MM2MM100( 229 ) }, // 28 - C5 envelope
|
||||
{ MM2MM100( 324 ), MM2MM100( 458 ) }, // 29 - C3 envelope
|
||||
{ MM2MM100( 229 ), MM2MM100( 324 ) }, // 30 - C4 envelope
|
||||
{ MM2MM100( 114 ), MM2MM100( 162 ) }, // 31 - C6 envelope
|
||||
{ MM2MM100( 114 ), MM2MM100( 229 ) }, // 32 - C65 envelope
|
||||
{ MM2MM100( 250 ), MM2MM100( 353 ) }, // 33 - B4 envelope
|
||||
{ MM2MM100( 176 ), MM2MM100( 250 ) }, // 34 - B5 envelope
|
||||
{ MM2MM100( 176 ), MM2MM100( 125 ) }, // 35 - B6 envelope
|
||||
{ MM2MM100( 110 ), MM2MM100( 230 ) }, // 36 - Italy envelope
|
||||
{ IN2MM100( 3.875 ), IN2MM100( 7.5 ) }, // 37 - Monarch envelope
|
||||
{ IN2MM100( 3.625 ), IN2MM100( 6.5 ) }, // 38 - 6 3/4 envelope
|
||||
{ IN2MM100( 14.875 ), IN2MM100( 11 ) }, // 39 - US standard fanfold
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 12 ) }, // 40 - German standard fanfold
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 13 ) }, // 41 - German legal fanfold
|
||||
{ MM2MM100( 250 ), MM2MM100( 353 ) }, // 42 - ISO B4
|
||||
{ MM2MM100( 200 ), MM2MM100( 148 ) }, // 43 - Japanese double postcard
|
||||
{ IN2MM100( 9 ), IN2MM100( 11 ) }, // 44 - Standard paper
|
||||
{ IN2MM100( 10 ), IN2MM100( 11 ) }, // 45 - Standard paper
|
||||
{ IN2MM100( 15 ), IN2MM100( 11 ) }, // 46 - Standard paper
|
||||
{ MM2MM100( 220 ), MM2MM100( 220 ) }, // 47 - Invite envelope
|
||||
{ 0, 0 }, // 48 - (undefined)
|
||||
{ 0, 0 }, // 49 - (undefined)
|
||||
{ IN2MM100( 9.275 ), IN2MM100( 12 ) }, // 50 - Letter extra paper
|
||||
{ IN2MM100( 9.275 ), IN2MM100( 15 ) }, // 51 - Legal extra paper
|
||||
{ IN2MM100( 11.69 ), IN2MM100( 18 ) }, // 52 - Tabloid extra paper
|
||||
{ MM2MM100( 236 ), MM2MM100( 322 ) }, // 53 - A4 extra paper
|
||||
{ IN2MM100( 8.275 ), IN2MM100( 11 ) }, // 54 - Letter transverse paper
|
||||
{ MM2MM100( 210 ), MM2MM100( 297 ) }, // 55 - A4 transverse paper
|
||||
{ IN2MM100( 9.275 ), IN2MM100( 12 ) }, // 56 - Letter extra transverse paper
|
||||
{ MM2MM100( 227 ), MM2MM100( 356 ) }, // 57 - SuperA/SuperA/A4 paper
|
||||
{ MM2MM100( 305 ), MM2MM100( 487 ) }, // 58 - SuperB/SuperB/A3 paper
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 12.69 ) }, // 59 - Letter plus paper
|
||||
{ MM2MM100( 210 ), MM2MM100( 330 ) }, // 60 - A4 plus paper
|
||||
{ MM2MM100( 148 ), MM2MM100( 210 ) }, // 61 - A5 transverse paper
|
||||
{ MM2MM100( 182 ), MM2MM100( 257 ) }, // 62 - JIS B5 transverse paper
|
||||
{ MM2MM100( 322 ), MM2MM100( 445 ) }, // 63 - A3 extra paper
|
||||
{ MM2MM100( 174 ), MM2MM100( 235 ) }, // 64 - A5 extra paper
|
||||
{ MM2MM100( 201 ), MM2MM100( 276 ) }, // 65 - ISO B5 extra paper
|
||||
{ MM2MM100( 420 ), MM2MM100( 594 ) }, // 66 - A2 paper
|
||||
{ MM2MM100( 297 ), MM2MM100( 420 ) }, // 67 - A3 transverse paper
|
||||
{ MM2MM100( 322 ), MM2MM100( 445 ) } // 68 - A3 extra transverse paper
|
||||
};
|
||||
|
||||
sal_Int32 PaperSizeConv::getMSPaperSizeIndex( const com::sun::star::awt::Size& rSize )
|
||||
{
|
||||
sal_Int32 nElems = SAL_N_ELEMENTS( spPaperSizeTable );
|
||||
// Need to find the best match for current size
|
||||
sal_Int32 nDeltaWidth = 0;
|
||||
sal_Int32 nDeltaHeight = 0;
|
||||
|
||||
sal_Int32 nPaperSizeIndex = 0; // Undefined
|
||||
const ApiPaperSize* pItem = spPaperSizeTable;
|
||||
const ApiPaperSize* pEnd = spPaperSizeTable + nElems;
|
||||
for ( ; pItem != pEnd; ++pItem )
|
||||
{
|
||||
sal_Int32 nCurDeltaHeight = std::abs( pItem->mnHeight - rSize.Height );
|
||||
sal_Int32 nCurDeltaWidth = std::abs( pItem->mnWidth - rSize.Width );
|
||||
if ( pItem == spPaperSizeTable ) // initialise delta with first item
|
||||
{
|
||||
nDeltaWidth = nCurDeltaWidth;
|
||||
nDeltaHeight = nCurDeltaHeight;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( nCurDeltaWidth < nDeltaWidth && nCurDeltaHeight < nDeltaHeight )
|
||||
{
|
||||
nDeltaWidth = nCurDeltaWidth;
|
||||
nDeltaHeight = nCurDeltaHeight;
|
||||
nPaperSizeIndex = (pItem - spPaperSizeTable);
|
||||
}
|
||||
}
|
||||
}
|
||||
sal_Int32 nTol = 10; // hmm not sure is this the best way
|
||||
if ( nDeltaWidth <= nTol && nDeltaHeight <= nTol )
|
||||
return nPaperSizeIndex;
|
||||
return 0;
|
||||
}
|
||||
|
||||
const ApiPaperSize& PaperSizeConv::getApiSizeForMSPaperSizeIndex( sal_Int32 nMSOPaperIndex )
|
||||
{
|
||||
sal_Int32 nElems = SAL_N_ELEMENTS( spPaperSizeTable );
|
||||
if ( nMSOPaperIndex < 0 || nMSOPaperIndex > nElems - 1 )
|
||||
return spPaperSizeTable[ 0 ];
|
||||
return spPaperSizeTable[ nMSOPaperIndex ];
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -15,6 +15,7 @@
|
||||
#include <tools/color.hxx>
|
||||
#include <com/sun/star/lang/Locale.hpp>
|
||||
#include "filter/msfilter/msfilterdllapi.h"
|
||||
#include <com/sun/star/awt/Size.hpp>
|
||||
|
||||
namespace msfilter {
|
||||
namespace util {
|
||||
@@ -73,6 +74,20 @@ MSFILTER_DLLPUBLIC TextCategory categorizeCodePoint(sal_uInt32 codePoint, const
|
||||
/// Converts tools Color to HTML color (without leading hashmark).
|
||||
MSFILTER_DLLPUBLIC OString ConvertColor( const Color &rColor );
|
||||
|
||||
|
||||
/** Paper size in 1/100 millimeters. */
|
||||
struct MSFILTER_DLLPUBLIC ApiPaperSize
|
||||
{
|
||||
sal_Int32 mnWidth;
|
||||
sal_Int32 mnHeight;
|
||||
};
|
||||
|
||||
class MSFILTER_DLLPUBLIC PaperSizeConv
|
||||
{
|
||||
public:
|
||||
static sal_Int32 getMSPaperSizeIndex( const com::sun::star::awt::Size& rSize );
|
||||
static const ApiPaperSize& getApiSizeForMSPaperSizeIndex( sal_Int32 nMSOPaperIndex );
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -42,6 +42,7 @@
|
||||
#include "stylesbuffer.hxx"
|
||||
#include "unitconverter.hxx"
|
||||
#include "document.hxx"
|
||||
#include <filter/msfilter/util.hxx>
|
||||
|
||||
namespace oox {
|
||||
namespace xls {
|
||||
@@ -892,93 +893,6 @@ void HeaderFooterParser::setNewPortion( HFPortionId ePortion )
|
||||
|
||||
// ============================================================================
|
||||
|
||||
namespace {
|
||||
|
||||
/** Paper size in 1/100 millimeters. */
|
||||
struct ApiPaperSize
|
||||
{
|
||||
sal_Int32 mnWidth;
|
||||
sal_Int32 mnHeight;
|
||||
};
|
||||
|
||||
#define IN2MM100( v ) static_cast< sal_Int32 >( (v) * 2540.0 + 0.5 )
|
||||
#define MM2MM100( v ) static_cast< sal_Int32 >( (v) * 100.0 + 0.5 )
|
||||
|
||||
static const ApiPaperSize spPaperSizeTable[] =
|
||||
{
|
||||
{ 0, 0 }, // 0 - (undefined)
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 11 ) }, // 1 - Letter paper
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 11 ) }, // 2 - Letter small paper
|
||||
{ IN2MM100( 11 ), IN2MM100( 17 ) }, // 3 - Tabloid paper
|
||||
{ IN2MM100( 17 ), IN2MM100( 11 ) }, // 4 - Ledger paper
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 14 ) }, // 5 - Legal paper
|
||||
{ IN2MM100( 5.5 ), IN2MM100( 8.5 ) }, // 6 - Statement paper
|
||||
{ IN2MM100( 7.25 ), IN2MM100( 10.5 ) }, // 7 - Executive paper
|
||||
{ MM2MM100( 297 ), MM2MM100( 420 ) }, // 8 - A3 paper
|
||||
{ MM2MM100( 210 ), MM2MM100( 297 ) }, // 9 - A4 paper
|
||||
{ MM2MM100( 210 ), MM2MM100( 297 ) }, // 10 - A4 small paper
|
||||
{ MM2MM100( 148 ), MM2MM100( 210 ) }, // 11 - A5 paper
|
||||
{ MM2MM100( 250 ), MM2MM100( 353 ) }, // 12 - B4 paper
|
||||
{ MM2MM100( 176 ), MM2MM100( 250 ) }, // 13 - B5 paper
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 13 ) }, // 14 - Folio paper
|
||||
{ MM2MM100( 215 ), MM2MM100( 275 ) }, // 15 - Quarto paper
|
||||
{ IN2MM100( 10 ), IN2MM100( 14 ) }, // 16 - Standard paper
|
||||
{ IN2MM100( 11 ), IN2MM100( 17 ) }, // 17 - Standard paper
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 11 ) }, // 18 - Note paper
|
||||
{ IN2MM100( 3.875 ), IN2MM100( 8.875 ) }, // 19 - #9 envelope
|
||||
{ IN2MM100( 4.125 ), IN2MM100( 9.5 ) }, // 20 - #10 envelope
|
||||
{ IN2MM100( 4.5 ), IN2MM100( 10.375 ) }, // 21 - #11 envelope
|
||||
{ IN2MM100( 4.75 ), IN2MM100( 11 ) }, // 22 - #12 envelope
|
||||
{ IN2MM100( 5 ), IN2MM100( 11.5 ) }, // 23 - #14 envelope
|
||||
{ IN2MM100( 17 ), IN2MM100( 22 ) }, // 24 - C paper
|
||||
{ IN2MM100( 22 ), IN2MM100( 34 ) }, // 25 - D paper
|
||||
{ IN2MM100( 34 ), IN2MM100( 44 ) }, // 26 - E paper
|
||||
{ MM2MM100( 110 ), MM2MM100( 220 ) }, // 27 - DL envelope
|
||||
{ MM2MM100( 162 ), MM2MM100( 229 ) }, // 28 - C5 envelope
|
||||
{ MM2MM100( 324 ), MM2MM100( 458 ) }, // 29 - C3 envelope
|
||||
{ MM2MM100( 229 ), MM2MM100( 324 ) }, // 30 - C4 envelope
|
||||
{ MM2MM100( 114 ), MM2MM100( 162 ) }, // 31 - C6 envelope
|
||||
{ MM2MM100( 114 ), MM2MM100( 229 ) }, // 32 - C65 envelope
|
||||
{ MM2MM100( 250 ), MM2MM100( 353 ) }, // 33 - B4 envelope
|
||||
{ MM2MM100( 176 ), MM2MM100( 250 ) }, // 34 - B5 envelope
|
||||
{ MM2MM100( 176 ), MM2MM100( 125 ) }, // 35 - B6 envelope
|
||||
{ MM2MM100( 110 ), MM2MM100( 230 ) }, // 36 - Italy envelope
|
||||
{ IN2MM100( 3.875 ), IN2MM100( 7.5 ) }, // 37 - Monarch envelope
|
||||
{ IN2MM100( 3.625 ), IN2MM100( 6.5 ) }, // 38 - 6 3/4 envelope
|
||||
{ IN2MM100( 14.875 ), IN2MM100( 11 ) }, // 39 - US standard fanfold
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 12 ) }, // 40 - German standard fanfold
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 13 ) }, // 41 - German legal fanfold
|
||||
{ MM2MM100( 250 ), MM2MM100( 353 ) }, // 42 - ISO B4
|
||||
{ MM2MM100( 200 ), MM2MM100( 148 ) }, // 43 - Japanese double postcard
|
||||
{ IN2MM100( 9 ), IN2MM100( 11 ) }, // 44 - Standard paper
|
||||
{ IN2MM100( 10 ), IN2MM100( 11 ) }, // 45 - Standard paper
|
||||
{ IN2MM100( 15 ), IN2MM100( 11 ) }, // 46 - Standard paper
|
||||
{ MM2MM100( 220 ), MM2MM100( 220 ) }, // 47 - Invite envelope
|
||||
{ 0, 0 }, // 48 - (undefined)
|
||||
{ 0, 0 }, // 49 - (undefined)
|
||||
{ IN2MM100( 9.275 ), IN2MM100( 12 ) }, // 50 - Letter extra paper
|
||||
{ IN2MM100( 9.275 ), IN2MM100( 15 ) }, // 51 - Legal extra paper
|
||||
{ IN2MM100( 11.69 ), IN2MM100( 18 ) }, // 52 - Tabloid extra paper
|
||||
{ MM2MM100( 236 ), MM2MM100( 322 ) }, // 53 - A4 extra paper
|
||||
{ IN2MM100( 8.275 ), IN2MM100( 11 ) }, // 54 - Letter transverse paper
|
||||
{ MM2MM100( 210 ), MM2MM100( 297 ) }, // 55 - A4 transverse paper
|
||||
{ IN2MM100( 9.275 ), IN2MM100( 12 ) }, // 56 - Letter extra transverse paper
|
||||
{ MM2MM100( 227 ), MM2MM100( 356 ) }, // 57 - SuperA/SuperA/A4 paper
|
||||
{ MM2MM100( 305 ), MM2MM100( 487 ) }, // 58 - SuperB/SuperB/A3 paper
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 12.69 ) }, // 59 - Letter plus paper
|
||||
{ MM2MM100( 210 ), MM2MM100( 330 ) }, // 60 - A4 plus paper
|
||||
{ MM2MM100( 148 ), MM2MM100( 210 ) }, // 61 - A5 transverse paper
|
||||
{ MM2MM100( 182 ), MM2MM100( 257 ) }, // 62 - JIS B5 transverse paper
|
||||
{ MM2MM100( 322 ), MM2MM100( 445 ) }, // 63 - A3 extra paper
|
||||
{ MM2MM100( 174 ), MM2MM100( 235 ) }, // 64 - A5 extra paper
|
||||
{ MM2MM100( 201 ), MM2MM100( 276 ) }, // 65 - ISO B5 extra paper
|
||||
{ MM2MM100( 420 ), MM2MM100( 594 ) }, // 66 - A2 paper
|
||||
{ MM2MM100( 297 ), MM2MM100( 420 ) }, // 67 - A3 transverse paper
|
||||
{ MM2MM100( 322 ), MM2MM100( 445 ) } // 68 - A3 extra transverse paper
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
PageSettingsConverter::HFHelperData::HFHelperData( sal_Int32 nLeftPropId, sal_Int32 nRightPropId ) :
|
||||
@@ -1043,11 +957,11 @@ void PageSettingsConverter::writePageSettingsProperties(
|
||||
awt::Size aSize;
|
||||
bool bValid = false;
|
||||
|
||||
if( (0 < rModel.mnPaperSize) && (rModel.mnPaperSize < static_cast< sal_Int32 >( STATIC_ARRAY_SIZE( spPaperSizeTable ) )) )
|
||||
if( (0 < rModel.mnPaperSize) )
|
||||
{
|
||||
const ApiPaperSize& rPaperSize = spPaperSizeTable[ rModel.mnPaperSize ];
|
||||
const msfilter::util::ApiPaperSize& rPaperSize = msfilter::util::PaperSizeConv::getApiSizeForMSPaperSizeIndex( rModel.mnPaperSize );
|
||||
aSize = awt::Size( rPaperSize.mnWidth, rPaperSize.mnHeight );
|
||||
bValid = true;
|
||||
bValid = ( rPaperSize.mnWidth != 0 && rPaperSize.mnHeight != 0 );
|
||||
}
|
||||
if( rModel.mnPaperWidth > 0 && rModel.mnPaperHeight > 0 )
|
||||
{
|
||||
|
@@ -32,6 +32,7 @@
|
||||
#include <i18nutil/paper.hxx>
|
||||
#include <sal/macros.h>
|
||||
#include <algorithm>
|
||||
#include <filter/msfilter/util.hxx>
|
||||
|
||||
using namespace ::com::sun::star;
|
||||
using namespace ::ooo::vba;
|
||||
@@ -626,141 +627,28 @@ OUString SAL_CALL ScVbaPageSetup::getPrintTitleColumns() throw (uno::RuntimeExce
|
||||
void SAL_CALL ScVbaPageSetup::setPrintTitleColumns( const OUString& /*_printtitlecolumns*/ ) throw (uno::RuntimeException)
|
||||
{
|
||||
}
|
||||
/** Paper size in 1/100 millimeters. */
|
||||
struct ApiPaperSize
|
||||
{
|
||||
sal_Int32 mnWidth;
|
||||
sal_Int32 mnHeight;
|
||||
};
|
||||
|
||||
// #FIXME ( this is cut'n'pasted from oox, we need to share it somewhere, msfilter ? )
|
||||
|
||||
#define IN2MM100( v ) static_cast< sal_Int32 >( (v) * 2540.0 + 0.5 )
|
||||
#define MM2MM100( v ) static_cast< sal_Int32 >( (v) * 100.0 + 0.5 )
|
||||
|
||||
static const ApiPaperSize spPaperSizeTable[] =
|
||||
{
|
||||
{ 0, 0 }, // 0 - (undefined)
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 11 ) }, // 1 - Letter paper
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 11 ) }, // 2 - Letter small paper
|
||||
{ IN2MM100( 11 ), IN2MM100( 17 ) }, // 3 - Tabloid paper
|
||||
{ IN2MM100( 17 ), IN2MM100( 11 ) }, // 4 - Ledger paper
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 14 ) }, // 5 - Legal paper
|
||||
{ IN2MM100( 5.5 ), IN2MM100( 8.5 ) }, // 6 - Statement paper
|
||||
{ IN2MM100( 7.25 ), IN2MM100( 10.5 ) }, // 7 - Executive paper
|
||||
{ MM2MM100( 297 ), MM2MM100( 420 ) }, // 8 - A3 paper
|
||||
{ MM2MM100( 210 ), MM2MM100( 297 ) }, // 9 - A4 paper
|
||||
{ MM2MM100( 210 ), MM2MM100( 297 ) }, // 10 - A4 small paper
|
||||
{ MM2MM100( 148 ), MM2MM100( 210 ) }, // 11 - A5 paper
|
||||
{ MM2MM100( 250 ), MM2MM100( 353 ) }, // 12 - B4 paper
|
||||
{ MM2MM100( 176 ), MM2MM100( 250 ) }, // 13 - B5 paper
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 13 ) }, // 14 - Folio paper
|
||||
{ MM2MM100( 215 ), MM2MM100( 275 ) }, // 15 - Quarto paper
|
||||
{ IN2MM100( 10 ), IN2MM100( 14 ) }, // 16 - Standard paper
|
||||
{ IN2MM100( 11 ), IN2MM100( 17 ) }, // 17 - Standard paper
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 11 ) }, // 18 - Note paper
|
||||
{ IN2MM100( 3.875 ), IN2MM100( 8.875 ) }, // 19 - #9 envelope
|
||||
{ IN2MM100( 4.125 ), IN2MM100( 9.5 ) }, // 20 - #10 envelope
|
||||
{ IN2MM100( 4.5 ), IN2MM100( 10.375 ) }, // 21 - #11 envelope
|
||||
{ IN2MM100( 4.75 ), IN2MM100( 11 ) }, // 22 - #12 envelope
|
||||
{ IN2MM100( 5 ), IN2MM100( 11.5 ) }, // 23 - #14 envelope
|
||||
{ IN2MM100( 17 ), IN2MM100( 22 ) }, // 24 - C paper
|
||||
{ IN2MM100( 22 ), IN2MM100( 34 ) }, // 25 - D paper
|
||||
{ IN2MM100( 34 ), IN2MM100( 44 ) }, // 26 - E paper
|
||||
{ MM2MM100( 110 ), MM2MM100( 220 ) }, // 27 - DL envelope
|
||||
{ MM2MM100( 162 ), MM2MM100( 229 ) }, // 28 - C5 envelope
|
||||
{ MM2MM100( 324 ), MM2MM100( 458 ) }, // 29 - C3 envelope
|
||||
{ MM2MM100( 229 ), MM2MM100( 324 ) }, // 30 - C4 envelope
|
||||
{ MM2MM100( 114 ), MM2MM100( 162 ) }, // 31 - C6 envelope
|
||||
{ MM2MM100( 114 ), MM2MM100( 229 ) }, // 32 - C65 envelope
|
||||
{ MM2MM100( 250 ), MM2MM100( 353 ) }, // 33 - B4 envelope
|
||||
{ MM2MM100( 176 ), MM2MM100( 250 ) }, // 34 - B5 envelope
|
||||
{ MM2MM100( 176 ), MM2MM100( 125 ) }, // 35 - B6 envelope
|
||||
{ MM2MM100( 110 ), MM2MM100( 230 ) }, // 36 - Italy envelope
|
||||
{ IN2MM100( 3.875 ), IN2MM100( 7.5 ) }, // 37 - Monarch envelope
|
||||
{ IN2MM100( 3.625 ), IN2MM100( 6.5 ) }, // 38 - 6 3/4 envelope
|
||||
{ IN2MM100( 14.875 ), IN2MM100( 11 ) }, // 39 - US standard fanfold
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 12 ) }, // 40 - German standard fanfold
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 13 ) }, // 41 - German legal fanfold
|
||||
{ MM2MM100( 250 ), MM2MM100( 353 ) }, // 42 - ISO B4
|
||||
{ MM2MM100( 200 ), MM2MM100( 148 ) }, // 43 - Japanese double postcard
|
||||
{ IN2MM100( 9 ), IN2MM100( 11 ) }, // 44 - Standard paper
|
||||
{ IN2MM100( 10 ), IN2MM100( 11 ) }, // 45 - Standard paper
|
||||
{ IN2MM100( 15 ), IN2MM100( 11 ) }, // 46 - Standard paper
|
||||
{ MM2MM100( 220 ), MM2MM100( 220 ) }, // 47 - Invite envelope
|
||||
{ 0, 0 }, // 48 - (undefined)
|
||||
{ 0, 0 }, // 49 - (undefined)
|
||||
{ IN2MM100( 9.275 ), IN2MM100( 12 ) }, // 50 - Letter extra paper
|
||||
{ IN2MM100( 9.275 ), IN2MM100( 15 ) }, // 51 - Legal extra paper
|
||||
{ IN2MM100( 11.69 ), IN2MM100( 18 ) }, // 52 - Tabloid extra paper
|
||||
{ MM2MM100( 236 ), MM2MM100( 322 ) }, // 53 - A4 extra paper
|
||||
{ IN2MM100( 8.275 ), IN2MM100( 11 ) }, // 54 - Letter transverse paper
|
||||
{ MM2MM100( 210 ), MM2MM100( 297 ) }, // 55 - A4 transverse paper
|
||||
{ IN2MM100( 9.275 ), IN2MM100( 12 ) }, // 56 - Letter extra transverse paper
|
||||
{ MM2MM100( 227 ), MM2MM100( 356 ) }, // 57 - SuperA/SuperA/A4 paper
|
||||
{ MM2MM100( 305 ), MM2MM100( 487 ) }, // 58 - SuperB/SuperB/A3 paper
|
||||
{ IN2MM100( 8.5 ), IN2MM100( 12.69 ) }, // 59 - Letter plus paper
|
||||
{ MM2MM100( 210 ), MM2MM100( 330 ) }, // 60 - A4 plus paper
|
||||
{ MM2MM100( 148 ), MM2MM100( 210 ) }, // 61 - A5 transverse paper
|
||||
{ MM2MM100( 182 ), MM2MM100( 257 ) }, // 62 - JIS B5 transverse paper
|
||||
{ MM2MM100( 322 ), MM2MM100( 445 ) }, // 63 - A3 extra paper
|
||||
{ MM2MM100( 174 ), MM2MM100( 235 ) }, // 64 - A5 extra paper
|
||||
{ MM2MM100( 201 ), MM2MM100( 276 ) }, // 65 - ISO B5 extra paper
|
||||
{ MM2MM100( 420 ), MM2MM100( 594 ) }, // 66 - A2 paper
|
||||
{ MM2MM100( 297 ), MM2MM100( 420 ) }, // 67 - A3 transverse paper
|
||||
{ MM2MM100( 322 ), MM2MM100( 445 ) } // 68 - A3 extra transverse paper
|
||||
};
|
||||
|
||||
sal_Int32 SAL_CALL ScVbaPageSetup::getPaperSize() throw (uno::RuntimeException)
|
||||
{
|
||||
sal_Int32 nElems = SAL_N_ELEMENTS( spPaperSizeTable );
|
||||
// Need to find the best match for current size
|
||||
sal_Int32 nDeltaWidth = 0;
|
||||
sal_Int32 nDeltaHeight = 0;
|
||||
awt::Size aSize; // current papersize
|
||||
mxPageProps->getPropertyValue( "Size" ) >>= aSize;
|
||||
if ( mbIsLandscape )
|
||||
::std::swap( aSize.Width, aSize.Height );
|
||||
|
||||
sal_Int32 nPaperSizeIndex = 0; // Undefined
|
||||
const ApiPaperSize* pItem = spPaperSizeTable;
|
||||
const ApiPaperSize* pEnd = spPaperSizeTable + nElems;
|
||||
for ( ; pItem != pEnd; ++pItem )
|
||||
{
|
||||
const ApiPaperSize& rSize = *pItem;
|
||||
sal_Int32 nCurDeltaHeight = std::abs( rSize.mnHeight - aSize.Height );
|
||||
sal_Int32 nCurDeltaWidth = std::abs( rSize.mnWidth - aSize.Width );
|
||||
if ( pItem == spPaperSizeTable ) // initialise delta with first item
|
||||
{
|
||||
nDeltaWidth = nCurDeltaWidth;
|
||||
nDeltaHeight = nCurDeltaHeight;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( nCurDeltaWidth < nDeltaWidth && nCurDeltaHeight < nDeltaHeight )
|
||||
{
|
||||
nDeltaWidth = nCurDeltaWidth;
|
||||
nDeltaHeight = nCurDeltaHeight;
|
||||
nPaperSizeIndex = (pItem - spPaperSizeTable);
|
||||
}
|
||||
}
|
||||
}
|
||||
sal_Int32 nTol = 10; // hmm not sure is this the best way
|
||||
if ( nDeltaWidth <= nTol && nDeltaHeight <= nTol )
|
||||
return nPaperSizeIndex;
|
||||
return excel::XlPaperSize::xlPaperUser;
|
||||
sal_Int32 nPaperSizeIndex = msfilter::util::PaperSizeConv::getMSPaperSizeIndex( aSize );
|
||||
if ( nPaperSizeIndex == 0 )
|
||||
nPaperSizeIndex = excel::XlPaperSize::xlPaperUser;
|
||||
return nPaperSizeIndex;
|
||||
}
|
||||
|
||||
void SAL_CALL ScVbaPageSetup::setPaperSize( sal_Int32 papersize ) throw (uno::RuntimeException)
|
||||
{
|
||||
sal_Int32 nElems = SAL_N_ELEMENTS( spPaperSizeTable );
|
||||
if ( papersize != excel::XlPaperSize::xlPaperUser )
|
||||
{
|
||||
if ( papersize < 0 || papersize > nElems - 1 )
|
||||
throw uno::RuntimeException();
|
||||
awt::Size aPaperSize;
|
||||
aPaperSize.Height = spPaperSizeTable[ papersize ].mnHeight;
|
||||
aPaperSize.Width = spPaperSizeTable[ papersize ].mnWidth;
|
||||
const msfilter::util::ApiPaperSize& rConvertedSize = msfilter::util::PaperSizeConv::getApiSizeForMSPaperSizeIndex( papersize );
|
||||
aPaperSize.Height = rConvertedSize.mnHeight;
|
||||
aPaperSize.Width = rConvertedSize.mnWidth;
|
||||
if ( mbIsLandscape )
|
||||
::std::swap( aPaperSize.Width, aPaperSize.Height );
|
||||
mxPageProps->setPropertyValue( "Size", uno::makeAny( aPaperSize ) );
|
||||
|
Reference in New Issue
Block a user