editeng/inc/editeng/svxenum.hxx | 16 +++++++++- filter/source/msfilter/svdfppt.cxx | 57 ++++++++++++++++++++++++++++++++++++ sd/source/filter/eppt/epptso.cxx | 5 +++ sd/source/filter/eppt/pptx-text.cxx | 44 +++++++++++++++++++++++++++ 4 files changed, 121 insertions(+), 1 deletion(-)
New commits: commit 8ed047be746c428b4b9d614afc26e53238ec72f8 Author: Zhe Wang <[email protected]> Date: Fri Sep 7 04:46:35 2012 +0000 Resolves: #i120773 Numbering lost when saving or opening a ppt file * subversion/main/editeng/inc/editeng/svxenum.hxx Define some numbering types supported by MS ppt * subversion/main/filter/source/msfilter/svdfppt.cxx Mapping added MS numbering types to Symphony numbering types * subversion/main/sd/source/filter/eppt/epptso.cxx Export added MS numbering types Patch by: Yin Bing <[email protected]> Suggested by: Wang Zhe <[email protected]> Found by: Yin Bing <[email protected]> Review by: Wang Zhe <[email protected]>(cherry picked from commit 39e9cae1ac9b7944c9df0642a193b042a1b68266) Signed-off-by: Fridrich Å trba <[email protected]> Conflicts: editeng/inc/editeng/svxenum.hxx sd/source/filter/eppt/epptso.cxx Change-Id: Ic8a9406fd1b58e5cec5c5adc28bf0190ccb87315 (cherry picked from commit ef23b47e887908161d980f3e6f6d321f18acca77) Reviewed-on: https://gerrit.libreoffice.org/2692 Reviewed-by: Radek DoulÃk <[email protected]> Tested-by: Radek DoulÃk <[email protected]> diff --git a/editeng/inc/editeng/svxenum.hxx b/editeng/inc/editeng/svxenum.hxx index ff751b0..2759beb 100644 --- a/editeng/inc/editeng/svxenum.hxx +++ b/editeng/inc/editeng/svxenum.hxx @@ -210,7 +210,21 @@ enum SvxExtNumType SVX_NUM_PAGEDESC, // Numbering from the page template SVX_NUM_BITMAP, SVX_NUM_CHARS_UPPER_LETTER_N, // Counts from a-z, aa-zz, aaa-zzz - SVX_NUM_CHARS_LOWER_LETTER_N + SVX_NUM_CHARS_LOWER_LETTER_N, + SVX_NUM_TRANSLITERATION, + SVX_NUM_NATIVE_NUMBERING, + SVX_NUM_FULL_WIDTH_ARABIC, + SVX_NUM_CIRCLE_NUMBER, + SVX_NUM_NUMBER_LOWER_ZH, + SVX_NUM_NUMBER_UPPER_ZH, + SVX_NUM_NUMBER_UPPER_ZH_TW, + SVX_NUM_TIAN_GAN_ZH, + SVX_NUM_DI_ZI_ZH, + SVX_NUM_NUMBER_TRADITIONAL_JA, + SVX_NUM_AIU_FULLWIDTH_JA, + SVX_NUM_AIU_HALFWIDTH_JA, + SVX_NUM_IROHA_FULLWIDTH_JA, + SVX_NUM_IROHA_HALFWIDTH_JA }; enum SvxCompareMode diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx index 208d8b5..b44fe62 100644 --- a/filter/source/msfilter/svdfppt.cxx +++ b/filter/source/msfilter/svdfppt.cxx @@ -3529,6 +3529,63 @@ sal_Bool PPTNumberFormatCreator::ImplGetExtNumberFormat( SdrPowerPointImport& rM rNumberFormat.SetSuffix( String( RTL_CONSTASCII_USTRINGPARAM( ")" ) ) ); } break; + case 16: // Simplified Chinese. + { + rNumberFormat.SetNumberingType( SVX_NUM_NUMBER_UPPER_ZH ); + } + break; + case 17: // Simplified Chinese with single-byte period. + { + rNumberFormat.SetNumberingType( SVX_NUM_NUMBER_UPPER_ZH ); + rNumberFormat.SetSuffix( String( RTL_CONSTASCII_USTRINGPARAM( "." ) ) ); + } + break; + case 18: // Double byte circle numbers. + case 19: // Wingdings white circle numbers. + case 20: // Wingdings black circle numbers. + { + rNumberFormat.SetNumberingType( SVX_NUM_CIRCLE_NUMBER ); + } + break; + case 21: // Traditional Chinese. + { + rNumberFormat.SetNumberingType( SVX_NUM_NUMBER_UPPER_ZH_TW ); + } + break; + case 22: // Traditional Chinese with single-byte period. + { + rNumberFormat.SetNumberingType( SVX_NUM_NUMBER_UPPER_ZH_TW ); + rNumberFormat.SetSuffix( String( RTL_CONSTASCII_USTRINGPARAM( "." ) ) ); + } + break; + case 26: // Japanese/Korean. + { + rNumberFormat.SetNumberingType( SVX_NUM_NUMBER_LOWER_ZH ); + } + break; + case 27: // Japanese/Korean with single-byte period. + { + rNumberFormat.SetNumberingType( SVX_NUM_NUMBER_LOWER_ZH ); + rNumberFormat.SetSuffix( String( RTL_CONSTASCII_USTRINGPARAM( "." ) ) ); + } + break; + case 28: // Double-byte Arabic numbers. + { + rNumberFormat.SetNumberingType( SVX_NUM_FULL_WIDTH_ARABIC ); + } + break; + case 29: // Double-byte Arabic numbers with double-byte period. + { + rNumberFormat.SetNumberingType( SVX_NUM_FULL_WIDTH_ARABIC ); + rNumberFormat.SetSuffix( OUString( sal_Unicode(0xff0e) ) ); + } + break; + case 38: // Japanese with double-byte period. + { + rNumberFormat.SetNumberingType( SVX_NUM_NUMBER_LOWER_ZH ); // No such type. Instead with Lower Chinese Number + rNumberFormat.SetSuffix( OUString( sal_Unicode(0xff0e) ) ); + } + break; } rStartNumbering = boost::optional< sal_Int16 >( nAnmScheme >> 16 ); } diff --git a/sd/source/filter/eppt/epptso.cxx b/sd/source/filter/eppt/epptso.cxx index c28f4d1..04018c5 100644 --- a/sd/source/filter/eppt/epptso.cxx +++ b/sd/source/filter/eppt/epptso.cxx @@ -1423,6 +1423,11 @@ void PPTWriter::ImplWriteTextStyleAtom( SvStream& rOut, int nTextInstance, sal_u case SVX_NUM_ROMAN_UPPER : case SVX_NUM_ROMAN_LOWER : case SVX_NUM_ARABIC : + case SVX_NUM_NUMBER_UPPER_ZH: + case SVX_NUM_CIRCLE_NUMBER: + case SVX_NUM_NUMBER_UPPER_ZH_TW: + case SVX_NUM_NUMBER_LOWER_ZH: + case SVX_NUM_FULL_WIDTH_ARABIC: nNumberingType = pBulletPara->nMappedNumType; break; diff --git a/sd/source/filter/eppt/pptx-text.cxx b/sd/source/filter/eppt/pptx-text.cxx index 481666b..9e4876d 100644 --- a/sd/source/filter/eppt/pptx-text.cxx +++ b/sd/source/filter/eppt/pptx-text.cxx @@ -905,6 +905,11 @@ void ParagraphObj::ImplGetNumberingLevel( PPTExBulletProvider& rBuProv, sal_Int1 case SVX_NUM_BITMAP : case SVX_NUM_CHARS_UPPER_LETTER_N : // zaehlt von a-z, aa-zz, aaa-zzz case SVX_NUM_CHARS_LOWER_LETTER_N : + case SVX_NUM_NUMBER_UPPER_ZH: + case SVX_NUM_CIRCLE_NUMBER: + case SVX_NUM_NUMBER_UPPER_ZH_TW: + case SVX_NUM_NUMBER_LOWER_ZH: + case SVX_NUM_FULL_WIDTH_ARABIC: { if ( nNumberingType != SVX_NUM_CHAR_SPECIAL ) { @@ -990,6 +995,45 @@ void ParagraphObj::ImplGetNumberingLevel( PPTExBulletProvider& rBuProv, sal_Int1 } } break; + case SVX_NUM_NUMBER_UPPER_ZH : + { + if ( sSuffix.Len() ) + nMappedNumType = 0x110001; // Simplified Chinese with single-byte period. + else + nMappedNumType = 0x100001; // Simplified Chinese. + } + break; + case SVX_NUM_CIRCLE_NUMBER : + { + nMappedNumType = 0x120001; // Double byte circle numbers. + } + break; + case SVX_NUM_NUMBER_UPPER_ZH_TW : + { + if ( sSuffix.Len() ) + nMappedNumType = 0x160001; // Traditional Chinese with single-byte period. + else + nMappedNumType = 0x150001; // Traditional Chinese. + } + break; + case SVX_NUM_NUMBER_LOWER_ZH : + { + if ( sSuffix == String( sal_Unicode(0xff0e)) ) + nMappedNumType = 0x260001; // Japanese with double-byte period. + else if ( sSuffix.Len() ) + nMappedNumType = 0x1B0001; // Japanese/Korean with single-byte period. + else + nMappedNumType = 0x1A0001; // Japanese/Korean. + } + break; + case SVX_NUM_FULL_WIDTH_ARABIC : + { + if ( sSuffix.Len() ) + nMappedNumType = 0x1D0001; // Double-byte Arabic numbers with double-byte period. + else + nMappedNumType = 0x1C0001; // Double-byte Arabic numbers. + } + break; default: break; }
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
