editeng/inc/editeng/svxenum.hxx | 14 ++++++++ filter/source/msfilter/svdfppt.cxx | 57 ++++++++++++++++++++++++++++++++++++ sd/source/filter/eppt/epptso.cxx | 5 +++ sd/source/filter/eppt/pptx-text.cxx | 44 +++++++++++++++++++++++++++ 4 files changed, 120 insertions(+)
New commits: commit ef23b47e887908161d980f3e6f6d321f18acca77 Author: Zhe Wang <wangz...@apache.org> 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 <steve.yin....@gmail.com> Suggested by: Wang Zhe <kingwise...@gmail.com> Found by: Yin Bing <steve.yin....@gmail.com> Review by: Wang Zhe <kingwise...@gmail.com>(cherry picked from commit 39e9cae1ac9b7944c9df0642a193b042a1b68266) Signed-off-by: Fridrich Å trba <fridrich.st...@bluewin.ch> Conflicts: editeng/inc/editeng/svxenum.hxx sd/source/filter/eppt/epptso.cxx Change-Id: Ic8a9406fd1b58e5cec5c5adc28bf0190ccb87315 diff --git a/editeng/inc/editeng/svxenum.hxx b/editeng/inc/editeng/svxenum.hxx index ff751b0..f8e2cd5 100644 --- a/editeng/inc/editeng/svxenum.hxx +++ b/editeng/inc/editeng/svxenum.hxx @@ -211,6 +211,20 @@ enum SvxExtNumType 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_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 ba10637..94bf34b 100644 --- a/filter/source/msfilter/svdfppt.cxx +++ b/filter/source/msfilter/svdfppt.cxx @@ -3531,6 +3531,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 cd20021..49ebdfe 100644 --- a/sd/source/filter/eppt/epptso.cxx +++ b/sd/source/filter/eppt/epptso.cxx @@ -1422,6 +1422,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 6e5d196..4e6ca95 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 : // count from 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 == OUString( 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 libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits