aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormaho <maho@FreeBSD.org>2003-10-02 14:45:23 +0800
committermaho <maho@FreeBSD.org>2003-10-02 14:45:23 +0800
commit6d5981caf4b6cabfe74c4f8b22bd1f83b2614775 (patch)
treee51b029077e9a5893bc6a76d11de8493f9b54c3f
parent2c3d60b550be0ad514bf9a42ab5c7faf9e492d5b (diff)
downloadfreebsd-ports-graphics-6d5981caf4b6cabfe74c4f8b22bd1f83b2614775.tar.gz
freebsd-ports-graphics-6d5981caf4b6cabfe74c4f8b22bd1f83b2614775.tar.zst
freebsd-ports-graphics-6d5981caf4b6cabfe74c4f8b22bd1f83b2614775.zip
a) add several patches made by Takashi Ono (JCA signed person)
1) To enable handling of MS Word for Windows 95/6.0 CJK Version patch-word6+95-cjkhandling http://www.openoffice.org/issues/show_bug.cgi?id=17498 (target milestone 1.1.1, resolved and fixed) 2) Patch to enable rtf filter handle local language files patch-rtfcjk http://www.openoffice.org/issues/show_bug.cgi?id=17503 (target milestone 2.0, verified and fixed) 3) rtf writing enhancement for CJK patch-wrtrtf http://www.openoffice.org/issues/show_bug.cgi?id=20264 (not confirmed yet) 4) read first section attribute correctly for MS Word for Windows 95/6.0 patch-topsection http://ja.openoffice.org/servlets/ProjectDownloadList?action=download&dlID=312 (IZ is not raized) b) bump portrevision
-rw-r--r--editors/openoffice-1.1-devel/Makefile1
-rw-r--r--editors/openoffice-1.1-devel/files/patch-rtfcjk214
-rw-r--r--editors/openoffice-1.1-devel/files/patch-topsection21
-rw-r--r--editors/openoffice-1.1-devel/files/patch-word6+95-cjkhandling63
-rw-r--r--editors/openoffice-1.1-devel/files/patch-wrtrtf312
-rw-r--r--editors/openoffice-1.1/Makefile1
-rw-r--r--editors/openoffice-1.1/files/patch-rtfcjk214
-rw-r--r--editors/openoffice-1.1/files/patch-topsection21
-rw-r--r--editors/openoffice-1.1/files/patch-word6+95-cjkhandling63
-rw-r--r--editors/openoffice-1.1/files/patch-wrtrtf312
-rw-r--r--editors/openoffice-2.0-devel/Makefile1
-rw-r--r--editors/openoffice-2.0-devel/files/patch-rtfcjk214
-rw-r--r--editors/openoffice-2.0-devel/files/patch-topsection21
-rw-r--r--editors/openoffice-2.0-devel/files/patch-word6+95-cjkhandling63
-rw-r--r--editors/openoffice-2.0-devel/files/patch-wrtrtf312
-rw-r--r--editors/openoffice-3-devel/Makefile1
-rw-r--r--editors/openoffice-3-devel/files/patch-rtfcjk214
-rw-r--r--editors/openoffice-3-devel/files/patch-topsection21
-rw-r--r--editors/openoffice-3-devel/files/patch-word6+95-cjkhandling63
-rw-r--r--editors/openoffice-3-devel/files/patch-wrtrtf312
-rw-r--r--editors/openoffice-3/Makefile1
-rw-r--r--editors/openoffice-3/files/patch-rtfcjk214
-rw-r--r--editors/openoffice-3/files/patch-topsection21
-rw-r--r--editors/openoffice-3/files/patch-word6+95-cjkhandling63
-rw-r--r--editors/openoffice-3/files/patch-wrtrtf312
-rw-r--r--editors/openoffice-devel/Makefile1
-rw-r--r--editors/openoffice-devel/files/patch-rtfcjk214
-rw-r--r--editors/openoffice-devel/files/patch-topsection21
-rw-r--r--editors/openoffice-devel/files/patch-word6+95-cjkhandling63
-rw-r--r--editors/openoffice-devel/files/patch-wrtrtf312
-rw-r--r--editors/openoffice.org-1.1-devel/Makefile1
-rw-r--r--editors/openoffice.org-1.1-devel/files/patch-rtfcjk214
-rw-r--r--editors/openoffice.org-1.1-devel/files/patch-topsection21
-rw-r--r--editors/openoffice.org-1.1-devel/files/patch-word6+95-cjkhandling63
-rw-r--r--editors/openoffice.org-1.1-devel/files/patch-wrtrtf312
-rw-r--r--editors/openoffice.org-1.1/Makefile1
-rw-r--r--editors/openoffice.org-1.1/files/patch-rtfcjk214
-rw-r--r--editors/openoffice.org-1.1/files/patch-topsection21
-rw-r--r--editors/openoffice.org-1.1/files/patch-word6+95-cjkhandling63
-rw-r--r--editors/openoffice.org-1.1/files/patch-wrtrtf312
-rw-r--r--editors/openoffice.org-2-RC/Makefile1
-rw-r--r--editors/openoffice.org-2-RC/files/patch-rtfcjk214
-rw-r--r--editors/openoffice.org-2-RC/files/patch-topsection21
-rw-r--r--editors/openoffice.org-2-RC/files/patch-word6+95-cjkhandling63
-rw-r--r--editors/openoffice.org-2-RC/files/patch-wrtrtf312
-rw-r--r--editors/openoffice.org-2-devel/Makefile1
-rw-r--r--editors/openoffice.org-2-devel/files/patch-rtfcjk214
-rw-r--r--editors/openoffice.org-2-devel/files/patch-topsection21
-rw-r--r--editors/openoffice.org-2-devel/files/patch-word6+95-cjkhandling63
-rw-r--r--editors/openoffice.org-2-devel/files/patch-wrtrtf312
-rw-r--r--editors/openoffice.org-2.0-devel/Makefile1
-rw-r--r--editors/openoffice.org-2.0-devel/files/patch-rtfcjk214
-rw-r--r--editors/openoffice.org-2.0-devel/files/patch-topsection21
-rw-r--r--editors/openoffice.org-2.0-devel/files/patch-word6+95-cjkhandling63
-rw-r--r--editors/openoffice.org-2.0-devel/files/patch-wrtrtf312
-rw-r--r--editors/openoffice.org-2.0/Makefile1
-rw-r--r--editors/openoffice.org-2.0/files/patch-rtfcjk214
-rw-r--r--editors/openoffice.org-2.0/files/patch-topsection21
-rw-r--r--editors/openoffice.org-2.0/files/patch-word6+95-cjkhandling63
-rw-r--r--editors/openoffice.org-2.0/files/patch-wrtrtf312
-rw-r--r--editors/openoffice.org-2/Makefile1
-rw-r--r--editors/openoffice.org-2/files/patch-rtfcjk214
-rw-r--r--editors/openoffice.org-2/files/patch-topsection21
-rw-r--r--editors/openoffice.org-2/files/patch-word6+95-cjkhandling63
-rw-r--r--editors/openoffice.org-2/files/patch-wrtrtf312
-rw-r--r--editors/openoffice.org-3-RC/Makefile1
-rw-r--r--editors/openoffice.org-3-RC/files/patch-rtfcjk214
-rw-r--r--editors/openoffice.org-3-RC/files/patch-topsection21
-rw-r--r--editors/openoffice.org-3-RC/files/patch-word6+95-cjkhandling63
-rw-r--r--editors/openoffice.org-3-RC/files/patch-wrtrtf312
-rw-r--r--editors/openoffice.org-3-devel/Makefile1
-rw-r--r--editors/openoffice.org-3-devel/files/patch-rtfcjk214
-rw-r--r--editors/openoffice.org-3-devel/files/patch-topsection21
-rw-r--r--editors/openoffice.org-3-devel/files/patch-word6+95-cjkhandling63
-rw-r--r--editors/openoffice.org-3-devel/files/patch-wrtrtf312
-rw-r--r--editors/openoffice.org-3/Makefile1
-rw-r--r--editors/openoffice.org-3/files/patch-rtfcjk214
-rw-r--r--editors/openoffice.org-3/files/patch-topsection21
-rw-r--r--editors/openoffice.org-3/files/patch-word6+95-cjkhandling63
-rw-r--r--editors/openoffice.org-3/files/patch-wrtrtf312
-rw-r--r--editors/openoffice.org-vcltesttool/Makefile1
-rw-r--r--editors/openoffice.org-vcltesttool/files/patch-rtfcjk214
-rw-r--r--editors/openoffice.org-vcltesttool/files/patch-topsection21
-rw-r--r--editors/openoffice.org-vcltesttool/files/patch-word6+95-cjkhandling63
-rw-r--r--editors/openoffice.org-vcltesttool/files/patch-wrtrtf312
85 files changed, 10387 insertions, 0 deletions
diff --git a/editors/openoffice-1.1-devel/Makefile b/editors/openoffice-1.1-devel/Makefile
index 68bcf804ab7..dd5d66a9326 100644
--- a/editors/openoffice-1.1-devel/Makefile
+++ b/editors/openoffice-1.1-devel/Makefile
@@ -7,6 +7,7 @@
PORTNAME= openoffice
PORTVERSION= 1.1.0
+PORTREVERSION= 1
CATEGORIES+= editors
MASTER_SITES+= ftp://openofficeorg.secsup.org/pub/software/openoffice/stable/%SUBDIR%/ \
ftp://sunsite.cnlab-switch.ch/mirror/OpenOffice/stable/%SUBDIR%/ \
diff --git a/editors/openoffice-1.1-devel/files/patch-rtfcjk b/editors/openoffice-1.1-devel/files/patch-rtfcjk
new file mode 100644
index 00000000000..2b44f86757f
--- /dev/null
+++ b/editors/openoffice-1.1-devel/files/patch-rtfcjk
@@ -0,0 +1,214 @@
+--- ../svx/source/svrtf/rtfitem.cxx 24 Jun 2003 07:48:56 -0000 1.18
++++ ../svx/source/svrtf/rtfitem.cxx 25 Jul 2003 22:54:24 -0000
+@@ -285,11 +285,20 @@
+ }
+ else
+ {
+- if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType )
++// if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType ) //Takashi Ono for CJK
++ if( LOW_CHARTYPE == eType )
+ {
+ if( *pNormal )
+ {
+ rItem.SetWhich( *pNormal );
++ rSet.Put( rItem );
++ }
++ }
++ else if( HIGH_CHARTYPE == eType )
++ {
++ if( *pCTL )
++ {
++ rItem.SetWhich( *pCTL );
+ rSet.Put( rItem );
+ }
+ }
+--- ../svx/source/svrtf/svxrtf.cxx 19 May 2003 12:30:59 -0000 1.15
++++ ../svx/source/svrtf/svxrtf.cxx 25 Jul 2003 22:54:29 -0000
+@@ -583,8 +583,14 @@
+
+ case RTF_FCHARSET:
+ if( -1 != nTokenValue )
+- pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
+- (BYTE)nTokenValue ) );
++ {
++// pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
++// (BYTE)nTokenValue ) );
++ CharSet nCharSet =
++ rtl_getTextEncodingFromWindowsCharset( (BYTE)nTokenValue );
++ pFont->SetCharSet( nCharSet );
++ SetEncoding( nCharSet ); //Takashi Ono
++ }
+ break;
+
+ case RTF_FPRQ:
+--- ../sw/source/filter/rtf/swparrtf.cxx 4 Jun 2003 10:19:09 -0000 1.28
++++ ../sw/source/filter/rtf/swparrtf.cxx 25 Jul 2003 22:54:37 -0000
+@@ -3231,10 +3231,156 @@
+ SetSwgValues( rCollSet );
+ }
+
++//Takashi Ono for CJK
++String SwRTFParser::XlateFmtColName( const String &rName )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_NONE, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_NONE, RES_NONE, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_LISTS_BEGIN, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++
++ RES_NONE,RES_NONE, RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ RES_POOL_COLLFMT_TYPE nId = RES_NONE;
++
++ for (int i = 0; i < sizeof( stiName ) / sizeof( *stiName ); i++)
++ {
++ if ( rName == String( stiName[i], RTL_TEXTENCODING_MS_1252 ) )
++ {
++ nId = aArr[i];
++ break;
++ }
++ }
++ USHORT nResId;
++ if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
++ nResId = RC_POOLCOLL_TEXT_BEGIN - RES_POOLCOLL_TEXT_BEGIN;
++ else if (RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END)
++ nResId = RC_POOLCOLL_LISTS_BEGIN - RES_POOLCOLL_LISTS_BEGIN;
++ else if (RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END)
++ nResId = RC_POOLCOLL_EXTRA_BEGIN - RES_POOLCOLL_EXTRA_BEGIN;
++ else if (RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END)
++ nResId = RC_POOLCOLL_REGISTER_BEGIN - RES_POOLCOLL_REGISTER_BEGIN;
++ else if (RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END)
++ nResId = RC_POOLCOLL_DOC_BEGIN - RES_POOLCOLL_DOC_BEGIN;
++ else if (RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END)
++ nResId = RC_POOLCOLL_HTML_BEGIN - RES_POOLCOLL_HTML_BEGIN;
++ return String( ResId( nResId + nId, pSwResMgr ) );
++}
++
+ SwTxtFmtColl* SwRTFParser::MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle )
+ {
+- int bCollExist;
+- SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo),
++ int bCollExist;
++// SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo), //Takashi Ono for CJK
++ SwTxtFmtColl* pColl = MakeColl( XlateFmtColName( rStyle.sName ),
++ USHORT(nNo),
+ rStyle.nOutlineNo, bCollExist );
+ aTxtCollTbl.Insert( nNo, pColl );
+
+--- ../sw/source/filter/rtf/swparrtf.hxx 19 May 2003 12:25:34 -0000 1.10
++++ ../sw/source/filter/rtf/swparrtf.hxx 25 Jul 2003 22:54:44 -0000
+@@ -364,6 +364,7 @@
+ void SetStyleAttr( SfxItemSet& rCollSet,
+ const SfxItemSet& rStyleSet,
+ const SfxItemSet& rDerivedSet );
++ String XlateFmtColName( const String &rName ); //Takashi Ono for CJK
+ SwTxtFmtColl* MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ SwCharFmt* MakeCharStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ void MakeStyleTab();
diff --git a/editors/openoffice-1.1-devel/files/patch-topsection b/editors/openoffice-1.1-devel/files/patch-topsection
new file mode 100644
index 00000000000..a332718508d
--- /dev/null
+++ b/editors/openoffice-1.1-devel/files/patch-topsection
@@ -0,0 +1,21 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:55:23 -0000
+@@ -2015,7 +2015,7 @@
+ bool bStartAttr = pPlcxMan->Get(&aRes); // hole Attribut-Pos
+ aRes.nAktCp = rTxtPos; // Akt. Cp-Pos
+
+- if (aRes.nFlags & MAN_MASK_NEW_SEP) // neue Section
++ if ((aRes.nFlags & MAN_MASK_NEW_SEP) || maSectionManager.empty()) // neue Section
+ {
+ ASSERT(pPaM->GetNode()->GetTxtNode(), "Missing txtnode");
+ // PageDesc erzeugen und fuellen
+--- ../sw/source/filter/ww8/ww8par.hxx 30 Jun 2003 15:54:37 -0000 1.115
++++ ../sw/source/filter/ww8/ww8par.hxx 25 Jul 2003 22:55:28 -0000
+@@ -720,6 +720,7 @@
+ short GetPageLeft() const;
+ short GetPageRight() const;
+ short GetPageWidth() const;
++ bool empty() const { return maSegments.empty(); }
+ };
+
+ class wwFrameNamer
diff --git a/editors/openoffice-1.1-devel/files/patch-word6+95-cjkhandling b/editors/openoffice-1.1-devel/files/patch-word6+95-cjkhandling
new file mode 100644
index 00000000000..9a86ffb7da9
--- /dev/null
+++ b/editors/openoffice-1.1-devel/files/patch-word6+95-cjkhandling
@@ -0,0 +1,63 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:54:52 -0000
+@@ -1683,11 +1683,20 @@
+ if (bVer67)
+ {
+ sal_Char aTest[2];
+- aTest[0] = (nUCode & 0xFF00) >> 8;
+- aTest[1] = (nUCode & 0x00FF);
+- String aTemp(aTest, 2, eSrcCharSet);
+- ASSERT(aTemp.Len() == 1, "so much for that theory");
+- *pWork = aTemp.GetChar(0);
++ if (nUCode >= 0x3000)
++ {
++ aTest[0] = (nUCode & 0xFF00) >> 8;
++ aTest[1] = (nUCode & 0x00FF);
++ String aTemp(aTest, 2, eSrcCharSet);
++ ASSERT(aTemp.Len() == 1, "so much for that theory");
++ *pWork = aTemp.GetChar(0);
++ }
++ else
++ {
++ aTest[0] = (nUCode & 0x00FF);
++ String aTemp(aTest, 1, eSrcCharSet);
++ *pWork = aTemp.GetChar(0);
++ }
+ }
+ else
+ *pWork = nUCode;
+@@ -3188,7 +3197,8 @@
+ {
+ case 6:
+ case 7:
+- if ( (0xa5dc != nMagic) && (0xa699 != nMagic) )
++ //if ( (0xa5dc != nMagic) && (0xa699 != nMagic) ) //Takashi Ono
++ if ( (0xa5dc != nMagic) && ( (0xa697 > nMagic) || (0xa699 < nMagic) ) )
+ {
+ //JP 06.05.99: teste auf eigenen 97-Fake!
+ if (pStg && 0xa5ec == nMagic)
+--- ../sw/source/filter/ww8/ww8par6.cxx 20 Jun 2003 09:38:07 -0000 1.138
++++ ../sw/source/filter/ww8/ww8par6.cxx 25 Jul 2003 22:55:05 -0000
+@@ -3373,9 +3373,11 @@
+ nId = RES_CHRATR_CTL_FONT;
+ break;
+ case 93:
++ case 111:
+ case 0x4a4f:
+ nId = RES_CHRATR_FONT;
+ break;
++ case 112:
+ case 0x4a50:
+ nId = RES_CHRATR_CJK_FONT;
+ break;
+@@ -4984,8 +4986,8 @@
+ //percentage to grow hps short
+ {110, (FNReadRecord)0}, //"sprmCCondHyhen", chp.ysri
+ //ysri short
+- {111, (FNReadRecord)0}, //"??111",
+- {112, (FNReadRecord)0}, //"??112",
++ {111, &SwWW8ImplReader::Read_FontCode}, //ww7 font
++ {112, &SwWW8ImplReader::Read_FontCode}, //ww7 CJK font
+ {113, &SwWW8ImplReader::Read_FontCode}, //ww7 rtl font
+ {114, (FNReadRecord)0}, //"??114",
+ {115, &SwWW8ImplReader::Read_TxtColor}, //ww7 rtl colour ?
diff --git a/editors/openoffice-1.1-devel/files/patch-wrtrtf b/editors/openoffice-1.1-devel/files/patch-wrtrtf
new file mode 100644
index 00000000000..7381dc61cd6
--- /dev/null
+++ b/editors/openoffice-1.1-devel/files/patch-wrtrtf
@@ -0,0 +1,312 @@
+--- ../svtools/source/svrtf/rtfout.cxx.orig 2000-10-16 18:13:46.000000000 +0900
++++ ../svtools/source/svrtf/rtfout.cxx 2003-09-23 12:41:00.000000000 +0900
+@@ -124,8 +124,9 @@
+ default:
+ {
+ sal_Unicode cCh = c;
+- c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
+- if( !c )
++ rtl::OString buff( &c, 1, eDestEnc, RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE|RTL_UNICODETOTEXT_FLAGS_INVALID_IGNORE );
++// c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
++ if( !buff.getLength() )
+ {
+ // then write as unicode - character
+ if( 0xFF < cCh )
+@@ -141,8 +142,8 @@
+ break;
+ }
+
+- if( !bWriteHelpFile )
+- switch( c )
++ if( !bWriteHelpFile && buff.getLength() == 1 )
++ switch( BYTE(buff[0]) )
+ {
+ #ifdef MAC
+ case 0xa5: pStr = sRTF_BULLET; break;
+@@ -164,6 +165,9 @@
+ // MAC
+ }
+ if( !pStr )
++ for (int i = 0; i < buff.getLength(); ++i)
++ {
++ c = BYTE(buff[i]);
+ switch ( c )
+ {
+ case '\\':
+@@ -186,6 +190,7 @@
+ }
+ break;
+ }
++ }
+ }
+ break;
+ }
+--- ../sw/source/filter/rtf/wrtrtf.cxx.orig 2003-04-18 00:00:28.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.cxx 2003-09-23 23:33:08.000000000 +0900
+@@ -184,6 +184,12 @@
+ #ifndef _CHARFMT_HXX
+ #include <charfmt.hxx>
+ #endif
++#ifndef _POOLFMT_HXX
++#include <poolfmt.hxx>
++#endif
++#ifndef _SWSTYLENAMEMAPPER_HXX
++#include <SwStyleNameMapper.hxx>
++#endif
+ #ifndef _SECTION_HXX //autogen
+ #include <section.hxx>
+ #endif
+@@ -215,7 +221,7 @@
+ SV_IMPL_VARARR( RTFColorTbl, Color )
+
+
+-SwRTFWriter::SwRTFWriter( const String& rFltName )
++SwRTFWriter::SwRTFWriter( const String& rFltName ) : eCurrentCharSet(DEF_ENCODING)
+ {
+ // schreibe Win-RTF-HelpFileFmt
+ bWriteHelpFmt = 'W' == rFltName.GetChar( 0 );
+@@ -893,14 +899,14 @@
+ // as alternative name. Because WinWord can't match each
+ // font to a UniCode font. So the CJK texts are shown as
+ // empty rectangles ;-(.
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ OutComment( rWrt, sRTF_FALT) << ' ';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, eChrSet,
+ rWrt.bWriteHelpFmt ) << '}';
+ }
+ else
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ rWrt.Strm() << ";}";
+ }
+@@ -932,6 +938,139 @@
+
+
+
++//Takashi Ono for CJK
++const rtl::OUString SwRTFWriter::XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_POOLCOLL_TEXT_IDENT, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_POOLCOLL_LABEL, RES_POOLCOLL_TOX_ILLUSH, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_POOLCOLL_TOX_AUTHORITIESH, RES_NONE, RES_NONE,
++ RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_NUM_LEVEL1,
++
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_NUM_LEVEL2, RES_POOLCOLL_NUM_LEVEL3, RES_POOLCOLL_NUM_LEVEL4, RES_POOLCOLL_NUM_LEVEL5,
++
++ RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ sal_uInt16 idcol = ::SwStyleNameMapper::GetPoolIdFromUIName( rName, eFlags );
++
++ for (int i = 0; i < sizeof( aArr ) / sizeof( *aArr ); i++)
++ {
++ if ( idcol == aArr[i] )
++ {
++ return rtl::OUString::createFromAscii(stiName[i]);
++ }
++ }
++ return ::SwStyleNameMapper::GetProgName( idcol, String() );
++}
++
++
++
+ void SwRTFWriter::OutRTFStyleTab()
+ {
+ // das 0-Style ist das Default, wird nie ausgegeben !!
+@@ -988,7 +1127,7 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pColl->GetName(), DEF_ENCODING,
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pColl->GetName(), GET_POOLID_TXTCOLL ), DEF_ENCODING,
+ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+@@ -1015,8 +1154,8 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pFmt->GetName(), DEF_ENCODING,
+- bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pFmt->GetName(), GET_POOLID_CHRFMT ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+ Strm() << '}';
+@@ -1217,8 +1356,8 @@
+ break;
+ Strm() << sRTF_PGDSCNXT;
+ OutULong( i ) << ' ';
+- RTFOutFuncs::Out_String( Strm(), rPageDesc.GetName(),
+- DEF_ENCODING, bWriteHelpFmt ) << ";}";
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( rPageDesc.GetName(), GET_POOLID_PAGEDESC ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}";
+ }
+ Strm() << '}' << SwRTFWriter::sNewLine;
+ bOutPageDesc = bOutPageDescTbl = FALSE;
+--- ../sw/source/filter/rtf/wrtrtf.hxx.orig 2002-07-31 19:18:50.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.hxx 2003-09-23 23:37:50.000000000 +0900
+@@ -117,6 +117,7 @@
+ USHORT nAktFlyPos; // Index auf das naechste "FlyFrmFmt"
+ void OutRTFColorTab();
+ void OutRTFFontTab();
++ const rtl::OUString XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags );
+ void OutRTFStyleTab();
+ void OutRTFListTab();
+
+@@ -136,6 +137,8 @@
+ USHORT nBkmkTabPos; // akt. Position in der Bookmark-Tabelle
+ USHORT nCurScript; // actual scripttype
+
++ rtl_TextEncoding eCurrentCharSet;
++
+ #if defined(MAC) || defined(UNX)
+ static const sal_Char sNewLine; // nur \012 oder \015
+ #else
+--- ../sw/source/filter/rtf/rtfatr.cxx.orig 2003-05-19 21:24:46.000000000 +0900
++++ ../sw/source/filter/rtf/rtfatr.cxx 2003-09-23 23:45:52.000000000 +0900
+@@ -1319,7 +1319,7 @@
+ sURL = aTmp.GetFull();
+ }
+ */ rWrt.Strm() << '\"';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ sURL = aTmp.GetMark();
+ }
+@@ -1328,7 +1328,7 @@
+ {
+ rWrt.Strm() << "\\\\l \"";
+ sURL.Erase( 0, 1 );
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ }
+
+@@ -1609,7 +1609,7 @@
+
+ if( nStrPos != nEnde )
+ RTFOutFuncs::Out_Char( rWrt.Strm(), rStr.GetChar( nStrPos ),
+- DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
++ rRTFWrt.eCurrentCharSet, rRTFWrt.bWriteHelpFmt );
+ }
+
+ // noch eine schliesende Klammer da ??
+@@ -2188,6 +2188,7 @@
+ const sal_Char* pCmd = bAssoc ? sRTF_AF : sRTF_F;
+ rWrt.Strm() << pCmd;
+ rWrt.OutULong(rRTFWrt.GetId(rFont));
++ rRTFWrt.eCurrentCharSet = rFont.GetCharSet();
+ }
+ return rWrt;
+ }
diff --git a/editors/openoffice-1.1/Makefile b/editors/openoffice-1.1/Makefile
index 68bcf804ab7..dd5d66a9326 100644
--- a/editors/openoffice-1.1/Makefile
+++ b/editors/openoffice-1.1/Makefile
@@ -7,6 +7,7 @@
PORTNAME= openoffice
PORTVERSION= 1.1.0
+PORTREVERSION= 1
CATEGORIES+= editors
MASTER_SITES+= ftp://openofficeorg.secsup.org/pub/software/openoffice/stable/%SUBDIR%/ \
ftp://sunsite.cnlab-switch.ch/mirror/OpenOffice/stable/%SUBDIR%/ \
diff --git a/editors/openoffice-1.1/files/patch-rtfcjk b/editors/openoffice-1.1/files/patch-rtfcjk
new file mode 100644
index 00000000000..2b44f86757f
--- /dev/null
+++ b/editors/openoffice-1.1/files/patch-rtfcjk
@@ -0,0 +1,214 @@
+--- ../svx/source/svrtf/rtfitem.cxx 24 Jun 2003 07:48:56 -0000 1.18
++++ ../svx/source/svrtf/rtfitem.cxx 25 Jul 2003 22:54:24 -0000
+@@ -285,11 +285,20 @@
+ }
+ else
+ {
+- if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType )
++// if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType ) //Takashi Ono for CJK
++ if( LOW_CHARTYPE == eType )
+ {
+ if( *pNormal )
+ {
+ rItem.SetWhich( *pNormal );
++ rSet.Put( rItem );
++ }
++ }
++ else if( HIGH_CHARTYPE == eType )
++ {
++ if( *pCTL )
++ {
++ rItem.SetWhich( *pCTL );
+ rSet.Put( rItem );
+ }
+ }
+--- ../svx/source/svrtf/svxrtf.cxx 19 May 2003 12:30:59 -0000 1.15
++++ ../svx/source/svrtf/svxrtf.cxx 25 Jul 2003 22:54:29 -0000
+@@ -583,8 +583,14 @@
+
+ case RTF_FCHARSET:
+ if( -1 != nTokenValue )
+- pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
+- (BYTE)nTokenValue ) );
++ {
++// pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
++// (BYTE)nTokenValue ) );
++ CharSet nCharSet =
++ rtl_getTextEncodingFromWindowsCharset( (BYTE)nTokenValue );
++ pFont->SetCharSet( nCharSet );
++ SetEncoding( nCharSet ); //Takashi Ono
++ }
+ break;
+
+ case RTF_FPRQ:
+--- ../sw/source/filter/rtf/swparrtf.cxx 4 Jun 2003 10:19:09 -0000 1.28
++++ ../sw/source/filter/rtf/swparrtf.cxx 25 Jul 2003 22:54:37 -0000
+@@ -3231,10 +3231,156 @@
+ SetSwgValues( rCollSet );
+ }
+
++//Takashi Ono for CJK
++String SwRTFParser::XlateFmtColName( const String &rName )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_NONE, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_NONE, RES_NONE, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_LISTS_BEGIN, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++
++ RES_NONE,RES_NONE, RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ RES_POOL_COLLFMT_TYPE nId = RES_NONE;
++
++ for (int i = 0; i < sizeof( stiName ) / sizeof( *stiName ); i++)
++ {
++ if ( rName == String( stiName[i], RTL_TEXTENCODING_MS_1252 ) )
++ {
++ nId = aArr[i];
++ break;
++ }
++ }
++ USHORT nResId;
++ if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
++ nResId = RC_POOLCOLL_TEXT_BEGIN - RES_POOLCOLL_TEXT_BEGIN;
++ else if (RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END)
++ nResId = RC_POOLCOLL_LISTS_BEGIN - RES_POOLCOLL_LISTS_BEGIN;
++ else if (RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END)
++ nResId = RC_POOLCOLL_EXTRA_BEGIN - RES_POOLCOLL_EXTRA_BEGIN;
++ else if (RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END)
++ nResId = RC_POOLCOLL_REGISTER_BEGIN - RES_POOLCOLL_REGISTER_BEGIN;
++ else if (RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END)
++ nResId = RC_POOLCOLL_DOC_BEGIN - RES_POOLCOLL_DOC_BEGIN;
++ else if (RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END)
++ nResId = RC_POOLCOLL_HTML_BEGIN - RES_POOLCOLL_HTML_BEGIN;
++ return String( ResId( nResId + nId, pSwResMgr ) );
++}
++
+ SwTxtFmtColl* SwRTFParser::MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle )
+ {
+- int bCollExist;
+- SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo),
++ int bCollExist;
++// SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo), //Takashi Ono for CJK
++ SwTxtFmtColl* pColl = MakeColl( XlateFmtColName( rStyle.sName ),
++ USHORT(nNo),
+ rStyle.nOutlineNo, bCollExist );
+ aTxtCollTbl.Insert( nNo, pColl );
+
+--- ../sw/source/filter/rtf/swparrtf.hxx 19 May 2003 12:25:34 -0000 1.10
++++ ../sw/source/filter/rtf/swparrtf.hxx 25 Jul 2003 22:54:44 -0000
+@@ -364,6 +364,7 @@
+ void SetStyleAttr( SfxItemSet& rCollSet,
+ const SfxItemSet& rStyleSet,
+ const SfxItemSet& rDerivedSet );
++ String XlateFmtColName( const String &rName ); //Takashi Ono for CJK
+ SwTxtFmtColl* MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ SwCharFmt* MakeCharStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ void MakeStyleTab();
diff --git a/editors/openoffice-1.1/files/patch-topsection b/editors/openoffice-1.1/files/patch-topsection
new file mode 100644
index 00000000000..a332718508d
--- /dev/null
+++ b/editors/openoffice-1.1/files/patch-topsection
@@ -0,0 +1,21 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:55:23 -0000
+@@ -2015,7 +2015,7 @@
+ bool bStartAttr = pPlcxMan->Get(&aRes); // hole Attribut-Pos
+ aRes.nAktCp = rTxtPos; // Akt. Cp-Pos
+
+- if (aRes.nFlags & MAN_MASK_NEW_SEP) // neue Section
++ if ((aRes.nFlags & MAN_MASK_NEW_SEP) || maSectionManager.empty()) // neue Section
+ {
+ ASSERT(pPaM->GetNode()->GetTxtNode(), "Missing txtnode");
+ // PageDesc erzeugen und fuellen
+--- ../sw/source/filter/ww8/ww8par.hxx 30 Jun 2003 15:54:37 -0000 1.115
++++ ../sw/source/filter/ww8/ww8par.hxx 25 Jul 2003 22:55:28 -0000
+@@ -720,6 +720,7 @@
+ short GetPageLeft() const;
+ short GetPageRight() const;
+ short GetPageWidth() const;
++ bool empty() const { return maSegments.empty(); }
+ };
+
+ class wwFrameNamer
diff --git a/editors/openoffice-1.1/files/patch-word6+95-cjkhandling b/editors/openoffice-1.1/files/patch-word6+95-cjkhandling
new file mode 100644
index 00000000000..9a86ffb7da9
--- /dev/null
+++ b/editors/openoffice-1.1/files/patch-word6+95-cjkhandling
@@ -0,0 +1,63 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:54:52 -0000
+@@ -1683,11 +1683,20 @@
+ if (bVer67)
+ {
+ sal_Char aTest[2];
+- aTest[0] = (nUCode & 0xFF00) >> 8;
+- aTest[1] = (nUCode & 0x00FF);
+- String aTemp(aTest, 2, eSrcCharSet);
+- ASSERT(aTemp.Len() == 1, "so much for that theory");
+- *pWork = aTemp.GetChar(0);
++ if (nUCode >= 0x3000)
++ {
++ aTest[0] = (nUCode & 0xFF00) >> 8;
++ aTest[1] = (nUCode & 0x00FF);
++ String aTemp(aTest, 2, eSrcCharSet);
++ ASSERT(aTemp.Len() == 1, "so much for that theory");
++ *pWork = aTemp.GetChar(0);
++ }
++ else
++ {
++ aTest[0] = (nUCode & 0x00FF);
++ String aTemp(aTest, 1, eSrcCharSet);
++ *pWork = aTemp.GetChar(0);
++ }
+ }
+ else
+ *pWork = nUCode;
+@@ -3188,7 +3197,8 @@
+ {
+ case 6:
+ case 7:
+- if ( (0xa5dc != nMagic) && (0xa699 != nMagic) )
++ //if ( (0xa5dc != nMagic) && (0xa699 != nMagic) ) //Takashi Ono
++ if ( (0xa5dc != nMagic) && ( (0xa697 > nMagic) || (0xa699 < nMagic) ) )
+ {
+ //JP 06.05.99: teste auf eigenen 97-Fake!
+ if (pStg && 0xa5ec == nMagic)
+--- ../sw/source/filter/ww8/ww8par6.cxx 20 Jun 2003 09:38:07 -0000 1.138
++++ ../sw/source/filter/ww8/ww8par6.cxx 25 Jul 2003 22:55:05 -0000
+@@ -3373,9 +3373,11 @@
+ nId = RES_CHRATR_CTL_FONT;
+ break;
+ case 93:
++ case 111:
+ case 0x4a4f:
+ nId = RES_CHRATR_FONT;
+ break;
++ case 112:
+ case 0x4a50:
+ nId = RES_CHRATR_CJK_FONT;
+ break;
+@@ -4984,8 +4986,8 @@
+ //percentage to grow hps short
+ {110, (FNReadRecord)0}, //"sprmCCondHyhen", chp.ysri
+ //ysri short
+- {111, (FNReadRecord)0}, //"??111",
+- {112, (FNReadRecord)0}, //"??112",
++ {111, &SwWW8ImplReader::Read_FontCode}, //ww7 font
++ {112, &SwWW8ImplReader::Read_FontCode}, //ww7 CJK font
+ {113, &SwWW8ImplReader::Read_FontCode}, //ww7 rtl font
+ {114, (FNReadRecord)0}, //"??114",
+ {115, &SwWW8ImplReader::Read_TxtColor}, //ww7 rtl colour ?
diff --git a/editors/openoffice-1.1/files/patch-wrtrtf b/editors/openoffice-1.1/files/patch-wrtrtf
new file mode 100644
index 00000000000..7381dc61cd6
--- /dev/null
+++ b/editors/openoffice-1.1/files/patch-wrtrtf
@@ -0,0 +1,312 @@
+--- ../svtools/source/svrtf/rtfout.cxx.orig 2000-10-16 18:13:46.000000000 +0900
++++ ../svtools/source/svrtf/rtfout.cxx 2003-09-23 12:41:00.000000000 +0900
+@@ -124,8 +124,9 @@
+ default:
+ {
+ sal_Unicode cCh = c;
+- c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
+- if( !c )
++ rtl::OString buff( &c, 1, eDestEnc, RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE|RTL_UNICODETOTEXT_FLAGS_INVALID_IGNORE );
++// c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
++ if( !buff.getLength() )
+ {
+ // then write as unicode - character
+ if( 0xFF < cCh )
+@@ -141,8 +142,8 @@
+ break;
+ }
+
+- if( !bWriteHelpFile )
+- switch( c )
++ if( !bWriteHelpFile && buff.getLength() == 1 )
++ switch( BYTE(buff[0]) )
+ {
+ #ifdef MAC
+ case 0xa5: pStr = sRTF_BULLET; break;
+@@ -164,6 +165,9 @@
+ // MAC
+ }
+ if( !pStr )
++ for (int i = 0; i < buff.getLength(); ++i)
++ {
++ c = BYTE(buff[i]);
+ switch ( c )
+ {
+ case '\\':
+@@ -186,6 +190,7 @@
+ }
+ break;
+ }
++ }
+ }
+ break;
+ }
+--- ../sw/source/filter/rtf/wrtrtf.cxx.orig 2003-04-18 00:00:28.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.cxx 2003-09-23 23:33:08.000000000 +0900
+@@ -184,6 +184,12 @@
+ #ifndef _CHARFMT_HXX
+ #include <charfmt.hxx>
+ #endif
++#ifndef _POOLFMT_HXX
++#include <poolfmt.hxx>
++#endif
++#ifndef _SWSTYLENAMEMAPPER_HXX
++#include <SwStyleNameMapper.hxx>
++#endif
+ #ifndef _SECTION_HXX //autogen
+ #include <section.hxx>
+ #endif
+@@ -215,7 +221,7 @@
+ SV_IMPL_VARARR( RTFColorTbl, Color )
+
+
+-SwRTFWriter::SwRTFWriter( const String& rFltName )
++SwRTFWriter::SwRTFWriter( const String& rFltName ) : eCurrentCharSet(DEF_ENCODING)
+ {
+ // schreibe Win-RTF-HelpFileFmt
+ bWriteHelpFmt = 'W' == rFltName.GetChar( 0 );
+@@ -893,14 +899,14 @@
+ // as alternative name. Because WinWord can't match each
+ // font to a UniCode font. So the CJK texts are shown as
+ // empty rectangles ;-(.
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ OutComment( rWrt, sRTF_FALT) << ' ';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, eChrSet,
+ rWrt.bWriteHelpFmt ) << '}';
+ }
+ else
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ rWrt.Strm() << ";}";
+ }
+@@ -932,6 +938,139 @@
+
+
+
++//Takashi Ono for CJK
++const rtl::OUString SwRTFWriter::XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_POOLCOLL_TEXT_IDENT, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_POOLCOLL_LABEL, RES_POOLCOLL_TOX_ILLUSH, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_POOLCOLL_TOX_AUTHORITIESH, RES_NONE, RES_NONE,
++ RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_NUM_LEVEL1,
++
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_NUM_LEVEL2, RES_POOLCOLL_NUM_LEVEL3, RES_POOLCOLL_NUM_LEVEL4, RES_POOLCOLL_NUM_LEVEL5,
++
++ RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ sal_uInt16 idcol = ::SwStyleNameMapper::GetPoolIdFromUIName( rName, eFlags );
++
++ for (int i = 0; i < sizeof( aArr ) / sizeof( *aArr ); i++)
++ {
++ if ( idcol == aArr[i] )
++ {
++ return rtl::OUString::createFromAscii(stiName[i]);
++ }
++ }
++ return ::SwStyleNameMapper::GetProgName( idcol, String() );
++}
++
++
++
+ void SwRTFWriter::OutRTFStyleTab()
+ {
+ // das 0-Style ist das Default, wird nie ausgegeben !!
+@@ -988,7 +1127,7 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pColl->GetName(), DEF_ENCODING,
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pColl->GetName(), GET_POOLID_TXTCOLL ), DEF_ENCODING,
+ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+@@ -1015,8 +1154,8 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pFmt->GetName(), DEF_ENCODING,
+- bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pFmt->GetName(), GET_POOLID_CHRFMT ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+ Strm() << '}';
+@@ -1217,8 +1356,8 @@
+ break;
+ Strm() << sRTF_PGDSCNXT;
+ OutULong( i ) << ' ';
+- RTFOutFuncs::Out_String( Strm(), rPageDesc.GetName(),
+- DEF_ENCODING, bWriteHelpFmt ) << ";}";
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( rPageDesc.GetName(), GET_POOLID_PAGEDESC ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}";
+ }
+ Strm() << '}' << SwRTFWriter::sNewLine;
+ bOutPageDesc = bOutPageDescTbl = FALSE;
+--- ../sw/source/filter/rtf/wrtrtf.hxx.orig 2002-07-31 19:18:50.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.hxx 2003-09-23 23:37:50.000000000 +0900
+@@ -117,6 +117,7 @@
+ USHORT nAktFlyPos; // Index auf das naechste "FlyFrmFmt"
+ void OutRTFColorTab();
+ void OutRTFFontTab();
++ const rtl::OUString XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags );
+ void OutRTFStyleTab();
+ void OutRTFListTab();
+
+@@ -136,6 +137,8 @@
+ USHORT nBkmkTabPos; // akt. Position in der Bookmark-Tabelle
+ USHORT nCurScript; // actual scripttype
+
++ rtl_TextEncoding eCurrentCharSet;
++
+ #if defined(MAC) || defined(UNX)
+ static const sal_Char sNewLine; // nur \012 oder \015
+ #else
+--- ../sw/source/filter/rtf/rtfatr.cxx.orig 2003-05-19 21:24:46.000000000 +0900
++++ ../sw/source/filter/rtf/rtfatr.cxx 2003-09-23 23:45:52.000000000 +0900
+@@ -1319,7 +1319,7 @@
+ sURL = aTmp.GetFull();
+ }
+ */ rWrt.Strm() << '\"';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ sURL = aTmp.GetMark();
+ }
+@@ -1328,7 +1328,7 @@
+ {
+ rWrt.Strm() << "\\\\l \"";
+ sURL.Erase( 0, 1 );
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ }
+
+@@ -1609,7 +1609,7 @@
+
+ if( nStrPos != nEnde )
+ RTFOutFuncs::Out_Char( rWrt.Strm(), rStr.GetChar( nStrPos ),
+- DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
++ rRTFWrt.eCurrentCharSet, rRTFWrt.bWriteHelpFmt );
+ }
+
+ // noch eine schliesende Klammer da ??
+@@ -2188,6 +2188,7 @@
+ const sal_Char* pCmd = bAssoc ? sRTF_AF : sRTF_F;
+ rWrt.Strm() << pCmd;
+ rWrt.OutULong(rRTFWrt.GetId(rFont));
++ rRTFWrt.eCurrentCharSet = rFont.GetCharSet();
+ }
+ return rWrt;
+ }
diff --git a/editors/openoffice-2.0-devel/Makefile b/editors/openoffice-2.0-devel/Makefile
index 68bcf804ab7..dd5d66a9326 100644
--- a/editors/openoffice-2.0-devel/Makefile
+++ b/editors/openoffice-2.0-devel/Makefile
@@ -7,6 +7,7 @@
PORTNAME= openoffice
PORTVERSION= 1.1.0
+PORTREVERSION= 1
CATEGORIES+= editors
MASTER_SITES+= ftp://openofficeorg.secsup.org/pub/software/openoffice/stable/%SUBDIR%/ \
ftp://sunsite.cnlab-switch.ch/mirror/OpenOffice/stable/%SUBDIR%/ \
diff --git a/editors/openoffice-2.0-devel/files/patch-rtfcjk b/editors/openoffice-2.0-devel/files/patch-rtfcjk
new file mode 100644
index 00000000000..2b44f86757f
--- /dev/null
+++ b/editors/openoffice-2.0-devel/files/patch-rtfcjk
@@ -0,0 +1,214 @@
+--- ../svx/source/svrtf/rtfitem.cxx 24 Jun 2003 07:48:56 -0000 1.18
++++ ../svx/source/svrtf/rtfitem.cxx 25 Jul 2003 22:54:24 -0000
+@@ -285,11 +285,20 @@
+ }
+ else
+ {
+- if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType )
++// if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType ) //Takashi Ono for CJK
++ if( LOW_CHARTYPE == eType )
+ {
+ if( *pNormal )
+ {
+ rItem.SetWhich( *pNormal );
++ rSet.Put( rItem );
++ }
++ }
++ else if( HIGH_CHARTYPE == eType )
++ {
++ if( *pCTL )
++ {
++ rItem.SetWhich( *pCTL );
+ rSet.Put( rItem );
+ }
+ }
+--- ../svx/source/svrtf/svxrtf.cxx 19 May 2003 12:30:59 -0000 1.15
++++ ../svx/source/svrtf/svxrtf.cxx 25 Jul 2003 22:54:29 -0000
+@@ -583,8 +583,14 @@
+
+ case RTF_FCHARSET:
+ if( -1 != nTokenValue )
+- pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
+- (BYTE)nTokenValue ) );
++ {
++// pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
++// (BYTE)nTokenValue ) );
++ CharSet nCharSet =
++ rtl_getTextEncodingFromWindowsCharset( (BYTE)nTokenValue );
++ pFont->SetCharSet( nCharSet );
++ SetEncoding( nCharSet ); //Takashi Ono
++ }
+ break;
+
+ case RTF_FPRQ:
+--- ../sw/source/filter/rtf/swparrtf.cxx 4 Jun 2003 10:19:09 -0000 1.28
++++ ../sw/source/filter/rtf/swparrtf.cxx 25 Jul 2003 22:54:37 -0000
+@@ -3231,10 +3231,156 @@
+ SetSwgValues( rCollSet );
+ }
+
++//Takashi Ono for CJK
++String SwRTFParser::XlateFmtColName( const String &rName )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_NONE, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_NONE, RES_NONE, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_LISTS_BEGIN, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++
++ RES_NONE,RES_NONE, RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ RES_POOL_COLLFMT_TYPE nId = RES_NONE;
++
++ for (int i = 0; i < sizeof( stiName ) / sizeof( *stiName ); i++)
++ {
++ if ( rName == String( stiName[i], RTL_TEXTENCODING_MS_1252 ) )
++ {
++ nId = aArr[i];
++ break;
++ }
++ }
++ USHORT nResId;
++ if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
++ nResId = RC_POOLCOLL_TEXT_BEGIN - RES_POOLCOLL_TEXT_BEGIN;
++ else if (RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END)
++ nResId = RC_POOLCOLL_LISTS_BEGIN - RES_POOLCOLL_LISTS_BEGIN;
++ else if (RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END)
++ nResId = RC_POOLCOLL_EXTRA_BEGIN - RES_POOLCOLL_EXTRA_BEGIN;
++ else if (RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END)
++ nResId = RC_POOLCOLL_REGISTER_BEGIN - RES_POOLCOLL_REGISTER_BEGIN;
++ else if (RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END)
++ nResId = RC_POOLCOLL_DOC_BEGIN - RES_POOLCOLL_DOC_BEGIN;
++ else if (RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END)
++ nResId = RC_POOLCOLL_HTML_BEGIN - RES_POOLCOLL_HTML_BEGIN;
++ return String( ResId( nResId + nId, pSwResMgr ) );
++}
++
+ SwTxtFmtColl* SwRTFParser::MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle )
+ {
+- int bCollExist;
+- SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo),
++ int bCollExist;
++// SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo), //Takashi Ono for CJK
++ SwTxtFmtColl* pColl = MakeColl( XlateFmtColName( rStyle.sName ),
++ USHORT(nNo),
+ rStyle.nOutlineNo, bCollExist );
+ aTxtCollTbl.Insert( nNo, pColl );
+
+--- ../sw/source/filter/rtf/swparrtf.hxx 19 May 2003 12:25:34 -0000 1.10
++++ ../sw/source/filter/rtf/swparrtf.hxx 25 Jul 2003 22:54:44 -0000
+@@ -364,6 +364,7 @@
+ void SetStyleAttr( SfxItemSet& rCollSet,
+ const SfxItemSet& rStyleSet,
+ const SfxItemSet& rDerivedSet );
++ String XlateFmtColName( const String &rName ); //Takashi Ono for CJK
+ SwTxtFmtColl* MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ SwCharFmt* MakeCharStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ void MakeStyleTab();
diff --git a/editors/openoffice-2.0-devel/files/patch-topsection b/editors/openoffice-2.0-devel/files/patch-topsection
new file mode 100644
index 00000000000..a332718508d
--- /dev/null
+++ b/editors/openoffice-2.0-devel/files/patch-topsection
@@ -0,0 +1,21 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:55:23 -0000
+@@ -2015,7 +2015,7 @@
+ bool bStartAttr = pPlcxMan->Get(&aRes); // hole Attribut-Pos
+ aRes.nAktCp = rTxtPos; // Akt. Cp-Pos
+
+- if (aRes.nFlags & MAN_MASK_NEW_SEP) // neue Section
++ if ((aRes.nFlags & MAN_MASK_NEW_SEP) || maSectionManager.empty()) // neue Section
+ {
+ ASSERT(pPaM->GetNode()->GetTxtNode(), "Missing txtnode");
+ // PageDesc erzeugen und fuellen
+--- ../sw/source/filter/ww8/ww8par.hxx 30 Jun 2003 15:54:37 -0000 1.115
++++ ../sw/source/filter/ww8/ww8par.hxx 25 Jul 2003 22:55:28 -0000
+@@ -720,6 +720,7 @@
+ short GetPageLeft() const;
+ short GetPageRight() const;
+ short GetPageWidth() const;
++ bool empty() const { return maSegments.empty(); }
+ };
+
+ class wwFrameNamer
diff --git a/editors/openoffice-2.0-devel/files/patch-word6+95-cjkhandling b/editors/openoffice-2.0-devel/files/patch-word6+95-cjkhandling
new file mode 100644
index 00000000000..9a86ffb7da9
--- /dev/null
+++ b/editors/openoffice-2.0-devel/files/patch-word6+95-cjkhandling
@@ -0,0 +1,63 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:54:52 -0000
+@@ -1683,11 +1683,20 @@
+ if (bVer67)
+ {
+ sal_Char aTest[2];
+- aTest[0] = (nUCode & 0xFF00) >> 8;
+- aTest[1] = (nUCode & 0x00FF);
+- String aTemp(aTest, 2, eSrcCharSet);
+- ASSERT(aTemp.Len() == 1, "so much for that theory");
+- *pWork = aTemp.GetChar(0);
++ if (nUCode >= 0x3000)
++ {
++ aTest[0] = (nUCode & 0xFF00) >> 8;
++ aTest[1] = (nUCode & 0x00FF);
++ String aTemp(aTest, 2, eSrcCharSet);
++ ASSERT(aTemp.Len() == 1, "so much for that theory");
++ *pWork = aTemp.GetChar(0);
++ }
++ else
++ {
++ aTest[0] = (nUCode & 0x00FF);
++ String aTemp(aTest, 1, eSrcCharSet);
++ *pWork = aTemp.GetChar(0);
++ }
+ }
+ else
+ *pWork = nUCode;
+@@ -3188,7 +3197,8 @@
+ {
+ case 6:
+ case 7:
+- if ( (0xa5dc != nMagic) && (0xa699 != nMagic) )
++ //if ( (0xa5dc != nMagic) && (0xa699 != nMagic) ) //Takashi Ono
++ if ( (0xa5dc != nMagic) && ( (0xa697 > nMagic) || (0xa699 < nMagic) ) )
+ {
+ //JP 06.05.99: teste auf eigenen 97-Fake!
+ if (pStg && 0xa5ec == nMagic)
+--- ../sw/source/filter/ww8/ww8par6.cxx 20 Jun 2003 09:38:07 -0000 1.138
++++ ../sw/source/filter/ww8/ww8par6.cxx 25 Jul 2003 22:55:05 -0000
+@@ -3373,9 +3373,11 @@
+ nId = RES_CHRATR_CTL_FONT;
+ break;
+ case 93:
++ case 111:
+ case 0x4a4f:
+ nId = RES_CHRATR_FONT;
+ break;
++ case 112:
+ case 0x4a50:
+ nId = RES_CHRATR_CJK_FONT;
+ break;
+@@ -4984,8 +4986,8 @@
+ //percentage to grow hps short
+ {110, (FNReadRecord)0}, //"sprmCCondHyhen", chp.ysri
+ //ysri short
+- {111, (FNReadRecord)0}, //"??111",
+- {112, (FNReadRecord)0}, //"??112",
++ {111, &SwWW8ImplReader::Read_FontCode}, //ww7 font
++ {112, &SwWW8ImplReader::Read_FontCode}, //ww7 CJK font
+ {113, &SwWW8ImplReader::Read_FontCode}, //ww7 rtl font
+ {114, (FNReadRecord)0}, //"??114",
+ {115, &SwWW8ImplReader::Read_TxtColor}, //ww7 rtl colour ?
diff --git a/editors/openoffice-2.0-devel/files/patch-wrtrtf b/editors/openoffice-2.0-devel/files/patch-wrtrtf
new file mode 100644
index 00000000000..7381dc61cd6
--- /dev/null
+++ b/editors/openoffice-2.0-devel/files/patch-wrtrtf
@@ -0,0 +1,312 @@
+--- ../svtools/source/svrtf/rtfout.cxx.orig 2000-10-16 18:13:46.000000000 +0900
++++ ../svtools/source/svrtf/rtfout.cxx 2003-09-23 12:41:00.000000000 +0900
+@@ -124,8 +124,9 @@
+ default:
+ {
+ sal_Unicode cCh = c;
+- c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
+- if( !c )
++ rtl::OString buff( &c, 1, eDestEnc, RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE|RTL_UNICODETOTEXT_FLAGS_INVALID_IGNORE );
++// c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
++ if( !buff.getLength() )
+ {
+ // then write as unicode - character
+ if( 0xFF < cCh )
+@@ -141,8 +142,8 @@
+ break;
+ }
+
+- if( !bWriteHelpFile )
+- switch( c )
++ if( !bWriteHelpFile && buff.getLength() == 1 )
++ switch( BYTE(buff[0]) )
+ {
+ #ifdef MAC
+ case 0xa5: pStr = sRTF_BULLET; break;
+@@ -164,6 +165,9 @@
+ // MAC
+ }
+ if( !pStr )
++ for (int i = 0; i < buff.getLength(); ++i)
++ {
++ c = BYTE(buff[i]);
+ switch ( c )
+ {
+ case '\\':
+@@ -186,6 +190,7 @@
+ }
+ break;
+ }
++ }
+ }
+ break;
+ }
+--- ../sw/source/filter/rtf/wrtrtf.cxx.orig 2003-04-18 00:00:28.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.cxx 2003-09-23 23:33:08.000000000 +0900
+@@ -184,6 +184,12 @@
+ #ifndef _CHARFMT_HXX
+ #include <charfmt.hxx>
+ #endif
++#ifndef _POOLFMT_HXX
++#include <poolfmt.hxx>
++#endif
++#ifndef _SWSTYLENAMEMAPPER_HXX
++#include <SwStyleNameMapper.hxx>
++#endif
+ #ifndef _SECTION_HXX //autogen
+ #include <section.hxx>
+ #endif
+@@ -215,7 +221,7 @@
+ SV_IMPL_VARARR( RTFColorTbl, Color )
+
+
+-SwRTFWriter::SwRTFWriter( const String& rFltName )
++SwRTFWriter::SwRTFWriter( const String& rFltName ) : eCurrentCharSet(DEF_ENCODING)
+ {
+ // schreibe Win-RTF-HelpFileFmt
+ bWriteHelpFmt = 'W' == rFltName.GetChar( 0 );
+@@ -893,14 +899,14 @@
+ // as alternative name. Because WinWord can't match each
+ // font to a UniCode font. So the CJK texts are shown as
+ // empty rectangles ;-(.
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ OutComment( rWrt, sRTF_FALT) << ' ';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, eChrSet,
+ rWrt.bWriteHelpFmt ) << '}';
+ }
+ else
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ rWrt.Strm() << ";}";
+ }
+@@ -932,6 +938,139 @@
+
+
+
++//Takashi Ono for CJK
++const rtl::OUString SwRTFWriter::XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_POOLCOLL_TEXT_IDENT, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_POOLCOLL_LABEL, RES_POOLCOLL_TOX_ILLUSH, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_POOLCOLL_TOX_AUTHORITIESH, RES_NONE, RES_NONE,
++ RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_NUM_LEVEL1,
++
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_NUM_LEVEL2, RES_POOLCOLL_NUM_LEVEL3, RES_POOLCOLL_NUM_LEVEL4, RES_POOLCOLL_NUM_LEVEL5,
++
++ RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ sal_uInt16 idcol = ::SwStyleNameMapper::GetPoolIdFromUIName( rName, eFlags );
++
++ for (int i = 0; i < sizeof( aArr ) / sizeof( *aArr ); i++)
++ {
++ if ( idcol == aArr[i] )
++ {
++ return rtl::OUString::createFromAscii(stiName[i]);
++ }
++ }
++ return ::SwStyleNameMapper::GetProgName( idcol, String() );
++}
++
++
++
+ void SwRTFWriter::OutRTFStyleTab()
+ {
+ // das 0-Style ist das Default, wird nie ausgegeben !!
+@@ -988,7 +1127,7 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pColl->GetName(), DEF_ENCODING,
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pColl->GetName(), GET_POOLID_TXTCOLL ), DEF_ENCODING,
+ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+@@ -1015,8 +1154,8 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pFmt->GetName(), DEF_ENCODING,
+- bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pFmt->GetName(), GET_POOLID_CHRFMT ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+ Strm() << '}';
+@@ -1217,8 +1356,8 @@
+ break;
+ Strm() << sRTF_PGDSCNXT;
+ OutULong( i ) << ' ';
+- RTFOutFuncs::Out_String( Strm(), rPageDesc.GetName(),
+- DEF_ENCODING, bWriteHelpFmt ) << ";}";
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( rPageDesc.GetName(), GET_POOLID_PAGEDESC ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}";
+ }
+ Strm() << '}' << SwRTFWriter::sNewLine;
+ bOutPageDesc = bOutPageDescTbl = FALSE;
+--- ../sw/source/filter/rtf/wrtrtf.hxx.orig 2002-07-31 19:18:50.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.hxx 2003-09-23 23:37:50.000000000 +0900
+@@ -117,6 +117,7 @@
+ USHORT nAktFlyPos; // Index auf das naechste "FlyFrmFmt"
+ void OutRTFColorTab();
+ void OutRTFFontTab();
++ const rtl::OUString XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags );
+ void OutRTFStyleTab();
+ void OutRTFListTab();
+
+@@ -136,6 +137,8 @@
+ USHORT nBkmkTabPos; // akt. Position in der Bookmark-Tabelle
+ USHORT nCurScript; // actual scripttype
+
++ rtl_TextEncoding eCurrentCharSet;
++
+ #if defined(MAC) || defined(UNX)
+ static const sal_Char sNewLine; // nur \012 oder \015
+ #else
+--- ../sw/source/filter/rtf/rtfatr.cxx.orig 2003-05-19 21:24:46.000000000 +0900
++++ ../sw/source/filter/rtf/rtfatr.cxx 2003-09-23 23:45:52.000000000 +0900
+@@ -1319,7 +1319,7 @@
+ sURL = aTmp.GetFull();
+ }
+ */ rWrt.Strm() << '\"';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ sURL = aTmp.GetMark();
+ }
+@@ -1328,7 +1328,7 @@
+ {
+ rWrt.Strm() << "\\\\l \"";
+ sURL.Erase( 0, 1 );
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ }
+
+@@ -1609,7 +1609,7 @@
+
+ if( nStrPos != nEnde )
+ RTFOutFuncs::Out_Char( rWrt.Strm(), rStr.GetChar( nStrPos ),
+- DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
++ rRTFWrt.eCurrentCharSet, rRTFWrt.bWriteHelpFmt );
+ }
+
+ // noch eine schliesende Klammer da ??
+@@ -2188,6 +2188,7 @@
+ const sal_Char* pCmd = bAssoc ? sRTF_AF : sRTF_F;
+ rWrt.Strm() << pCmd;
+ rWrt.OutULong(rRTFWrt.GetId(rFont));
++ rRTFWrt.eCurrentCharSet = rFont.GetCharSet();
+ }
+ return rWrt;
+ }
diff --git a/editors/openoffice-3-devel/Makefile b/editors/openoffice-3-devel/Makefile
index 68bcf804ab7..dd5d66a9326 100644
--- a/editors/openoffice-3-devel/Makefile
+++ b/editors/openoffice-3-devel/Makefile
@@ -7,6 +7,7 @@
PORTNAME= openoffice
PORTVERSION= 1.1.0
+PORTREVERSION= 1
CATEGORIES+= editors
MASTER_SITES+= ftp://openofficeorg.secsup.org/pub/software/openoffice/stable/%SUBDIR%/ \
ftp://sunsite.cnlab-switch.ch/mirror/OpenOffice/stable/%SUBDIR%/ \
diff --git a/editors/openoffice-3-devel/files/patch-rtfcjk b/editors/openoffice-3-devel/files/patch-rtfcjk
new file mode 100644
index 00000000000..2b44f86757f
--- /dev/null
+++ b/editors/openoffice-3-devel/files/patch-rtfcjk
@@ -0,0 +1,214 @@
+--- ../svx/source/svrtf/rtfitem.cxx 24 Jun 2003 07:48:56 -0000 1.18
++++ ../svx/source/svrtf/rtfitem.cxx 25 Jul 2003 22:54:24 -0000
+@@ -285,11 +285,20 @@
+ }
+ else
+ {
+- if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType )
++// if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType ) //Takashi Ono for CJK
++ if( LOW_CHARTYPE == eType )
+ {
+ if( *pNormal )
+ {
+ rItem.SetWhich( *pNormal );
++ rSet.Put( rItem );
++ }
++ }
++ else if( HIGH_CHARTYPE == eType )
++ {
++ if( *pCTL )
++ {
++ rItem.SetWhich( *pCTL );
+ rSet.Put( rItem );
+ }
+ }
+--- ../svx/source/svrtf/svxrtf.cxx 19 May 2003 12:30:59 -0000 1.15
++++ ../svx/source/svrtf/svxrtf.cxx 25 Jul 2003 22:54:29 -0000
+@@ -583,8 +583,14 @@
+
+ case RTF_FCHARSET:
+ if( -1 != nTokenValue )
+- pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
+- (BYTE)nTokenValue ) );
++ {
++// pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
++// (BYTE)nTokenValue ) );
++ CharSet nCharSet =
++ rtl_getTextEncodingFromWindowsCharset( (BYTE)nTokenValue );
++ pFont->SetCharSet( nCharSet );
++ SetEncoding( nCharSet ); //Takashi Ono
++ }
+ break;
+
+ case RTF_FPRQ:
+--- ../sw/source/filter/rtf/swparrtf.cxx 4 Jun 2003 10:19:09 -0000 1.28
++++ ../sw/source/filter/rtf/swparrtf.cxx 25 Jul 2003 22:54:37 -0000
+@@ -3231,10 +3231,156 @@
+ SetSwgValues( rCollSet );
+ }
+
++//Takashi Ono for CJK
++String SwRTFParser::XlateFmtColName( const String &rName )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_NONE, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_NONE, RES_NONE, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_LISTS_BEGIN, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++
++ RES_NONE,RES_NONE, RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ RES_POOL_COLLFMT_TYPE nId = RES_NONE;
++
++ for (int i = 0; i < sizeof( stiName ) / sizeof( *stiName ); i++)
++ {
++ if ( rName == String( stiName[i], RTL_TEXTENCODING_MS_1252 ) )
++ {
++ nId = aArr[i];
++ break;
++ }
++ }
++ USHORT nResId;
++ if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
++ nResId = RC_POOLCOLL_TEXT_BEGIN - RES_POOLCOLL_TEXT_BEGIN;
++ else if (RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END)
++ nResId = RC_POOLCOLL_LISTS_BEGIN - RES_POOLCOLL_LISTS_BEGIN;
++ else if (RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END)
++ nResId = RC_POOLCOLL_EXTRA_BEGIN - RES_POOLCOLL_EXTRA_BEGIN;
++ else if (RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END)
++ nResId = RC_POOLCOLL_REGISTER_BEGIN - RES_POOLCOLL_REGISTER_BEGIN;
++ else if (RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END)
++ nResId = RC_POOLCOLL_DOC_BEGIN - RES_POOLCOLL_DOC_BEGIN;
++ else if (RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END)
++ nResId = RC_POOLCOLL_HTML_BEGIN - RES_POOLCOLL_HTML_BEGIN;
++ return String( ResId( nResId + nId, pSwResMgr ) );
++}
++
+ SwTxtFmtColl* SwRTFParser::MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle )
+ {
+- int bCollExist;
+- SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo),
++ int bCollExist;
++// SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo), //Takashi Ono for CJK
++ SwTxtFmtColl* pColl = MakeColl( XlateFmtColName( rStyle.sName ),
++ USHORT(nNo),
+ rStyle.nOutlineNo, bCollExist );
+ aTxtCollTbl.Insert( nNo, pColl );
+
+--- ../sw/source/filter/rtf/swparrtf.hxx 19 May 2003 12:25:34 -0000 1.10
++++ ../sw/source/filter/rtf/swparrtf.hxx 25 Jul 2003 22:54:44 -0000
+@@ -364,6 +364,7 @@
+ void SetStyleAttr( SfxItemSet& rCollSet,
+ const SfxItemSet& rStyleSet,
+ const SfxItemSet& rDerivedSet );
++ String XlateFmtColName( const String &rName ); //Takashi Ono for CJK
+ SwTxtFmtColl* MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ SwCharFmt* MakeCharStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ void MakeStyleTab();
diff --git a/editors/openoffice-3-devel/files/patch-topsection b/editors/openoffice-3-devel/files/patch-topsection
new file mode 100644
index 00000000000..a332718508d
--- /dev/null
+++ b/editors/openoffice-3-devel/files/patch-topsection
@@ -0,0 +1,21 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:55:23 -0000
+@@ -2015,7 +2015,7 @@
+ bool bStartAttr = pPlcxMan->Get(&aRes); // hole Attribut-Pos
+ aRes.nAktCp = rTxtPos; // Akt. Cp-Pos
+
+- if (aRes.nFlags & MAN_MASK_NEW_SEP) // neue Section
++ if ((aRes.nFlags & MAN_MASK_NEW_SEP) || maSectionManager.empty()) // neue Section
+ {
+ ASSERT(pPaM->GetNode()->GetTxtNode(), "Missing txtnode");
+ // PageDesc erzeugen und fuellen
+--- ../sw/source/filter/ww8/ww8par.hxx 30 Jun 2003 15:54:37 -0000 1.115
++++ ../sw/source/filter/ww8/ww8par.hxx 25 Jul 2003 22:55:28 -0000
+@@ -720,6 +720,7 @@
+ short GetPageLeft() const;
+ short GetPageRight() const;
+ short GetPageWidth() const;
++ bool empty() const { return maSegments.empty(); }
+ };
+
+ class wwFrameNamer
diff --git a/editors/openoffice-3-devel/files/patch-word6+95-cjkhandling b/editors/openoffice-3-devel/files/patch-word6+95-cjkhandling
new file mode 100644
index 00000000000..9a86ffb7da9
--- /dev/null
+++ b/editors/openoffice-3-devel/files/patch-word6+95-cjkhandling
@@ -0,0 +1,63 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:54:52 -0000
+@@ -1683,11 +1683,20 @@
+ if (bVer67)
+ {
+ sal_Char aTest[2];
+- aTest[0] = (nUCode & 0xFF00) >> 8;
+- aTest[1] = (nUCode & 0x00FF);
+- String aTemp(aTest, 2, eSrcCharSet);
+- ASSERT(aTemp.Len() == 1, "so much for that theory");
+- *pWork = aTemp.GetChar(0);
++ if (nUCode >= 0x3000)
++ {
++ aTest[0] = (nUCode & 0xFF00) >> 8;
++ aTest[1] = (nUCode & 0x00FF);
++ String aTemp(aTest, 2, eSrcCharSet);
++ ASSERT(aTemp.Len() == 1, "so much for that theory");
++ *pWork = aTemp.GetChar(0);
++ }
++ else
++ {
++ aTest[0] = (nUCode & 0x00FF);
++ String aTemp(aTest, 1, eSrcCharSet);
++ *pWork = aTemp.GetChar(0);
++ }
+ }
+ else
+ *pWork = nUCode;
+@@ -3188,7 +3197,8 @@
+ {
+ case 6:
+ case 7:
+- if ( (0xa5dc != nMagic) && (0xa699 != nMagic) )
++ //if ( (0xa5dc != nMagic) && (0xa699 != nMagic) ) //Takashi Ono
++ if ( (0xa5dc != nMagic) && ( (0xa697 > nMagic) || (0xa699 < nMagic) ) )
+ {
+ //JP 06.05.99: teste auf eigenen 97-Fake!
+ if (pStg && 0xa5ec == nMagic)
+--- ../sw/source/filter/ww8/ww8par6.cxx 20 Jun 2003 09:38:07 -0000 1.138
++++ ../sw/source/filter/ww8/ww8par6.cxx 25 Jul 2003 22:55:05 -0000
+@@ -3373,9 +3373,11 @@
+ nId = RES_CHRATR_CTL_FONT;
+ break;
+ case 93:
++ case 111:
+ case 0x4a4f:
+ nId = RES_CHRATR_FONT;
+ break;
++ case 112:
+ case 0x4a50:
+ nId = RES_CHRATR_CJK_FONT;
+ break;
+@@ -4984,8 +4986,8 @@
+ //percentage to grow hps short
+ {110, (FNReadRecord)0}, //"sprmCCondHyhen", chp.ysri
+ //ysri short
+- {111, (FNReadRecord)0}, //"??111",
+- {112, (FNReadRecord)0}, //"??112",
++ {111, &SwWW8ImplReader::Read_FontCode}, //ww7 font
++ {112, &SwWW8ImplReader::Read_FontCode}, //ww7 CJK font
+ {113, &SwWW8ImplReader::Read_FontCode}, //ww7 rtl font
+ {114, (FNReadRecord)0}, //"??114",
+ {115, &SwWW8ImplReader::Read_TxtColor}, //ww7 rtl colour ?
diff --git a/editors/openoffice-3-devel/files/patch-wrtrtf b/editors/openoffice-3-devel/files/patch-wrtrtf
new file mode 100644
index 00000000000..7381dc61cd6
--- /dev/null
+++ b/editors/openoffice-3-devel/files/patch-wrtrtf
@@ -0,0 +1,312 @@
+--- ../svtools/source/svrtf/rtfout.cxx.orig 2000-10-16 18:13:46.000000000 +0900
++++ ../svtools/source/svrtf/rtfout.cxx 2003-09-23 12:41:00.000000000 +0900
+@@ -124,8 +124,9 @@
+ default:
+ {
+ sal_Unicode cCh = c;
+- c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
+- if( !c )
++ rtl::OString buff( &c, 1, eDestEnc, RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE|RTL_UNICODETOTEXT_FLAGS_INVALID_IGNORE );
++// c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
++ if( !buff.getLength() )
+ {
+ // then write as unicode - character
+ if( 0xFF < cCh )
+@@ -141,8 +142,8 @@
+ break;
+ }
+
+- if( !bWriteHelpFile )
+- switch( c )
++ if( !bWriteHelpFile && buff.getLength() == 1 )
++ switch( BYTE(buff[0]) )
+ {
+ #ifdef MAC
+ case 0xa5: pStr = sRTF_BULLET; break;
+@@ -164,6 +165,9 @@
+ // MAC
+ }
+ if( !pStr )
++ for (int i = 0; i < buff.getLength(); ++i)
++ {
++ c = BYTE(buff[i]);
+ switch ( c )
+ {
+ case '\\':
+@@ -186,6 +190,7 @@
+ }
+ break;
+ }
++ }
+ }
+ break;
+ }
+--- ../sw/source/filter/rtf/wrtrtf.cxx.orig 2003-04-18 00:00:28.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.cxx 2003-09-23 23:33:08.000000000 +0900
+@@ -184,6 +184,12 @@
+ #ifndef _CHARFMT_HXX
+ #include <charfmt.hxx>
+ #endif
++#ifndef _POOLFMT_HXX
++#include <poolfmt.hxx>
++#endif
++#ifndef _SWSTYLENAMEMAPPER_HXX
++#include <SwStyleNameMapper.hxx>
++#endif
+ #ifndef _SECTION_HXX //autogen
+ #include <section.hxx>
+ #endif
+@@ -215,7 +221,7 @@
+ SV_IMPL_VARARR( RTFColorTbl, Color )
+
+
+-SwRTFWriter::SwRTFWriter( const String& rFltName )
++SwRTFWriter::SwRTFWriter( const String& rFltName ) : eCurrentCharSet(DEF_ENCODING)
+ {
+ // schreibe Win-RTF-HelpFileFmt
+ bWriteHelpFmt = 'W' == rFltName.GetChar( 0 );
+@@ -893,14 +899,14 @@
+ // as alternative name. Because WinWord can't match each
+ // font to a UniCode font. So the CJK texts are shown as
+ // empty rectangles ;-(.
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ OutComment( rWrt, sRTF_FALT) << ' ';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, eChrSet,
+ rWrt.bWriteHelpFmt ) << '}';
+ }
+ else
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ rWrt.Strm() << ";}";
+ }
+@@ -932,6 +938,139 @@
+
+
+
++//Takashi Ono for CJK
++const rtl::OUString SwRTFWriter::XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_POOLCOLL_TEXT_IDENT, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_POOLCOLL_LABEL, RES_POOLCOLL_TOX_ILLUSH, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_POOLCOLL_TOX_AUTHORITIESH, RES_NONE, RES_NONE,
++ RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_NUM_LEVEL1,
++
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_NUM_LEVEL2, RES_POOLCOLL_NUM_LEVEL3, RES_POOLCOLL_NUM_LEVEL4, RES_POOLCOLL_NUM_LEVEL5,
++
++ RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ sal_uInt16 idcol = ::SwStyleNameMapper::GetPoolIdFromUIName( rName, eFlags );
++
++ for (int i = 0; i < sizeof( aArr ) / sizeof( *aArr ); i++)
++ {
++ if ( idcol == aArr[i] )
++ {
++ return rtl::OUString::createFromAscii(stiName[i]);
++ }
++ }
++ return ::SwStyleNameMapper::GetProgName( idcol, String() );
++}
++
++
++
+ void SwRTFWriter::OutRTFStyleTab()
+ {
+ // das 0-Style ist das Default, wird nie ausgegeben !!
+@@ -988,7 +1127,7 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pColl->GetName(), DEF_ENCODING,
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pColl->GetName(), GET_POOLID_TXTCOLL ), DEF_ENCODING,
+ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+@@ -1015,8 +1154,8 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pFmt->GetName(), DEF_ENCODING,
+- bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pFmt->GetName(), GET_POOLID_CHRFMT ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+ Strm() << '}';
+@@ -1217,8 +1356,8 @@
+ break;
+ Strm() << sRTF_PGDSCNXT;
+ OutULong( i ) << ' ';
+- RTFOutFuncs::Out_String( Strm(), rPageDesc.GetName(),
+- DEF_ENCODING, bWriteHelpFmt ) << ";}";
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( rPageDesc.GetName(), GET_POOLID_PAGEDESC ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}";
+ }
+ Strm() << '}' << SwRTFWriter::sNewLine;
+ bOutPageDesc = bOutPageDescTbl = FALSE;
+--- ../sw/source/filter/rtf/wrtrtf.hxx.orig 2002-07-31 19:18:50.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.hxx 2003-09-23 23:37:50.000000000 +0900
+@@ -117,6 +117,7 @@
+ USHORT nAktFlyPos; // Index auf das naechste "FlyFrmFmt"
+ void OutRTFColorTab();
+ void OutRTFFontTab();
++ const rtl::OUString XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags );
+ void OutRTFStyleTab();
+ void OutRTFListTab();
+
+@@ -136,6 +137,8 @@
+ USHORT nBkmkTabPos; // akt. Position in der Bookmark-Tabelle
+ USHORT nCurScript; // actual scripttype
+
++ rtl_TextEncoding eCurrentCharSet;
++
+ #if defined(MAC) || defined(UNX)
+ static const sal_Char sNewLine; // nur \012 oder \015
+ #else
+--- ../sw/source/filter/rtf/rtfatr.cxx.orig 2003-05-19 21:24:46.000000000 +0900
++++ ../sw/source/filter/rtf/rtfatr.cxx 2003-09-23 23:45:52.000000000 +0900
+@@ -1319,7 +1319,7 @@
+ sURL = aTmp.GetFull();
+ }
+ */ rWrt.Strm() << '\"';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ sURL = aTmp.GetMark();
+ }
+@@ -1328,7 +1328,7 @@
+ {
+ rWrt.Strm() << "\\\\l \"";
+ sURL.Erase( 0, 1 );
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ }
+
+@@ -1609,7 +1609,7 @@
+
+ if( nStrPos != nEnde )
+ RTFOutFuncs::Out_Char( rWrt.Strm(), rStr.GetChar( nStrPos ),
+- DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
++ rRTFWrt.eCurrentCharSet, rRTFWrt.bWriteHelpFmt );
+ }
+
+ // noch eine schliesende Klammer da ??
+@@ -2188,6 +2188,7 @@
+ const sal_Char* pCmd = bAssoc ? sRTF_AF : sRTF_F;
+ rWrt.Strm() << pCmd;
+ rWrt.OutULong(rRTFWrt.GetId(rFont));
++ rRTFWrt.eCurrentCharSet = rFont.GetCharSet();
+ }
+ return rWrt;
+ }
diff --git a/editors/openoffice-3/Makefile b/editors/openoffice-3/Makefile
index 68bcf804ab7..dd5d66a9326 100644
--- a/editors/openoffice-3/Makefile
+++ b/editors/openoffice-3/Makefile
@@ -7,6 +7,7 @@
PORTNAME= openoffice
PORTVERSION= 1.1.0
+PORTREVERSION= 1
CATEGORIES+= editors
MASTER_SITES+= ftp://openofficeorg.secsup.org/pub/software/openoffice/stable/%SUBDIR%/ \
ftp://sunsite.cnlab-switch.ch/mirror/OpenOffice/stable/%SUBDIR%/ \
diff --git a/editors/openoffice-3/files/patch-rtfcjk b/editors/openoffice-3/files/patch-rtfcjk
new file mode 100644
index 00000000000..2b44f86757f
--- /dev/null
+++ b/editors/openoffice-3/files/patch-rtfcjk
@@ -0,0 +1,214 @@
+--- ../svx/source/svrtf/rtfitem.cxx 24 Jun 2003 07:48:56 -0000 1.18
++++ ../svx/source/svrtf/rtfitem.cxx 25 Jul 2003 22:54:24 -0000
+@@ -285,11 +285,20 @@
+ }
+ else
+ {
+- if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType )
++// if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType ) //Takashi Ono for CJK
++ if( LOW_CHARTYPE == eType )
+ {
+ if( *pNormal )
+ {
+ rItem.SetWhich( *pNormal );
++ rSet.Put( rItem );
++ }
++ }
++ else if( HIGH_CHARTYPE == eType )
++ {
++ if( *pCTL )
++ {
++ rItem.SetWhich( *pCTL );
+ rSet.Put( rItem );
+ }
+ }
+--- ../svx/source/svrtf/svxrtf.cxx 19 May 2003 12:30:59 -0000 1.15
++++ ../svx/source/svrtf/svxrtf.cxx 25 Jul 2003 22:54:29 -0000
+@@ -583,8 +583,14 @@
+
+ case RTF_FCHARSET:
+ if( -1 != nTokenValue )
+- pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
+- (BYTE)nTokenValue ) );
++ {
++// pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
++// (BYTE)nTokenValue ) );
++ CharSet nCharSet =
++ rtl_getTextEncodingFromWindowsCharset( (BYTE)nTokenValue );
++ pFont->SetCharSet( nCharSet );
++ SetEncoding( nCharSet ); //Takashi Ono
++ }
+ break;
+
+ case RTF_FPRQ:
+--- ../sw/source/filter/rtf/swparrtf.cxx 4 Jun 2003 10:19:09 -0000 1.28
++++ ../sw/source/filter/rtf/swparrtf.cxx 25 Jul 2003 22:54:37 -0000
+@@ -3231,10 +3231,156 @@
+ SetSwgValues( rCollSet );
+ }
+
++//Takashi Ono for CJK
++String SwRTFParser::XlateFmtColName( const String &rName )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_NONE, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_NONE, RES_NONE, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_LISTS_BEGIN, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++
++ RES_NONE,RES_NONE, RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ RES_POOL_COLLFMT_TYPE nId = RES_NONE;
++
++ for (int i = 0; i < sizeof( stiName ) / sizeof( *stiName ); i++)
++ {
++ if ( rName == String( stiName[i], RTL_TEXTENCODING_MS_1252 ) )
++ {
++ nId = aArr[i];
++ break;
++ }
++ }
++ USHORT nResId;
++ if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
++ nResId = RC_POOLCOLL_TEXT_BEGIN - RES_POOLCOLL_TEXT_BEGIN;
++ else if (RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END)
++ nResId = RC_POOLCOLL_LISTS_BEGIN - RES_POOLCOLL_LISTS_BEGIN;
++ else if (RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END)
++ nResId = RC_POOLCOLL_EXTRA_BEGIN - RES_POOLCOLL_EXTRA_BEGIN;
++ else if (RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END)
++ nResId = RC_POOLCOLL_REGISTER_BEGIN - RES_POOLCOLL_REGISTER_BEGIN;
++ else if (RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END)
++ nResId = RC_POOLCOLL_DOC_BEGIN - RES_POOLCOLL_DOC_BEGIN;
++ else if (RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END)
++ nResId = RC_POOLCOLL_HTML_BEGIN - RES_POOLCOLL_HTML_BEGIN;
++ return String( ResId( nResId + nId, pSwResMgr ) );
++}
++
+ SwTxtFmtColl* SwRTFParser::MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle )
+ {
+- int bCollExist;
+- SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo),
++ int bCollExist;
++// SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo), //Takashi Ono for CJK
++ SwTxtFmtColl* pColl = MakeColl( XlateFmtColName( rStyle.sName ),
++ USHORT(nNo),
+ rStyle.nOutlineNo, bCollExist );
+ aTxtCollTbl.Insert( nNo, pColl );
+
+--- ../sw/source/filter/rtf/swparrtf.hxx 19 May 2003 12:25:34 -0000 1.10
++++ ../sw/source/filter/rtf/swparrtf.hxx 25 Jul 2003 22:54:44 -0000
+@@ -364,6 +364,7 @@
+ void SetStyleAttr( SfxItemSet& rCollSet,
+ const SfxItemSet& rStyleSet,
+ const SfxItemSet& rDerivedSet );
++ String XlateFmtColName( const String &rName ); //Takashi Ono for CJK
+ SwTxtFmtColl* MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ SwCharFmt* MakeCharStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ void MakeStyleTab();
diff --git a/editors/openoffice-3/files/patch-topsection b/editors/openoffice-3/files/patch-topsection
new file mode 100644
index 00000000000..a332718508d
--- /dev/null
+++ b/editors/openoffice-3/files/patch-topsection
@@ -0,0 +1,21 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:55:23 -0000
+@@ -2015,7 +2015,7 @@
+ bool bStartAttr = pPlcxMan->Get(&aRes); // hole Attribut-Pos
+ aRes.nAktCp = rTxtPos; // Akt. Cp-Pos
+
+- if (aRes.nFlags & MAN_MASK_NEW_SEP) // neue Section
++ if ((aRes.nFlags & MAN_MASK_NEW_SEP) || maSectionManager.empty()) // neue Section
+ {
+ ASSERT(pPaM->GetNode()->GetTxtNode(), "Missing txtnode");
+ // PageDesc erzeugen und fuellen
+--- ../sw/source/filter/ww8/ww8par.hxx 30 Jun 2003 15:54:37 -0000 1.115
++++ ../sw/source/filter/ww8/ww8par.hxx 25 Jul 2003 22:55:28 -0000
+@@ -720,6 +720,7 @@
+ short GetPageLeft() const;
+ short GetPageRight() const;
+ short GetPageWidth() const;
++ bool empty() const { return maSegments.empty(); }
+ };
+
+ class wwFrameNamer
diff --git a/editors/openoffice-3/files/patch-word6+95-cjkhandling b/editors/openoffice-3/files/patch-word6+95-cjkhandling
new file mode 100644
index 00000000000..9a86ffb7da9
--- /dev/null
+++ b/editors/openoffice-3/files/patch-word6+95-cjkhandling
@@ -0,0 +1,63 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:54:52 -0000
+@@ -1683,11 +1683,20 @@
+ if (bVer67)
+ {
+ sal_Char aTest[2];
+- aTest[0] = (nUCode & 0xFF00) >> 8;
+- aTest[1] = (nUCode & 0x00FF);
+- String aTemp(aTest, 2, eSrcCharSet);
+- ASSERT(aTemp.Len() == 1, "so much for that theory");
+- *pWork = aTemp.GetChar(0);
++ if (nUCode >= 0x3000)
++ {
++ aTest[0] = (nUCode & 0xFF00) >> 8;
++ aTest[1] = (nUCode & 0x00FF);
++ String aTemp(aTest, 2, eSrcCharSet);
++ ASSERT(aTemp.Len() == 1, "so much for that theory");
++ *pWork = aTemp.GetChar(0);
++ }
++ else
++ {
++ aTest[0] = (nUCode & 0x00FF);
++ String aTemp(aTest, 1, eSrcCharSet);
++ *pWork = aTemp.GetChar(0);
++ }
+ }
+ else
+ *pWork = nUCode;
+@@ -3188,7 +3197,8 @@
+ {
+ case 6:
+ case 7:
+- if ( (0xa5dc != nMagic) && (0xa699 != nMagic) )
++ //if ( (0xa5dc != nMagic) && (0xa699 != nMagic) ) //Takashi Ono
++ if ( (0xa5dc != nMagic) && ( (0xa697 > nMagic) || (0xa699 < nMagic) ) )
+ {
+ //JP 06.05.99: teste auf eigenen 97-Fake!
+ if (pStg && 0xa5ec == nMagic)
+--- ../sw/source/filter/ww8/ww8par6.cxx 20 Jun 2003 09:38:07 -0000 1.138
++++ ../sw/source/filter/ww8/ww8par6.cxx 25 Jul 2003 22:55:05 -0000
+@@ -3373,9 +3373,11 @@
+ nId = RES_CHRATR_CTL_FONT;
+ break;
+ case 93:
++ case 111:
+ case 0x4a4f:
+ nId = RES_CHRATR_FONT;
+ break;
++ case 112:
+ case 0x4a50:
+ nId = RES_CHRATR_CJK_FONT;
+ break;
+@@ -4984,8 +4986,8 @@
+ //percentage to grow hps short
+ {110, (FNReadRecord)0}, //"sprmCCondHyhen", chp.ysri
+ //ysri short
+- {111, (FNReadRecord)0}, //"??111",
+- {112, (FNReadRecord)0}, //"??112",
++ {111, &SwWW8ImplReader::Read_FontCode}, //ww7 font
++ {112, &SwWW8ImplReader::Read_FontCode}, //ww7 CJK font
+ {113, &SwWW8ImplReader::Read_FontCode}, //ww7 rtl font
+ {114, (FNReadRecord)0}, //"??114",
+ {115, &SwWW8ImplReader::Read_TxtColor}, //ww7 rtl colour ?
diff --git a/editors/openoffice-3/files/patch-wrtrtf b/editors/openoffice-3/files/patch-wrtrtf
new file mode 100644
index 00000000000..7381dc61cd6
--- /dev/null
+++ b/editors/openoffice-3/files/patch-wrtrtf
@@ -0,0 +1,312 @@
+--- ../svtools/source/svrtf/rtfout.cxx.orig 2000-10-16 18:13:46.000000000 +0900
++++ ../svtools/source/svrtf/rtfout.cxx 2003-09-23 12:41:00.000000000 +0900
+@@ -124,8 +124,9 @@
+ default:
+ {
+ sal_Unicode cCh = c;
+- c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
+- if( !c )
++ rtl::OString buff( &c, 1, eDestEnc, RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE|RTL_UNICODETOTEXT_FLAGS_INVALID_IGNORE );
++// c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
++ if( !buff.getLength() )
+ {
+ // then write as unicode - character
+ if( 0xFF < cCh )
+@@ -141,8 +142,8 @@
+ break;
+ }
+
+- if( !bWriteHelpFile )
+- switch( c )
++ if( !bWriteHelpFile && buff.getLength() == 1 )
++ switch( BYTE(buff[0]) )
+ {
+ #ifdef MAC
+ case 0xa5: pStr = sRTF_BULLET; break;
+@@ -164,6 +165,9 @@
+ // MAC
+ }
+ if( !pStr )
++ for (int i = 0; i < buff.getLength(); ++i)
++ {
++ c = BYTE(buff[i]);
+ switch ( c )
+ {
+ case '\\':
+@@ -186,6 +190,7 @@
+ }
+ break;
+ }
++ }
+ }
+ break;
+ }
+--- ../sw/source/filter/rtf/wrtrtf.cxx.orig 2003-04-18 00:00:28.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.cxx 2003-09-23 23:33:08.000000000 +0900
+@@ -184,6 +184,12 @@
+ #ifndef _CHARFMT_HXX
+ #include <charfmt.hxx>
+ #endif
++#ifndef _POOLFMT_HXX
++#include <poolfmt.hxx>
++#endif
++#ifndef _SWSTYLENAMEMAPPER_HXX
++#include <SwStyleNameMapper.hxx>
++#endif
+ #ifndef _SECTION_HXX //autogen
+ #include <section.hxx>
+ #endif
+@@ -215,7 +221,7 @@
+ SV_IMPL_VARARR( RTFColorTbl, Color )
+
+
+-SwRTFWriter::SwRTFWriter( const String& rFltName )
++SwRTFWriter::SwRTFWriter( const String& rFltName ) : eCurrentCharSet(DEF_ENCODING)
+ {
+ // schreibe Win-RTF-HelpFileFmt
+ bWriteHelpFmt = 'W' == rFltName.GetChar( 0 );
+@@ -893,14 +899,14 @@
+ // as alternative name. Because WinWord can't match each
+ // font to a UniCode font. So the CJK texts are shown as
+ // empty rectangles ;-(.
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ OutComment( rWrt, sRTF_FALT) << ' ';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, eChrSet,
+ rWrt.bWriteHelpFmt ) << '}';
+ }
+ else
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ rWrt.Strm() << ";}";
+ }
+@@ -932,6 +938,139 @@
+
+
+
++//Takashi Ono for CJK
++const rtl::OUString SwRTFWriter::XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_POOLCOLL_TEXT_IDENT, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_POOLCOLL_LABEL, RES_POOLCOLL_TOX_ILLUSH, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_POOLCOLL_TOX_AUTHORITIESH, RES_NONE, RES_NONE,
++ RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_NUM_LEVEL1,
++
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_NUM_LEVEL2, RES_POOLCOLL_NUM_LEVEL3, RES_POOLCOLL_NUM_LEVEL4, RES_POOLCOLL_NUM_LEVEL5,
++
++ RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ sal_uInt16 idcol = ::SwStyleNameMapper::GetPoolIdFromUIName( rName, eFlags );
++
++ for (int i = 0; i < sizeof( aArr ) / sizeof( *aArr ); i++)
++ {
++ if ( idcol == aArr[i] )
++ {
++ return rtl::OUString::createFromAscii(stiName[i]);
++ }
++ }
++ return ::SwStyleNameMapper::GetProgName( idcol, String() );
++}
++
++
++
+ void SwRTFWriter::OutRTFStyleTab()
+ {
+ // das 0-Style ist das Default, wird nie ausgegeben !!
+@@ -988,7 +1127,7 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pColl->GetName(), DEF_ENCODING,
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pColl->GetName(), GET_POOLID_TXTCOLL ), DEF_ENCODING,
+ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+@@ -1015,8 +1154,8 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pFmt->GetName(), DEF_ENCODING,
+- bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pFmt->GetName(), GET_POOLID_CHRFMT ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+ Strm() << '}';
+@@ -1217,8 +1356,8 @@
+ break;
+ Strm() << sRTF_PGDSCNXT;
+ OutULong( i ) << ' ';
+- RTFOutFuncs::Out_String( Strm(), rPageDesc.GetName(),
+- DEF_ENCODING, bWriteHelpFmt ) << ";}";
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( rPageDesc.GetName(), GET_POOLID_PAGEDESC ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}";
+ }
+ Strm() << '}' << SwRTFWriter::sNewLine;
+ bOutPageDesc = bOutPageDescTbl = FALSE;
+--- ../sw/source/filter/rtf/wrtrtf.hxx.orig 2002-07-31 19:18:50.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.hxx 2003-09-23 23:37:50.000000000 +0900
+@@ -117,6 +117,7 @@
+ USHORT nAktFlyPos; // Index auf das naechste "FlyFrmFmt"
+ void OutRTFColorTab();
+ void OutRTFFontTab();
++ const rtl::OUString XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags );
+ void OutRTFStyleTab();
+ void OutRTFListTab();
+
+@@ -136,6 +137,8 @@
+ USHORT nBkmkTabPos; // akt. Position in der Bookmark-Tabelle
+ USHORT nCurScript; // actual scripttype
+
++ rtl_TextEncoding eCurrentCharSet;
++
+ #if defined(MAC) || defined(UNX)
+ static const sal_Char sNewLine; // nur \012 oder \015
+ #else
+--- ../sw/source/filter/rtf/rtfatr.cxx.orig 2003-05-19 21:24:46.000000000 +0900
++++ ../sw/source/filter/rtf/rtfatr.cxx 2003-09-23 23:45:52.000000000 +0900
+@@ -1319,7 +1319,7 @@
+ sURL = aTmp.GetFull();
+ }
+ */ rWrt.Strm() << '\"';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ sURL = aTmp.GetMark();
+ }
+@@ -1328,7 +1328,7 @@
+ {
+ rWrt.Strm() << "\\\\l \"";
+ sURL.Erase( 0, 1 );
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ }
+
+@@ -1609,7 +1609,7 @@
+
+ if( nStrPos != nEnde )
+ RTFOutFuncs::Out_Char( rWrt.Strm(), rStr.GetChar( nStrPos ),
+- DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
++ rRTFWrt.eCurrentCharSet, rRTFWrt.bWriteHelpFmt );
+ }
+
+ // noch eine schliesende Klammer da ??
+@@ -2188,6 +2188,7 @@
+ const sal_Char* pCmd = bAssoc ? sRTF_AF : sRTF_F;
+ rWrt.Strm() << pCmd;
+ rWrt.OutULong(rRTFWrt.GetId(rFont));
++ rRTFWrt.eCurrentCharSet = rFont.GetCharSet();
+ }
+ return rWrt;
+ }
diff --git a/editors/openoffice-devel/Makefile b/editors/openoffice-devel/Makefile
index 68bcf804ab7..dd5d66a9326 100644
--- a/editors/openoffice-devel/Makefile
+++ b/editors/openoffice-devel/Makefile
@@ -7,6 +7,7 @@
PORTNAME= openoffice
PORTVERSION= 1.1.0
+PORTREVERSION= 1
CATEGORIES+= editors
MASTER_SITES+= ftp://openofficeorg.secsup.org/pub/software/openoffice/stable/%SUBDIR%/ \
ftp://sunsite.cnlab-switch.ch/mirror/OpenOffice/stable/%SUBDIR%/ \
diff --git a/editors/openoffice-devel/files/patch-rtfcjk b/editors/openoffice-devel/files/patch-rtfcjk
new file mode 100644
index 00000000000..2b44f86757f
--- /dev/null
+++ b/editors/openoffice-devel/files/patch-rtfcjk
@@ -0,0 +1,214 @@
+--- ../svx/source/svrtf/rtfitem.cxx 24 Jun 2003 07:48:56 -0000 1.18
++++ ../svx/source/svrtf/rtfitem.cxx 25 Jul 2003 22:54:24 -0000
+@@ -285,11 +285,20 @@
+ }
+ else
+ {
+- if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType )
++// if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType ) //Takashi Ono for CJK
++ if( LOW_CHARTYPE == eType )
+ {
+ if( *pNormal )
+ {
+ rItem.SetWhich( *pNormal );
++ rSet.Put( rItem );
++ }
++ }
++ else if( HIGH_CHARTYPE == eType )
++ {
++ if( *pCTL )
++ {
++ rItem.SetWhich( *pCTL );
+ rSet.Put( rItem );
+ }
+ }
+--- ../svx/source/svrtf/svxrtf.cxx 19 May 2003 12:30:59 -0000 1.15
++++ ../svx/source/svrtf/svxrtf.cxx 25 Jul 2003 22:54:29 -0000
+@@ -583,8 +583,14 @@
+
+ case RTF_FCHARSET:
+ if( -1 != nTokenValue )
+- pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
+- (BYTE)nTokenValue ) );
++ {
++// pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
++// (BYTE)nTokenValue ) );
++ CharSet nCharSet =
++ rtl_getTextEncodingFromWindowsCharset( (BYTE)nTokenValue );
++ pFont->SetCharSet( nCharSet );
++ SetEncoding( nCharSet ); //Takashi Ono
++ }
+ break;
+
+ case RTF_FPRQ:
+--- ../sw/source/filter/rtf/swparrtf.cxx 4 Jun 2003 10:19:09 -0000 1.28
++++ ../sw/source/filter/rtf/swparrtf.cxx 25 Jul 2003 22:54:37 -0000
+@@ -3231,10 +3231,156 @@
+ SetSwgValues( rCollSet );
+ }
+
++//Takashi Ono for CJK
++String SwRTFParser::XlateFmtColName( const String &rName )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_NONE, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_NONE, RES_NONE, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_LISTS_BEGIN, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++
++ RES_NONE,RES_NONE, RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ RES_POOL_COLLFMT_TYPE nId = RES_NONE;
++
++ for (int i = 0; i < sizeof( stiName ) / sizeof( *stiName ); i++)
++ {
++ if ( rName == String( stiName[i], RTL_TEXTENCODING_MS_1252 ) )
++ {
++ nId = aArr[i];
++ break;
++ }
++ }
++ USHORT nResId;
++ if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
++ nResId = RC_POOLCOLL_TEXT_BEGIN - RES_POOLCOLL_TEXT_BEGIN;
++ else if (RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END)
++ nResId = RC_POOLCOLL_LISTS_BEGIN - RES_POOLCOLL_LISTS_BEGIN;
++ else if (RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END)
++ nResId = RC_POOLCOLL_EXTRA_BEGIN - RES_POOLCOLL_EXTRA_BEGIN;
++ else if (RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END)
++ nResId = RC_POOLCOLL_REGISTER_BEGIN - RES_POOLCOLL_REGISTER_BEGIN;
++ else if (RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END)
++ nResId = RC_POOLCOLL_DOC_BEGIN - RES_POOLCOLL_DOC_BEGIN;
++ else if (RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END)
++ nResId = RC_POOLCOLL_HTML_BEGIN - RES_POOLCOLL_HTML_BEGIN;
++ return String( ResId( nResId + nId, pSwResMgr ) );
++}
++
+ SwTxtFmtColl* SwRTFParser::MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle )
+ {
+- int bCollExist;
+- SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo),
++ int bCollExist;
++// SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo), //Takashi Ono for CJK
++ SwTxtFmtColl* pColl = MakeColl( XlateFmtColName( rStyle.sName ),
++ USHORT(nNo),
+ rStyle.nOutlineNo, bCollExist );
+ aTxtCollTbl.Insert( nNo, pColl );
+
+--- ../sw/source/filter/rtf/swparrtf.hxx 19 May 2003 12:25:34 -0000 1.10
++++ ../sw/source/filter/rtf/swparrtf.hxx 25 Jul 2003 22:54:44 -0000
+@@ -364,6 +364,7 @@
+ void SetStyleAttr( SfxItemSet& rCollSet,
+ const SfxItemSet& rStyleSet,
+ const SfxItemSet& rDerivedSet );
++ String XlateFmtColName( const String &rName ); //Takashi Ono for CJK
+ SwTxtFmtColl* MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ SwCharFmt* MakeCharStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ void MakeStyleTab();
diff --git a/editors/openoffice-devel/files/patch-topsection b/editors/openoffice-devel/files/patch-topsection
new file mode 100644
index 00000000000..a332718508d
--- /dev/null
+++ b/editors/openoffice-devel/files/patch-topsection
@@ -0,0 +1,21 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:55:23 -0000
+@@ -2015,7 +2015,7 @@
+ bool bStartAttr = pPlcxMan->Get(&aRes); // hole Attribut-Pos
+ aRes.nAktCp = rTxtPos; // Akt. Cp-Pos
+
+- if (aRes.nFlags & MAN_MASK_NEW_SEP) // neue Section
++ if ((aRes.nFlags & MAN_MASK_NEW_SEP) || maSectionManager.empty()) // neue Section
+ {
+ ASSERT(pPaM->GetNode()->GetTxtNode(), "Missing txtnode");
+ // PageDesc erzeugen und fuellen
+--- ../sw/source/filter/ww8/ww8par.hxx 30 Jun 2003 15:54:37 -0000 1.115
++++ ../sw/source/filter/ww8/ww8par.hxx 25 Jul 2003 22:55:28 -0000
+@@ -720,6 +720,7 @@
+ short GetPageLeft() const;
+ short GetPageRight() const;
+ short GetPageWidth() const;
++ bool empty() const { return maSegments.empty(); }
+ };
+
+ class wwFrameNamer
diff --git a/editors/openoffice-devel/files/patch-word6+95-cjkhandling b/editors/openoffice-devel/files/patch-word6+95-cjkhandling
new file mode 100644
index 00000000000..9a86ffb7da9
--- /dev/null
+++ b/editors/openoffice-devel/files/patch-word6+95-cjkhandling
@@ -0,0 +1,63 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:54:52 -0000
+@@ -1683,11 +1683,20 @@
+ if (bVer67)
+ {
+ sal_Char aTest[2];
+- aTest[0] = (nUCode & 0xFF00) >> 8;
+- aTest[1] = (nUCode & 0x00FF);
+- String aTemp(aTest, 2, eSrcCharSet);
+- ASSERT(aTemp.Len() == 1, "so much for that theory");
+- *pWork = aTemp.GetChar(0);
++ if (nUCode >= 0x3000)
++ {
++ aTest[0] = (nUCode & 0xFF00) >> 8;
++ aTest[1] = (nUCode & 0x00FF);
++ String aTemp(aTest, 2, eSrcCharSet);
++ ASSERT(aTemp.Len() == 1, "so much for that theory");
++ *pWork = aTemp.GetChar(0);
++ }
++ else
++ {
++ aTest[0] = (nUCode & 0x00FF);
++ String aTemp(aTest, 1, eSrcCharSet);
++ *pWork = aTemp.GetChar(0);
++ }
+ }
+ else
+ *pWork = nUCode;
+@@ -3188,7 +3197,8 @@
+ {
+ case 6:
+ case 7:
+- if ( (0xa5dc != nMagic) && (0xa699 != nMagic) )
++ //if ( (0xa5dc != nMagic) && (0xa699 != nMagic) ) //Takashi Ono
++ if ( (0xa5dc != nMagic) && ( (0xa697 > nMagic) || (0xa699 < nMagic) ) )
+ {
+ //JP 06.05.99: teste auf eigenen 97-Fake!
+ if (pStg && 0xa5ec == nMagic)
+--- ../sw/source/filter/ww8/ww8par6.cxx 20 Jun 2003 09:38:07 -0000 1.138
++++ ../sw/source/filter/ww8/ww8par6.cxx 25 Jul 2003 22:55:05 -0000
+@@ -3373,9 +3373,11 @@
+ nId = RES_CHRATR_CTL_FONT;
+ break;
+ case 93:
++ case 111:
+ case 0x4a4f:
+ nId = RES_CHRATR_FONT;
+ break;
++ case 112:
+ case 0x4a50:
+ nId = RES_CHRATR_CJK_FONT;
+ break;
+@@ -4984,8 +4986,8 @@
+ //percentage to grow hps short
+ {110, (FNReadRecord)0}, //"sprmCCondHyhen", chp.ysri
+ //ysri short
+- {111, (FNReadRecord)0}, //"??111",
+- {112, (FNReadRecord)0}, //"??112",
++ {111, &SwWW8ImplReader::Read_FontCode}, //ww7 font
++ {112, &SwWW8ImplReader::Read_FontCode}, //ww7 CJK font
+ {113, &SwWW8ImplReader::Read_FontCode}, //ww7 rtl font
+ {114, (FNReadRecord)0}, //"??114",
+ {115, &SwWW8ImplReader::Read_TxtColor}, //ww7 rtl colour ?
diff --git a/editors/openoffice-devel/files/patch-wrtrtf b/editors/openoffice-devel/files/patch-wrtrtf
new file mode 100644
index 00000000000..7381dc61cd6
--- /dev/null
+++ b/editors/openoffice-devel/files/patch-wrtrtf
@@ -0,0 +1,312 @@
+--- ../svtools/source/svrtf/rtfout.cxx.orig 2000-10-16 18:13:46.000000000 +0900
++++ ../svtools/source/svrtf/rtfout.cxx 2003-09-23 12:41:00.000000000 +0900
+@@ -124,8 +124,9 @@
+ default:
+ {
+ sal_Unicode cCh = c;
+- c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
+- if( !c )
++ rtl::OString buff( &c, 1, eDestEnc, RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE|RTL_UNICODETOTEXT_FLAGS_INVALID_IGNORE );
++// c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
++ if( !buff.getLength() )
+ {
+ // then write as unicode - character
+ if( 0xFF < cCh )
+@@ -141,8 +142,8 @@
+ break;
+ }
+
+- if( !bWriteHelpFile )
+- switch( c )
++ if( !bWriteHelpFile && buff.getLength() == 1 )
++ switch( BYTE(buff[0]) )
+ {
+ #ifdef MAC
+ case 0xa5: pStr = sRTF_BULLET; break;
+@@ -164,6 +165,9 @@
+ // MAC
+ }
+ if( !pStr )
++ for (int i = 0; i < buff.getLength(); ++i)
++ {
++ c = BYTE(buff[i]);
+ switch ( c )
+ {
+ case '\\':
+@@ -186,6 +190,7 @@
+ }
+ break;
+ }
++ }
+ }
+ break;
+ }
+--- ../sw/source/filter/rtf/wrtrtf.cxx.orig 2003-04-18 00:00:28.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.cxx 2003-09-23 23:33:08.000000000 +0900
+@@ -184,6 +184,12 @@
+ #ifndef _CHARFMT_HXX
+ #include <charfmt.hxx>
+ #endif
++#ifndef _POOLFMT_HXX
++#include <poolfmt.hxx>
++#endif
++#ifndef _SWSTYLENAMEMAPPER_HXX
++#include <SwStyleNameMapper.hxx>
++#endif
+ #ifndef _SECTION_HXX //autogen
+ #include <section.hxx>
+ #endif
+@@ -215,7 +221,7 @@
+ SV_IMPL_VARARR( RTFColorTbl, Color )
+
+
+-SwRTFWriter::SwRTFWriter( const String& rFltName )
++SwRTFWriter::SwRTFWriter( const String& rFltName ) : eCurrentCharSet(DEF_ENCODING)
+ {
+ // schreibe Win-RTF-HelpFileFmt
+ bWriteHelpFmt = 'W' == rFltName.GetChar( 0 );
+@@ -893,14 +899,14 @@
+ // as alternative name. Because WinWord can't match each
+ // font to a UniCode font. So the CJK texts are shown as
+ // empty rectangles ;-(.
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ OutComment( rWrt, sRTF_FALT) << ' ';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, eChrSet,
+ rWrt.bWriteHelpFmt ) << '}';
+ }
+ else
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ rWrt.Strm() << ";}";
+ }
+@@ -932,6 +938,139 @@
+
+
+
++//Takashi Ono for CJK
++const rtl::OUString SwRTFWriter::XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_POOLCOLL_TEXT_IDENT, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_POOLCOLL_LABEL, RES_POOLCOLL_TOX_ILLUSH, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_POOLCOLL_TOX_AUTHORITIESH, RES_NONE, RES_NONE,
++ RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_NUM_LEVEL1,
++
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_NUM_LEVEL2, RES_POOLCOLL_NUM_LEVEL3, RES_POOLCOLL_NUM_LEVEL4, RES_POOLCOLL_NUM_LEVEL5,
++
++ RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ sal_uInt16 idcol = ::SwStyleNameMapper::GetPoolIdFromUIName( rName, eFlags );
++
++ for (int i = 0; i < sizeof( aArr ) / sizeof( *aArr ); i++)
++ {
++ if ( idcol == aArr[i] )
++ {
++ return rtl::OUString::createFromAscii(stiName[i]);
++ }
++ }
++ return ::SwStyleNameMapper::GetProgName( idcol, String() );
++}
++
++
++
+ void SwRTFWriter::OutRTFStyleTab()
+ {
+ // das 0-Style ist das Default, wird nie ausgegeben !!
+@@ -988,7 +1127,7 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pColl->GetName(), DEF_ENCODING,
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pColl->GetName(), GET_POOLID_TXTCOLL ), DEF_ENCODING,
+ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+@@ -1015,8 +1154,8 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pFmt->GetName(), DEF_ENCODING,
+- bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pFmt->GetName(), GET_POOLID_CHRFMT ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+ Strm() << '}';
+@@ -1217,8 +1356,8 @@
+ break;
+ Strm() << sRTF_PGDSCNXT;
+ OutULong( i ) << ' ';
+- RTFOutFuncs::Out_String( Strm(), rPageDesc.GetName(),
+- DEF_ENCODING, bWriteHelpFmt ) << ";}";
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( rPageDesc.GetName(), GET_POOLID_PAGEDESC ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}";
+ }
+ Strm() << '}' << SwRTFWriter::sNewLine;
+ bOutPageDesc = bOutPageDescTbl = FALSE;
+--- ../sw/source/filter/rtf/wrtrtf.hxx.orig 2002-07-31 19:18:50.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.hxx 2003-09-23 23:37:50.000000000 +0900
+@@ -117,6 +117,7 @@
+ USHORT nAktFlyPos; // Index auf das naechste "FlyFrmFmt"
+ void OutRTFColorTab();
+ void OutRTFFontTab();
++ const rtl::OUString XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags );
+ void OutRTFStyleTab();
+ void OutRTFListTab();
+
+@@ -136,6 +137,8 @@
+ USHORT nBkmkTabPos; // akt. Position in der Bookmark-Tabelle
+ USHORT nCurScript; // actual scripttype
+
++ rtl_TextEncoding eCurrentCharSet;
++
+ #if defined(MAC) || defined(UNX)
+ static const sal_Char sNewLine; // nur \012 oder \015
+ #else
+--- ../sw/source/filter/rtf/rtfatr.cxx.orig 2003-05-19 21:24:46.000000000 +0900
++++ ../sw/source/filter/rtf/rtfatr.cxx 2003-09-23 23:45:52.000000000 +0900
+@@ -1319,7 +1319,7 @@
+ sURL = aTmp.GetFull();
+ }
+ */ rWrt.Strm() << '\"';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ sURL = aTmp.GetMark();
+ }
+@@ -1328,7 +1328,7 @@
+ {
+ rWrt.Strm() << "\\\\l \"";
+ sURL.Erase( 0, 1 );
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ }
+
+@@ -1609,7 +1609,7 @@
+
+ if( nStrPos != nEnde )
+ RTFOutFuncs::Out_Char( rWrt.Strm(), rStr.GetChar( nStrPos ),
+- DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
++ rRTFWrt.eCurrentCharSet, rRTFWrt.bWriteHelpFmt );
+ }
+
+ // noch eine schliesende Klammer da ??
+@@ -2188,6 +2188,7 @@
+ const sal_Char* pCmd = bAssoc ? sRTF_AF : sRTF_F;
+ rWrt.Strm() << pCmd;
+ rWrt.OutULong(rRTFWrt.GetId(rFont));
++ rRTFWrt.eCurrentCharSet = rFont.GetCharSet();
+ }
+ return rWrt;
+ }
diff --git a/editors/openoffice.org-1.1-devel/Makefile b/editors/openoffice.org-1.1-devel/Makefile
index 68bcf804ab7..dd5d66a9326 100644
--- a/editors/openoffice.org-1.1-devel/Makefile
+++ b/editors/openoffice.org-1.1-devel/Makefile
@@ -7,6 +7,7 @@
PORTNAME= openoffice
PORTVERSION= 1.1.0
+PORTREVERSION= 1
CATEGORIES+= editors
MASTER_SITES+= ftp://openofficeorg.secsup.org/pub/software/openoffice/stable/%SUBDIR%/ \
ftp://sunsite.cnlab-switch.ch/mirror/OpenOffice/stable/%SUBDIR%/ \
diff --git a/editors/openoffice.org-1.1-devel/files/patch-rtfcjk b/editors/openoffice.org-1.1-devel/files/patch-rtfcjk
new file mode 100644
index 00000000000..2b44f86757f
--- /dev/null
+++ b/editors/openoffice.org-1.1-devel/files/patch-rtfcjk
@@ -0,0 +1,214 @@
+--- ../svx/source/svrtf/rtfitem.cxx 24 Jun 2003 07:48:56 -0000 1.18
++++ ../svx/source/svrtf/rtfitem.cxx 25 Jul 2003 22:54:24 -0000
+@@ -285,11 +285,20 @@
+ }
+ else
+ {
+- if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType )
++// if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType ) //Takashi Ono for CJK
++ if( LOW_CHARTYPE == eType )
+ {
+ if( *pNormal )
+ {
+ rItem.SetWhich( *pNormal );
++ rSet.Put( rItem );
++ }
++ }
++ else if( HIGH_CHARTYPE == eType )
++ {
++ if( *pCTL )
++ {
++ rItem.SetWhich( *pCTL );
+ rSet.Put( rItem );
+ }
+ }
+--- ../svx/source/svrtf/svxrtf.cxx 19 May 2003 12:30:59 -0000 1.15
++++ ../svx/source/svrtf/svxrtf.cxx 25 Jul 2003 22:54:29 -0000
+@@ -583,8 +583,14 @@
+
+ case RTF_FCHARSET:
+ if( -1 != nTokenValue )
+- pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
+- (BYTE)nTokenValue ) );
++ {
++// pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
++// (BYTE)nTokenValue ) );
++ CharSet nCharSet =
++ rtl_getTextEncodingFromWindowsCharset( (BYTE)nTokenValue );
++ pFont->SetCharSet( nCharSet );
++ SetEncoding( nCharSet ); //Takashi Ono
++ }
+ break;
+
+ case RTF_FPRQ:
+--- ../sw/source/filter/rtf/swparrtf.cxx 4 Jun 2003 10:19:09 -0000 1.28
++++ ../sw/source/filter/rtf/swparrtf.cxx 25 Jul 2003 22:54:37 -0000
+@@ -3231,10 +3231,156 @@
+ SetSwgValues( rCollSet );
+ }
+
++//Takashi Ono for CJK
++String SwRTFParser::XlateFmtColName( const String &rName )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_NONE, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_NONE, RES_NONE, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_LISTS_BEGIN, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++
++ RES_NONE,RES_NONE, RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ RES_POOL_COLLFMT_TYPE nId = RES_NONE;
++
++ for (int i = 0; i < sizeof( stiName ) / sizeof( *stiName ); i++)
++ {
++ if ( rName == String( stiName[i], RTL_TEXTENCODING_MS_1252 ) )
++ {
++ nId = aArr[i];
++ break;
++ }
++ }
++ USHORT nResId;
++ if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
++ nResId = RC_POOLCOLL_TEXT_BEGIN - RES_POOLCOLL_TEXT_BEGIN;
++ else if (RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END)
++ nResId = RC_POOLCOLL_LISTS_BEGIN - RES_POOLCOLL_LISTS_BEGIN;
++ else if (RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END)
++ nResId = RC_POOLCOLL_EXTRA_BEGIN - RES_POOLCOLL_EXTRA_BEGIN;
++ else if (RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END)
++ nResId = RC_POOLCOLL_REGISTER_BEGIN - RES_POOLCOLL_REGISTER_BEGIN;
++ else if (RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END)
++ nResId = RC_POOLCOLL_DOC_BEGIN - RES_POOLCOLL_DOC_BEGIN;
++ else if (RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END)
++ nResId = RC_POOLCOLL_HTML_BEGIN - RES_POOLCOLL_HTML_BEGIN;
++ return String( ResId( nResId + nId, pSwResMgr ) );
++}
++
+ SwTxtFmtColl* SwRTFParser::MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle )
+ {
+- int bCollExist;
+- SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo),
++ int bCollExist;
++// SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo), //Takashi Ono for CJK
++ SwTxtFmtColl* pColl = MakeColl( XlateFmtColName( rStyle.sName ),
++ USHORT(nNo),
+ rStyle.nOutlineNo, bCollExist );
+ aTxtCollTbl.Insert( nNo, pColl );
+
+--- ../sw/source/filter/rtf/swparrtf.hxx 19 May 2003 12:25:34 -0000 1.10
++++ ../sw/source/filter/rtf/swparrtf.hxx 25 Jul 2003 22:54:44 -0000
+@@ -364,6 +364,7 @@
+ void SetStyleAttr( SfxItemSet& rCollSet,
+ const SfxItemSet& rStyleSet,
+ const SfxItemSet& rDerivedSet );
++ String XlateFmtColName( const String &rName ); //Takashi Ono for CJK
+ SwTxtFmtColl* MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ SwCharFmt* MakeCharStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ void MakeStyleTab();
diff --git a/editors/openoffice.org-1.1-devel/files/patch-topsection b/editors/openoffice.org-1.1-devel/files/patch-topsection
new file mode 100644
index 00000000000..a332718508d
--- /dev/null
+++ b/editors/openoffice.org-1.1-devel/files/patch-topsection
@@ -0,0 +1,21 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:55:23 -0000
+@@ -2015,7 +2015,7 @@
+ bool bStartAttr = pPlcxMan->Get(&aRes); // hole Attribut-Pos
+ aRes.nAktCp = rTxtPos; // Akt. Cp-Pos
+
+- if (aRes.nFlags & MAN_MASK_NEW_SEP) // neue Section
++ if ((aRes.nFlags & MAN_MASK_NEW_SEP) || maSectionManager.empty()) // neue Section
+ {
+ ASSERT(pPaM->GetNode()->GetTxtNode(), "Missing txtnode");
+ // PageDesc erzeugen und fuellen
+--- ../sw/source/filter/ww8/ww8par.hxx 30 Jun 2003 15:54:37 -0000 1.115
++++ ../sw/source/filter/ww8/ww8par.hxx 25 Jul 2003 22:55:28 -0000
+@@ -720,6 +720,7 @@
+ short GetPageLeft() const;
+ short GetPageRight() const;
+ short GetPageWidth() const;
++ bool empty() const { return maSegments.empty(); }
+ };
+
+ class wwFrameNamer
diff --git a/editors/openoffice.org-1.1-devel/files/patch-word6+95-cjkhandling b/editors/openoffice.org-1.1-devel/files/patch-word6+95-cjkhandling
new file mode 100644
index 00000000000..9a86ffb7da9
--- /dev/null
+++ b/editors/openoffice.org-1.1-devel/files/patch-word6+95-cjkhandling
@@ -0,0 +1,63 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:54:52 -0000
+@@ -1683,11 +1683,20 @@
+ if (bVer67)
+ {
+ sal_Char aTest[2];
+- aTest[0] = (nUCode & 0xFF00) >> 8;
+- aTest[1] = (nUCode & 0x00FF);
+- String aTemp(aTest, 2, eSrcCharSet);
+- ASSERT(aTemp.Len() == 1, "so much for that theory");
+- *pWork = aTemp.GetChar(0);
++ if (nUCode >= 0x3000)
++ {
++ aTest[0] = (nUCode & 0xFF00) >> 8;
++ aTest[1] = (nUCode & 0x00FF);
++ String aTemp(aTest, 2, eSrcCharSet);
++ ASSERT(aTemp.Len() == 1, "so much for that theory");
++ *pWork = aTemp.GetChar(0);
++ }
++ else
++ {
++ aTest[0] = (nUCode & 0x00FF);
++ String aTemp(aTest, 1, eSrcCharSet);
++ *pWork = aTemp.GetChar(0);
++ }
+ }
+ else
+ *pWork = nUCode;
+@@ -3188,7 +3197,8 @@
+ {
+ case 6:
+ case 7:
+- if ( (0xa5dc != nMagic) && (0xa699 != nMagic) )
++ //if ( (0xa5dc != nMagic) && (0xa699 != nMagic) ) //Takashi Ono
++ if ( (0xa5dc != nMagic) && ( (0xa697 > nMagic) || (0xa699 < nMagic) ) )
+ {
+ //JP 06.05.99: teste auf eigenen 97-Fake!
+ if (pStg && 0xa5ec == nMagic)
+--- ../sw/source/filter/ww8/ww8par6.cxx 20 Jun 2003 09:38:07 -0000 1.138
++++ ../sw/source/filter/ww8/ww8par6.cxx 25 Jul 2003 22:55:05 -0000
+@@ -3373,9 +3373,11 @@
+ nId = RES_CHRATR_CTL_FONT;
+ break;
+ case 93:
++ case 111:
+ case 0x4a4f:
+ nId = RES_CHRATR_FONT;
+ break;
++ case 112:
+ case 0x4a50:
+ nId = RES_CHRATR_CJK_FONT;
+ break;
+@@ -4984,8 +4986,8 @@
+ //percentage to grow hps short
+ {110, (FNReadRecord)0}, //"sprmCCondHyhen", chp.ysri
+ //ysri short
+- {111, (FNReadRecord)0}, //"??111",
+- {112, (FNReadRecord)0}, //"??112",
++ {111, &SwWW8ImplReader::Read_FontCode}, //ww7 font
++ {112, &SwWW8ImplReader::Read_FontCode}, //ww7 CJK font
+ {113, &SwWW8ImplReader::Read_FontCode}, //ww7 rtl font
+ {114, (FNReadRecord)0}, //"??114",
+ {115, &SwWW8ImplReader::Read_TxtColor}, //ww7 rtl colour ?
diff --git a/editors/openoffice.org-1.1-devel/files/patch-wrtrtf b/editors/openoffice.org-1.1-devel/files/patch-wrtrtf
new file mode 100644
index 00000000000..7381dc61cd6
--- /dev/null
+++ b/editors/openoffice.org-1.1-devel/files/patch-wrtrtf
@@ -0,0 +1,312 @@
+--- ../svtools/source/svrtf/rtfout.cxx.orig 2000-10-16 18:13:46.000000000 +0900
++++ ../svtools/source/svrtf/rtfout.cxx 2003-09-23 12:41:00.000000000 +0900
+@@ -124,8 +124,9 @@
+ default:
+ {
+ sal_Unicode cCh = c;
+- c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
+- if( !c )
++ rtl::OString buff( &c, 1, eDestEnc, RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE|RTL_UNICODETOTEXT_FLAGS_INVALID_IGNORE );
++// c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
++ if( !buff.getLength() )
+ {
+ // then write as unicode - character
+ if( 0xFF < cCh )
+@@ -141,8 +142,8 @@
+ break;
+ }
+
+- if( !bWriteHelpFile )
+- switch( c )
++ if( !bWriteHelpFile && buff.getLength() == 1 )
++ switch( BYTE(buff[0]) )
+ {
+ #ifdef MAC
+ case 0xa5: pStr = sRTF_BULLET; break;
+@@ -164,6 +165,9 @@
+ // MAC
+ }
+ if( !pStr )
++ for (int i = 0; i < buff.getLength(); ++i)
++ {
++ c = BYTE(buff[i]);
+ switch ( c )
+ {
+ case '\\':
+@@ -186,6 +190,7 @@
+ }
+ break;
+ }
++ }
+ }
+ break;
+ }
+--- ../sw/source/filter/rtf/wrtrtf.cxx.orig 2003-04-18 00:00:28.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.cxx 2003-09-23 23:33:08.000000000 +0900
+@@ -184,6 +184,12 @@
+ #ifndef _CHARFMT_HXX
+ #include <charfmt.hxx>
+ #endif
++#ifndef _POOLFMT_HXX
++#include <poolfmt.hxx>
++#endif
++#ifndef _SWSTYLENAMEMAPPER_HXX
++#include <SwStyleNameMapper.hxx>
++#endif
+ #ifndef _SECTION_HXX //autogen
+ #include <section.hxx>
+ #endif
+@@ -215,7 +221,7 @@
+ SV_IMPL_VARARR( RTFColorTbl, Color )
+
+
+-SwRTFWriter::SwRTFWriter( const String& rFltName )
++SwRTFWriter::SwRTFWriter( const String& rFltName ) : eCurrentCharSet(DEF_ENCODING)
+ {
+ // schreibe Win-RTF-HelpFileFmt
+ bWriteHelpFmt = 'W' == rFltName.GetChar( 0 );
+@@ -893,14 +899,14 @@
+ // as alternative name. Because WinWord can't match each
+ // font to a UniCode font. So the CJK texts are shown as
+ // empty rectangles ;-(.
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ OutComment( rWrt, sRTF_FALT) << ' ';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, eChrSet,
+ rWrt.bWriteHelpFmt ) << '}';
+ }
+ else
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ rWrt.Strm() << ";}";
+ }
+@@ -932,6 +938,139 @@
+
+
+
++//Takashi Ono for CJK
++const rtl::OUString SwRTFWriter::XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_POOLCOLL_TEXT_IDENT, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_POOLCOLL_LABEL, RES_POOLCOLL_TOX_ILLUSH, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_POOLCOLL_TOX_AUTHORITIESH, RES_NONE, RES_NONE,
++ RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_NUM_LEVEL1,
++
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_NUM_LEVEL2, RES_POOLCOLL_NUM_LEVEL3, RES_POOLCOLL_NUM_LEVEL4, RES_POOLCOLL_NUM_LEVEL5,
++
++ RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ sal_uInt16 idcol = ::SwStyleNameMapper::GetPoolIdFromUIName( rName, eFlags );
++
++ for (int i = 0; i < sizeof( aArr ) / sizeof( *aArr ); i++)
++ {
++ if ( idcol == aArr[i] )
++ {
++ return rtl::OUString::createFromAscii(stiName[i]);
++ }
++ }
++ return ::SwStyleNameMapper::GetProgName( idcol, String() );
++}
++
++
++
+ void SwRTFWriter::OutRTFStyleTab()
+ {
+ // das 0-Style ist das Default, wird nie ausgegeben !!
+@@ -988,7 +1127,7 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pColl->GetName(), DEF_ENCODING,
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pColl->GetName(), GET_POOLID_TXTCOLL ), DEF_ENCODING,
+ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+@@ -1015,8 +1154,8 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pFmt->GetName(), DEF_ENCODING,
+- bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pFmt->GetName(), GET_POOLID_CHRFMT ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+ Strm() << '}';
+@@ -1217,8 +1356,8 @@
+ break;
+ Strm() << sRTF_PGDSCNXT;
+ OutULong( i ) << ' ';
+- RTFOutFuncs::Out_String( Strm(), rPageDesc.GetName(),
+- DEF_ENCODING, bWriteHelpFmt ) << ";}";
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( rPageDesc.GetName(), GET_POOLID_PAGEDESC ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}";
+ }
+ Strm() << '}' << SwRTFWriter::sNewLine;
+ bOutPageDesc = bOutPageDescTbl = FALSE;
+--- ../sw/source/filter/rtf/wrtrtf.hxx.orig 2002-07-31 19:18:50.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.hxx 2003-09-23 23:37:50.000000000 +0900
+@@ -117,6 +117,7 @@
+ USHORT nAktFlyPos; // Index auf das naechste "FlyFrmFmt"
+ void OutRTFColorTab();
+ void OutRTFFontTab();
++ const rtl::OUString XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags );
+ void OutRTFStyleTab();
+ void OutRTFListTab();
+
+@@ -136,6 +137,8 @@
+ USHORT nBkmkTabPos; // akt. Position in der Bookmark-Tabelle
+ USHORT nCurScript; // actual scripttype
+
++ rtl_TextEncoding eCurrentCharSet;
++
+ #if defined(MAC) || defined(UNX)
+ static const sal_Char sNewLine; // nur \012 oder \015
+ #else
+--- ../sw/source/filter/rtf/rtfatr.cxx.orig 2003-05-19 21:24:46.000000000 +0900
++++ ../sw/source/filter/rtf/rtfatr.cxx 2003-09-23 23:45:52.000000000 +0900
+@@ -1319,7 +1319,7 @@
+ sURL = aTmp.GetFull();
+ }
+ */ rWrt.Strm() << '\"';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ sURL = aTmp.GetMark();
+ }
+@@ -1328,7 +1328,7 @@
+ {
+ rWrt.Strm() << "\\\\l \"";
+ sURL.Erase( 0, 1 );
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ }
+
+@@ -1609,7 +1609,7 @@
+
+ if( nStrPos != nEnde )
+ RTFOutFuncs::Out_Char( rWrt.Strm(), rStr.GetChar( nStrPos ),
+- DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
++ rRTFWrt.eCurrentCharSet, rRTFWrt.bWriteHelpFmt );
+ }
+
+ // noch eine schliesende Klammer da ??
+@@ -2188,6 +2188,7 @@
+ const sal_Char* pCmd = bAssoc ? sRTF_AF : sRTF_F;
+ rWrt.Strm() << pCmd;
+ rWrt.OutULong(rRTFWrt.GetId(rFont));
++ rRTFWrt.eCurrentCharSet = rFont.GetCharSet();
+ }
+ return rWrt;
+ }
diff --git a/editors/openoffice.org-1.1/Makefile b/editors/openoffice.org-1.1/Makefile
index 68bcf804ab7..dd5d66a9326 100644
--- a/editors/openoffice.org-1.1/Makefile
+++ b/editors/openoffice.org-1.1/Makefile
@@ -7,6 +7,7 @@
PORTNAME= openoffice
PORTVERSION= 1.1.0
+PORTREVERSION= 1
CATEGORIES+= editors
MASTER_SITES+= ftp://openofficeorg.secsup.org/pub/software/openoffice/stable/%SUBDIR%/ \
ftp://sunsite.cnlab-switch.ch/mirror/OpenOffice/stable/%SUBDIR%/ \
diff --git a/editors/openoffice.org-1.1/files/patch-rtfcjk b/editors/openoffice.org-1.1/files/patch-rtfcjk
new file mode 100644
index 00000000000..2b44f86757f
--- /dev/null
+++ b/editors/openoffice.org-1.1/files/patch-rtfcjk
@@ -0,0 +1,214 @@
+--- ../svx/source/svrtf/rtfitem.cxx 24 Jun 2003 07:48:56 -0000 1.18
++++ ../svx/source/svrtf/rtfitem.cxx 25 Jul 2003 22:54:24 -0000
+@@ -285,11 +285,20 @@
+ }
+ else
+ {
+- if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType )
++// if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType ) //Takashi Ono for CJK
++ if( LOW_CHARTYPE == eType )
+ {
+ if( *pNormal )
+ {
+ rItem.SetWhich( *pNormal );
++ rSet.Put( rItem );
++ }
++ }
++ else if( HIGH_CHARTYPE == eType )
++ {
++ if( *pCTL )
++ {
++ rItem.SetWhich( *pCTL );
+ rSet.Put( rItem );
+ }
+ }
+--- ../svx/source/svrtf/svxrtf.cxx 19 May 2003 12:30:59 -0000 1.15
++++ ../svx/source/svrtf/svxrtf.cxx 25 Jul 2003 22:54:29 -0000
+@@ -583,8 +583,14 @@
+
+ case RTF_FCHARSET:
+ if( -1 != nTokenValue )
+- pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
+- (BYTE)nTokenValue ) );
++ {
++// pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
++// (BYTE)nTokenValue ) );
++ CharSet nCharSet =
++ rtl_getTextEncodingFromWindowsCharset( (BYTE)nTokenValue );
++ pFont->SetCharSet( nCharSet );
++ SetEncoding( nCharSet ); //Takashi Ono
++ }
+ break;
+
+ case RTF_FPRQ:
+--- ../sw/source/filter/rtf/swparrtf.cxx 4 Jun 2003 10:19:09 -0000 1.28
++++ ../sw/source/filter/rtf/swparrtf.cxx 25 Jul 2003 22:54:37 -0000
+@@ -3231,10 +3231,156 @@
+ SetSwgValues( rCollSet );
+ }
+
++//Takashi Ono for CJK
++String SwRTFParser::XlateFmtColName( const String &rName )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_NONE, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_NONE, RES_NONE, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_LISTS_BEGIN, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++
++ RES_NONE,RES_NONE, RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ RES_POOL_COLLFMT_TYPE nId = RES_NONE;
++
++ for (int i = 0; i < sizeof( stiName ) / sizeof( *stiName ); i++)
++ {
++ if ( rName == String( stiName[i], RTL_TEXTENCODING_MS_1252 ) )
++ {
++ nId = aArr[i];
++ break;
++ }
++ }
++ USHORT nResId;
++ if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
++ nResId = RC_POOLCOLL_TEXT_BEGIN - RES_POOLCOLL_TEXT_BEGIN;
++ else if (RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END)
++ nResId = RC_POOLCOLL_LISTS_BEGIN - RES_POOLCOLL_LISTS_BEGIN;
++ else if (RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END)
++ nResId = RC_POOLCOLL_EXTRA_BEGIN - RES_POOLCOLL_EXTRA_BEGIN;
++ else if (RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END)
++ nResId = RC_POOLCOLL_REGISTER_BEGIN - RES_POOLCOLL_REGISTER_BEGIN;
++ else if (RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END)
++ nResId = RC_POOLCOLL_DOC_BEGIN - RES_POOLCOLL_DOC_BEGIN;
++ else if (RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END)
++ nResId = RC_POOLCOLL_HTML_BEGIN - RES_POOLCOLL_HTML_BEGIN;
++ return String( ResId( nResId + nId, pSwResMgr ) );
++}
++
+ SwTxtFmtColl* SwRTFParser::MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle )
+ {
+- int bCollExist;
+- SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo),
++ int bCollExist;
++// SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo), //Takashi Ono for CJK
++ SwTxtFmtColl* pColl = MakeColl( XlateFmtColName( rStyle.sName ),
++ USHORT(nNo),
+ rStyle.nOutlineNo, bCollExist );
+ aTxtCollTbl.Insert( nNo, pColl );
+
+--- ../sw/source/filter/rtf/swparrtf.hxx 19 May 2003 12:25:34 -0000 1.10
++++ ../sw/source/filter/rtf/swparrtf.hxx 25 Jul 2003 22:54:44 -0000
+@@ -364,6 +364,7 @@
+ void SetStyleAttr( SfxItemSet& rCollSet,
+ const SfxItemSet& rStyleSet,
+ const SfxItemSet& rDerivedSet );
++ String XlateFmtColName( const String &rName ); //Takashi Ono for CJK
+ SwTxtFmtColl* MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ SwCharFmt* MakeCharStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ void MakeStyleTab();
diff --git a/editors/openoffice.org-1.1/files/patch-topsection b/editors/openoffice.org-1.1/files/patch-topsection
new file mode 100644
index 00000000000..a332718508d
--- /dev/null
+++ b/editors/openoffice.org-1.1/files/patch-topsection
@@ -0,0 +1,21 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:55:23 -0000
+@@ -2015,7 +2015,7 @@
+ bool bStartAttr = pPlcxMan->Get(&aRes); // hole Attribut-Pos
+ aRes.nAktCp = rTxtPos; // Akt. Cp-Pos
+
+- if (aRes.nFlags & MAN_MASK_NEW_SEP) // neue Section
++ if ((aRes.nFlags & MAN_MASK_NEW_SEP) || maSectionManager.empty()) // neue Section
+ {
+ ASSERT(pPaM->GetNode()->GetTxtNode(), "Missing txtnode");
+ // PageDesc erzeugen und fuellen
+--- ../sw/source/filter/ww8/ww8par.hxx 30 Jun 2003 15:54:37 -0000 1.115
++++ ../sw/source/filter/ww8/ww8par.hxx 25 Jul 2003 22:55:28 -0000
+@@ -720,6 +720,7 @@
+ short GetPageLeft() const;
+ short GetPageRight() const;
+ short GetPageWidth() const;
++ bool empty() const { return maSegments.empty(); }
+ };
+
+ class wwFrameNamer
diff --git a/editors/openoffice.org-1.1/files/patch-word6+95-cjkhandling b/editors/openoffice.org-1.1/files/patch-word6+95-cjkhandling
new file mode 100644
index 00000000000..9a86ffb7da9
--- /dev/null
+++ b/editors/openoffice.org-1.1/files/patch-word6+95-cjkhandling
@@ -0,0 +1,63 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:54:52 -0000
+@@ -1683,11 +1683,20 @@
+ if (bVer67)
+ {
+ sal_Char aTest[2];
+- aTest[0] = (nUCode & 0xFF00) >> 8;
+- aTest[1] = (nUCode & 0x00FF);
+- String aTemp(aTest, 2, eSrcCharSet);
+- ASSERT(aTemp.Len() == 1, "so much for that theory");
+- *pWork = aTemp.GetChar(0);
++ if (nUCode >= 0x3000)
++ {
++ aTest[0] = (nUCode & 0xFF00) >> 8;
++ aTest[1] = (nUCode & 0x00FF);
++ String aTemp(aTest, 2, eSrcCharSet);
++ ASSERT(aTemp.Len() == 1, "so much for that theory");
++ *pWork = aTemp.GetChar(0);
++ }
++ else
++ {
++ aTest[0] = (nUCode & 0x00FF);
++ String aTemp(aTest, 1, eSrcCharSet);
++ *pWork = aTemp.GetChar(0);
++ }
+ }
+ else
+ *pWork = nUCode;
+@@ -3188,7 +3197,8 @@
+ {
+ case 6:
+ case 7:
+- if ( (0xa5dc != nMagic) && (0xa699 != nMagic) )
++ //if ( (0xa5dc != nMagic) && (0xa699 != nMagic) ) //Takashi Ono
++ if ( (0xa5dc != nMagic) && ( (0xa697 > nMagic) || (0xa699 < nMagic) ) )
+ {
+ //JP 06.05.99: teste auf eigenen 97-Fake!
+ if (pStg && 0xa5ec == nMagic)
+--- ../sw/source/filter/ww8/ww8par6.cxx 20 Jun 2003 09:38:07 -0000 1.138
++++ ../sw/source/filter/ww8/ww8par6.cxx 25 Jul 2003 22:55:05 -0000
+@@ -3373,9 +3373,11 @@
+ nId = RES_CHRATR_CTL_FONT;
+ break;
+ case 93:
++ case 111:
+ case 0x4a4f:
+ nId = RES_CHRATR_FONT;
+ break;
++ case 112:
+ case 0x4a50:
+ nId = RES_CHRATR_CJK_FONT;
+ break;
+@@ -4984,8 +4986,8 @@
+ //percentage to grow hps short
+ {110, (FNReadRecord)0}, //"sprmCCondHyhen", chp.ysri
+ //ysri short
+- {111, (FNReadRecord)0}, //"??111",
+- {112, (FNReadRecord)0}, //"??112",
++ {111, &SwWW8ImplReader::Read_FontCode}, //ww7 font
++ {112, &SwWW8ImplReader::Read_FontCode}, //ww7 CJK font
+ {113, &SwWW8ImplReader::Read_FontCode}, //ww7 rtl font
+ {114, (FNReadRecord)0}, //"??114",
+ {115, &SwWW8ImplReader::Read_TxtColor}, //ww7 rtl colour ?
diff --git a/editors/openoffice.org-1.1/files/patch-wrtrtf b/editors/openoffice.org-1.1/files/patch-wrtrtf
new file mode 100644
index 00000000000..7381dc61cd6
--- /dev/null
+++ b/editors/openoffice.org-1.1/files/patch-wrtrtf
@@ -0,0 +1,312 @@
+--- ../svtools/source/svrtf/rtfout.cxx.orig 2000-10-16 18:13:46.000000000 +0900
++++ ../svtools/source/svrtf/rtfout.cxx 2003-09-23 12:41:00.000000000 +0900
+@@ -124,8 +124,9 @@
+ default:
+ {
+ sal_Unicode cCh = c;
+- c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
+- if( !c )
++ rtl::OString buff( &c, 1, eDestEnc, RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE|RTL_UNICODETOTEXT_FLAGS_INVALID_IGNORE );
++// c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
++ if( !buff.getLength() )
+ {
+ // then write as unicode - character
+ if( 0xFF < cCh )
+@@ -141,8 +142,8 @@
+ break;
+ }
+
+- if( !bWriteHelpFile )
+- switch( c )
++ if( !bWriteHelpFile && buff.getLength() == 1 )
++ switch( BYTE(buff[0]) )
+ {
+ #ifdef MAC
+ case 0xa5: pStr = sRTF_BULLET; break;
+@@ -164,6 +165,9 @@
+ // MAC
+ }
+ if( !pStr )
++ for (int i = 0; i < buff.getLength(); ++i)
++ {
++ c = BYTE(buff[i]);
+ switch ( c )
+ {
+ case '\\':
+@@ -186,6 +190,7 @@
+ }
+ break;
+ }
++ }
+ }
+ break;
+ }
+--- ../sw/source/filter/rtf/wrtrtf.cxx.orig 2003-04-18 00:00:28.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.cxx 2003-09-23 23:33:08.000000000 +0900
+@@ -184,6 +184,12 @@
+ #ifndef _CHARFMT_HXX
+ #include <charfmt.hxx>
+ #endif
++#ifndef _POOLFMT_HXX
++#include <poolfmt.hxx>
++#endif
++#ifndef _SWSTYLENAMEMAPPER_HXX
++#include <SwStyleNameMapper.hxx>
++#endif
+ #ifndef _SECTION_HXX //autogen
+ #include <section.hxx>
+ #endif
+@@ -215,7 +221,7 @@
+ SV_IMPL_VARARR( RTFColorTbl, Color )
+
+
+-SwRTFWriter::SwRTFWriter( const String& rFltName )
++SwRTFWriter::SwRTFWriter( const String& rFltName ) : eCurrentCharSet(DEF_ENCODING)
+ {
+ // schreibe Win-RTF-HelpFileFmt
+ bWriteHelpFmt = 'W' == rFltName.GetChar( 0 );
+@@ -893,14 +899,14 @@
+ // as alternative name. Because WinWord can't match each
+ // font to a UniCode font. So the CJK texts are shown as
+ // empty rectangles ;-(.
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ OutComment( rWrt, sRTF_FALT) << ' ';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, eChrSet,
+ rWrt.bWriteHelpFmt ) << '}';
+ }
+ else
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ rWrt.Strm() << ";}";
+ }
+@@ -932,6 +938,139 @@
+
+
+
++//Takashi Ono for CJK
++const rtl::OUString SwRTFWriter::XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_POOLCOLL_TEXT_IDENT, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_POOLCOLL_LABEL, RES_POOLCOLL_TOX_ILLUSH, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_POOLCOLL_TOX_AUTHORITIESH, RES_NONE, RES_NONE,
++ RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_NUM_LEVEL1,
++
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_NUM_LEVEL2, RES_POOLCOLL_NUM_LEVEL3, RES_POOLCOLL_NUM_LEVEL4, RES_POOLCOLL_NUM_LEVEL5,
++
++ RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ sal_uInt16 idcol = ::SwStyleNameMapper::GetPoolIdFromUIName( rName, eFlags );
++
++ for (int i = 0; i < sizeof( aArr ) / sizeof( *aArr ); i++)
++ {
++ if ( idcol == aArr[i] )
++ {
++ return rtl::OUString::createFromAscii(stiName[i]);
++ }
++ }
++ return ::SwStyleNameMapper::GetProgName( idcol, String() );
++}
++
++
++
+ void SwRTFWriter::OutRTFStyleTab()
+ {
+ // das 0-Style ist das Default, wird nie ausgegeben !!
+@@ -988,7 +1127,7 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pColl->GetName(), DEF_ENCODING,
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pColl->GetName(), GET_POOLID_TXTCOLL ), DEF_ENCODING,
+ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+@@ -1015,8 +1154,8 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pFmt->GetName(), DEF_ENCODING,
+- bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pFmt->GetName(), GET_POOLID_CHRFMT ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+ Strm() << '}';
+@@ -1217,8 +1356,8 @@
+ break;
+ Strm() << sRTF_PGDSCNXT;
+ OutULong( i ) << ' ';
+- RTFOutFuncs::Out_String( Strm(), rPageDesc.GetName(),
+- DEF_ENCODING, bWriteHelpFmt ) << ";}";
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( rPageDesc.GetName(), GET_POOLID_PAGEDESC ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}";
+ }
+ Strm() << '}' << SwRTFWriter::sNewLine;
+ bOutPageDesc = bOutPageDescTbl = FALSE;
+--- ../sw/source/filter/rtf/wrtrtf.hxx.orig 2002-07-31 19:18:50.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.hxx 2003-09-23 23:37:50.000000000 +0900
+@@ -117,6 +117,7 @@
+ USHORT nAktFlyPos; // Index auf das naechste "FlyFrmFmt"
+ void OutRTFColorTab();
+ void OutRTFFontTab();
++ const rtl::OUString XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags );
+ void OutRTFStyleTab();
+ void OutRTFListTab();
+
+@@ -136,6 +137,8 @@
+ USHORT nBkmkTabPos; // akt. Position in der Bookmark-Tabelle
+ USHORT nCurScript; // actual scripttype
+
++ rtl_TextEncoding eCurrentCharSet;
++
+ #if defined(MAC) || defined(UNX)
+ static const sal_Char sNewLine; // nur \012 oder \015
+ #else
+--- ../sw/source/filter/rtf/rtfatr.cxx.orig 2003-05-19 21:24:46.000000000 +0900
++++ ../sw/source/filter/rtf/rtfatr.cxx 2003-09-23 23:45:52.000000000 +0900
+@@ -1319,7 +1319,7 @@
+ sURL = aTmp.GetFull();
+ }
+ */ rWrt.Strm() << '\"';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ sURL = aTmp.GetMark();
+ }
+@@ -1328,7 +1328,7 @@
+ {
+ rWrt.Strm() << "\\\\l \"";
+ sURL.Erase( 0, 1 );
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ }
+
+@@ -1609,7 +1609,7 @@
+
+ if( nStrPos != nEnde )
+ RTFOutFuncs::Out_Char( rWrt.Strm(), rStr.GetChar( nStrPos ),
+- DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
++ rRTFWrt.eCurrentCharSet, rRTFWrt.bWriteHelpFmt );
+ }
+
+ // noch eine schliesende Klammer da ??
+@@ -2188,6 +2188,7 @@
+ const sal_Char* pCmd = bAssoc ? sRTF_AF : sRTF_F;
+ rWrt.Strm() << pCmd;
+ rWrt.OutULong(rRTFWrt.GetId(rFont));
++ rRTFWrt.eCurrentCharSet = rFont.GetCharSet();
+ }
+ return rWrt;
+ }
diff --git a/editors/openoffice.org-2-RC/Makefile b/editors/openoffice.org-2-RC/Makefile
index 68bcf804ab7..dd5d66a9326 100644
--- a/editors/openoffice.org-2-RC/Makefile
+++ b/editors/openoffice.org-2-RC/Makefile
@@ -7,6 +7,7 @@
PORTNAME= openoffice
PORTVERSION= 1.1.0
+PORTREVERSION= 1
CATEGORIES+= editors
MASTER_SITES+= ftp://openofficeorg.secsup.org/pub/software/openoffice/stable/%SUBDIR%/ \
ftp://sunsite.cnlab-switch.ch/mirror/OpenOffice/stable/%SUBDIR%/ \
diff --git a/editors/openoffice.org-2-RC/files/patch-rtfcjk b/editors/openoffice.org-2-RC/files/patch-rtfcjk
new file mode 100644
index 00000000000..2b44f86757f
--- /dev/null
+++ b/editors/openoffice.org-2-RC/files/patch-rtfcjk
@@ -0,0 +1,214 @@
+--- ../svx/source/svrtf/rtfitem.cxx 24 Jun 2003 07:48:56 -0000 1.18
++++ ../svx/source/svrtf/rtfitem.cxx 25 Jul 2003 22:54:24 -0000
+@@ -285,11 +285,20 @@
+ }
+ else
+ {
+- if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType )
++// if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType ) //Takashi Ono for CJK
++ if( LOW_CHARTYPE == eType )
+ {
+ if( *pNormal )
+ {
+ rItem.SetWhich( *pNormal );
++ rSet.Put( rItem );
++ }
++ }
++ else if( HIGH_CHARTYPE == eType )
++ {
++ if( *pCTL )
++ {
++ rItem.SetWhich( *pCTL );
+ rSet.Put( rItem );
+ }
+ }
+--- ../svx/source/svrtf/svxrtf.cxx 19 May 2003 12:30:59 -0000 1.15
++++ ../svx/source/svrtf/svxrtf.cxx 25 Jul 2003 22:54:29 -0000
+@@ -583,8 +583,14 @@
+
+ case RTF_FCHARSET:
+ if( -1 != nTokenValue )
+- pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
+- (BYTE)nTokenValue ) );
++ {
++// pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
++// (BYTE)nTokenValue ) );
++ CharSet nCharSet =
++ rtl_getTextEncodingFromWindowsCharset( (BYTE)nTokenValue );
++ pFont->SetCharSet( nCharSet );
++ SetEncoding( nCharSet ); //Takashi Ono
++ }
+ break;
+
+ case RTF_FPRQ:
+--- ../sw/source/filter/rtf/swparrtf.cxx 4 Jun 2003 10:19:09 -0000 1.28
++++ ../sw/source/filter/rtf/swparrtf.cxx 25 Jul 2003 22:54:37 -0000
+@@ -3231,10 +3231,156 @@
+ SetSwgValues( rCollSet );
+ }
+
++//Takashi Ono for CJK
++String SwRTFParser::XlateFmtColName( const String &rName )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_NONE, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_NONE, RES_NONE, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_LISTS_BEGIN, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++
++ RES_NONE,RES_NONE, RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ RES_POOL_COLLFMT_TYPE nId = RES_NONE;
++
++ for (int i = 0; i < sizeof( stiName ) / sizeof( *stiName ); i++)
++ {
++ if ( rName == String( stiName[i], RTL_TEXTENCODING_MS_1252 ) )
++ {
++ nId = aArr[i];
++ break;
++ }
++ }
++ USHORT nResId;
++ if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
++ nResId = RC_POOLCOLL_TEXT_BEGIN - RES_POOLCOLL_TEXT_BEGIN;
++ else if (RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END)
++ nResId = RC_POOLCOLL_LISTS_BEGIN - RES_POOLCOLL_LISTS_BEGIN;
++ else if (RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END)
++ nResId = RC_POOLCOLL_EXTRA_BEGIN - RES_POOLCOLL_EXTRA_BEGIN;
++ else if (RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END)
++ nResId = RC_POOLCOLL_REGISTER_BEGIN - RES_POOLCOLL_REGISTER_BEGIN;
++ else if (RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END)
++ nResId = RC_POOLCOLL_DOC_BEGIN - RES_POOLCOLL_DOC_BEGIN;
++ else if (RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END)
++ nResId = RC_POOLCOLL_HTML_BEGIN - RES_POOLCOLL_HTML_BEGIN;
++ return String( ResId( nResId + nId, pSwResMgr ) );
++}
++
+ SwTxtFmtColl* SwRTFParser::MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle )
+ {
+- int bCollExist;
+- SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo),
++ int bCollExist;
++// SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo), //Takashi Ono for CJK
++ SwTxtFmtColl* pColl = MakeColl( XlateFmtColName( rStyle.sName ),
++ USHORT(nNo),
+ rStyle.nOutlineNo, bCollExist );
+ aTxtCollTbl.Insert( nNo, pColl );
+
+--- ../sw/source/filter/rtf/swparrtf.hxx 19 May 2003 12:25:34 -0000 1.10
++++ ../sw/source/filter/rtf/swparrtf.hxx 25 Jul 2003 22:54:44 -0000
+@@ -364,6 +364,7 @@
+ void SetStyleAttr( SfxItemSet& rCollSet,
+ const SfxItemSet& rStyleSet,
+ const SfxItemSet& rDerivedSet );
++ String XlateFmtColName( const String &rName ); //Takashi Ono for CJK
+ SwTxtFmtColl* MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ SwCharFmt* MakeCharStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ void MakeStyleTab();
diff --git a/editors/openoffice.org-2-RC/files/patch-topsection b/editors/openoffice.org-2-RC/files/patch-topsection
new file mode 100644
index 00000000000..a332718508d
--- /dev/null
+++ b/editors/openoffice.org-2-RC/files/patch-topsection
@@ -0,0 +1,21 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:55:23 -0000
+@@ -2015,7 +2015,7 @@
+ bool bStartAttr = pPlcxMan->Get(&aRes); // hole Attribut-Pos
+ aRes.nAktCp = rTxtPos; // Akt. Cp-Pos
+
+- if (aRes.nFlags & MAN_MASK_NEW_SEP) // neue Section
++ if ((aRes.nFlags & MAN_MASK_NEW_SEP) || maSectionManager.empty()) // neue Section
+ {
+ ASSERT(pPaM->GetNode()->GetTxtNode(), "Missing txtnode");
+ // PageDesc erzeugen und fuellen
+--- ../sw/source/filter/ww8/ww8par.hxx 30 Jun 2003 15:54:37 -0000 1.115
++++ ../sw/source/filter/ww8/ww8par.hxx 25 Jul 2003 22:55:28 -0000
+@@ -720,6 +720,7 @@
+ short GetPageLeft() const;
+ short GetPageRight() const;
+ short GetPageWidth() const;
++ bool empty() const { return maSegments.empty(); }
+ };
+
+ class wwFrameNamer
diff --git a/editors/openoffice.org-2-RC/files/patch-word6+95-cjkhandling b/editors/openoffice.org-2-RC/files/patch-word6+95-cjkhandling
new file mode 100644
index 00000000000..9a86ffb7da9
--- /dev/null
+++ b/editors/openoffice.org-2-RC/files/patch-word6+95-cjkhandling
@@ -0,0 +1,63 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:54:52 -0000
+@@ -1683,11 +1683,20 @@
+ if (bVer67)
+ {
+ sal_Char aTest[2];
+- aTest[0] = (nUCode & 0xFF00) >> 8;
+- aTest[1] = (nUCode & 0x00FF);
+- String aTemp(aTest, 2, eSrcCharSet);
+- ASSERT(aTemp.Len() == 1, "so much for that theory");
+- *pWork = aTemp.GetChar(0);
++ if (nUCode >= 0x3000)
++ {
++ aTest[0] = (nUCode & 0xFF00) >> 8;
++ aTest[1] = (nUCode & 0x00FF);
++ String aTemp(aTest, 2, eSrcCharSet);
++ ASSERT(aTemp.Len() == 1, "so much for that theory");
++ *pWork = aTemp.GetChar(0);
++ }
++ else
++ {
++ aTest[0] = (nUCode & 0x00FF);
++ String aTemp(aTest, 1, eSrcCharSet);
++ *pWork = aTemp.GetChar(0);
++ }
+ }
+ else
+ *pWork = nUCode;
+@@ -3188,7 +3197,8 @@
+ {
+ case 6:
+ case 7:
+- if ( (0xa5dc != nMagic) && (0xa699 != nMagic) )
++ //if ( (0xa5dc != nMagic) && (0xa699 != nMagic) ) //Takashi Ono
++ if ( (0xa5dc != nMagic) && ( (0xa697 > nMagic) || (0xa699 < nMagic) ) )
+ {
+ //JP 06.05.99: teste auf eigenen 97-Fake!
+ if (pStg && 0xa5ec == nMagic)
+--- ../sw/source/filter/ww8/ww8par6.cxx 20 Jun 2003 09:38:07 -0000 1.138
++++ ../sw/source/filter/ww8/ww8par6.cxx 25 Jul 2003 22:55:05 -0000
+@@ -3373,9 +3373,11 @@
+ nId = RES_CHRATR_CTL_FONT;
+ break;
+ case 93:
++ case 111:
+ case 0x4a4f:
+ nId = RES_CHRATR_FONT;
+ break;
++ case 112:
+ case 0x4a50:
+ nId = RES_CHRATR_CJK_FONT;
+ break;
+@@ -4984,8 +4986,8 @@
+ //percentage to grow hps short
+ {110, (FNReadRecord)0}, //"sprmCCondHyhen", chp.ysri
+ //ysri short
+- {111, (FNReadRecord)0}, //"??111",
+- {112, (FNReadRecord)0}, //"??112",
++ {111, &SwWW8ImplReader::Read_FontCode}, //ww7 font
++ {112, &SwWW8ImplReader::Read_FontCode}, //ww7 CJK font
+ {113, &SwWW8ImplReader::Read_FontCode}, //ww7 rtl font
+ {114, (FNReadRecord)0}, //"??114",
+ {115, &SwWW8ImplReader::Read_TxtColor}, //ww7 rtl colour ?
diff --git a/editors/openoffice.org-2-RC/files/patch-wrtrtf b/editors/openoffice.org-2-RC/files/patch-wrtrtf
new file mode 100644
index 00000000000..7381dc61cd6
--- /dev/null
+++ b/editors/openoffice.org-2-RC/files/patch-wrtrtf
@@ -0,0 +1,312 @@
+--- ../svtools/source/svrtf/rtfout.cxx.orig 2000-10-16 18:13:46.000000000 +0900
++++ ../svtools/source/svrtf/rtfout.cxx 2003-09-23 12:41:00.000000000 +0900
+@@ -124,8 +124,9 @@
+ default:
+ {
+ sal_Unicode cCh = c;
+- c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
+- if( !c )
++ rtl::OString buff( &c, 1, eDestEnc, RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE|RTL_UNICODETOTEXT_FLAGS_INVALID_IGNORE );
++// c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
++ if( !buff.getLength() )
+ {
+ // then write as unicode - character
+ if( 0xFF < cCh )
+@@ -141,8 +142,8 @@
+ break;
+ }
+
+- if( !bWriteHelpFile )
+- switch( c )
++ if( !bWriteHelpFile && buff.getLength() == 1 )
++ switch( BYTE(buff[0]) )
+ {
+ #ifdef MAC
+ case 0xa5: pStr = sRTF_BULLET; break;
+@@ -164,6 +165,9 @@
+ // MAC
+ }
+ if( !pStr )
++ for (int i = 0; i < buff.getLength(); ++i)
++ {
++ c = BYTE(buff[i]);
+ switch ( c )
+ {
+ case '\\':
+@@ -186,6 +190,7 @@
+ }
+ break;
+ }
++ }
+ }
+ break;
+ }
+--- ../sw/source/filter/rtf/wrtrtf.cxx.orig 2003-04-18 00:00:28.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.cxx 2003-09-23 23:33:08.000000000 +0900
+@@ -184,6 +184,12 @@
+ #ifndef _CHARFMT_HXX
+ #include <charfmt.hxx>
+ #endif
++#ifndef _POOLFMT_HXX
++#include <poolfmt.hxx>
++#endif
++#ifndef _SWSTYLENAMEMAPPER_HXX
++#include <SwStyleNameMapper.hxx>
++#endif
+ #ifndef _SECTION_HXX //autogen
+ #include <section.hxx>
+ #endif
+@@ -215,7 +221,7 @@
+ SV_IMPL_VARARR( RTFColorTbl, Color )
+
+
+-SwRTFWriter::SwRTFWriter( const String& rFltName )
++SwRTFWriter::SwRTFWriter( const String& rFltName ) : eCurrentCharSet(DEF_ENCODING)
+ {
+ // schreibe Win-RTF-HelpFileFmt
+ bWriteHelpFmt = 'W' == rFltName.GetChar( 0 );
+@@ -893,14 +899,14 @@
+ // as alternative name. Because WinWord can't match each
+ // font to a UniCode font. So the CJK texts are shown as
+ // empty rectangles ;-(.
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ OutComment( rWrt, sRTF_FALT) << ' ';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, eChrSet,
+ rWrt.bWriteHelpFmt ) << '}';
+ }
+ else
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ rWrt.Strm() << ";}";
+ }
+@@ -932,6 +938,139 @@
+
+
+
++//Takashi Ono for CJK
++const rtl::OUString SwRTFWriter::XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_POOLCOLL_TEXT_IDENT, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_POOLCOLL_LABEL, RES_POOLCOLL_TOX_ILLUSH, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_POOLCOLL_TOX_AUTHORITIESH, RES_NONE, RES_NONE,
++ RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_NUM_LEVEL1,
++
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_NUM_LEVEL2, RES_POOLCOLL_NUM_LEVEL3, RES_POOLCOLL_NUM_LEVEL4, RES_POOLCOLL_NUM_LEVEL5,
++
++ RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ sal_uInt16 idcol = ::SwStyleNameMapper::GetPoolIdFromUIName( rName, eFlags );
++
++ for (int i = 0; i < sizeof( aArr ) / sizeof( *aArr ); i++)
++ {
++ if ( idcol == aArr[i] )
++ {
++ return rtl::OUString::createFromAscii(stiName[i]);
++ }
++ }
++ return ::SwStyleNameMapper::GetProgName( idcol, String() );
++}
++
++
++
+ void SwRTFWriter::OutRTFStyleTab()
+ {
+ // das 0-Style ist das Default, wird nie ausgegeben !!
+@@ -988,7 +1127,7 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pColl->GetName(), DEF_ENCODING,
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pColl->GetName(), GET_POOLID_TXTCOLL ), DEF_ENCODING,
+ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+@@ -1015,8 +1154,8 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pFmt->GetName(), DEF_ENCODING,
+- bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pFmt->GetName(), GET_POOLID_CHRFMT ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+ Strm() << '}';
+@@ -1217,8 +1356,8 @@
+ break;
+ Strm() << sRTF_PGDSCNXT;
+ OutULong( i ) << ' ';
+- RTFOutFuncs::Out_String( Strm(), rPageDesc.GetName(),
+- DEF_ENCODING, bWriteHelpFmt ) << ";}";
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( rPageDesc.GetName(), GET_POOLID_PAGEDESC ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}";
+ }
+ Strm() << '}' << SwRTFWriter::sNewLine;
+ bOutPageDesc = bOutPageDescTbl = FALSE;
+--- ../sw/source/filter/rtf/wrtrtf.hxx.orig 2002-07-31 19:18:50.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.hxx 2003-09-23 23:37:50.000000000 +0900
+@@ -117,6 +117,7 @@
+ USHORT nAktFlyPos; // Index auf das naechste "FlyFrmFmt"
+ void OutRTFColorTab();
+ void OutRTFFontTab();
++ const rtl::OUString XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags );
+ void OutRTFStyleTab();
+ void OutRTFListTab();
+
+@@ -136,6 +137,8 @@
+ USHORT nBkmkTabPos; // akt. Position in der Bookmark-Tabelle
+ USHORT nCurScript; // actual scripttype
+
++ rtl_TextEncoding eCurrentCharSet;
++
+ #if defined(MAC) || defined(UNX)
+ static const sal_Char sNewLine; // nur \012 oder \015
+ #else
+--- ../sw/source/filter/rtf/rtfatr.cxx.orig 2003-05-19 21:24:46.000000000 +0900
++++ ../sw/source/filter/rtf/rtfatr.cxx 2003-09-23 23:45:52.000000000 +0900
+@@ -1319,7 +1319,7 @@
+ sURL = aTmp.GetFull();
+ }
+ */ rWrt.Strm() << '\"';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ sURL = aTmp.GetMark();
+ }
+@@ -1328,7 +1328,7 @@
+ {
+ rWrt.Strm() << "\\\\l \"";
+ sURL.Erase( 0, 1 );
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ }
+
+@@ -1609,7 +1609,7 @@
+
+ if( nStrPos != nEnde )
+ RTFOutFuncs::Out_Char( rWrt.Strm(), rStr.GetChar( nStrPos ),
+- DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
++ rRTFWrt.eCurrentCharSet, rRTFWrt.bWriteHelpFmt );
+ }
+
+ // noch eine schliesende Klammer da ??
+@@ -2188,6 +2188,7 @@
+ const sal_Char* pCmd = bAssoc ? sRTF_AF : sRTF_F;
+ rWrt.Strm() << pCmd;
+ rWrt.OutULong(rRTFWrt.GetId(rFont));
++ rRTFWrt.eCurrentCharSet = rFont.GetCharSet();
+ }
+ return rWrt;
+ }
diff --git a/editors/openoffice.org-2-devel/Makefile b/editors/openoffice.org-2-devel/Makefile
index 68bcf804ab7..dd5d66a9326 100644
--- a/editors/openoffice.org-2-devel/Makefile
+++ b/editors/openoffice.org-2-devel/Makefile
@@ -7,6 +7,7 @@
PORTNAME= openoffice
PORTVERSION= 1.1.0
+PORTREVERSION= 1
CATEGORIES+= editors
MASTER_SITES+= ftp://openofficeorg.secsup.org/pub/software/openoffice/stable/%SUBDIR%/ \
ftp://sunsite.cnlab-switch.ch/mirror/OpenOffice/stable/%SUBDIR%/ \
diff --git a/editors/openoffice.org-2-devel/files/patch-rtfcjk b/editors/openoffice.org-2-devel/files/patch-rtfcjk
new file mode 100644
index 00000000000..2b44f86757f
--- /dev/null
+++ b/editors/openoffice.org-2-devel/files/patch-rtfcjk
@@ -0,0 +1,214 @@
+--- ../svx/source/svrtf/rtfitem.cxx 24 Jun 2003 07:48:56 -0000 1.18
++++ ../svx/source/svrtf/rtfitem.cxx 25 Jul 2003 22:54:24 -0000
+@@ -285,11 +285,20 @@
+ }
+ else
+ {
+- if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType )
++// if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType ) //Takashi Ono for CJK
++ if( LOW_CHARTYPE == eType )
+ {
+ if( *pNormal )
+ {
+ rItem.SetWhich( *pNormal );
++ rSet.Put( rItem );
++ }
++ }
++ else if( HIGH_CHARTYPE == eType )
++ {
++ if( *pCTL )
++ {
++ rItem.SetWhich( *pCTL );
+ rSet.Put( rItem );
+ }
+ }
+--- ../svx/source/svrtf/svxrtf.cxx 19 May 2003 12:30:59 -0000 1.15
++++ ../svx/source/svrtf/svxrtf.cxx 25 Jul 2003 22:54:29 -0000
+@@ -583,8 +583,14 @@
+
+ case RTF_FCHARSET:
+ if( -1 != nTokenValue )
+- pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
+- (BYTE)nTokenValue ) );
++ {
++// pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
++// (BYTE)nTokenValue ) );
++ CharSet nCharSet =
++ rtl_getTextEncodingFromWindowsCharset( (BYTE)nTokenValue );
++ pFont->SetCharSet( nCharSet );
++ SetEncoding( nCharSet ); //Takashi Ono
++ }
+ break;
+
+ case RTF_FPRQ:
+--- ../sw/source/filter/rtf/swparrtf.cxx 4 Jun 2003 10:19:09 -0000 1.28
++++ ../sw/source/filter/rtf/swparrtf.cxx 25 Jul 2003 22:54:37 -0000
+@@ -3231,10 +3231,156 @@
+ SetSwgValues( rCollSet );
+ }
+
++//Takashi Ono for CJK
++String SwRTFParser::XlateFmtColName( const String &rName )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_NONE, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_NONE, RES_NONE, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_LISTS_BEGIN, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++
++ RES_NONE,RES_NONE, RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ RES_POOL_COLLFMT_TYPE nId = RES_NONE;
++
++ for (int i = 0; i < sizeof( stiName ) / sizeof( *stiName ); i++)
++ {
++ if ( rName == String( stiName[i], RTL_TEXTENCODING_MS_1252 ) )
++ {
++ nId = aArr[i];
++ break;
++ }
++ }
++ USHORT nResId;
++ if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
++ nResId = RC_POOLCOLL_TEXT_BEGIN - RES_POOLCOLL_TEXT_BEGIN;
++ else if (RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END)
++ nResId = RC_POOLCOLL_LISTS_BEGIN - RES_POOLCOLL_LISTS_BEGIN;
++ else if (RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END)
++ nResId = RC_POOLCOLL_EXTRA_BEGIN - RES_POOLCOLL_EXTRA_BEGIN;
++ else if (RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END)
++ nResId = RC_POOLCOLL_REGISTER_BEGIN - RES_POOLCOLL_REGISTER_BEGIN;
++ else if (RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END)
++ nResId = RC_POOLCOLL_DOC_BEGIN - RES_POOLCOLL_DOC_BEGIN;
++ else if (RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END)
++ nResId = RC_POOLCOLL_HTML_BEGIN - RES_POOLCOLL_HTML_BEGIN;
++ return String( ResId( nResId + nId, pSwResMgr ) );
++}
++
+ SwTxtFmtColl* SwRTFParser::MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle )
+ {
+- int bCollExist;
+- SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo),
++ int bCollExist;
++// SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo), //Takashi Ono for CJK
++ SwTxtFmtColl* pColl = MakeColl( XlateFmtColName( rStyle.sName ),
++ USHORT(nNo),
+ rStyle.nOutlineNo, bCollExist );
+ aTxtCollTbl.Insert( nNo, pColl );
+
+--- ../sw/source/filter/rtf/swparrtf.hxx 19 May 2003 12:25:34 -0000 1.10
++++ ../sw/source/filter/rtf/swparrtf.hxx 25 Jul 2003 22:54:44 -0000
+@@ -364,6 +364,7 @@
+ void SetStyleAttr( SfxItemSet& rCollSet,
+ const SfxItemSet& rStyleSet,
+ const SfxItemSet& rDerivedSet );
++ String XlateFmtColName( const String &rName ); //Takashi Ono for CJK
+ SwTxtFmtColl* MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ SwCharFmt* MakeCharStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ void MakeStyleTab();
diff --git a/editors/openoffice.org-2-devel/files/patch-topsection b/editors/openoffice.org-2-devel/files/patch-topsection
new file mode 100644
index 00000000000..a332718508d
--- /dev/null
+++ b/editors/openoffice.org-2-devel/files/patch-topsection
@@ -0,0 +1,21 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:55:23 -0000
+@@ -2015,7 +2015,7 @@
+ bool bStartAttr = pPlcxMan->Get(&aRes); // hole Attribut-Pos
+ aRes.nAktCp = rTxtPos; // Akt. Cp-Pos
+
+- if (aRes.nFlags & MAN_MASK_NEW_SEP) // neue Section
++ if ((aRes.nFlags & MAN_MASK_NEW_SEP) || maSectionManager.empty()) // neue Section
+ {
+ ASSERT(pPaM->GetNode()->GetTxtNode(), "Missing txtnode");
+ // PageDesc erzeugen und fuellen
+--- ../sw/source/filter/ww8/ww8par.hxx 30 Jun 2003 15:54:37 -0000 1.115
++++ ../sw/source/filter/ww8/ww8par.hxx 25 Jul 2003 22:55:28 -0000
+@@ -720,6 +720,7 @@
+ short GetPageLeft() const;
+ short GetPageRight() const;
+ short GetPageWidth() const;
++ bool empty() const { return maSegments.empty(); }
+ };
+
+ class wwFrameNamer
diff --git a/editors/openoffice.org-2-devel/files/patch-word6+95-cjkhandling b/editors/openoffice.org-2-devel/files/patch-word6+95-cjkhandling
new file mode 100644
index 00000000000..9a86ffb7da9
--- /dev/null
+++ b/editors/openoffice.org-2-devel/files/patch-word6+95-cjkhandling
@@ -0,0 +1,63 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:54:52 -0000
+@@ -1683,11 +1683,20 @@
+ if (bVer67)
+ {
+ sal_Char aTest[2];
+- aTest[0] = (nUCode & 0xFF00) >> 8;
+- aTest[1] = (nUCode & 0x00FF);
+- String aTemp(aTest, 2, eSrcCharSet);
+- ASSERT(aTemp.Len() == 1, "so much for that theory");
+- *pWork = aTemp.GetChar(0);
++ if (nUCode >= 0x3000)
++ {
++ aTest[0] = (nUCode & 0xFF00) >> 8;
++ aTest[1] = (nUCode & 0x00FF);
++ String aTemp(aTest, 2, eSrcCharSet);
++ ASSERT(aTemp.Len() == 1, "so much for that theory");
++ *pWork = aTemp.GetChar(0);
++ }
++ else
++ {
++ aTest[0] = (nUCode & 0x00FF);
++ String aTemp(aTest, 1, eSrcCharSet);
++ *pWork = aTemp.GetChar(0);
++ }
+ }
+ else
+ *pWork = nUCode;
+@@ -3188,7 +3197,8 @@
+ {
+ case 6:
+ case 7:
+- if ( (0xa5dc != nMagic) && (0xa699 != nMagic) )
++ //if ( (0xa5dc != nMagic) && (0xa699 != nMagic) ) //Takashi Ono
++ if ( (0xa5dc != nMagic) && ( (0xa697 > nMagic) || (0xa699 < nMagic) ) )
+ {
+ //JP 06.05.99: teste auf eigenen 97-Fake!
+ if (pStg && 0xa5ec == nMagic)
+--- ../sw/source/filter/ww8/ww8par6.cxx 20 Jun 2003 09:38:07 -0000 1.138
++++ ../sw/source/filter/ww8/ww8par6.cxx 25 Jul 2003 22:55:05 -0000
+@@ -3373,9 +3373,11 @@
+ nId = RES_CHRATR_CTL_FONT;
+ break;
+ case 93:
++ case 111:
+ case 0x4a4f:
+ nId = RES_CHRATR_FONT;
+ break;
++ case 112:
+ case 0x4a50:
+ nId = RES_CHRATR_CJK_FONT;
+ break;
+@@ -4984,8 +4986,8 @@
+ //percentage to grow hps short
+ {110, (FNReadRecord)0}, //"sprmCCondHyhen", chp.ysri
+ //ysri short
+- {111, (FNReadRecord)0}, //"??111",
+- {112, (FNReadRecord)0}, //"??112",
++ {111, &SwWW8ImplReader::Read_FontCode}, //ww7 font
++ {112, &SwWW8ImplReader::Read_FontCode}, //ww7 CJK font
+ {113, &SwWW8ImplReader::Read_FontCode}, //ww7 rtl font
+ {114, (FNReadRecord)0}, //"??114",
+ {115, &SwWW8ImplReader::Read_TxtColor}, //ww7 rtl colour ?
diff --git a/editors/openoffice.org-2-devel/files/patch-wrtrtf b/editors/openoffice.org-2-devel/files/patch-wrtrtf
new file mode 100644
index 00000000000..7381dc61cd6
--- /dev/null
+++ b/editors/openoffice.org-2-devel/files/patch-wrtrtf
@@ -0,0 +1,312 @@
+--- ../svtools/source/svrtf/rtfout.cxx.orig 2000-10-16 18:13:46.000000000 +0900
++++ ../svtools/source/svrtf/rtfout.cxx 2003-09-23 12:41:00.000000000 +0900
+@@ -124,8 +124,9 @@
+ default:
+ {
+ sal_Unicode cCh = c;
+- c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
+- if( !c )
++ rtl::OString buff( &c, 1, eDestEnc, RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE|RTL_UNICODETOTEXT_FLAGS_INVALID_IGNORE );
++// c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
++ if( !buff.getLength() )
+ {
+ // then write as unicode - character
+ if( 0xFF < cCh )
+@@ -141,8 +142,8 @@
+ break;
+ }
+
+- if( !bWriteHelpFile )
+- switch( c )
++ if( !bWriteHelpFile && buff.getLength() == 1 )
++ switch( BYTE(buff[0]) )
+ {
+ #ifdef MAC
+ case 0xa5: pStr = sRTF_BULLET; break;
+@@ -164,6 +165,9 @@
+ // MAC
+ }
+ if( !pStr )
++ for (int i = 0; i < buff.getLength(); ++i)
++ {
++ c = BYTE(buff[i]);
+ switch ( c )
+ {
+ case '\\':
+@@ -186,6 +190,7 @@
+ }
+ break;
+ }
++ }
+ }
+ break;
+ }
+--- ../sw/source/filter/rtf/wrtrtf.cxx.orig 2003-04-18 00:00:28.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.cxx 2003-09-23 23:33:08.000000000 +0900
+@@ -184,6 +184,12 @@
+ #ifndef _CHARFMT_HXX
+ #include <charfmt.hxx>
+ #endif
++#ifndef _POOLFMT_HXX
++#include <poolfmt.hxx>
++#endif
++#ifndef _SWSTYLENAMEMAPPER_HXX
++#include <SwStyleNameMapper.hxx>
++#endif
+ #ifndef _SECTION_HXX //autogen
+ #include <section.hxx>
+ #endif
+@@ -215,7 +221,7 @@
+ SV_IMPL_VARARR( RTFColorTbl, Color )
+
+
+-SwRTFWriter::SwRTFWriter( const String& rFltName )
++SwRTFWriter::SwRTFWriter( const String& rFltName ) : eCurrentCharSet(DEF_ENCODING)
+ {
+ // schreibe Win-RTF-HelpFileFmt
+ bWriteHelpFmt = 'W' == rFltName.GetChar( 0 );
+@@ -893,14 +899,14 @@
+ // as alternative name. Because WinWord can't match each
+ // font to a UniCode font. So the CJK texts are shown as
+ // empty rectangles ;-(.
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ OutComment( rWrt, sRTF_FALT) << ' ';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, eChrSet,
+ rWrt.bWriteHelpFmt ) << '}';
+ }
+ else
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ rWrt.Strm() << ";}";
+ }
+@@ -932,6 +938,139 @@
+
+
+
++//Takashi Ono for CJK
++const rtl::OUString SwRTFWriter::XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_POOLCOLL_TEXT_IDENT, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_POOLCOLL_LABEL, RES_POOLCOLL_TOX_ILLUSH, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_POOLCOLL_TOX_AUTHORITIESH, RES_NONE, RES_NONE,
++ RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_NUM_LEVEL1,
++
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_NUM_LEVEL2, RES_POOLCOLL_NUM_LEVEL3, RES_POOLCOLL_NUM_LEVEL4, RES_POOLCOLL_NUM_LEVEL5,
++
++ RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ sal_uInt16 idcol = ::SwStyleNameMapper::GetPoolIdFromUIName( rName, eFlags );
++
++ for (int i = 0; i < sizeof( aArr ) / sizeof( *aArr ); i++)
++ {
++ if ( idcol == aArr[i] )
++ {
++ return rtl::OUString::createFromAscii(stiName[i]);
++ }
++ }
++ return ::SwStyleNameMapper::GetProgName( idcol, String() );
++}
++
++
++
+ void SwRTFWriter::OutRTFStyleTab()
+ {
+ // das 0-Style ist das Default, wird nie ausgegeben !!
+@@ -988,7 +1127,7 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pColl->GetName(), DEF_ENCODING,
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pColl->GetName(), GET_POOLID_TXTCOLL ), DEF_ENCODING,
+ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+@@ -1015,8 +1154,8 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pFmt->GetName(), DEF_ENCODING,
+- bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pFmt->GetName(), GET_POOLID_CHRFMT ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+ Strm() << '}';
+@@ -1217,8 +1356,8 @@
+ break;
+ Strm() << sRTF_PGDSCNXT;
+ OutULong( i ) << ' ';
+- RTFOutFuncs::Out_String( Strm(), rPageDesc.GetName(),
+- DEF_ENCODING, bWriteHelpFmt ) << ";}";
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( rPageDesc.GetName(), GET_POOLID_PAGEDESC ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}";
+ }
+ Strm() << '}' << SwRTFWriter::sNewLine;
+ bOutPageDesc = bOutPageDescTbl = FALSE;
+--- ../sw/source/filter/rtf/wrtrtf.hxx.orig 2002-07-31 19:18:50.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.hxx 2003-09-23 23:37:50.000000000 +0900
+@@ -117,6 +117,7 @@
+ USHORT nAktFlyPos; // Index auf das naechste "FlyFrmFmt"
+ void OutRTFColorTab();
+ void OutRTFFontTab();
++ const rtl::OUString XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags );
+ void OutRTFStyleTab();
+ void OutRTFListTab();
+
+@@ -136,6 +137,8 @@
+ USHORT nBkmkTabPos; // akt. Position in der Bookmark-Tabelle
+ USHORT nCurScript; // actual scripttype
+
++ rtl_TextEncoding eCurrentCharSet;
++
+ #if defined(MAC) || defined(UNX)
+ static const sal_Char sNewLine; // nur \012 oder \015
+ #else
+--- ../sw/source/filter/rtf/rtfatr.cxx.orig 2003-05-19 21:24:46.000000000 +0900
++++ ../sw/source/filter/rtf/rtfatr.cxx 2003-09-23 23:45:52.000000000 +0900
+@@ -1319,7 +1319,7 @@
+ sURL = aTmp.GetFull();
+ }
+ */ rWrt.Strm() << '\"';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ sURL = aTmp.GetMark();
+ }
+@@ -1328,7 +1328,7 @@
+ {
+ rWrt.Strm() << "\\\\l \"";
+ sURL.Erase( 0, 1 );
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ }
+
+@@ -1609,7 +1609,7 @@
+
+ if( nStrPos != nEnde )
+ RTFOutFuncs::Out_Char( rWrt.Strm(), rStr.GetChar( nStrPos ),
+- DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
++ rRTFWrt.eCurrentCharSet, rRTFWrt.bWriteHelpFmt );
+ }
+
+ // noch eine schliesende Klammer da ??
+@@ -2188,6 +2188,7 @@
+ const sal_Char* pCmd = bAssoc ? sRTF_AF : sRTF_F;
+ rWrt.Strm() << pCmd;
+ rWrt.OutULong(rRTFWrt.GetId(rFont));
++ rRTFWrt.eCurrentCharSet = rFont.GetCharSet();
+ }
+ return rWrt;
+ }
diff --git a/editors/openoffice.org-2.0-devel/Makefile b/editors/openoffice.org-2.0-devel/Makefile
index 68bcf804ab7..dd5d66a9326 100644
--- a/editors/openoffice.org-2.0-devel/Makefile
+++ b/editors/openoffice.org-2.0-devel/Makefile
@@ -7,6 +7,7 @@
PORTNAME= openoffice
PORTVERSION= 1.1.0
+PORTREVERSION= 1
CATEGORIES+= editors
MASTER_SITES+= ftp://openofficeorg.secsup.org/pub/software/openoffice/stable/%SUBDIR%/ \
ftp://sunsite.cnlab-switch.ch/mirror/OpenOffice/stable/%SUBDIR%/ \
diff --git a/editors/openoffice.org-2.0-devel/files/patch-rtfcjk b/editors/openoffice.org-2.0-devel/files/patch-rtfcjk
new file mode 100644
index 00000000000..2b44f86757f
--- /dev/null
+++ b/editors/openoffice.org-2.0-devel/files/patch-rtfcjk
@@ -0,0 +1,214 @@
+--- ../svx/source/svrtf/rtfitem.cxx 24 Jun 2003 07:48:56 -0000 1.18
++++ ../svx/source/svrtf/rtfitem.cxx 25 Jul 2003 22:54:24 -0000
+@@ -285,11 +285,20 @@
+ }
+ else
+ {
+- if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType )
++// if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType ) //Takashi Ono for CJK
++ if( LOW_CHARTYPE == eType )
+ {
+ if( *pNormal )
+ {
+ rItem.SetWhich( *pNormal );
++ rSet.Put( rItem );
++ }
++ }
++ else if( HIGH_CHARTYPE == eType )
++ {
++ if( *pCTL )
++ {
++ rItem.SetWhich( *pCTL );
+ rSet.Put( rItem );
+ }
+ }
+--- ../svx/source/svrtf/svxrtf.cxx 19 May 2003 12:30:59 -0000 1.15
++++ ../svx/source/svrtf/svxrtf.cxx 25 Jul 2003 22:54:29 -0000
+@@ -583,8 +583,14 @@
+
+ case RTF_FCHARSET:
+ if( -1 != nTokenValue )
+- pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
+- (BYTE)nTokenValue ) );
++ {
++// pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
++// (BYTE)nTokenValue ) );
++ CharSet nCharSet =
++ rtl_getTextEncodingFromWindowsCharset( (BYTE)nTokenValue );
++ pFont->SetCharSet( nCharSet );
++ SetEncoding( nCharSet ); //Takashi Ono
++ }
+ break;
+
+ case RTF_FPRQ:
+--- ../sw/source/filter/rtf/swparrtf.cxx 4 Jun 2003 10:19:09 -0000 1.28
++++ ../sw/source/filter/rtf/swparrtf.cxx 25 Jul 2003 22:54:37 -0000
+@@ -3231,10 +3231,156 @@
+ SetSwgValues( rCollSet );
+ }
+
++//Takashi Ono for CJK
++String SwRTFParser::XlateFmtColName( const String &rName )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_NONE, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_NONE, RES_NONE, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_LISTS_BEGIN, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++
++ RES_NONE,RES_NONE, RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ RES_POOL_COLLFMT_TYPE nId = RES_NONE;
++
++ for (int i = 0; i < sizeof( stiName ) / sizeof( *stiName ); i++)
++ {
++ if ( rName == String( stiName[i], RTL_TEXTENCODING_MS_1252 ) )
++ {
++ nId = aArr[i];
++ break;
++ }
++ }
++ USHORT nResId;
++ if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
++ nResId = RC_POOLCOLL_TEXT_BEGIN - RES_POOLCOLL_TEXT_BEGIN;
++ else if (RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END)
++ nResId = RC_POOLCOLL_LISTS_BEGIN - RES_POOLCOLL_LISTS_BEGIN;
++ else if (RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END)
++ nResId = RC_POOLCOLL_EXTRA_BEGIN - RES_POOLCOLL_EXTRA_BEGIN;
++ else if (RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END)
++ nResId = RC_POOLCOLL_REGISTER_BEGIN - RES_POOLCOLL_REGISTER_BEGIN;
++ else if (RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END)
++ nResId = RC_POOLCOLL_DOC_BEGIN - RES_POOLCOLL_DOC_BEGIN;
++ else if (RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END)
++ nResId = RC_POOLCOLL_HTML_BEGIN - RES_POOLCOLL_HTML_BEGIN;
++ return String( ResId( nResId + nId, pSwResMgr ) );
++}
++
+ SwTxtFmtColl* SwRTFParser::MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle )
+ {
+- int bCollExist;
+- SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo),
++ int bCollExist;
++// SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo), //Takashi Ono for CJK
++ SwTxtFmtColl* pColl = MakeColl( XlateFmtColName( rStyle.sName ),
++ USHORT(nNo),
+ rStyle.nOutlineNo, bCollExist );
+ aTxtCollTbl.Insert( nNo, pColl );
+
+--- ../sw/source/filter/rtf/swparrtf.hxx 19 May 2003 12:25:34 -0000 1.10
++++ ../sw/source/filter/rtf/swparrtf.hxx 25 Jul 2003 22:54:44 -0000
+@@ -364,6 +364,7 @@
+ void SetStyleAttr( SfxItemSet& rCollSet,
+ const SfxItemSet& rStyleSet,
+ const SfxItemSet& rDerivedSet );
++ String XlateFmtColName( const String &rName ); //Takashi Ono for CJK
+ SwTxtFmtColl* MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ SwCharFmt* MakeCharStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ void MakeStyleTab();
diff --git a/editors/openoffice.org-2.0-devel/files/patch-topsection b/editors/openoffice.org-2.0-devel/files/patch-topsection
new file mode 100644
index 00000000000..a332718508d
--- /dev/null
+++ b/editors/openoffice.org-2.0-devel/files/patch-topsection
@@ -0,0 +1,21 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:55:23 -0000
+@@ -2015,7 +2015,7 @@
+ bool bStartAttr = pPlcxMan->Get(&aRes); // hole Attribut-Pos
+ aRes.nAktCp = rTxtPos; // Akt. Cp-Pos
+
+- if (aRes.nFlags & MAN_MASK_NEW_SEP) // neue Section
++ if ((aRes.nFlags & MAN_MASK_NEW_SEP) || maSectionManager.empty()) // neue Section
+ {
+ ASSERT(pPaM->GetNode()->GetTxtNode(), "Missing txtnode");
+ // PageDesc erzeugen und fuellen
+--- ../sw/source/filter/ww8/ww8par.hxx 30 Jun 2003 15:54:37 -0000 1.115
++++ ../sw/source/filter/ww8/ww8par.hxx 25 Jul 2003 22:55:28 -0000
+@@ -720,6 +720,7 @@
+ short GetPageLeft() const;
+ short GetPageRight() const;
+ short GetPageWidth() const;
++ bool empty() const { return maSegments.empty(); }
+ };
+
+ class wwFrameNamer
diff --git a/editors/openoffice.org-2.0-devel/files/patch-word6+95-cjkhandling b/editors/openoffice.org-2.0-devel/files/patch-word6+95-cjkhandling
new file mode 100644
index 00000000000..9a86ffb7da9
--- /dev/null
+++ b/editors/openoffice.org-2.0-devel/files/patch-word6+95-cjkhandling
@@ -0,0 +1,63 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:54:52 -0000
+@@ -1683,11 +1683,20 @@
+ if (bVer67)
+ {
+ sal_Char aTest[2];
+- aTest[0] = (nUCode & 0xFF00) >> 8;
+- aTest[1] = (nUCode & 0x00FF);
+- String aTemp(aTest, 2, eSrcCharSet);
+- ASSERT(aTemp.Len() == 1, "so much for that theory");
+- *pWork = aTemp.GetChar(0);
++ if (nUCode >= 0x3000)
++ {
++ aTest[0] = (nUCode & 0xFF00) >> 8;
++ aTest[1] = (nUCode & 0x00FF);
++ String aTemp(aTest, 2, eSrcCharSet);
++ ASSERT(aTemp.Len() == 1, "so much for that theory");
++ *pWork = aTemp.GetChar(0);
++ }
++ else
++ {
++ aTest[0] = (nUCode & 0x00FF);
++ String aTemp(aTest, 1, eSrcCharSet);
++ *pWork = aTemp.GetChar(0);
++ }
+ }
+ else
+ *pWork = nUCode;
+@@ -3188,7 +3197,8 @@
+ {
+ case 6:
+ case 7:
+- if ( (0xa5dc != nMagic) && (0xa699 != nMagic) )
++ //if ( (0xa5dc != nMagic) && (0xa699 != nMagic) ) //Takashi Ono
++ if ( (0xa5dc != nMagic) && ( (0xa697 > nMagic) || (0xa699 < nMagic) ) )
+ {
+ //JP 06.05.99: teste auf eigenen 97-Fake!
+ if (pStg && 0xa5ec == nMagic)
+--- ../sw/source/filter/ww8/ww8par6.cxx 20 Jun 2003 09:38:07 -0000 1.138
++++ ../sw/source/filter/ww8/ww8par6.cxx 25 Jul 2003 22:55:05 -0000
+@@ -3373,9 +3373,11 @@
+ nId = RES_CHRATR_CTL_FONT;
+ break;
+ case 93:
++ case 111:
+ case 0x4a4f:
+ nId = RES_CHRATR_FONT;
+ break;
++ case 112:
+ case 0x4a50:
+ nId = RES_CHRATR_CJK_FONT;
+ break;
+@@ -4984,8 +4986,8 @@
+ //percentage to grow hps short
+ {110, (FNReadRecord)0}, //"sprmCCondHyhen", chp.ysri
+ //ysri short
+- {111, (FNReadRecord)0}, //"??111",
+- {112, (FNReadRecord)0}, //"??112",
++ {111, &SwWW8ImplReader::Read_FontCode}, //ww7 font
++ {112, &SwWW8ImplReader::Read_FontCode}, //ww7 CJK font
+ {113, &SwWW8ImplReader::Read_FontCode}, //ww7 rtl font
+ {114, (FNReadRecord)0}, //"??114",
+ {115, &SwWW8ImplReader::Read_TxtColor}, //ww7 rtl colour ?
diff --git a/editors/openoffice.org-2.0-devel/files/patch-wrtrtf b/editors/openoffice.org-2.0-devel/files/patch-wrtrtf
new file mode 100644
index 00000000000..7381dc61cd6
--- /dev/null
+++ b/editors/openoffice.org-2.0-devel/files/patch-wrtrtf
@@ -0,0 +1,312 @@
+--- ../svtools/source/svrtf/rtfout.cxx.orig 2000-10-16 18:13:46.000000000 +0900
++++ ../svtools/source/svrtf/rtfout.cxx 2003-09-23 12:41:00.000000000 +0900
+@@ -124,8 +124,9 @@
+ default:
+ {
+ sal_Unicode cCh = c;
+- c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
+- if( !c )
++ rtl::OString buff( &c, 1, eDestEnc, RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE|RTL_UNICODETOTEXT_FLAGS_INVALID_IGNORE );
++// c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
++ if( !buff.getLength() )
+ {
+ // then write as unicode - character
+ if( 0xFF < cCh )
+@@ -141,8 +142,8 @@
+ break;
+ }
+
+- if( !bWriteHelpFile )
+- switch( c )
++ if( !bWriteHelpFile && buff.getLength() == 1 )
++ switch( BYTE(buff[0]) )
+ {
+ #ifdef MAC
+ case 0xa5: pStr = sRTF_BULLET; break;
+@@ -164,6 +165,9 @@
+ // MAC
+ }
+ if( !pStr )
++ for (int i = 0; i < buff.getLength(); ++i)
++ {
++ c = BYTE(buff[i]);
+ switch ( c )
+ {
+ case '\\':
+@@ -186,6 +190,7 @@
+ }
+ break;
+ }
++ }
+ }
+ break;
+ }
+--- ../sw/source/filter/rtf/wrtrtf.cxx.orig 2003-04-18 00:00:28.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.cxx 2003-09-23 23:33:08.000000000 +0900
+@@ -184,6 +184,12 @@
+ #ifndef _CHARFMT_HXX
+ #include <charfmt.hxx>
+ #endif
++#ifndef _POOLFMT_HXX
++#include <poolfmt.hxx>
++#endif
++#ifndef _SWSTYLENAMEMAPPER_HXX
++#include <SwStyleNameMapper.hxx>
++#endif
+ #ifndef _SECTION_HXX //autogen
+ #include <section.hxx>
+ #endif
+@@ -215,7 +221,7 @@
+ SV_IMPL_VARARR( RTFColorTbl, Color )
+
+
+-SwRTFWriter::SwRTFWriter( const String& rFltName )
++SwRTFWriter::SwRTFWriter( const String& rFltName ) : eCurrentCharSet(DEF_ENCODING)
+ {
+ // schreibe Win-RTF-HelpFileFmt
+ bWriteHelpFmt = 'W' == rFltName.GetChar( 0 );
+@@ -893,14 +899,14 @@
+ // as alternative name. Because WinWord can't match each
+ // font to a UniCode font. So the CJK texts are shown as
+ // empty rectangles ;-(.
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ OutComment( rWrt, sRTF_FALT) << ' ';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, eChrSet,
+ rWrt.bWriteHelpFmt ) << '}';
+ }
+ else
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ rWrt.Strm() << ";}";
+ }
+@@ -932,6 +938,139 @@
+
+
+
++//Takashi Ono for CJK
++const rtl::OUString SwRTFWriter::XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_POOLCOLL_TEXT_IDENT, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_POOLCOLL_LABEL, RES_POOLCOLL_TOX_ILLUSH, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_POOLCOLL_TOX_AUTHORITIESH, RES_NONE, RES_NONE,
++ RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_NUM_LEVEL1,
++
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_NUM_LEVEL2, RES_POOLCOLL_NUM_LEVEL3, RES_POOLCOLL_NUM_LEVEL4, RES_POOLCOLL_NUM_LEVEL5,
++
++ RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ sal_uInt16 idcol = ::SwStyleNameMapper::GetPoolIdFromUIName( rName, eFlags );
++
++ for (int i = 0; i < sizeof( aArr ) / sizeof( *aArr ); i++)
++ {
++ if ( idcol == aArr[i] )
++ {
++ return rtl::OUString::createFromAscii(stiName[i]);
++ }
++ }
++ return ::SwStyleNameMapper::GetProgName( idcol, String() );
++}
++
++
++
+ void SwRTFWriter::OutRTFStyleTab()
+ {
+ // das 0-Style ist das Default, wird nie ausgegeben !!
+@@ -988,7 +1127,7 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pColl->GetName(), DEF_ENCODING,
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pColl->GetName(), GET_POOLID_TXTCOLL ), DEF_ENCODING,
+ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+@@ -1015,8 +1154,8 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pFmt->GetName(), DEF_ENCODING,
+- bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pFmt->GetName(), GET_POOLID_CHRFMT ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+ Strm() << '}';
+@@ -1217,8 +1356,8 @@
+ break;
+ Strm() << sRTF_PGDSCNXT;
+ OutULong( i ) << ' ';
+- RTFOutFuncs::Out_String( Strm(), rPageDesc.GetName(),
+- DEF_ENCODING, bWriteHelpFmt ) << ";}";
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( rPageDesc.GetName(), GET_POOLID_PAGEDESC ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}";
+ }
+ Strm() << '}' << SwRTFWriter::sNewLine;
+ bOutPageDesc = bOutPageDescTbl = FALSE;
+--- ../sw/source/filter/rtf/wrtrtf.hxx.orig 2002-07-31 19:18:50.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.hxx 2003-09-23 23:37:50.000000000 +0900
+@@ -117,6 +117,7 @@
+ USHORT nAktFlyPos; // Index auf das naechste "FlyFrmFmt"
+ void OutRTFColorTab();
+ void OutRTFFontTab();
++ const rtl::OUString XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags );
+ void OutRTFStyleTab();
+ void OutRTFListTab();
+
+@@ -136,6 +137,8 @@
+ USHORT nBkmkTabPos; // akt. Position in der Bookmark-Tabelle
+ USHORT nCurScript; // actual scripttype
+
++ rtl_TextEncoding eCurrentCharSet;
++
+ #if defined(MAC) || defined(UNX)
+ static const sal_Char sNewLine; // nur \012 oder \015
+ #else
+--- ../sw/source/filter/rtf/rtfatr.cxx.orig 2003-05-19 21:24:46.000000000 +0900
++++ ../sw/source/filter/rtf/rtfatr.cxx 2003-09-23 23:45:52.000000000 +0900
+@@ -1319,7 +1319,7 @@
+ sURL = aTmp.GetFull();
+ }
+ */ rWrt.Strm() << '\"';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ sURL = aTmp.GetMark();
+ }
+@@ -1328,7 +1328,7 @@
+ {
+ rWrt.Strm() << "\\\\l \"";
+ sURL.Erase( 0, 1 );
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ }
+
+@@ -1609,7 +1609,7 @@
+
+ if( nStrPos != nEnde )
+ RTFOutFuncs::Out_Char( rWrt.Strm(), rStr.GetChar( nStrPos ),
+- DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
++ rRTFWrt.eCurrentCharSet, rRTFWrt.bWriteHelpFmt );
+ }
+
+ // noch eine schliesende Klammer da ??
+@@ -2188,6 +2188,7 @@
+ const sal_Char* pCmd = bAssoc ? sRTF_AF : sRTF_F;
+ rWrt.Strm() << pCmd;
+ rWrt.OutULong(rRTFWrt.GetId(rFont));
++ rRTFWrt.eCurrentCharSet = rFont.GetCharSet();
+ }
+ return rWrt;
+ }
diff --git a/editors/openoffice.org-2.0/Makefile b/editors/openoffice.org-2.0/Makefile
index 68bcf804ab7..dd5d66a9326 100644
--- a/editors/openoffice.org-2.0/Makefile
+++ b/editors/openoffice.org-2.0/Makefile
@@ -7,6 +7,7 @@
PORTNAME= openoffice
PORTVERSION= 1.1.0
+PORTREVERSION= 1
CATEGORIES+= editors
MASTER_SITES+= ftp://openofficeorg.secsup.org/pub/software/openoffice/stable/%SUBDIR%/ \
ftp://sunsite.cnlab-switch.ch/mirror/OpenOffice/stable/%SUBDIR%/ \
diff --git a/editors/openoffice.org-2.0/files/patch-rtfcjk b/editors/openoffice.org-2.0/files/patch-rtfcjk
new file mode 100644
index 00000000000..2b44f86757f
--- /dev/null
+++ b/editors/openoffice.org-2.0/files/patch-rtfcjk
@@ -0,0 +1,214 @@
+--- ../svx/source/svrtf/rtfitem.cxx 24 Jun 2003 07:48:56 -0000 1.18
++++ ../svx/source/svrtf/rtfitem.cxx 25 Jul 2003 22:54:24 -0000
+@@ -285,11 +285,20 @@
+ }
+ else
+ {
+- if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType )
++// if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType ) //Takashi Ono for CJK
++ if( LOW_CHARTYPE == eType )
+ {
+ if( *pNormal )
+ {
+ rItem.SetWhich( *pNormal );
++ rSet.Put( rItem );
++ }
++ }
++ else if( HIGH_CHARTYPE == eType )
++ {
++ if( *pCTL )
++ {
++ rItem.SetWhich( *pCTL );
+ rSet.Put( rItem );
+ }
+ }
+--- ../svx/source/svrtf/svxrtf.cxx 19 May 2003 12:30:59 -0000 1.15
++++ ../svx/source/svrtf/svxrtf.cxx 25 Jul 2003 22:54:29 -0000
+@@ -583,8 +583,14 @@
+
+ case RTF_FCHARSET:
+ if( -1 != nTokenValue )
+- pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
+- (BYTE)nTokenValue ) );
++ {
++// pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
++// (BYTE)nTokenValue ) );
++ CharSet nCharSet =
++ rtl_getTextEncodingFromWindowsCharset( (BYTE)nTokenValue );
++ pFont->SetCharSet( nCharSet );
++ SetEncoding( nCharSet ); //Takashi Ono
++ }
+ break;
+
+ case RTF_FPRQ:
+--- ../sw/source/filter/rtf/swparrtf.cxx 4 Jun 2003 10:19:09 -0000 1.28
++++ ../sw/source/filter/rtf/swparrtf.cxx 25 Jul 2003 22:54:37 -0000
+@@ -3231,10 +3231,156 @@
+ SetSwgValues( rCollSet );
+ }
+
++//Takashi Ono for CJK
++String SwRTFParser::XlateFmtColName( const String &rName )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_NONE, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_NONE, RES_NONE, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_LISTS_BEGIN, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++
++ RES_NONE,RES_NONE, RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ RES_POOL_COLLFMT_TYPE nId = RES_NONE;
++
++ for (int i = 0; i < sizeof( stiName ) / sizeof( *stiName ); i++)
++ {
++ if ( rName == String( stiName[i], RTL_TEXTENCODING_MS_1252 ) )
++ {
++ nId = aArr[i];
++ break;
++ }
++ }
++ USHORT nResId;
++ if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
++ nResId = RC_POOLCOLL_TEXT_BEGIN - RES_POOLCOLL_TEXT_BEGIN;
++ else if (RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END)
++ nResId = RC_POOLCOLL_LISTS_BEGIN - RES_POOLCOLL_LISTS_BEGIN;
++ else if (RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END)
++ nResId = RC_POOLCOLL_EXTRA_BEGIN - RES_POOLCOLL_EXTRA_BEGIN;
++ else if (RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END)
++ nResId = RC_POOLCOLL_REGISTER_BEGIN - RES_POOLCOLL_REGISTER_BEGIN;
++ else if (RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END)
++ nResId = RC_POOLCOLL_DOC_BEGIN - RES_POOLCOLL_DOC_BEGIN;
++ else if (RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END)
++ nResId = RC_POOLCOLL_HTML_BEGIN - RES_POOLCOLL_HTML_BEGIN;
++ return String( ResId( nResId + nId, pSwResMgr ) );
++}
++
+ SwTxtFmtColl* SwRTFParser::MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle )
+ {
+- int bCollExist;
+- SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo),
++ int bCollExist;
++// SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo), //Takashi Ono for CJK
++ SwTxtFmtColl* pColl = MakeColl( XlateFmtColName( rStyle.sName ),
++ USHORT(nNo),
+ rStyle.nOutlineNo, bCollExist );
+ aTxtCollTbl.Insert( nNo, pColl );
+
+--- ../sw/source/filter/rtf/swparrtf.hxx 19 May 2003 12:25:34 -0000 1.10
++++ ../sw/source/filter/rtf/swparrtf.hxx 25 Jul 2003 22:54:44 -0000
+@@ -364,6 +364,7 @@
+ void SetStyleAttr( SfxItemSet& rCollSet,
+ const SfxItemSet& rStyleSet,
+ const SfxItemSet& rDerivedSet );
++ String XlateFmtColName( const String &rName ); //Takashi Ono for CJK
+ SwTxtFmtColl* MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ SwCharFmt* MakeCharStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ void MakeStyleTab();
diff --git a/editors/openoffice.org-2.0/files/patch-topsection b/editors/openoffice.org-2.0/files/patch-topsection
new file mode 100644
index 00000000000..a332718508d
--- /dev/null
+++ b/editors/openoffice.org-2.0/files/patch-topsection
@@ -0,0 +1,21 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:55:23 -0000
+@@ -2015,7 +2015,7 @@
+ bool bStartAttr = pPlcxMan->Get(&aRes); // hole Attribut-Pos
+ aRes.nAktCp = rTxtPos; // Akt. Cp-Pos
+
+- if (aRes.nFlags & MAN_MASK_NEW_SEP) // neue Section
++ if ((aRes.nFlags & MAN_MASK_NEW_SEP) || maSectionManager.empty()) // neue Section
+ {
+ ASSERT(pPaM->GetNode()->GetTxtNode(), "Missing txtnode");
+ // PageDesc erzeugen und fuellen
+--- ../sw/source/filter/ww8/ww8par.hxx 30 Jun 2003 15:54:37 -0000 1.115
++++ ../sw/source/filter/ww8/ww8par.hxx 25 Jul 2003 22:55:28 -0000
+@@ -720,6 +720,7 @@
+ short GetPageLeft() const;
+ short GetPageRight() const;
+ short GetPageWidth() const;
++ bool empty() const { return maSegments.empty(); }
+ };
+
+ class wwFrameNamer
diff --git a/editors/openoffice.org-2.0/files/patch-word6+95-cjkhandling b/editors/openoffice.org-2.0/files/patch-word6+95-cjkhandling
new file mode 100644
index 00000000000..9a86ffb7da9
--- /dev/null
+++ b/editors/openoffice.org-2.0/files/patch-word6+95-cjkhandling
@@ -0,0 +1,63 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:54:52 -0000
+@@ -1683,11 +1683,20 @@
+ if (bVer67)
+ {
+ sal_Char aTest[2];
+- aTest[0] = (nUCode & 0xFF00) >> 8;
+- aTest[1] = (nUCode & 0x00FF);
+- String aTemp(aTest, 2, eSrcCharSet);
+- ASSERT(aTemp.Len() == 1, "so much for that theory");
+- *pWork = aTemp.GetChar(0);
++ if (nUCode >= 0x3000)
++ {
++ aTest[0] = (nUCode & 0xFF00) >> 8;
++ aTest[1] = (nUCode & 0x00FF);
++ String aTemp(aTest, 2, eSrcCharSet);
++ ASSERT(aTemp.Len() == 1, "so much for that theory");
++ *pWork = aTemp.GetChar(0);
++ }
++ else
++ {
++ aTest[0] = (nUCode & 0x00FF);
++ String aTemp(aTest, 1, eSrcCharSet);
++ *pWork = aTemp.GetChar(0);
++ }
+ }
+ else
+ *pWork = nUCode;
+@@ -3188,7 +3197,8 @@
+ {
+ case 6:
+ case 7:
+- if ( (0xa5dc != nMagic) && (0xa699 != nMagic) )
++ //if ( (0xa5dc != nMagic) && (0xa699 != nMagic) ) //Takashi Ono
++ if ( (0xa5dc != nMagic) && ( (0xa697 > nMagic) || (0xa699 < nMagic) ) )
+ {
+ //JP 06.05.99: teste auf eigenen 97-Fake!
+ if (pStg && 0xa5ec == nMagic)
+--- ../sw/source/filter/ww8/ww8par6.cxx 20 Jun 2003 09:38:07 -0000 1.138
++++ ../sw/source/filter/ww8/ww8par6.cxx 25 Jul 2003 22:55:05 -0000
+@@ -3373,9 +3373,11 @@
+ nId = RES_CHRATR_CTL_FONT;
+ break;
+ case 93:
++ case 111:
+ case 0x4a4f:
+ nId = RES_CHRATR_FONT;
+ break;
++ case 112:
+ case 0x4a50:
+ nId = RES_CHRATR_CJK_FONT;
+ break;
+@@ -4984,8 +4986,8 @@
+ //percentage to grow hps short
+ {110, (FNReadRecord)0}, //"sprmCCondHyhen", chp.ysri
+ //ysri short
+- {111, (FNReadRecord)0}, //"??111",
+- {112, (FNReadRecord)0}, //"??112",
++ {111, &SwWW8ImplReader::Read_FontCode}, //ww7 font
++ {112, &SwWW8ImplReader::Read_FontCode}, //ww7 CJK font
+ {113, &SwWW8ImplReader::Read_FontCode}, //ww7 rtl font
+ {114, (FNReadRecord)0}, //"??114",
+ {115, &SwWW8ImplReader::Read_TxtColor}, //ww7 rtl colour ?
diff --git a/editors/openoffice.org-2.0/files/patch-wrtrtf b/editors/openoffice.org-2.0/files/patch-wrtrtf
new file mode 100644
index 00000000000..7381dc61cd6
--- /dev/null
+++ b/editors/openoffice.org-2.0/files/patch-wrtrtf
@@ -0,0 +1,312 @@
+--- ../svtools/source/svrtf/rtfout.cxx.orig 2000-10-16 18:13:46.000000000 +0900
++++ ../svtools/source/svrtf/rtfout.cxx 2003-09-23 12:41:00.000000000 +0900
+@@ -124,8 +124,9 @@
+ default:
+ {
+ sal_Unicode cCh = c;
+- c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
+- if( !c )
++ rtl::OString buff( &c, 1, eDestEnc, RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE|RTL_UNICODETOTEXT_FLAGS_INVALID_IGNORE );
++// c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
++ if( !buff.getLength() )
+ {
+ // then write as unicode - character
+ if( 0xFF < cCh )
+@@ -141,8 +142,8 @@
+ break;
+ }
+
+- if( !bWriteHelpFile )
+- switch( c )
++ if( !bWriteHelpFile && buff.getLength() == 1 )
++ switch( BYTE(buff[0]) )
+ {
+ #ifdef MAC
+ case 0xa5: pStr = sRTF_BULLET; break;
+@@ -164,6 +165,9 @@
+ // MAC
+ }
+ if( !pStr )
++ for (int i = 0; i < buff.getLength(); ++i)
++ {
++ c = BYTE(buff[i]);
+ switch ( c )
+ {
+ case '\\':
+@@ -186,6 +190,7 @@
+ }
+ break;
+ }
++ }
+ }
+ break;
+ }
+--- ../sw/source/filter/rtf/wrtrtf.cxx.orig 2003-04-18 00:00:28.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.cxx 2003-09-23 23:33:08.000000000 +0900
+@@ -184,6 +184,12 @@
+ #ifndef _CHARFMT_HXX
+ #include <charfmt.hxx>
+ #endif
++#ifndef _POOLFMT_HXX
++#include <poolfmt.hxx>
++#endif
++#ifndef _SWSTYLENAMEMAPPER_HXX
++#include <SwStyleNameMapper.hxx>
++#endif
+ #ifndef _SECTION_HXX //autogen
+ #include <section.hxx>
+ #endif
+@@ -215,7 +221,7 @@
+ SV_IMPL_VARARR( RTFColorTbl, Color )
+
+
+-SwRTFWriter::SwRTFWriter( const String& rFltName )
++SwRTFWriter::SwRTFWriter( const String& rFltName ) : eCurrentCharSet(DEF_ENCODING)
+ {
+ // schreibe Win-RTF-HelpFileFmt
+ bWriteHelpFmt = 'W' == rFltName.GetChar( 0 );
+@@ -893,14 +899,14 @@
+ // as alternative name. Because WinWord can't match each
+ // font to a UniCode font. So the CJK texts are shown as
+ // empty rectangles ;-(.
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ OutComment( rWrt, sRTF_FALT) << ' ';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, eChrSet,
+ rWrt.bWriteHelpFmt ) << '}';
+ }
+ else
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ rWrt.Strm() << ";}";
+ }
+@@ -932,6 +938,139 @@
+
+
+
++//Takashi Ono for CJK
++const rtl::OUString SwRTFWriter::XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_POOLCOLL_TEXT_IDENT, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_POOLCOLL_LABEL, RES_POOLCOLL_TOX_ILLUSH, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_POOLCOLL_TOX_AUTHORITIESH, RES_NONE, RES_NONE,
++ RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_NUM_LEVEL1,
++
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_NUM_LEVEL2, RES_POOLCOLL_NUM_LEVEL3, RES_POOLCOLL_NUM_LEVEL4, RES_POOLCOLL_NUM_LEVEL5,
++
++ RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ sal_uInt16 idcol = ::SwStyleNameMapper::GetPoolIdFromUIName( rName, eFlags );
++
++ for (int i = 0; i < sizeof( aArr ) / sizeof( *aArr ); i++)
++ {
++ if ( idcol == aArr[i] )
++ {
++ return rtl::OUString::createFromAscii(stiName[i]);
++ }
++ }
++ return ::SwStyleNameMapper::GetProgName( idcol, String() );
++}
++
++
++
+ void SwRTFWriter::OutRTFStyleTab()
+ {
+ // das 0-Style ist das Default, wird nie ausgegeben !!
+@@ -988,7 +1127,7 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pColl->GetName(), DEF_ENCODING,
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pColl->GetName(), GET_POOLID_TXTCOLL ), DEF_ENCODING,
+ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+@@ -1015,8 +1154,8 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pFmt->GetName(), DEF_ENCODING,
+- bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pFmt->GetName(), GET_POOLID_CHRFMT ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+ Strm() << '}';
+@@ -1217,8 +1356,8 @@
+ break;
+ Strm() << sRTF_PGDSCNXT;
+ OutULong( i ) << ' ';
+- RTFOutFuncs::Out_String( Strm(), rPageDesc.GetName(),
+- DEF_ENCODING, bWriteHelpFmt ) << ";}";
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( rPageDesc.GetName(), GET_POOLID_PAGEDESC ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}";
+ }
+ Strm() << '}' << SwRTFWriter::sNewLine;
+ bOutPageDesc = bOutPageDescTbl = FALSE;
+--- ../sw/source/filter/rtf/wrtrtf.hxx.orig 2002-07-31 19:18:50.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.hxx 2003-09-23 23:37:50.000000000 +0900
+@@ -117,6 +117,7 @@
+ USHORT nAktFlyPos; // Index auf das naechste "FlyFrmFmt"
+ void OutRTFColorTab();
+ void OutRTFFontTab();
++ const rtl::OUString XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags );
+ void OutRTFStyleTab();
+ void OutRTFListTab();
+
+@@ -136,6 +137,8 @@
+ USHORT nBkmkTabPos; // akt. Position in der Bookmark-Tabelle
+ USHORT nCurScript; // actual scripttype
+
++ rtl_TextEncoding eCurrentCharSet;
++
+ #if defined(MAC) || defined(UNX)
+ static const sal_Char sNewLine; // nur \012 oder \015
+ #else
+--- ../sw/source/filter/rtf/rtfatr.cxx.orig 2003-05-19 21:24:46.000000000 +0900
++++ ../sw/source/filter/rtf/rtfatr.cxx 2003-09-23 23:45:52.000000000 +0900
+@@ -1319,7 +1319,7 @@
+ sURL = aTmp.GetFull();
+ }
+ */ rWrt.Strm() << '\"';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ sURL = aTmp.GetMark();
+ }
+@@ -1328,7 +1328,7 @@
+ {
+ rWrt.Strm() << "\\\\l \"";
+ sURL.Erase( 0, 1 );
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ }
+
+@@ -1609,7 +1609,7 @@
+
+ if( nStrPos != nEnde )
+ RTFOutFuncs::Out_Char( rWrt.Strm(), rStr.GetChar( nStrPos ),
+- DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
++ rRTFWrt.eCurrentCharSet, rRTFWrt.bWriteHelpFmt );
+ }
+
+ // noch eine schliesende Klammer da ??
+@@ -2188,6 +2188,7 @@
+ const sal_Char* pCmd = bAssoc ? sRTF_AF : sRTF_F;
+ rWrt.Strm() << pCmd;
+ rWrt.OutULong(rRTFWrt.GetId(rFont));
++ rRTFWrt.eCurrentCharSet = rFont.GetCharSet();
+ }
+ return rWrt;
+ }
diff --git a/editors/openoffice.org-2/Makefile b/editors/openoffice.org-2/Makefile
index 68bcf804ab7..dd5d66a9326 100644
--- a/editors/openoffice.org-2/Makefile
+++ b/editors/openoffice.org-2/Makefile
@@ -7,6 +7,7 @@
PORTNAME= openoffice
PORTVERSION= 1.1.0
+PORTREVERSION= 1
CATEGORIES+= editors
MASTER_SITES+= ftp://openofficeorg.secsup.org/pub/software/openoffice/stable/%SUBDIR%/ \
ftp://sunsite.cnlab-switch.ch/mirror/OpenOffice/stable/%SUBDIR%/ \
diff --git a/editors/openoffice.org-2/files/patch-rtfcjk b/editors/openoffice.org-2/files/patch-rtfcjk
new file mode 100644
index 00000000000..2b44f86757f
--- /dev/null
+++ b/editors/openoffice.org-2/files/patch-rtfcjk
@@ -0,0 +1,214 @@
+--- ../svx/source/svrtf/rtfitem.cxx 24 Jun 2003 07:48:56 -0000 1.18
++++ ../svx/source/svrtf/rtfitem.cxx 25 Jul 2003 22:54:24 -0000
+@@ -285,11 +285,20 @@
+ }
+ else
+ {
+- if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType )
++// if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType ) //Takashi Ono for CJK
++ if( LOW_CHARTYPE == eType )
+ {
+ if( *pNormal )
+ {
+ rItem.SetWhich( *pNormal );
++ rSet.Put( rItem );
++ }
++ }
++ else if( HIGH_CHARTYPE == eType )
++ {
++ if( *pCTL )
++ {
++ rItem.SetWhich( *pCTL );
+ rSet.Put( rItem );
+ }
+ }
+--- ../svx/source/svrtf/svxrtf.cxx 19 May 2003 12:30:59 -0000 1.15
++++ ../svx/source/svrtf/svxrtf.cxx 25 Jul 2003 22:54:29 -0000
+@@ -583,8 +583,14 @@
+
+ case RTF_FCHARSET:
+ if( -1 != nTokenValue )
+- pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
+- (BYTE)nTokenValue ) );
++ {
++// pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
++// (BYTE)nTokenValue ) );
++ CharSet nCharSet =
++ rtl_getTextEncodingFromWindowsCharset( (BYTE)nTokenValue );
++ pFont->SetCharSet( nCharSet );
++ SetEncoding( nCharSet ); //Takashi Ono
++ }
+ break;
+
+ case RTF_FPRQ:
+--- ../sw/source/filter/rtf/swparrtf.cxx 4 Jun 2003 10:19:09 -0000 1.28
++++ ../sw/source/filter/rtf/swparrtf.cxx 25 Jul 2003 22:54:37 -0000
+@@ -3231,10 +3231,156 @@
+ SetSwgValues( rCollSet );
+ }
+
++//Takashi Ono for CJK
++String SwRTFParser::XlateFmtColName( const String &rName )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_NONE, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_NONE, RES_NONE, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_LISTS_BEGIN, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++
++ RES_NONE,RES_NONE, RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ RES_POOL_COLLFMT_TYPE nId = RES_NONE;
++
++ for (int i = 0; i < sizeof( stiName ) / sizeof( *stiName ); i++)
++ {
++ if ( rName == String( stiName[i], RTL_TEXTENCODING_MS_1252 ) )
++ {
++ nId = aArr[i];
++ break;
++ }
++ }
++ USHORT nResId;
++ if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
++ nResId = RC_POOLCOLL_TEXT_BEGIN - RES_POOLCOLL_TEXT_BEGIN;
++ else if (RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END)
++ nResId = RC_POOLCOLL_LISTS_BEGIN - RES_POOLCOLL_LISTS_BEGIN;
++ else if (RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END)
++ nResId = RC_POOLCOLL_EXTRA_BEGIN - RES_POOLCOLL_EXTRA_BEGIN;
++ else if (RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END)
++ nResId = RC_POOLCOLL_REGISTER_BEGIN - RES_POOLCOLL_REGISTER_BEGIN;
++ else if (RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END)
++ nResId = RC_POOLCOLL_DOC_BEGIN - RES_POOLCOLL_DOC_BEGIN;
++ else if (RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END)
++ nResId = RC_POOLCOLL_HTML_BEGIN - RES_POOLCOLL_HTML_BEGIN;
++ return String( ResId( nResId + nId, pSwResMgr ) );
++}
++
+ SwTxtFmtColl* SwRTFParser::MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle )
+ {
+- int bCollExist;
+- SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo),
++ int bCollExist;
++// SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo), //Takashi Ono for CJK
++ SwTxtFmtColl* pColl = MakeColl( XlateFmtColName( rStyle.sName ),
++ USHORT(nNo),
+ rStyle.nOutlineNo, bCollExist );
+ aTxtCollTbl.Insert( nNo, pColl );
+
+--- ../sw/source/filter/rtf/swparrtf.hxx 19 May 2003 12:25:34 -0000 1.10
++++ ../sw/source/filter/rtf/swparrtf.hxx 25 Jul 2003 22:54:44 -0000
+@@ -364,6 +364,7 @@
+ void SetStyleAttr( SfxItemSet& rCollSet,
+ const SfxItemSet& rStyleSet,
+ const SfxItemSet& rDerivedSet );
++ String XlateFmtColName( const String &rName ); //Takashi Ono for CJK
+ SwTxtFmtColl* MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ SwCharFmt* MakeCharStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ void MakeStyleTab();
diff --git a/editors/openoffice.org-2/files/patch-topsection b/editors/openoffice.org-2/files/patch-topsection
new file mode 100644
index 00000000000..a332718508d
--- /dev/null
+++ b/editors/openoffice.org-2/files/patch-topsection
@@ -0,0 +1,21 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:55:23 -0000
+@@ -2015,7 +2015,7 @@
+ bool bStartAttr = pPlcxMan->Get(&aRes); // hole Attribut-Pos
+ aRes.nAktCp = rTxtPos; // Akt. Cp-Pos
+
+- if (aRes.nFlags & MAN_MASK_NEW_SEP) // neue Section
++ if ((aRes.nFlags & MAN_MASK_NEW_SEP) || maSectionManager.empty()) // neue Section
+ {
+ ASSERT(pPaM->GetNode()->GetTxtNode(), "Missing txtnode");
+ // PageDesc erzeugen und fuellen
+--- ../sw/source/filter/ww8/ww8par.hxx 30 Jun 2003 15:54:37 -0000 1.115
++++ ../sw/source/filter/ww8/ww8par.hxx 25 Jul 2003 22:55:28 -0000
+@@ -720,6 +720,7 @@
+ short GetPageLeft() const;
+ short GetPageRight() const;
+ short GetPageWidth() const;
++ bool empty() const { return maSegments.empty(); }
+ };
+
+ class wwFrameNamer
diff --git a/editors/openoffice.org-2/files/patch-word6+95-cjkhandling b/editors/openoffice.org-2/files/patch-word6+95-cjkhandling
new file mode 100644
index 00000000000..9a86ffb7da9
--- /dev/null
+++ b/editors/openoffice.org-2/files/patch-word6+95-cjkhandling
@@ -0,0 +1,63 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:54:52 -0000
+@@ -1683,11 +1683,20 @@
+ if (bVer67)
+ {
+ sal_Char aTest[2];
+- aTest[0] = (nUCode & 0xFF00) >> 8;
+- aTest[1] = (nUCode & 0x00FF);
+- String aTemp(aTest, 2, eSrcCharSet);
+- ASSERT(aTemp.Len() == 1, "so much for that theory");
+- *pWork = aTemp.GetChar(0);
++ if (nUCode >= 0x3000)
++ {
++ aTest[0] = (nUCode & 0xFF00) >> 8;
++ aTest[1] = (nUCode & 0x00FF);
++ String aTemp(aTest, 2, eSrcCharSet);
++ ASSERT(aTemp.Len() == 1, "so much for that theory");
++ *pWork = aTemp.GetChar(0);
++ }
++ else
++ {
++ aTest[0] = (nUCode & 0x00FF);
++ String aTemp(aTest, 1, eSrcCharSet);
++ *pWork = aTemp.GetChar(0);
++ }
+ }
+ else
+ *pWork = nUCode;
+@@ -3188,7 +3197,8 @@
+ {
+ case 6:
+ case 7:
+- if ( (0xa5dc != nMagic) && (0xa699 != nMagic) )
++ //if ( (0xa5dc != nMagic) && (0xa699 != nMagic) ) //Takashi Ono
++ if ( (0xa5dc != nMagic) && ( (0xa697 > nMagic) || (0xa699 < nMagic) ) )
+ {
+ //JP 06.05.99: teste auf eigenen 97-Fake!
+ if (pStg && 0xa5ec == nMagic)
+--- ../sw/source/filter/ww8/ww8par6.cxx 20 Jun 2003 09:38:07 -0000 1.138
++++ ../sw/source/filter/ww8/ww8par6.cxx 25 Jul 2003 22:55:05 -0000
+@@ -3373,9 +3373,11 @@
+ nId = RES_CHRATR_CTL_FONT;
+ break;
+ case 93:
++ case 111:
+ case 0x4a4f:
+ nId = RES_CHRATR_FONT;
+ break;
++ case 112:
+ case 0x4a50:
+ nId = RES_CHRATR_CJK_FONT;
+ break;
+@@ -4984,8 +4986,8 @@
+ //percentage to grow hps short
+ {110, (FNReadRecord)0}, //"sprmCCondHyhen", chp.ysri
+ //ysri short
+- {111, (FNReadRecord)0}, //"??111",
+- {112, (FNReadRecord)0}, //"??112",
++ {111, &SwWW8ImplReader::Read_FontCode}, //ww7 font
++ {112, &SwWW8ImplReader::Read_FontCode}, //ww7 CJK font
+ {113, &SwWW8ImplReader::Read_FontCode}, //ww7 rtl font
+ {114, (FNReadRecord)0}, //"??114",
+ {115, &SwWW8ImplReader::Read_TxtColor}, //ww7 rtl colour ?
diff --git a/editors/openoffice.org-2/files/patch-wrtrtf b/editors/openoffice.org-2/files/patch-wrtrtf
new file mode 100644
index 00000000000..7381dc61cd6
--- /dev/null
+++ b/editors/openoffice.org-2/files/patch-wrtrtf
@@ -0,0 +1,312 @@
+--- ../svtools/source/svrtf/rtfout.cxx.orig 2000-10-16 18:13:46.000000000 +0900
++++ ../svtools/source/svrtf/rtfout.cxx 2003-09-23 12:41:00.000000000 +0900
+@@ -124,8 +124,9 @@
+ default:
+ {
+ sal_Unicode cCh = c;
+- c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
+- if( !c )
++ rtl::OString buff( &c, 1, eDestEnc, RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE|RTL_UNICODETOTEXT_FLAGS_INVALID_IGNORE );
++// c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
++ if( !buff.getLength() )
+ {
+ // then write as unicode - character
+ if( 0xFF < cCh )
+@@ -141,8 +142,8 @@
+ break;
+ }
+
+- if( !bWriteHelpFile )
+- switch( c )
++ if( !bWriteHelpFile && buff.getLength() == 1 )
++ switch( BYTE(buff[0]) )
+ {
+ #ifdef MAC
+ case 0xa5: pStr = sRTF_BULLET; break;
+@@ -164,6 +165,9 @@
+ // MAC
+ }
+ if( !pStr )
++ for (int i = 0; i < buff.getLength(); ++i)
++ {
++ c = BYTE(buff[i]);
+ switch ( c )
+ {
+ case '\\':
+@@ -186,6 +190,7 @@
+ }
+ break;
+ }
++ }
+ }
+ break;
+ }
+--- ../sw/source/filter/rtf/wrtrtf.cxx.orig 2003-04-18 00:00:28.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.cxx 2003-09-23 23:33:08.000000000 +0900
+@@ -184,6 +184,12 @@
+ #ifndef _CHARFMT_HXX
+ #include <charfmt.hxx>
+ #endif
++#ifndef _POOLFMT_HXX
++#include <poolfmt.hxx>
++#endif
++#ifndef _SWSTYLENAMEMAPPER_HXX
++#include <SwStyleNameMapper.hxx>
++#endif
+ #ifndef _SECTION_HXX //autogen
+ #include <section.hxx>
+ #endif
+@@ -215,7 +221,7 @@
+ SV_IMPL_VARARR( RTFColorTbl, Color )
+
+
+-SwRTFWriter::SwRTFWriter( const String& rFltName )
++SwRTFWriter::SwRTFWriter( const String& rFltName ) : eCurrentCharSet(DEF_ENCODING)
+ {
+ // schreibe Win-RTF-HelpFileFmt
+ bWriteHelpFmt = 'W' == rFltName.GetChar( 0 );
+@@ -893,14 +899,14 @@
+ // as alternative name. Because WinWord can't match each
+ // font to a UniCode font. So the CJK texts are shown as
+ // empty rectangles ;-(.
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ OutComment( rWrt, sRTF_FALT) << ' ';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, eChrSet,
+ rWrt.bWriteHelpFmt ) << '}';
+ }
+ else
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ rWrt.Strm() << ";}";
+ }
+@@ -932,6 +938,139 @@
+
+
+
++//Takashi Ono for CJK
++const rtl::OUString SwRTFWriter::XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_POOLCOLL_TEXT_IDENT, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_POOLCOLL_LABEL, RES_POOLCOLL_TOX_ILLUSH, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_POOLCOLL_TOX_AUTHORITIESH, RES_NONE, RES_NONE,
++ RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_NUM_LEVEL1,
++
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_NUM_LEVEL2, RES_POOLCOLL_NUM_LEVEL3, RES_POOLCOLL_NUM_LEVEL4, RES_POOLCOLL_NUM_LEVEL5,
++
++ RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ sal_uInt16 idcol = ::SwStyleNameMapper::GetPoolIdFromUIName( rName, eFlags );
++
++ for (int i = 0; i < sizeof( aArr ) / sizeof( *aArr ); i++)
++ {
++ if ( idcol == aArr[i] )
++ {
++ return rtl::OUString::createFromAscii(stiName[i]);
++ }
++ }
++ return ::SwStyleNameMapper::GetProgName( idcol, String() );
++}
++
++
++
+ void SwRTFWriter::OutRTFStyleTab()
+ {
+ // das 0-Style ist das Default, wird nie ausgegeben !!
+@@ -988,7 +1127,7 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pColl->GetName(), DEF_ENCODING,
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pColl->GetName(), GET_POOLID_TXTCOLL ), DEF_ENCODING,
+ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+@@ -1015,8 +1154,8 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pFmt->GetName(), DEF_ENCODING,
+- bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pFmt->GetName(), GET_POOLID_CHRFMT ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+ Strm() << '}';
+@@ -1217,8 +1356,8 @@
+ break;
+ Strm() << sRTF_PGDSCNXT;
+ OutULong( i ) << ' ';
+- RTFOutFuncs::Out_String( Strm(), rPageDesc.GetName(),
+- DEF_ENCODING, bWriteHelpFmt ) << ";}";
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( rPageDesc.GetName(), GET_POOLID_PAGEDESC ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}";
+ }
+ Strm() << '}' << SwRTFWriter::sNewLine;
+ bOutPageDesc = bOutPageDescTbl = FALSE;
+--- ../sw/source/filter/rtf/wrtrtf.hxx.orig 2002-07-31 19:18:50.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.hxx 2003-09-23 23:37:50.000000000 +0900
+@@ -117,6 +117,7 @@
+ USHORT nAktFlyPos; // Index auf das naechste "FlyFrmFmt"
+ void OutRTFColorTab();
+ void OutRTFFontTab();
++ const rtl::OUString XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags );
+ void OutRTFStyleTab();
+ void OutRTFListTab();
+
+@@ -136,6 +137,8 @@
+ USHORT nBkmkTabPos; // akt. Position in der Bookmark-Tabelle
+ USHORT nCurScript; // actual scripttype
+
++ rtl_TextEncoding eCurrentCharSet;
++
+ #if defined(MAC) || defined(UNX)
+ static const sal_Char sNewLine; // nur \012 oder \015
+ #else
+--- ../sw/source/filter/rtf/rtfatr.cxx.orig 2003-05-19 21:24:46.000000000 +0900
++++ ../sw/source/filter/rtf/rtfatr.cxx 2003-09-23 23:45:52.000000000 +0900
+@@ -1319,7 +1319,7 @@
+ sURL = aTmp.GetFull();
+ }
+ */ rWrt.Strm() << '\"';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ sURL = aTmp.GetMark();
+ }
+@@ -1328,7 +1328,7 @@
+ {
+ rWrt.Strm() << "\\\\l \"";
+ sURL.Erase( 0, 1 );
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ }
+
+@@ -1609,7 +1609,7 @@
+
+ if( nStrPos != nEnde )
+ RTFOutFuncs::Out_Char( rWrt.Strm(), rStr.GetChar( nStrPos ),
+- DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
++ rRTFWrt.eCurrentCharSet, rRTFWrt.bWriteHelpFmt );
+ }
+
+ // noch eine schliesende Klammer da ??
+@@ -2188,6 +2188,7 @@
+ const sal_Char* pCmd = bAssoc ? sRTF_AF : sRTF_F;
+ rWrt.Strm() << pCmd;
+ rWrt.OutULong(rRTFWrt.GetId(rFont));
++ rRTFWrt.eCurrentCharSet = rFont.GetCharSet();
+ }
+ return rWrt;
+ }
diff --git a/editors/openoffice.org-3-RC/Makefile b/editors/openoffice.org-3-RC/Makefile
index 68bcf804ab7..dd5d66a9326 100644
--- a/editors/openoffice.org-3-RC/Makefile
+++ b/editors/openoffice.org-3-RC/Makefile
@@ -7,6 +7,7 @@
PORTNAME= openoffice
PORTVERSION= 1.1.0
+PORTREVERSION= 1
CATEGORIES+= editors
MASTER_SITES+= ftp://openofficeorg.secsup.org/pub/software/openoffice/stable/%SUBDIR%/ \
ftp://sunsite.cnlab-switch.ch/mirror/OpenOffice/stable/%SUBDIR%/ \
diff --git a/editors/openoffice.org-3-RC/files/patch-rtfcjk b/editors/openoffice.org-3-RC/files/patch-rtfcjk
new file mode 100644
index 00000000000..2b44f86757f
--- /dev/null
+++ b/editors/openoffice.org-3-RC/files/patch-rtfcjk
@@ -0,0 +1,214 @@
+--- ../svx/source/svrtf/rtfitem.cxx 24 Jun 2003 07:48:56 -0000 1.18
++++ ../svx/source/svrtf/rtfitem.cxx 25 Jul 2003 22:54:24 -0000
+@@ -285,11 +285,20 @@
+ }
+ else
+ {
+- if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType )
++// if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType ) //Takashi Ono for CJK
++ if( LOW_CHARTYPE == eType )
+ {
+ if( *pNormal )
+ {
+ rItem.SetWhich( *pNormal );
++ rSet.Put( rItem );
++ }
++ }
++ else if( HIGH_CHARTYPE == eType )
++ {
++ if( *pCTL )
++ {
++ rItem.SetWhich( *pCTL );
+ rSet.Put( rItem );
+ }
+ }
+--- ../svx/source/svrtf/svxrtf.cxx 19 May 2003 12:30:59 -0000 1.15
++++ ../svx/source/svrtf/svxrtf.cxx 25 Jul 2003 22:54:29 -0000
+@@ -583,8 +583,14 @@
+
+ case RTF_FCHARSET:
+ if( -1 != nTokenValue )
+- pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
+- (BYTE)nTokenValue ) );
++ {
++// pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
++// (BYTE)nTokenValue ) );
++ CharSet nCharSet =
++ rtl_getTextEncodingFromWindowsCharset( (BYTE)nTokenValue );
++ pFont->SetCharSet( nCharSet );
++ SetEncoding( nCharSet ); //Takashi Ono
++ }
+ break;
+
+ case RTF_FPRQ:
+--- ../sw/source/filter/rtf/swparrtf.cxx 4 Jun 2003 10:19:09 -0000 1.28
++++ ../sw/source/filter/rtf/swparrtf.cxx 25 Jul 2003 22:54:37 -0000
+@@ -3231,10 +3231,156 @@
+ SetSwgValues( rCollSet );
+ }
+
++//Takashi Ono for CJK
++String SwRTFParser::XlateFmtColName( const String &rName )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_NONE, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_NONE, RES_NONE, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_LISTS_BEGIN, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++
++ RES_NONE,RES_NONE, RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ RES_POOL_COLLFMT_TYPE nId = RES_NONE;
++
++ for (int i = 0; i < sizeof( stiName ) / sizeof( *stiName ); i++)
++ {
++ if ( rName == String( stiName[i], RTL_TEXTENCODING_MS_1252 ) )
++ {
++ nId = aArr[i];
++ break;
++ }
++ }
++ USHORT nResId;
++ if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
++ nResId = RC_POOLCOLL_TEXT_BEGIN - RES_POOLCOLL_TEXT_BEGIN;
++ else if (RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END)
++ nResId = RC_POOLCOLL_LISTS_BEGIN - RES_POOLCOLL_LISTS_BEGIN;
++ else if (RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END)
++ nResId = RC_POOLCOLL_EXTRA_BEGIN - RES_POOLCOLL_EXTRA_BEGIN;
++ else if (RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END)
++ nResId = RC_POOLCOLL_REGISTER_BEGIN - RES_POOLCOLL_REGISTER_BEGIN;
++ else if (RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END)
++ nResId = RC_POOLCOLL_DOC_BEGIN - RES_POOLCOLL_DOC_BEGIN;
++ else if (RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END)
++ nResId = RC_POOLCOLL_HTML_BEGIN - RES_POOLCOLL_HTML_BEGIN;
++ return String( ResId( nResId + nId, pSwResMgr ) );
++}
++
+ SwTxtFmtColl* SwRTFParser::MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle )
+ {
+- int bCollExist;
+- SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo),
++ int bCollExist;
++// SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo), //Takashi Ono for CJK
++ SwTxtFmtColl* pColl = MakeColl( XlateFmtColName( rStyle.sName ),
++ USHORT(nNo),
+ rStyle.nOutlineNo, bCollExist );
+ aTxtCollTbl.Insert( nNo, pColl );
+
+--- ../sw/source/filter/rtf/swparrtf.hxx 19 May 2003 12:25:34 -0000 1.10
++++ ../sw/source/filter/rtf/swparrtf.hxx 25 Jul 2003 22:54:44 -0000
+@@ -364,6 +364,7 @@
+ void SetStyleAttr( SfxItemSet& rCollSet,
+ const SfxItemSet& rStyleSet,
+ const SfxItemSet& rDerivedSet );
++ String XlateFmtColName( const String &rName ); //Takashi Ono for CJK
+ SwTxtFmtColl* MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ SwCharFmt* MakeCharStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ void MakeStyleTab();
diff --git a/editors/openoffice.org-3-RC/files/patch-topsection b/editors/openoffice.org-3-RC/files/patch-topsection
new file mode 100644
index 00000000000..a332718508d
--- /dev/null
+++ b/editors/openoffice.org-3-RC/files/patch-topsection
@@ -0,0 +1,21 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:55:23 -0000
+@@ -2015,7 +2015,7 @@
+ bool bStartAttr = pPlcxMan->Get(&aRes); // hole Attribut-Pos
+ aRes.nAktCp = rTxtPos; // Akt. Cp-Pos
+
+- if (aRes.nFlags & MAN_MASK_NEW_SEP) // neue Section
++ if ((aRes.nFlags & MAN_MASK_NEW_SEP) || maSectionManager.empty()) // neue Section
+ {
+ ASSERT(pPaM->GetNode()->GetTxtNode(), "Missing txtnode");
+ // PageDesc erzeugen und fuellen
+--- ../sw/source/filter/ww8/ww8par.hxx 30 Jun 2003 15:54:37 -0000 1.115
++++ ../sw/source/filter/ww8/ww8par.hxx 25 Jul 2003 22:55:28 -0000
+@@ -720,6 +720,7 @@
+ short GetPageLeft() const;
+ short GetPageRight() const;
+ short GetPageWidth() const;
++ bool empty() const { return maSegments.empty(); }
+ };
+
+ class wwFrameNamer
diff --git a/editors/openoffice.org-3-RC/files/patch-word6+95-cjkhandling b/editors/openoffice.org-3-RC/files/patch-word6+95-cjkhandling
new file mode 100644
index 00000000000..9a86ffb7da9
--- /dev/null
+++ b/editors/openoffice.org-3-RC/files/patch-word6+95-cjkhandling
@@ -0,0 +1,63 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:54:52 -0000
+@@ -1683,11 +1683,20 @@
+ if (bVer67)
+ {
+ sal_Char aTest[2];
+- aTest[0] = (nUCode & 0xFF00) >> 8;
+- aTest[1] = (nUCode & 0x00FF);
+- String aTemp(aTest, 2, eSrcCharSet);
+- ASSERT(aTemp.Len() == 1, "so much for that theory");
+- *pWork = aTemp.GetChar(0);
++ if (nUCode >= 0x3000)
++ {
++ aTest[0] = (nUCode & 0xFF00) >> 8;
++ aTest[1] = (nUCode & 0x00FF);
++ String aTemp(aTest, 2, eSrcCharSet);
++ ASSERT(aTemp.Len() == 1, "so much for that theory");
++ *pWork = aTemp.GetChar(0);
++ }
++ else
++ {
++ aTest[0] = (nUCode & 0x00FF);
++ String aTemp(aTest, 1, eSrcCharSet);
++ *pWork = aTemp.GetChar(0);
++ }
+ }
+ else
+ *pWork = nUCode;
+@@ -3188,7 +3197,8 @@
+ {
+ case 6:
+ case 7:
+- if ( (0xa5dc != nMagic) && (0xa699 != nMagic) )
++ //if ( (0xa5dc != nMagic) && (0xa699 != nMagic) ) //Takashi Ono
++ if ( (0xa5dc != nMagic) && ( (0xa697 > nMagic) || (0xa699 < nMagic) ) )
+ {
+ //JP 06.05.99: teste auf eigenen 97-Fake!
+ if (pStg && 0xa5ec == nMagic)
+--- ../sw/source/filter/ww8/ww8par6.cxx 20 Jun 2003 09:38:07 -0000 1.138
++++ ../sw/source/filter/ww8/ww8par6.cxx 25 Jul 2003 22:55:05 -0000
+@@ -3373,9 +3373,11 @@
+ nId = RES_CHRATR_CTL_FONT;
+ break;
+ case 93:
++ case 111:
+ case 0x4a4f:
+ nId = RES_CHRATR_FONT;
+ break;
++ case 112:
+ case 0x4a50:
+ nId = RES_CHRATR_CJK_FONT;
+ break;
+@@ -4984,8 +4986,8 @@
+ //percentage to grow hps short
+ {110, (FNReadRecord)0}, //"sprmCCondHyhen", chp.ysri
+ //ysri short
+- {111, (FNReadRecord)0}, //"??111",
+- {112, (FNReadRecord)0}, //"??112",
++ {111, &SwWW8ImplReader::Read_FontCode}, //ww7 font
++ {112, &SwWW8ImplReader::Read_FontCode}, //ww7 CJK font
+ {113, &SwWW8ImplReader::Read_FontCode}, //ww7 rtl font
+ {114, (FNReadRecord)0}, //"??114",
+ {115, &SwWW8ImplReader::Read_TxtColor}, //ww7 rtl colour ?
diff --git a/editors/openoffice.org-3-RC/files/patch-wrtrtf b/editors/openoffice.org-3-RC/files/patch-wrtrtf
new file mode 100644
index 00000000000..7381dc61cd6
--- /dev/null
+++ b/editors/openoffice.org-3-RC/files/patch-wrtrtf
@@ -0,0 +1,312 @@
+--- ../svtools/source/svrtf/rtfout.cxx.orig 2000-10-16 18:13:46.000000000 +0900
++++ ../svtools/source/svrtf/rtfout.cxx 2003-09-23 12:41:00.000000000 +0900
+@@ -124,8 +124,9 @@
+ default:
+ {
+ sal_Unicode cCh = c;
+- c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
+- if( !c )
++ rtl::OString buff( &c, 1, eDestEnc, RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE|RTL_UNICODETOTEXT_FLAGS_INVALID_IGNORE );
++// c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
++ if( !buff.getLength() )
+ {
+ // then write as unicode - character
+ if( 0xFF < cCh )
+@@ -141,8 +142,8 @@
+ break;
+ }
+
+- if( !bWriteHelpFile )
+- switch( c )
++ if( !bWriteHelpFile && buff.getLength() == 1 )
++ switch( BYTE(buff[0]) )
+ {
+ #ifdef MAC
+ case 0xa5: pStr = sRTF_BULLET; break;
+@@ -164,6 +165,9 @@
+ // MAC
+ }
+ if( !pStr )
++ for (int i = 0; i < buff.getLength(); ++i)
++ {
++ c = BYTE(buff[i]);
+ switch ( c )
+ {
+ case '\\':
+@@ -186,6 +190,7 @@
+ }
+ break;
+ }
++ }
+ }
+ break;
+ }
+--- ../sw/source/filter/rtf/wrtrtf.cxx.orig 2003-04-18 00:00:28.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.cxx 2003-09-23 23:33:08.000000000 +0900
+@@ -184,6 +184,12 @@
+ #ifndef _CHARFMT_HXX
+ #include <charfmt.hxx>
+ #endif
++#ifndef _POOLFMT_HXX
++#include <poolfmt.hxx>
++#endif
++#ifndef _SWSTYLENAMEMAPPER_HXX
++#include <SwStyleNameMapper.hxx>
++#endif
+ #ifndef _SECTION_HXX //autogen
+ #include <section.hxx>
+ #endif
+@@ -215,7 +221,7 @@
+ SV_IMPL_VARARR( RTFColorTbl, Color )
+
+
+-SwRTFWriter::SwRTFWriter( const String& rFltName )
++SwRTFWriter::SwRTFWriter( const String& rFltName ) : eCurrentCharSet(DEF_ENCODING)
+ {
+ // schreibe Win-RTF-HelpFileFmt
+ bWriteHelpFmt = 'W' == rFltName.GetChar( 0 );
+@@ -893,14 +899,14 @@
+ // as alternative name. Because WinWord can't match each
+ // font to a UniCode font. So the CJK texts are shown as
+ // empty rectangles ;-(.
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ OutComment( rWrt, sRTF_FALT) << ' ';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, eChrSet,
+ rWrt.bWriteHelpFmt ) << '}';
+ }
+ else
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ rWrt.Strm() << ";}";
+ }
+@@ -932,6 +938,139 @@
+
+
+
++//Takashi Ono for CJK
++const rtl::OUString SwRTFWriter::XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_POOLCOLL_TEXT_IDENT, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_POOLCOLL_LABEL, RES_POOLCOLL_TOX_ILLUSH, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_POOLCOLL_TOX_AUTHORITIESH, RES_NONE, RES_NONE,
++ RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_NUM_LEVEL1,
++
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_NUM_LEVEL2, RES_POOLCOLL_NUM_LEVEL3, RES_POOLCOLL_NUM_LEVEL4, RES_POOLCOLL_NUM_LEVEL5,
++
++ RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ sal_uInt16 idcol = ::SwStyleNameMapper::GetPoolIdFromUIName( rName, eFlags );
++
++ for (int i = 0; i < sizeof( aArr ) / sizeof( *aArr ); i++)
++ {
++ if ( idcol == aArr[i] )
++ {
++ return rtl::OUString::createFromAscii(stiName[i]);
++ }
++ }
++ return ::SwStyleNameMapper::GetProgName( idcol, String() );
++}
++
++
++
+ void SwRTFWriter::OutRTFStyleTab()
+ {
+ // das 0-Style ist das Default, wird nie ausgegeben !!
+@@ -988,7 +1127,7 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pColl->GetName(), DEF_ENCODING,
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pColl->GetName(), GET_POOLID_TXTCOLL ), DEF_ENCODING,
+ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+@@ -1015,8 +1154,8 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pFmt->GetName(), DEF_ENCODING,
+- bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pFmt->GetName(), GET_POOLID_CHRFMT ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+ Strm() << '}';
+@@ -1217,8 +1356,8 @@
+ break;
+ Strm() << sRTF_PGDSCNXT;
+ OutULong( i ) << ' ';
+- RTFOutFuncs::Out_String( Strm(), rPageDesc.GetName(),
+- DEF_ENCODING, bWriteHelpFmt ) << ";}";
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( rPageDesc.GetName(), GET_POOLID_PAGEDESC ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}";
+ }
+ Strm() << '}' << SwRTFWriter::sNewLine;
+ bOutPageDesc = bOutPageDescTbl = FALSE;
+--- ../sw/source/filter/rtf/wrtrtf.hxx.orig 2002-07-31 19:18:50.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.hxx 2003-09-23 23:37:50.000000000 +0900
+@@ -117,6 +117,7 @@
+ USHORT nAktFlyPos; // Index auf das naechste "FlyFrmFmt"
+ void OutRTFColorTab();
+ void OutRTFFontTab();
++ const rtl::OUString XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags );
+ void OutRTFStyleTab();
+ void OutRTFListTab();
+
+@@ -136,6 +137,8 @@
+ USHORT nBkmkTabPos; // akt. Position in der Bookmark-Tabelle
+ USHORT nCurScript; // actual scripttype
+
++ rtl_TextEncoding eCurrentCharSet;
++
+ #if defined(MAC) || defined(UNX)
+ static const sal_Char sNewLine; // nur \012 oder \015
+ #else
+--- ../sw/source/filter/rtf/rtfatr.cxx.orig 2003-05-19 21:24:46.000000000 +0900
++++ ../sw/source/filter/rtf/rtfatr.cxx 2003-09-23 23:45:52.000000000 +0900
+@@ -1319,7 +1319,7 @@
+ sURL = aTmp.GetFull();
+ }
+ */ rWrt.Strm() << '\"';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ sURL = aTmp.GetMark();
+ }
+@@ -1328,7 +1328,7 @@
+ {
+ rWrt.Strm() << "\\\\l \"";
+ sURL.Erase( 0, 1 );
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ }
+
+@@ -1609,7 +1609,7 @@
+
+ if( nStrPos != nEnde )
+ RTFOutFuncs::Out_Char( rWrt.Strm(), rStr.GetChar( nStrPos ),
+- DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
++ rRTFWrt.eCurrentCharSet, rRTFWrt.bWriteHelpFmt );
+ }
+
+ // noch eine schliesende Klammer da ??
+@@ -2188,6 +2188,7 @@
+ const sal_Char* pCmd = bAssoc ? sRTF_AF : sRTF_F;
+ rWrt.Strm() << pCmd;
+ rWrt.OutULong(rRTFWrt.GetId(rFont));
++ rRTFWrt.eCurrentCharSet = rFont.GetCharSet();
+ }
+ return rWrt;
+ }
diff --git a/editors/openoffice.org-3-devel/Makefile b/editors/openoffice.org-3-devel/Makefile
index 68bcf804ab7..dd5d66a9326 100644
--- a/editors/openoffice.org-3-devel/Makefile
+++ b/editors/openoffice.org-3-devel/Makefile
@@ -7,6 +7,7 @@
PORTNAME= openoffice
PORTVERSION= 1.1.0
+PORTREVERSION= 1
CATEGORIES+= editors
MASTER_SITES+= ftp://openofficeorg.secsup.org/pub/software/openoffice/stable/%SUBDIR%/ \
ftp://sunsite.cnlab-switch.ch/mirror/OpenOffice/stable/%SUBDIR%/ \
diff --git a/editors/openoffice.org-3-devel/files/patch-rtfcjk b/editors/openoffice.org-3-devel/files/patch-rtfcjk
new file mode 100644
index 00000000000..2b44f86757f
--- /dev/null
+++ b/editors/openoffice.org-3-devel/files/patch-rtfcjk
@@ -0,0 +1,214 @@
+--- ../svx/source/svrtf/rtfitem.cxx 24 Jun 2003 07:48:56 -0000 1.18
++++ ../svx/source/svrtf/rtfitem.cxx 25 Jul 2003 22:54:24 -0000
+@@ -285,11 +285,20 @@
+ }
+ else
+ {
+- if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType )
++// if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType ) //Takashi Ono for CJK
++ if( LOW_CHARTYPE == eType )
+ {
+ if( *pNormal )
+ {
+ rItem.SetWhich( *pNormal );
++ rSet.Put( rItem );
++ }
++ }
++ else if( HIGH_CHARTYPE == eType )
++ {
++ if( *pCTL )
++ {
++ rItem.SetWhich( *pCTL );
+ rSet.Put( rItem );
+ }
+ }
+--- ../svx/source/svrtf/svxrtf.cxx 19 May 2003 12:30:59 -0000 1.15
++++ ../svx/source/svrtf/svxrtf.cxx 25 Jul 2003 22:54:29 -0000
+@@ -583,8 +583,14 @@
+
+ case RTF_FCHARSET:
+ if( -1 != nTokenValue )
+- pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
+- (BYTE)nTokenValue ) );
++ {
++// pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
++// (BYTE)nTokenValue ) );
++ CharSet nCharSet =
++ rtl_getTextEncodingFromWindowsCharset( (BYTE)nTokenValue );
++ pFont->SetCharSet( nCharSet );
++ SetEncoding( nCharSet ); //Takashi Ono
++ }
+ break;
+
+ case RTF_FPRQ:
+--- ../sw/source/filter/rtf/swparrtf.cxx 4 Jun 2003 10:19:09 -0000 1.28
++++ ../sw/source/filter/rtf/swparrtf.cxx 25 Jul 2003 22:54:37 -0000
+@@ -3231,10 +3231,156 @@
+ SetSwgValues( rCollSet );
+ }
+
++//Takashi Ono for CJK
++String SwRTFParser::XlateFmtColName( const String &rName )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_NONE, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_NONE, RES_NONE, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_LISTS_BEGIN, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++
++ RES_NONE,RES_NONE, RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ RES_POOL_COLLFMT_TYPE nId = RES_NONE;
++
++ for (int i = 0; i < sizeof( stiName ) / sizeof( *stiName ); i++)
++ {
++ if ( rName == String( stiName[i], RTL_TEXTENCODING_MS_1252 ) )
++ {
++ nId = aArr[i];
++ break;
++ }
++ }
++ USHORT nResId;
++ if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
++ nResId = RC_POOLCOLL_TEXT_BEGIN - RES_POOLCOLL_TEXT_BEGIN;
++ else if (RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END)
++ nResId = RC_POOLCOLL_LISTS_BEGIN - RES_POOLCOLL_LISTS_BEGIN;
++ else if (RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END)
++ nResId = RC_POOLCOLL_EXTRA_BEGIN - RES_POOLCOLL_EXTRA_BEGIN;
++ else if (RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END)
++ nResId = RC_POOLCOLL_REGISTER_BEGIN - RES_POOLCOLL_REGISTER_BEGIN;
++ else if (RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END)
++ nResId = RC_POOLCOLL_DOC_BEGIN - RES_POOLCOLL_DOC_BEGIN;
++ else if (RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END)
++ nResId = RC_POOLCOLL_HTML_BEGIN - RES_POOLCOLL_HTML_BEGIN;
++ return String( ResId( nResId + nId, pSwResMgr ) );
++}
++
+ SwTxtFmtColl* SwRTFParser::MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle )
+ {
+- int bCollExist;
+- SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo),
++ int bCollExist;
++// SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo), //Takashi Ono for CJK
++ SwTxtFmtColl* pColl = MakeColl( XlateFmtColName( rStyle.sName ),
++ USHORT(nNo),
+ rStyle.nOutlineNo, bCollExist );
+ aTxtCollTbl.Insert( nNo, pColl );
+
+--- ../sw/source/filter/rtf/swparrtf.hxx 19 May 2003 12:25:34 -0000 1.10
++++ ../sw/source/filter/rtf/swparrtf.hxx 25 Jul 2003 22:54:44 -0000
+@@ -364,6 +364,7 @@
+ void SetStyleAttr( SfxItemSet& rCollSet,
+ const SfxItemSet& rStyleSet,
+ const SfxItemSet& rDerivedSet );
++ String XlateFmtColName( const String &rName ); //Takashi Ono for CJK
+ SwTxtFmtColl* MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ SwCharFmt* MakeCharStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ void MakeStyleTab();
diff --git a/editors/openoffice.org-3-devel/files/patch-topsection b/editors/openoffice.org-3-devel/files/patch-topsection
new file mode 100644
index 00000000000..a332718508d
--- /dev/null
+++ b/editors/openoffice.org-3-devel/files/patch-topsection
@@ -0,0 +1,21 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:55:23 -0000
+@@ -2015,7 +2015,7 @@
+ bool bStartAttr = pPlcxMan->Get(&aRes); // hole Attribut-Pos
+ aRes.nAktCp = rTxtPos; // Akt. Cp-Pos
+
+- if (aRes.nFlags & MAN_MASK_NEW_SEP) // neue Section
++ if ((aRes.nFlags & MAN_MASK_NEW_SEP) || maSectionManager.empty()) // neue Section
+ {
+ ASSERT(pPaM->GetNode()->GetTxtNode(), "Missing txtnode");
+ // PageDesc erzeugen und fuellen
+--- ../sw/source/filter/ww8/ww8par.hxx 30 Jun 2003 15:54:37 -0000 1.115
++++ ../sw/source/filter/ww8/ww8par.hxx 25 Jul 2003 22:55:28 -0000
+@@ -720,6 +720,7 @@
+ short GetPageLeft() const;
+ short GetPageRight() const;
+ short GetPageWidth() const;
++ bool empty() const { return maSegments.empty(); }
+ };
+
+ class wwFrameNamer
diff --git a/editors/openoffice.org-3-devel/files/patch-word6+95-cjkhandling b/editors/openoffice.org-3-devel/files/patch-word6+95-cjkhandling
new file mode 100644
index 00000000000..9a86ffb7da9
--- /dev/null
+++ b/editors/openoffice.org-3-devel/files/patch-word6+95-cjkhandling
@@ -0,0 +1,63 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:54:52 -0000
+@@ -1683,11 +1683,20 @@
+ if (bVer67)
+ {
+ sal_Char aTest[2];
+- aTest[0] = (nUCode & 0xFF00) >> 8;
+- aTest[1] = (nUCode & 0x00FF);
+- String aTemp(aTest, 2, eSrcCharSet);
+- ASSERT(aTemp.Len() == 1, "so much for that theory");
+- *pWork = aTemp.GetChar(0);
++ if (nUCode >= 0x3000)
++ {
++ aTest[0] = (nUCode & 0xFF00) >> 8;
++ aTest[1] = (nUCode & 0x00FF);
++ String aTemp(aTest, 2, eSrcCharSet);
++ ASSERT(aTemp.Len() == 1, "so much for that theory");
++ *pWork = aTemp.GetChar(0);
++ }
++ else
++ {
++ aTest[0] = (nUCode & 0x00FF);
++ String aTemp(aTest, 1, eSrcCharSet);
++ *pWork = aTemp.GetChar(0);
++ }
+ }
+ else
+ *pWork = nUCode;
+@@ -3188,7 +3197,8 @@
+ {
+ case 6:
+ case 7:
+- if ( (0xa5dc != nMagic) && (0xa699 != nMagic) )
++ //if ( (0xa5dc != nMagic) && (0xa699 != nMagic) ) //Takashi Ono
++ if ( (0xa5dc != nMagic) && ( (0xa697 > nMagic) || (0xa699 < nMagic) ) )
+ {
+ //JP 06.05.99: teste auf eigenen 97-Fake!
+ if (pStg && 0xa5ec == nMagic)
+--- ../sw/source/filter/ww8/ww8par6.cxx 20 Jun 2003 09:38:07 -0000 1.138
++++ ../sw/source/filter/ww8/ww8par6.cxx 25 Jul 2003 22:55:05 -0000
+@@ -3373,9 +3373,11 @@
+ nId = RES_CHRATR_CTL_FONT;
+ break;
+ case 93:
++ case 111:
+ case 0x4a4f:
+ nId = RES_CHRATR_FONT;
+ break;
++ case 112:
+ case 0x4a50:
+ nId = RES_CHRATR_CJK_FONT;
+ break;
+@@ -4984,8 +4986,8 @@
+ //percentage to grow hps short
+ {110, (FNReadRecord)0}, //"sprmCCondHyhen", chp.ysri
+ //ysri short
+- {111, (FNReadRecord)0}, //"??111",
+- {112, (FNReadRecord)0}, //"??112",
++ {111, &SwWW8ImplReader::Read_FontCode}, //ww7 font
++ {112, &SwWW8ImplReader::Read_FontCode}, //ww7 CJK font
+ {113, &SwWW8ImplReader::Read_FontCode}, //ww7 rtl font
+ {114, (FNReadRecord)0}, //"??114",
+ {115, &SwWW8ImplReader::Read_TxtColor}, //ww7 rtl colour ?
diff --git a/editors/openoffice.org-3-devel/files/patch-wrtrtf b/editors/openoffice.org-3-devel/files/patch-wrtrtf
new file mode 100644
index 00000000000..7381dc61cd6
--- /dev/null
+++ b/editors/openoffice.org-3-devel/files/patch-wrtrtf
@@ -0,0 +1,312 @@
+--- ../svtools/source/svrtf/rtfout.cxx.orig 2000-10-16 18:13:46.000000000 +0900
++++ ../svtools/source/svrtf/rtfout.cxx 2003-09-23 12:41:00.000000000 +0900
+@@ -124,8 +124,9 @@
+ default:
+ {
+ sal_Unicode cCh = c;
+- c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
+- if( !c )
++ rtl::OString buff( &c, 1, eDestEnc, RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE|RTL_UNICODETOTEXT_FLAGS_INVALID_IGNORE );
++// c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
++ if( !buff.getLength() )
+ {
+ // then write as unicode - character
+ if( 0xFF < cCh )
+@@ -141,8 +142,8 @@
+ break;
+ }
+
+- if( !bWriteHelpFile )
+- switch( c )
++ if( !bWriteHelpFile && buff.getLength() == 1 )
++ switch( BYTE(buff[0]) )
+ {
+ #ifdef MAC
+ case 0xa5: pStr = sRTF_BULLET; break;
+@@ -164,6 +165,9 @@
+ // MAC
+ }
+ if( !pStr )
++ for (int i = 0; i < buff.getLength(); ++i)
++ {
++ c = BYTE(buff[i]);
+ switch ( c )
+ {
+ case '\\':
+@@ -186,6 +190,7 @@
+ }
+ break;
+ }
++ }
+ }
+ break;
+ }
+--- ../sw/source/filter/rtf/wrtrtf.cxx.orig 2003-04-18 00:00:28.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.cxx 2003-09-23 23:33:08.000000000 +0900
+@@ -184,6 +184,12 @@
+ #ifndef _CHARFMT_HXX
+ #include <charfmt.hxx>
+ #endif
++#ifndef _POOLFMT_HXX
++#include <poolfmt.hxx>
++#endif
++#ifndef _SWSTYLENAMEMAPPER_HXX
++#include <SwStyleNameMapper.hxx>
++#endif
+ #ifndef _SECTION_HXX //autogen
+ #include <section.hxx>
+ #endif
+@@ -215,7 +221,7 @@
+ SV_IMPL_VARARR( RTFColorTbl, Color )
+
+
+-SwRTFWriter::SwRTFWriter( const String& rFltName )
++SwRTFWriter::SwRTFWriter( const String& rFltName ) : eCurrentCharSet(DEF_ENCODING)
+ {
+ // schreibe Win-RTF-HelpFileFmt
+ bWriteHelpFmt = 'W' == rFltName.GetChar( 0 );
+@@ -893,14 +899,14 @@
+ // as alternative name. Because WinWord can't match each
+ // font to a UniCode font. So the CJK texts are shown as
+ // empty rectangles ;-(.
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ OutComment( rWrt, sRTF_FALT) << ' ';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, eChrSet,
+ rWrt.bWriteHelpFmt ) << '}';
+ }
+ else
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ rWrt.Strm() << ";}";
+ }
+@@ -932,6 +938,139 @@
+
+
+
++//Takashi Ono for CJK
++const rtl::OUString SwRTFWriter::XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_POOLCOLL_TEXT_IDENT, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_POOLCOLL_LABEL, RES_POOLCOLL_TOX_ILLUSH, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_POOLCOLL_TOX_AUTHORITIESH, RES_NONE, RES_NONE,
++ RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_NUM_LEVEL1,
++
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_NUM_LEVEL2, RES_POOLCOLL_NUM_LEVEL3, RES_POOLCOLL_NUM_LEVEL4, RES_POOLCOLL_NUM_LEVEL5,
++
++ RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ sal_uInt16 idcol = ::SwStyleNameMapper::GetPoolIdFromUIName( rName, eFlags );
++
++ for (int i = 0; i < sizeof( aArr ) / sizeof( *aArr ); i++)
++ {
++ if ( idcol == aArr[i] )
++ {
++ return rtl::OUString::createFromAscii(stiName[i]);
++ }
++ }
++ return ::SwStyleNameMapper::GetProgName( idcol, String() );
++}
++
++
++
+ void SwRTFWriter::OutRTFStyleTab()
+ {
+ // das 0-Style ist das Default, wird nie ausgegeben !!
+@@ -988,7 +1127,7 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pColl->GetName(), DEF_ENCODING,
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pColl->GetName(), GET_POOLID_TXTCOLL ), DEF_ENCODING,
+ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+@@ -1015,8 +1154,8 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pFmt->GetName(), DEF_ENCODING,
+- bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pFmt->GetName(), GET_POOLID_CHRFMT ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+ Strm() << '}';
+@@ -1217,8 +1356,8 @@
+ break;
+ Strm() << sRTF_PGDSCNXT;
+ OutULong( i ) << ' ';
+- RTFOutFuncs::Out_String( Strm(), rPageDesc.GetName(),
+- DEF_ENCODING, bWriteHelpFmt ) << ";}";
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( rPageDesc.GetName(), GET_POOLID_PAGEDESC ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}";
+ }
+ Strm() << '}' << SwRTFWriter::sNewLine;
+ bOutPageDesc = bOutPageDescTbl = FALSE;
+--- ../sw/source/filter/rtf/wrtrtf.hxx.orig 2002-07-31 19:18:50.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.hxx 2003-09-23 23:37:50.000000000 +0900
+@@ -117,6 +117,7 @@
+ USHORT nAktFlyPos; // Index auf das naechste "FlyFrmFmt"
+ void OutRTFColorTab();
+ void OutRTFFontTab();
++ const rtl::OUString XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags );
+ void OutRTFStyleTab();
+ void OutRTFListTab();
+
+@@ -136,6 +137,8 @@
+ USHORT nBkmkTabPos; // akt. Position in der Bookmark-Tabelle
+ USHORT nCurScript; // actual scripttype
+
++ rtl_TextEncoding eCurrentCharSet;
++
+ #if defined(MAC) || defined(UNX)
+ static const sal_Char sNewLine; // nur \012 oder \015
+ #else
+--- ../sw/source/filter/rtf/rtfatr.cxx.orig 2003-05-19 21:24:46.000000000 +0900
++++ ../sw/source/filter/rtf/rtfatr.cxx 2003-09-23 23:45:52.000000000 +0900
+@@ -1319,7 +1319,7 @@
+ sURL = aTmp.GetFull();
+ }
+ */ rWrt.Strm() << '\"';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ sURL = aTmp.GetMark();
+ }
+@@ -1328,7 +1328,7 @@
+ {
+ rWrt.Strm() << "\\\\l \"";
+ sURL.Erase( 0, 1 );
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ }
+
+@@ -1609,7 +1609,7 @@
+
+ if( nStrPos != nEnde )
+ RTFOutFuncs::Out_Char( rWrt.Strm(), rStr.GetChar( nStrPos ),
+- DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
++ rRTFWrt.eCurrentCharSet, rRTFWrt.bWriteHelpFmt );
+ }
+
+ // noch eine schliesende Klammer da ??
+@@ -2188,6 +2188,7 @@
+ const sal_Char* pCmd = bAssoc ? sRTF_AF : sRTF_F;
+ rWrt.Strm() << pCmd;
+ rWrt.OutULong(rRTFWrt.GetId(rFont));
++ rRTFWrt.eCurrentCharSet = rFont.GetCharSet();
+ }
+ return rWrt;
+ }
diff --git a/editors/openoffice.org-3/Makefile b/editors/openoffice.org-3/Makefile
index 68bcf804ab7..dd5d66a9326 100644
--- a/editors/openoffice.org-3/Makefile
+++ b/editors/openoffice.org-3/Makefile
@@ -7,6 +7,7 @@
PORTNAME= openoffice
PORTVERSION= 1.1.0
+PORTREVERSION= 1
CATEGORIES+= editors
MASTER_SITES+= ftp://openofficeorg.secsup.org/pub/software/openoffice/stable/%SUBDIR%/ \
ftp://sunsite.cnlab-switch.ch/mirror/OpenOffice/stable/%SUBDIR%/ \
diff --git a/editors/openoffice.org-3/files/patch-rtfcjk b/editors/openoffice.org-3/files/patch-rtfcjk
new file mode 100644
index 00000000000..2b44f86757f
--- /dev/null
+++ b/editors/openoffice.org-3/files/patch-rtfcjk
@@ -0,0 +1,214 @@
+--- ../svx/source/svrtf/rtfitem.cxx 24 Jun 2003 07:48:56 -0000 1.18
++++ ../svx/source/svrtf/rtfitem.cxx 25 Jul 2003 22:54:24 -0000
+@@ -285,11 +285,20 @@
+ }
+ else
+ {
+- if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType )
++// if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType ) //Takashi Ono for CJK
++ if( LOW_CHARTYPE == eType )
+ {
+ if( *pNormal )
+ {
+ rItem.SetWhich( *pNormal );
++ rSet.Put( rItem );
++ }
++ }
++ else if( HIGH_CHARTYPE == eType )
++ {
++ if( *pCTL )
++ {
++ rItem.SetWhich( *pCTL );
+ rSet.Put( rItem );
+ }
+ }
+--- ../svx/source/svrtf/svxrtf.cxx 19 May 2003 12:30:59 -0000 1.15
++++ ../svx/source/svrtf/svxrtf.cxx 25 Jul 2003 22:54:29 -0000
+@@ -583,8 +583,14 @@
+
+ case RTF_FCHARSET:
+ if( -1 != nTokenValue )
+- pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
+- (BYTE)nTokenValue ) );
++ {
++// pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
++// (BYTE)nTokenValue ) );
++ CharSet nCharSet =
++ rtl_getTextEncodingFromWindowsCharset( (BYTE)nTokenValue );
++ pFont->SetCharSet( nCharSet );
++ SetEncoding( nCharSet ); //Takashi Ono
++ }
+ break;
+
+ case RTF_FPRQ:
+--- ../sw/source/filter/rtf/swparrtf.cxx 4 Jun 2003 10:19:09 -0000 1.28
++++ ../sw/source/filter/rtf/swparrtf.cxx 25 Jul 2003 22:54:37 -0000
+@@ -3231,10 +3231,156 @@
+ SetSwgValues( rCollSet );
+ }
+
++//Takashi Ono for CJK
++String SwRTFParser::XlateFmtColName( const String &rName )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_NONE, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_NONE, RES_NONE, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_LISTS_BEGIN, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++
++ RES_NONE,RES_NONE, RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ RES_POOL_COLLFMT_TYPE nId = RES_NONE;
++
++ for (int i = 0; i < sizeof( stiName ) / sizeof( *stiName ); i++)
++ {
++ if ( rName == String( stiName[i], RTL_TEXTENCODING_MS_1252 ) )
++ {
++ nId = aArr[i];
++ break;
++ }
++ }
++ USHORT nResId;
++ if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
++ nResId = RC_POOLCOLL_TEXT_BEGIN - RES_POOLCOLL_TEXT_BEGIN;
++ else if (RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END)
++ nResId = RC_POOLCOLL_LISTS_BEGIN - RES_POOLCOLL_LISTS_BEGIN;
++ else if (RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END)
++ nResId = RC_POOLCOLL_EXTRA_BEGIN - RES_POOLCOLL_EXTRA_BEGIN;
++ else if (RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END)
++ nResId = RC_POOLCOLL_REGISTER_BEGIN - RES_POOLCOLL_REGISTER_BEGIN;
++ else if (RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END)
++ nResId = RC_POOLCOLL_DOC_BEGIN - RES_POOLCOLL_DOC_BEGIN;
++ else if (RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END)
++ nResId = RC_POOLCOLL_HTML_BEGIN - RES_POOLCOLL_HTML_BEGIN;
++ return String( ResId( nResId + nId, pSwResMgr ) );
++}
++
+ SwTxtFmtColl* SwRTFParser::MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle )
+ {
+- int bCollExist;
+- SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo),
++ int bCollExist;
++// SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo), //Takashi Ono for CJK
++ SwTxtFmtColl* pColl = MakeColl( XlateFmtColName( rStyle.sName ),
++ USHORT(nNo),
+ rStyle.nOutlineNo, bCollExist );
+ aTxtCollTbl.Insert( nNo, pColl );
+
+--- ../sw/source/filter/rtf/swparrtf.hxx 19 May 2003 12:25:34 -0000 1.10
++++ ../sw/source/filter/rtf/swparrtf.hxx 25 Jul 2003 22:54:44 -0000
+@@ -364,6 +364,7 @@
+ void SetStyleAttr( SfxItemSet& rCollSet,
+ const SfxItemSet& rStyleSet,
+ const SfxItemSet& rDerivedSet );
++ String XlateFmtColName( const String &rName ); //Takashi Ono for CJK
+ SwTxtFmtColl* MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ SwCharFmt* MakeCharStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ void MakeStyleTab();
diff --git a/editors/openoffice.org-3/files/patch-topsection b/editors/openoffice.org-3/files/patch-topsection
new file mode 100644
index 00000000000..a332718508d
--- /dev/null
+++ b/editors/openoffice.org-3/files/patch-topsection
@@ -0,0 +1,21 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:55:23 -0000
+@@ -2015,7 +2015,7 @@
+ bool bStartAttr = pPlcxMan->Get(&aRes); // hole Attribut-Pos
+ aRes.nAktCp = rTxtPos; // Akt. Cp-Pos
+
+- if (aRes.nFlags & MAN_MASK_NEW_SEP) // neue Section
++ if ((aRes.nFlags & MAN_MASK_NEW_SEP) || maSectionManager.empty()) // neue Section
+ {
+ ASSERT(pPaM->GetNode()->GetTxtNode(), "Missing txtnode");
+ // PageDesc erzeugen und fuellen
+--- ../sw/source/filter/ww8/ww8par.hxx 30 Jun 2003 15:54:37 -0000 1.115
++++ ../sw/source/filter/ww8/ww8par.hxx 25 Jul 2003 22:55:28 -0000
+@@ -720,6 +720,7 @@
+ short GetPageLeft() const;
+ short GetPageRight() const;
+ short GetPageWidth() const;
++ bool empty() const { return maSegments.empty(); }
+ };
+
+ class wwFrameNamer
diff --git a/editors/openoffice.org-3/files/patch-word6+95-cjkhandling b/editors/openoffice.org-3/files/patch-word6+95-cjkhandling
new file mode 100644
index 00000000000..9a86ffb7da9
--- /dev/null
+++ b/editors/openoffice.org-3/files/patch-word6+95-cjkhandling
@@ -0,0 +1,63 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:54:52 -0000
+@@ -1683,11 +1683,20 @@
+ if (bVer67)
+ {
+ sal_Char aTest[2];
+- aTest[0] = (nUCode & 0xFF00) >> 8;
+- aTest[1] = (nUCode & 0x00FF);
+- String aTemp(aTest, 2, eSrcCharSet);
+- ASSERT(aTemp.Len() == 1, "so much for that theory");
+- *pWork = aTemp.GetChar(0);
++ if (nUCode >= 0x3000)
++ {
++ aTest[0] = (nUCode & 0xFF00) >> 8;
++ aTest[1] = (nUCode & 0x00FF);
++ String aTemp(aTest, 2, eSrcCharSet);
++ ASSERT(aTemp.Len() == 1, "so much for that theory");
++ *pWork = aTemp.GetChar(0);
++ }
++ else
++ {
++ aTest[0] = (nUCode & 0x00FF);
++ String aTemp(aTest, 1, eSrcCharSet);
++ *pWork = aTemp.GetChar(0);
++ }
+ }
+ else
+ *pWork = nUCode;
+@@ -3188,7 +3197,8 @@
+ {
+ case 6:
+ case 7:
+- if ( (0xa5dc != nMagic) && (0xa699 != nMagic) )
++ //if ( (0xa5dc != nMagic) && (0xa699 != nMagic) ) //Takashi Ono
++ if ( (0xa5dc != nMagic) && ( (0xa697 > nMagic) || (0xa699 < nMagic) ) )
+ {
+ //JP 06.05.99: teste auf eigenen 97-Fake!
+ if (pStg && 0xa5ec == nMagic)
+--- ../sw/source/filter/ww8/ww8par6.cxx 20 Jun 2003 09:38:07 -0000 1.138
++++ ../sw/source/filter/ww8/ww8par6.cxx 25 Jul 2003 22:55:05 -0000
+@@ -3373,9 +3373,11 @@
+ nId = RES_CHRATR_CTL_FONT;
+ break;
+ case 93:
++ case 111:
+ case 0x4a4f:
+ nId = RES_CHRATR_FONT;
+ break;
++ case 112:
+ case 0x4a50:
+ nId = RES_CHRATR_CJK_FONT;
+ break;
+@@ -4984,8 +4986,8 @@
+ //percentage to grow hps short
+ {110, (FNReadRecord)0}, //"sprmCCondHyhen", chp.ysri
+ //ysri short
+- {111, (FNReadRecord)0}, //"??111",
+- {112, (FNReadRecord)0}, //"??112",
++ {111, &SwWW8ImplReader::Read_FontCode}, //ww7 font
++ {112, &SwWW8ImplReader::Read_FontCode}, //ww7 CJK font
+ {113, &SwWW8ImplReader::Read_FontCode}, //ww7 rtl font
+ {114, (FNReadRecord)0}, //"??114",
+ {115, &SwWW8ImplReader::Read_TxtColor}, //ww7 rtl colour ?
diff --git a/editors/openoffice.org-3/files/patch-wrtrtf b/editors/openoffice.org-3/files/patch-wrtrtf
new file mode 100644
index 00000000000..7381dc61cd6
--- /dev/null
+++ b/editors/openoffice.org-3/files/patch-wrtrtf
@@ -0,0 +1,312 @@
+--- ../svtools/source/svrtf/rtfout.cxx.orig 2000-10-16 18:13:46.000000000 +0900
++++ ../svtools/source/svrtf/rtfout.cxx 2003-09-23 12:41:00.000000000 +0900
+@@ -124,8 +124,9 @@
+ default:
+ {
+ sal_Unicode cCh = c;
+- c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
+- if( !c )
++ rtl::OString buff( &c, 1, eDestEnc, RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE|RTL_UNICODETOTEXT_FLAGS_INVALID_IGNORE );
++// c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
++ if( !buff.getLength() )
+ {
+ // then write as unicode - character
+ if( 0xFF < cCh )
+@@ -141,8 +142,8 @@
+ break;
+ }
+
+- if( !bWriteHelpFile )
+- switch( c )
++ if( !bWriteHelpFile && buff.getLength() == 1 )
++ switch( BYTE(buff[0]) )
+ {
+ #ifdef MAC
+ case 0xa5: pStr = sRTF_BULLET; break;
+@@ -164,6 +165,9 @@
+ // MAC
+ }
+ if( !pStr )
++ for (int i = 0; i < buff.getLength(); ++i)
++ {
++ c = BYTE(buff[i]);
+ switch ( c )
+ {
+ case '\\':
+@@ -186,6 +190,7 @@
+ }
+ break;
+ }
++ }
+ }
+ break;
+ }
+--- ../sw/source/filter/rtf/wrtrtf.cxx.orig 2003-04-18 00:00:28.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.cxx 2003-09-23 23:33:08.000000000 +0900
+@@ -184,6 +184,12 @@
+ #ifndef _CHARFMT_HXX
+ #include <charfmt.hxx>
+ #endif
++#ifndef _POOLFMT_HXX
++#include <poolfmt.hxx>
++#endif
++#ifndef _SWSTYLENAMEMAPPER_HXX
++#include <SwStyleNameMapper.hxx>
++#endif
+ #ifndef _SECTION_HXX //autogen
+ #include <section.hxx>
+ #endif
+@@ -215,7 +221,7 @@
+ SV_IMPL_VARARR( RTFColorTbl, Color )
+
+
+-SwRTFWriter::SwRTFWriter( const String& rFltName )
++SwRTFWriter::SwRTFWriter( const String& rFltName ) : eCurrentCharSet(DEF_ENCODING)
+ {
+ // schreibe Win-RTF-HelpFileFmt
+ bWriteHelpFmt = 'W' == rFltName.GetChar( 0 );
+@@ -893,14 +899,14 @@
+ // as alternative name. Because WinWord can't match each
+ // font to a UniCode font. So the CJK texts are shown as
+ // empty rectangles ;-(.
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ OutComment( rWrt, sRTF_FALT) << ' ';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, eChrSet,
+ rWrt.bWriteHelpFmt ) << '}';
+ }
+ else
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ rWrt.Strm() << ";}";
+ }
+@@ -932,6 +938,139 @@
+
+
+
++//Takashi Ono for CJK
++const rtl::OUString SwRTFWriter::XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_POOLCOLL_TEXT_IDENT, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_POOLCOLL_LABEL, RES_POOLCOLL_TOX_ILLUSH, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_POOLCOLL_TOX_AUTHORITIESH, RES_NONE, RES_NONE,
++ RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_NUM_LEVEL1,
++
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_NUM_LEVEL2, RES_POOLCOLL_NUM_LEVEL3, RES_POOLCOLL_NUM_LEVEL4, RES_POOLCOLL_NUM_LEVEL5,
++
++ RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ sal_uInt16 idcol = ::SwStyleNameMapper::GetPoolIdFromUIName( rName, eFlags );
++
++ for (int i = 0; i < sizeof( aArr ) / sizeof( *aArr ); i++)
++ {
++ if ( idcol == aArr[i] )
++ {
++ return rtl::OUString::createFromAscii(stiName[i]);
++ }
++ }
++ return ::SwStyleNameMapper::GetProgName( idcol, String() );
++}
++
++
++
+ void SwRTFWriter::OutRTFStyleTab()
+ {
+ // das 0-Style ist das Default, wird nie ausgegeben !!
+@@ -988,7 +1127,7 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pColl->GetName(), DEF_ENCODING,
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pColl->GetName(), GET_POOLID_TXTCOLL ), DEF_ENCODING,
+ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+@@ -1015,8 +1154,8 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pFmt->GetName(), DEF_ENCODING,
+- bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pFmt->GetName(), GET_POOLID_CHRFMT ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+ Strm() << '}';
+@@ -1217,8 +1356,8 @@
+ break;
+ Strm() << sRTF_PGDSCNXT;
+ OutULong( i ) << ' ';
+- RTFOutFuncs::Out_String( Strm(), rPageDesc.GetName(),
+- DEF_ENCODING, bWriteHelpFmt ) << ";}";
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( rPageDesc.GetName(), GET_POOLID_PAGEDESC ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}";
+ }
+ Strm() << '}' << SwRTFWriter::sNewLine;
+ bOutPageDesc = bOutPageDescTbl = FALSE;
+--- ../sw/source/filter/rtf/wrtrtf.hxx.orig 2002-07-31 19:18:50.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.hxx 2003-09-23 23:37:50.000000000 +0900
+@@ -117,6 +117,7 @@
+ USHORT nAktFlyPos; // Index auf das naechste "FlyFrmFmt"
+ void OutRTFColorTab();
+ void OutRTFFontTab();
++ const rtl::OUString XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags );
+ void OutRTFStyleTab();
+ void OutRTFListTab();
+
+@@ -136,6 +137,8 @@
+ USHORT nBkmkTabPos; // akt. Position in der Bookmark-Tabelle
+ USHORT nCurScript; // actual scripttype
+
++ rtl_TextEncoding eCurrentCharSet;
++
+ #if defined(MAC) || defined(UNX)
+ static const sal_Char sNewLine; // nur \012 oder \015
+ #else
+--- ../sw/source/filter/rtf/rtfatr.cxx.orig 2003-05-19 21:24:46.000000000 +0900
++++ ../sw/source/filter/rtf/rtfatr.cxx 2003-09-23 23:45:52.000000000 +0900
+@@ -1319,7 +1319,7 @@
+ sURL = aTmp.GetFull();
+ }
+ */ rWrt.Strm() << '\"';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ sURL = aTmp.GetMark();
+ }
+@@ -1328,7 +1328,7 @@
+ {
+ rWrt.Strm() << "\\\\l \"";
+ sURL.Erase( 0, 1 );
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ }
+
+@@ -1609,7 +1609,7 @@
+
+ if( nStrPos != nEnde )
+ RTFOutFuncs::Out_Char( rWrt.Strm(), rStr.GetChar( nStrPos ),
+- DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
++ rRTFWrt.eCurrentCharSet, rRTFWrt.bWriteHelpFmt );
+ }
+
+ // noch eine schliesende Klammer da ??
+@@ -2188,6 +2188,7 @@
+ const sal_Char* pCmd = bAssoc ? sRTF_AF : sRTF_F;
+ rWrt.Strm() << pCmd;
+ rWrt.OutULong(rRTFWrt.GetId(rFont));
++ rRTFWrt.eCurrentCharSet = rFont.GetCharSet();
+ }
+ return rWrt;
+ }
diff --git a/editors/openoffice.org-vcltesttool/Makefile b/editors/openoffice.org-vcltesttool/Makefile
index 68bcf804ab7..dd5d66a9326 100644
--- a/editors/openoffice.org-vcltesttool/Makefile
+++ b/editors/openoffice.org-vcltesttool/Makefile
@@ -7,6 +7,7 @@
PORTNAME= openoffice
PORTVERSION= 1.1.0
+PORTREVERSION= 1
CATEGORIES+= editors
MASTER_SITES+= ftp://openofficeorg.secsup.org/pub/software/openoffice/stable/%SUBDIR%/ \
ftp://sunsite.cnlab-switch.ch/mirror/OpenOffice/stable/%SUBDIR%/ \
diff --git a/editors/openoffice.org-vcltesttool/files/patch-rtfcjk b/editors/openoffice.org-vcltesttool/files/patch-rtfcjk
new file mode 100644
index 00000000000..2b44f86757f
--- /dev/null
+++ b/editors/openoffice.org-vcltesttool/files/patch-rtfcjk
@@ -0,0 +1,214 @@
+--- ../svx/source/svrtf/rtfitem.cxx 24 Jun 2003 07:48:56 -0000 1.18
++++ ../svx/source/svrtf/rtfitem.cxx 25 Jul 2003 22:54:24 -0000
+@@ -285,11 +285,20 @@
+ }
+ else
+ {
+- if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType )
++// if( LOW_CHARTYPE == eType || HIGH_CHARTYPE == eType ) //Takashi Ono for CJK
++ if( LOW_CHARTYPE == eType )
+ {
+ if( *pNormal )
+ {
+ rItem.SetWhich( *pNormal );
++ rSet.Put( rItem );
++ }
++ }
++ else if( HIGH_CHARTYPE == eType )
++ {
++ if( *pCTL )
++ {
++ rItem.SetWhich( *pCTL );
+ rSet.Put( rItem );
+ }
+ }
+--- ../svx/source/svrtf/svxrtf.cxx 19 May 2003 12:30:59 -0000 1.15
++++ ../svx/source/svrtf/svxrtf.cxx 25 Jul 2003 22:54:29 -0000
+@@ -583,8 +583,14 @@
+
+ case RTF_FCHARSET:
+ if( -1 != nTokenValue )
+- pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
+- (BYTE)nTokenValue ) );
++ {
++// pFont->SetCharSet( rtl_getTextEncodingFromWindowsCharset(
++// (BYTE)nTokenValue ) );
++ CharSet nCharSet =
++ rtl_getTextEncodingFromWindowsCharset( (BYTE)nTokenValue );
++ pFont->SetCharSet( nCharSet );
++ SetEncoding( nCharSet ); //Takashi Ono
++ }
+ break;
+
+ case RTF_FPRQ:
+--- ../sw/source/filter/rtf/swparrtf.cxx 4 Jun 2003 10:19:09 -0000 1.28
++++ ../sw/source/filter/rtf/swparrtf.cxx 25 Jul 2003 22:54:37 -0000
+@@ -3231,10 +3231,156 @@
+ SetSwgValues( rCollSet );
+ }
+
++//Takashi Ono for CJK
++String SwRTFParser::XlateFmtColName( const String &rName )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_NONE, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_NONE, RES_NONE, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_LISTS_BEGIN, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++
++ RES_NONE,RES_NONE, RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ RES_POOL_COLLFMT_TYPE nId = RES_NONE;
++
++ for (int i = 0; i < sizeof( stiName ) / sizeof( *stiName ); i++)
++ {
++ if ( rName == String( stiName[i], RTL_TEXTENCODING_MS_1252 ) )
++ {
++ nId = aArr[i];
++ break;
++ }
++ }
++ USHORT nResId;
++ if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
++ nResId = RC_POOLCOLL_TEXT_BEGIN - RES_POOLCOLL_TEXT_BEGIN;
++ else if (RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END)
++ nResId = RC_POOLCOLL_LISTS_BEGIN - RES_POOLCOLL_LISTS_BEGIN;
++ else if (RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END)
++ nResId = RC_POOLCOLL_EXTRA_BEGIN - RES_POOLCOLL_EXTRA_BEGIN;
++ else if (RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END)
++ nResId = RC_POOLCOLL_REGISTER_BEGIN - RES_POOLCOLL_REGISTER_BEGIN;
++ else if (RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END)
++ nResId = RC_POOLCOLL_DOC_BEGIN - RES_POOLCOLL_DOC_BEGIN;
++ else if (RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END)
++ nResId = RC_POOLCOLL_HTML_BEGIN - RES_POOLCOLL_HTML_BEGIN;
++ return String( ResId( nResId + nId, pSwResMgr ) );
++}
++
+ SwTxtFmtColl* SwRTFParser::MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle )
+ {
+- int bCollExist;
+- SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo),
++ int bCollExist;
++// SwTxtFmtColl* pColl = MakeColl( rStyle.sName, USHORT(nNo), //Takashi Ono for CJK
++ SwTxtFmtColl* pColl = MakeColl( XlateFmtColName( rStyle.sName ),
++ USHORT(nNo),
+ rStyle.nOutlineNo, bCollExist );
+ aTxtCollTbl.Insert( nNo, pColl );
+
+--- ../sw/source/filter/rtf/swparrtf.hxx 19 May 2003 12:25:34 -0000 1.10
++++ ../sw/source/filter/rtf/swparrtf.hxx 25 Jul 2003 22:54:44 -0000
+@@ -364,6 +364,7 @@
+ void SetStyleAttr( SfxItemSet& rCollSet,
+ const SfxItemSet& rStyleSet,
+ const SfxItemSet& rDerivedSet );
++ String XlateFmtColName( const String &rName ); //Takashi Ono for CJK
+ SwTxtFmtColl* MakeStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ SwCharFmt* MakeCharStyle( USHORT nNo, const SvxRTFStyleType& rStyle );
+ void MakeStyleTab();
diff --git a/editors/openoffice.org-vcltesttool/files/patch-topsection b/editors/openoffice.org-vcltesttool/files/patch-topsection
new file mode 100644
index 00000000000..a332718508d
--- /dev/null
+++ b/editors/openoffice.org-vcltesttool/files/patch-topsection
@@ -0,0 +1,21 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:55:23 -0000
+@@ -2015,7 +2015,7 @@
+ bool bStartAttr = pPlcxMan->Get(&aRes); // hole Attribut-Pos
+ aRes.nAktCp = rTxtPos; // Akt. Cp-Pos
+
+- if (aRes.nFlags & MAN_MASK_NEW_SEP) // neue Section
++ if ((aRes.nFlags & MAN_MASK_NEW_SEP) || maSectionManager.empty()) // neue Section
+ {
+ ASSERT(pPaM->GetNode()->GetTxtNode(), "Missing txtnode");
+ // PageDesc erzeugen und fuellen
+--- ../sw/source/filter/ww8/ww8par.hxx 30 Jun 2003 15:54:37 -0000 1.115
++++ ../sw/source/filter/ww8/ww8par.hxx 25 Jul 2003 22:55:28 -0000
+@@ -720,6 +720,7 @@
+ short GetPageLeft() const;
+ short GetPageRight() const;
+ short GetPageWidth() const;
++ bool empty() const { return maSegments.empty(); }
+ };
+
+ class wwFrameNamer
diff --git a/editors/openoffice.org-vcltesttool/files/patch-word6+95-cjkhandling b/editors/openoffice.org-vcltesttool/files/patch-word6+95-cjkhandling
new file mode 100644
index 00000000000..9a86ffb7da9
--- /dev/null
+++ b/editors/openoffice.org-vcltesttool/files/patch-word6+95-cjkhandling
@@ -0,0 +1,63 @@
+--- ../sw/source/filter/ww8/ww8par.cxx 9 Jul 2003 11:06:44 -0000 1.114
++++ ../sw/source/filter/ww8/ww8par.cxx 25 Jul 2003 22:54:52 -0000
+@@ -1683,11 +1683,20 @@
+ if (bVer67)
+ {
+ sal_Char aTest[2];
+- aTest[0] = (nUCode & 0xFF00) >> 8;
+- aTest[1] = (nUCode & 0x00FF);
+- String aTemp(aTest, 2, eSrcCharSet);
+- ASSERT(aTemp.Len() == 1, "so much for that theory");
+- *pWork = aTemp.GetChar(0);
++ if (nUCode >= 0x3000)
++ {
++ aTest[0] = (nUCode & 0xFF00) >> 8;
++ aTest[1] = (nUCode & 0x00FF);
++ String aTemp(aTest, 2, eSrcCharSet);
++ ASSERT(aTemp.Len() == 1, "so much for that theory");
++ *pWork = aTemp.GetChar(0);
++ }
++ else
++ {
++ aTest[0] = (nUCode & 0x00FF);
++ String aTemp(aTest, 1, eSrcCharSet);
++ *pWork = aTemp.GetChar(0);
++ }
+ }
+ else
+ *pWork = nUCode;
+@@ -3188,7 +3197,8 @@
+ {
+ case 6:
+ case 7:
+- if ( (0xa5dc != nMagic) && (0xa699 != nMagic) )
++ //if ( (0xa5dc != nMagic) && (0xa699 != nMagic) ) //Takashi Ono
++ if ( (0xa5dc != nMagic) && ( (0xa697 > nMagic) || (0xa699 < nMagic) ) )
+ {
+ //JP 06.05.99: teste auf eigenen 97-Fake!
+ if (pStg && 0xa5ec == nMagic)
+--- ../sw/source/filter/ww8/ww8par6.cxx 20 Jun 2003 09:38:07 -0000 1.138
++++ ../sw/source/filter/ww8/ww8par6.cxx 25 Jul 2003 22:55:05 -0000
+@@ -3373,9 +3373,11 @@
+ nId = RES_CHRATR_CTL_FONT;
+ break;
+ case 93:
++ case 111:
+ case 0x4a4f:
+ nId = RES_CHRATR_FONT;
+ break;
++ case 112:
+ case 0x4a50:
+ nId = RES_CHRATR_CJK_FONT;
+ break;
+@@ -4984,8 +4986,8 @@
+ //percentage to grow hps short
+ {110, (FNReadRecord)0}, //"sprmCCondHyhen", chp.ysri
+ //ysri short
+- {111, (FNReadRecord)0}, //"??111",
+- {112, (FNReadRecord)0}, //"??112",
++ {111, &SwWW8ImplReader::Read_FontCode}, //ww7 font
++ {112, &SwWW8ImplReader::Read_FontCode}, //ww7 CJK font
+ {113, &SwWW8ImplReader::Read_FontCode}, //ww7 rtl font
+ {114, (FNReadRecord)0}, //"??114",
+ {115, &SwWW8ImplReader::Read_TxtColor}, //ww7 rtl colour ?
diff --git a/editors/openoffice.org-vcltesttool/files/patch-wrtrtf b/editors/openoffice.org-vcltesttool/files/patch-wrtrtf
new file mode 100644
index 00000000000..7381dc61cd6
--- /dev/null
+++ b/editors/openoffice.org-vcltesttool/files/patch-wrtrtf
@@ -0,0 +1,312 @@
+--- ../svtools/source/svrtf/rtfout.cxx.orig 2000-10-16 18:13:46.000000000 +0900
++++ ../svtools/source/svrtf/rtfout.cxx 2003-09-23 12:41:00.000000000 +0900
+@@ -124,8 +124,9 @@
+ default:
+ {
+ sal_Unicode cCh = c;
+- c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
+- if( !c )
++ rtl::OString buff( &c, 1, eDestEnc, RTL_UNICODETOTEXT_FLAGS_UNDEFINED_IGNORE|RTL_UNICODETOTEXT_FLAGS_INVALID_IGNORE );
++// c = (BYTE)ByteString::ConvertFromUnicode( c, eDestEnc, FALSE );
++ if( !buff.getLength() )
+ {
+ // then write as unicode - character
+ if( 0xFF < cCh )
+@@ -141,8 +142,8 @@
+ break;
+ }
+
+- if( !bWriteHelpFile )
+- switch( c )
++ if( !bWriteHelpFile && buff.getLength() == 1 )
++ switch( BYTE(buff[0]) )
+ {
+ #ifdef MAC
+ case 0xa5: pStr = sRTF_BULLET; break;
+@@ -164,6 +165,9 @@
+ // MAC
+ }
+ if( !pStr )
++ for (int i = 0; i < buff.getLength(); ++i)
++ {
++ c = BYTE(buff[i]);
+ switch ( c )
+ {
+ case '\\':
+@@ -186,6 +190,7 @@
+ }
+ break;
+ }
++ }
+ }
+ break;
+ }
+--- ../sw/source/filter/rtf/wrtrtf.cxx.orig 2003-04-18 00:00:28.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.cxx 2003-09-23 23:33:08.000000000 +0900
+@@ -184,6 +184,12 @@
+ #ifndef _CHARFMT_HXX
+ #include <charfmt.hxx>
+ #endif
++#ifndef _POOLFMT_HXX
++#include <poolfmt.hxx>
++#endif
++#ifndef _SWSTYLENAMEMAPPER_HXX
++#include <SwStyleNameMapper.hxx>
++#endif
+ #ifndef _SECTION_HXX //autogen
+ #include <section.hxx>
+ #endif
+@@ -215,7 +221,7 @@
+ SV_IMPL_VARARR( RTFColorTbl, Color )
+
+
+-SwRTFWriter::SwRTFWriter( const String& rFltName )
++SwRTFWriter::SwRTFWriter( const String& rFltName ) : eCurrentCharSet(DEF_ENCODING)
+ {
+ // schreibe Win-RTF-HelpFileFmt
+ bWriteHelpFmt = 'W' == rFltName.GetChar( 0 );
+@@ -893,14 +899,14 @@
+ // as alternative name. Because WinWord can't match each
+ // font to a UniCode font. So the CJK texts are shown as
+ // empty rectangles ;-(.
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ OutComment( rWrt, sRTF_FALT) << ' ';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sAltNm, eChrSet,
+ rWrt.bWriteHelpFmt ) << '}';
+ }
+ else
+- RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sFntNm, eChrSet,
+ rWrt.bWriteHelpFmt );
+ rWrt.Strm() << ";}";
+ }
+@@ -932,6 +938,139 @@
+
+
+
++//Takashi Ono for CJK
++const rtl::OUString SwRTFWriter::XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags )
++{
++#define RES_NONE RES_POOLCOLL_DOC_END
++
++ static const RES_POOL_COLLFMT_TYPE aArr[]={
++ RES_POOLCOLL_STANDARD, RES_POOLCOLL_HEADLINE1, RES_POOLCOLL_HEADLINE2,
++ RES_POOLCOLL_HEADLINE3, RES_POOLCOLL_HEADLINE4, RES_POOLCOLL_HEADLINE5,
++ RES_POOLCOLL_HEADLINE6, RES_POOLCOLL_HEADLINE7, RES_POOLCOLL_HEADLINE8,
++ RES_POOLCOLL_HEADLINE9,
++
++ RES_POOLCOLL_TOX_IDX1, RES_POOLCOLL_TOX_IDX2, RES_POOLCOLL_TOX_IDX3,
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_NONE,
++ RES_POOLCOLL_TOX_CNTNT1,
++
++ RES_POOLCOLL_TOX_CNTNT2, RES_POOLCOLL_TOX_CNTNT3, RES_POOLCOLL_TOX_CNTNT4,
++ RES_POOLCOLL_TOX_CNTNT5, RES_POOLCOLL_TOX_CNTNT6, RES_POOLCOLL_TOX_CNTNT7,
++ RES_POOLCOLL_TOX_CNTNT8, RES_POOLCOLL_TOX_CNTNT9,
++ RES_POOLCOLL_TEXT_IDENT, RES_POOLCOLL_FOOTNOTE,
++
++ RES_NONE, RES_POOLCOLL_HEADER, RES_POOLCOLL_FOOTER, RES_POOLCOLL_TOX_IDXH,
++ RES_POOLCOLL_LABEL, RES_POOLCOLL_TOX_ILLUSH, RES_POOLCOLL_JAKETADRESS, RES_POOLCOLL_SENDADRESS,
++ RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_ENDNOTE, RES_POOLCOLL_TOX_AUTHORITIESH, RES_NONE, RES_NONE,
++ RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_BUL_LEVEL1, RES_POOLCOLL_NUM_LEVEL1,
++
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_BUL_LEVEL2, RES_POOLCOLL_BUL_LEVEL3, RES_POOLCOLL_BUL_LEVEL4, RES_POOLCOLL_BUL_LEVEL5,
++ RES_POOLCOLL_NUM_LEVEL2, RES_POOLCOLL_NUM_LEVEL3, RES_POOLCOLL_NUM_LEVEL4, RES_POOLCOLL_NUM_LEVEL5,
++
++ RES_POOLCOLL_DOC_TITEL, RES_NONE, RES_POOLCOLL_SIGNATURE, RES_NONE,
++ RES_POOLCOLL_TEXT, RES_POOLCOLL_TEXT_MOVE, RES_NONE, RES_NONE,
++
++ RES_NONE, RES_NONE, RES_NONE, RES_NONE, RES_POOLCOLL_DOC_SUBTITEL };
++ static const sal_Char *stiName[] = {
++ "Normal",
++ "heading 1",
++ "heading 2",
++ "heading 3",
++ "heading 4",
++ "heading 5",
++ "heading 6",
++ "heading 7",
++ "heading 8",
++ "heading 9",
++ "index 1",
++ "index 2",
++ "index 3",
++ "index 4",
++ "index 5",
++ "index 6",
++ "index 7",
++ "index 8",
++ "index 9",
++ "toc 1",
++ "toc 2",
++ "toc 3",
++ "toc 4",
++ "toc 5",
++ "toc 6",
++ "toc 7",
++ "toc 8",
++ "toc 9",
++ "Normal Indent",
++ "footnote text",
++ "annotation text",
++ "header",
++ "footer",
++ "index heading",
++ "caption",
++ "table of figures",
++ "envelope address",
++ "envelope return",
++ "footnote reference",
++ "annotation reference",
++ "line number",
++ "page number",
++ "endnote reference",
++ "endnote text",
++ "table of authorities",
++ "macro",
++ "toa heading",
++ "List",
++ "List Bullet",
++ "List Number",
++ "List 2",
++ "List 3",
++ "List 4",
++ "List 5",
++ "List Bullet 2",
++ "List Bullet 3",
++ "List Bullet 4",
++ "List Bullet 5",
++ "List Number 2",
++ "List Number 3",
++ "List Number 4",
++ "List Number 5",
++ "Title",
++ "Closing",
++ "Signature",
++ "Default Paragraph Font",
++ "Body Text",
++ "Body Text Indent",
++ "List Continue",
++ "List Continue 2",
++ "List Continue 3",
++ "List Continue 4",
++ "List Continue 5",
++ "Message Header",
++ "Subtitle",
++ };
++
++
++ ASSERT( ( sizeof( aArr ) / sizeof( RES_POOL_COLLFMT_TYPE ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++ ASSERT( ( sizeof( stiName ) / sizeof( *stiName ) == 75 ),
++ "Style-UEbersetzungstabelle hat falsche Groesse" );
++
++ sal_uInt16 idcol = ::SwStyleNameMapper::GetPoolIdFromUIName( rName, eFlags );
++
++ for (int i = 0; i < sizeof( aArr ) / sizeof( *aArr ); i++)
++ {
++ if ( idcol == aArr[i] )
++ {
++ return rtl::OUString::createFromAscii(stiName[i]);
++ }
++ }
++ return ::SwStyleNameMapper::GetProgName( idcol, String() );
++}
++
++
++
+ void SwRTFWriter::OutRTFStyleTab()
+ {
+ // das 0-Style ist das Default, wird nie ausgegeben !!
+@@ -988,7 +1127,7 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pColl->GetName(), DEF_ENCODING,
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pColl->GetName(), GET_POOLID_TXTCOLL ), DEF_ENCODING,
+ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+@@ -1015,8 +1154,8 @@
+ }
+
+ Strm() << ' ';
+- RTFOutFuncs::Out_String( Strm(), pFmt->GetName(), DEF_ENCODING,
+- bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( pFmt->GetName(), GET_POOLID_CHRFMT ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}" << SwRTFWriter::sNewLine;
+ }
+
+ Strm() << '}';
+@@ -1217,8 +1356,8 @@
+ break;
+ Strm() << sRTF_PGDSCNXT;
+ OutULong( i ) << ' ';
+- RTFOutFuncs::Out_String( Strm(), rPageDesc.GetName(),
+- DEF_ENCODING, bWriteHelpFmt ) << ";}";
++ RTFOutFuncs::Out_String( Strm(), XlateFmtName( rPageDesc.GetName(), GET_POOLID_PAGEDESC ), DEF_ENCODING,
++ bWriteHelpFmt ) << ";}";
+ }
+ Strm() << '}' << SwRTFWriter::sNewLine;
+ bOutPageDesc = bOutPageDescTbl = FALSE;
+--- ../sw/source/filter/rtf/wrtrtf.hxx.orig 2002-07-31 19:18:50.000000000 +0900
++++ ../sw/source/filter/rtf/wrtrtf.hxx 2003-09-23 23:37:50.000000000 +0900
+@@ -117,6 +117,7 @@
+ USHORT nAktFlyPos; // Index auf das naechste "FlyFrmFmt"
+ void OutRTFColorTab();
+ void OutRTFFontTab();
++ const rtl::OUString XlateFmtName( const rtl::OUString &rName, SwGetPoolIdFromName eFlags );
+ void OutRTFStyleTab();
+ void OutRTFListTab();
+
+@@ -136,6 +137,8 @@
+ USHORT nBkmkTabPos; // akt. Position in der Bookmark-Tabelle
+ USHORT nCurScript; // actual scripttype
+
++ rtl_TextEncoding eCurrentCharSet;
++
+ #if defined(MAC) || defined(UNX)
+ static const sal_Char sNewLine; // nur \012 oder \015
+ #else
+--- ../sw/source/filter/rtf/rtfatr.cxx.orig 2003-05-19 21:24:46.000000000 +0900
++++ ../sw/source/filter/rtf/rtfatr.cxx 2003-09-23 23:45:52.000000000 +0900
+@@ -1319,7 +1319,7 @@
+ sURL = aTmp.GetFull();
+ }
+ */ rWrt.Strm() << '\"';
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ sURL = aTmp.GetMark();
+ }
+@@ -1328,7 +1328,7 @@
+ {
+ rWrt.Strm() << "\\\\l \"";
+ sURL.Erase( 0, 1 );
+- RTFOutFuncs::Out_String( rWrt.Strm(), sURL, DEF_ENCODING,
++ RTFOutFuncs::Out_String( rWrt.Strm(), sURL, rRTFWrt.eCurrentCharSet,
+ rRTFWrt.bWriteHelpFmt ) << "\" ";
+ }
+
+@@ -1609,7 +1609,7 @@
+
+ if( nStrPos != nEnde )
+ RTFOutFuncs::Out_Char( rWrt.Strm(), rStr.GetChar( nStrPos ),
+- DEF_ENCODING, rRTFWrt.bWriteHelpFmt );
++ rRTFWrt.eCurrentCharSet, rRTFWrt.bWriteHelpFmt );
+ }
+
+ // noch eine schliesende Klammer da ??
+@@ -2188,6 +2188,7 @@
+ const sal_Char* pCmd = bAssoc ? sRTF_AF : sRTF_F;
+ rWrt.Strm() << pCmd;
+ rWrt.OutULong(rRTFWrt.GetId(rFont));
++ rRTFWrt.eCurrentCharSet = rFont.GetCharSet();
+ }
+ return rWrt;
+ }