[PATCH libreoffice-4-0] Resolves: #i120773 Numbering lost when saving or opening a p...

Fridrich Strba (via Code Review) gerrit at gerrit.libreoffice.org
Tue Mar 12 16:45:48 PDT 2013


Hi,

I have submitted a patch for review:

    https://gerrit.libreoffice.org/2692

To pull it, you can do:

    git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/92/2692/1

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.aoo at gmail.com>
Suggested by: Wang Zhe <kingwisemmx at gmail.com>
Found by: Yin Bing <steve.yin.aoo at gmail.com>
Review by: Wang Zhe <kingwisemmx at gmail.com>(cherry picked from commit 39e9cae1ac9b7944c9df0642a193b042a1b68266)

Signed-off-by: Fridrich Štrba <fridrich.strba at bluewin.ch>

Conflicts:
	editeng/inc/editeng/svxenum.hxx
	sd/source/filter/eppt/epptso.cxx

Change-Id: Ic8a9406fd1b58e5cec5c5adc28bf0190ccb87315
(cherry picked from commit ef23b47e887908161d980f3e6f6d321f18acca77)
---
M editeng/inc/editeng/svxenum.hxx
M filter/source/msfilter/svdfppt.cxx
M sd/source/filter/eppt/epptso.cxx
M sd/source/filter/eppt/pptx-text.cxx
4 files changed, 121 insertions(+), 1 deletion(-)



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 @@
     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 @@
                 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 @@
                             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 @@
                     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 @@
                                     }
                                 }
                                 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;
                             }

-- 
To view, visit https://gerrit.libreoffice.org/2692
To unsubscribe, visit https://gerrit.libreoffice.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic8a9406fd1b58e5cec5c5adc28bf0190ccb87315
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: libreoffice-4-0
Gerrit-Owner: Fridrich Strba <fridrich at documentfoundation.org>



More information about the LibreOffice mailing list