diff options
author | Maho Nakata <maho@FreeBSD.org> | 2003-10-02 06:45:23 +0000 |
---|---|---|
committer | Maho Nakata <maho@FreeBSD.org> | 2003-10-02 06:45:23 +0000 |
commit | 9a7eb5c2f3f82dd76b4156ebf4bac83d7dbd9bc8 (patch) | |
tree | de1c049a1657d7b219685385a34a7da093fd5a25 /editors | |
parent | Update to 2.0.15. (diff) |
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
Notes
Notes:
svn path=/head/; revision=90018
Diffstat (limited to 'editors')
85 files changed, 10387 insertions, 0 deletions
diff --git a/editors/openoffice-1.1-devel/Makefile b/editors/openoffice-1.1-devel/Makefile index 68bcf804ab71..dd5d66a9326d 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 000000000000..2b44f86757f9 --- /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 000000000000..a332718508de --- /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 000000000000..9a86ffb7da9d --- /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 000000000000..7381dc61cd69 --- /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 68bcf804ab71..dd5d66a9326d 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 000000000000..2b44f86757f9 --- /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 000000000000..a332718508de --- /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 000000000000..9a86ffb7da9d --- /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 000000000000..7381dc61cd69 --- /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 68bcf804ab71..dd5d66a9326d 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 000000000000..2b44f86757f9 --- /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 000000000000..a332718508de --- /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 000000000000..9a86ffb7da9d --- /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 000000000000..7381dc61cd69 --- /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 68bcf804ab71..dd5d66a9326d 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 000000000000..2b44f86757f9 --- /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 000000000000..a332718508de --- /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 000000000000..9a86ffb7da9d --- /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 000000000000..7381dc61cd69 --- /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 68bcf804ab71..dd5d66a9326d 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 000000000000..2b44f86757f9 --- /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 000000000000..a332718508de --- /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 000000000000..9a86ffb7da9d --- /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 000000000000..7381dc61cd69 --- /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 68bcf804ab71..dd5d66a9326d 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 000000000000..2b44f86757f9 --- /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 000000000000..a332718508de --- /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 000000000000..9a86ffb7da9d --- /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 000000000000..7381dc61cd69 --- /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 68bcf804ab71..dd5d66a9326d 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 000000000000..2b44f86757f9 --- /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 000000000000..a332718508de --- /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 000000000000..9a86ffb7da9d --- /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 000000000000..7381dc61cd69 --- /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 68bcf804ab71..dd5d66a9326d 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 000000000000..2b44f86757f9 --- /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 000000000000..a332718508de --- /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 000000000000..9a86ffb7da9d --- /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 000000000000..7381dc61cd69 --- /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 68bcf804ab71..dd5d66a9326d 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 000000000000..2b44f86757f9 --- /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 000000000000..a332718508de --- /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 000000000000..9a86ffb7da9d --- /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 000000000000..7381dc61cd69 --- /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 68bcf804ab71..dd5d66a9326d 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 000000000000..2b44f86757f9 --- /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 000000000000..a332718508de --- /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 000000000000..9a86ffb7da9d --- /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 000000000000..7381dc61cd69 --- /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 68bcf804ab71..dd5d66a9326d 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 000000000000..2b44f86757f9 --- /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 000000000000..a332718508de --- /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 000000000000..9a86ffb7da9d --- /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 000000000000..7381dc61cd69 --- /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 68bcf804ab71..dd5d66a9326d 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 000000000000..2b44f86757f9 --- /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 000000000000..a332718508de --- /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 000000000000..9a86ffb7da9d --- /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 000000000000..7381dc61cd69 --- /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 68bcf804ab71..dd5d66a9326d 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 000000000000..2b44f86757f9 --- /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 000000000000..a332718508de --- /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 000000000000..9a86ffb7da9d --- /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 000000000000..7381dc61cd69 --- /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 68bcf804ab71..dd5d66a9326d 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 000000000000..2b44f86757f9 --- /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 000000000000..a332718508de --- /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 000000000000..9a86ffb7da9d --- /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 000000000000..7381dc61cd69 --- /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 68bcf804ab71..dd5d66a9326d 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 000000000000..2b44f86757f9 --- /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 000000000000..a332718508de --- /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 000000000000..9a86ffb7da9d --- /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 000000000000..7381dc61cd69 --- /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 68bcf804ab71..dd5d66a9326d 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 000000000000..2b44f86757f9 --- /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 000000000000..a332718508de --- /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 000000000000..9a86ffb7da9d --- /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 000000000000..7381dc61cd69 --- /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 68bcf804ab71..dd5d66a9326d 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 000000000000..2b44f86757f9 --- /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 000000000000..a332718508de --- /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 000000000000..9a86ffb7da9d --- /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 000000000000..7381dc61cd69 --- /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; + } |