Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
onlyoffice_core
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boris Kocherov
onlyoffice_core
Commits
e81517ca
Commit
e81517ca
authored
Apr 11, 2016
by
ElenaSubbotina
Committed by
Alexander Trofimov
May 21, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
RtfFormat - правка багов по результатам тестирования
parent
33c1e271
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
505 additions
and
339 deletions
+505
-339
ASCOfficeRtfFile/RtfFormatLib/source/DestinationCommand.h
ASCOfficeRtfFile/RtfFormatLib/source/DestinationCommand.h
+25
-4
ASCOfficeRtfFile/RtfFormatLib/source/RtfBookmark.cpp
ASCOfficeRtfFile/RtfFormatLib/source/RtfBookmark.cpp
+10
-2
ASCOfficeRtfFile/RtfFormatLib/source/RtfGlobalTables.cpp
ASCOfficeRtfFile/RtfFormatLib/source/RtfGlobalTables.cpp
+4
-2
ASCOfficeRtfFile/RtfFormatLib/source/RtfGlobalTables.h
ASCOfficeRtfFile/RtfFormatLib/source/RtfGlobalTables.h
+8
-7
ASCOfficeRtfFile/RtfFormatLib/source/RtfProperty.cpp
ASCOfficeRtfFile/RtfFormatLib/source/RtfProperty.cpp
+219
-170
ASCOfficeRtfFile/RtfFormatLib/source/RtfProperty.h
ASCOfficeRtfFile/RtfFormatLib/source/RtfProperty.h
+47
-16
ASCOfficeRtfFile/RtfFormatLib/source/RtfSection.cpp
ASCOfficeRtfFile/RtfFormatLib/source/RtfSection.cpp
+50
-50
ASCOfficeRtfFile/RtfFormatLib/source/Writer/OOXFootnoteWriter.h
...iceRtfFile/RtfFormatLib/source/Writer/OOXFootnoteWriter.h
+24
-4
ASCOfficeRtfFile/RtfFormatTest/RtfFormatTest.cpp
ASCOfficeRtfFile/RtfFormatTest/RtfFormatTest.cpp
+28
-12
Common/DocxFormat/Source/DocxFormat/Document.h
Common/DocxFormat/Source/DocxFormat/Document.h
+90
-72
No files found.
ASCOfficeRtfFile/RtfFormatLib/source/DestinationCommand.h
View file @
e81517ca
...
@@ -698,6 +698,21 @@ public:
...
@@ -698,6 +698,21 @@ public:
oDocument
.
m_oProperty
.
m_nAnsiCodePage
=
nKeepGlobalCodepage
;
oDocument
.
m_oProperty
.
m_nAnsiCodePage
=
nKeepGlobalCodepage
;
}
}
CString
RemoveLastUnchar
(
CString
str
)
{
int
i
=
1
;
while
(
true
)
{
if
(
i
>
str
.
GetLength
())
break
;
if
(
str
.
GetAt
(
str
.
GetLength
()
-
i
)
<=
0x20
)
str
.
Delete
(
str
.
GetLength
()
-
i
,
1
);
else
break
;
}
return
str
;
}
void
ExecuteText
(
RtfDocument
&
oDocument
,
RtfReader
&
oReader
,
CString
sText
)
void
ExecuteText
(
RtfDocument
&
oDocument
,
RtfReader
&
oReader
,
CString
sText
)
{
{
if
(
is_panose
==
m_eInternalState
)
if
(
is_panose
==
m_eInternalState
)
...
@@ -709,14 +724,20 @@ public:
...
@@ -709,14 +724,20 @@ public:
if
(
sText
.
Find
(
';'
)
!=
-
1
)
if
(
sText
.
Find
(
';'
)
!=
-
1
)
{
{
sText
.
Remove
(
';'
);
sText
.
Remove
(
';'
);
m_oFont
.
m_sName
+=
sText
;
if
(
sText
.
Find
(
'&'
)
!=
0
)
//todooo выясниснить что значит &;
//todooo при добавлении могут быть повторы - убрать нннадо - goldwingSetting.rtf
{
oDocument
.
m_oFontTable
.
DirectAddItem
(
m_oFont
);
//sText.Remove('&'); //
m_oFont
.
m_sName
+=
RemoveLastUnchar
(
sText
);
}
//todooo при добавлении могут быть повторы - убрать нннадо - goldwingSetting.rtf
oDocument
.
m_oFontTable
.
DirectAddItem
(
m_oFont
);
m_oFont
.
SetDefaultRtf
();
m_oFont
.
SetDefaultRtf
();
}
}
else
else
{
{
m_oFont
.
m_sName
+=
sText
;
m_oFont
.
m_sName
+=
sText
.
Trim
()
;
}
}
}
}
}
}
...
...
ASCOfficeRtfFile/RtfFormatLib/source/RtfBookmark.cpp
View file @
e81517ca
...
@@ -111,7 +111,11 @@ CString RtfFootnote::RenderToOOX(RenderParameter oRenderParameter)
...
@@ -111,7 +111,11 @@ CString RtfFootnote::RenderToOOX(RenderParameter oRenderParameter)
sResult
.
Append
(
_T
(
"<w:r>"
)
);
sResult
.
Append
(
_T
(
"<w:r>"
)
);
CString
srPr
=
m_oCharProp
.
RenderToOOX
(
oRenderParameter
);
CString
srPr
=
m_oCharProp
.
RenderToOOX
(
oRenderParameter
);
if
(
false
==
srPr
.
IsEmpty
()
)
if
(
false
==
srPr
.
IsEmpty
()
)
sResult
.
AppendFormat
(
_T
(
"<w:rPr>%ls</w:rPr>"
),
srPr
.
GetBuffer
()
);
{
sResult
.
Append
(
_T
(
"<w:rPr>"
)
);
sResult
+=
srPr
;
sResult
.
Append
(
_T
(
"/w:rPr>"
)
);
}
sResult
.
AppendFormat
(
_T
(
"<w:endnoteReference w:id=
\"
%d
\"
/>"
),
nID
);
sResult
.
AppendFormat
(
_T
(
"<w:endnoteReference w:id=
\"
%d
\"
/>"
),
nID
);
sResult
.
Append
(
_T
(
"</w:r>"
)
);
sResult
.
Append
(
_T
(
"</w:r>"
)
);
}
}
...
@@ -126,7 +130,11 @@ CString RtfFootnote::RenderToOOX(RenderParameter oRenderParameter)
...
@@ -126,7 +130,11 @@ CString RtfFootnote::RenderToOOX(RenderParameter oRenderParameter)
sResult
.
Append
(
_T
(
"<w:r>"
)
);
sResult
.
Append
(
_T
(
"<w:r>"
)
);
CString
srPr
=
m_oCharProp
.
RenderToOOX
(
oRenderParameter
);
CString
srPr
=
m_oCharProp
.
RenderToOOX
(
oRenderParameter
);
if
(
false
==
srPr
.
IsEmpty
()
)
if
(
false
==
srPr
.
IsEmpty
()
)
sResult
.
AppendFormat
(
_T
(
"<w:rPr>%ls</w:rPr>"
),
srPr
.
GetBuffer
()
);
{
sResult
.
Append
(
_T
(
"<w:rPr>"
)
);
sResult
+=
srPr
;
sResult
.
Append
(
_T
(
"/w:rPr>"
)
);
}
sResult
.
AppendFormat
(
_T
(
"<w:footnoteReference w:id=
\"
%d
\"
/>"
),
nID
);
sResult
.
AppendFormat
(
_T
(
"<w:footnoteReference w:id=
\"
%d
\"
/>"
),
nID
);
sResult
.
Append
(
_T
(
"</w:r>"
)
);
sResult
.
Append
(
_T
(
"</w:r>"
)
);
}
}
...
...
ASCOfficeRtfFile/RtfFormatLib/source/RtfGlobalTables.cpp
View file @
e81517ca
...
@@ -23,8 +23,10 @@ CString RtfFontTable::RenderToRtf(RenderParameter oRenderParameter)
...
@@ -23,8 +23,10 @@ CString RtfFontTable::RenderToRtf(RenderParameter oRenderParameter)
RenderParameter
oNewParameter
=
oRenderParameter
;
RenderParameter
oNewParameter
=
oRenderParameter
;
oNewParameter
.
nType
=
RENDER_TO_RTF_PARAM_FONT_TBL
;
oNewParameter
.
nType
=
RENDER_TO_RTF_PARAM_FONT_TBL
;
for
(
int
i
=
0
;
i
<
(
int
)
m_aArray
.
size
();
i
++
)
for
(
int
i
=
0
;
i
<
(
int
)
m_aArray
.
size
();
i
++
)
sResult
.
AppendFormat
(
_T
(
"%ls"
),
m_aArray
[
i
].
RenderToRtf
(
oNewParameter
).
GetBuffer
());
{
sResult
.
Append
(
_T
(
"}"
));
sResult
+=
m_aArray
[
i
].
RenderToRtf
(
oNewParameter
);
}
sResult
+=
_T
(
"}"
);
}
}
return
sResult
;
return
sResult
;
}
}
...
...
ASCOfficeRtfFile/RtfFormatLib/source/RtfGlobalTables.h
View file @
e81517ca
...
@@ -115,8 +115,7 @@ public:
...
@@ -115,8 +115,7 @@ public:
oNewParameter
.
nType
=
RENDER_TO_RTF_PARAM_COLOR_TBL
;
oNewParameter
.
nType
=
RENDER_TO_RTF_PARAM_COLOR_TBL
;
for
(
int
i
=
0
;
i
<
(
int
)
m_aArray
.
size
();
i
++
)
for
(
int
i
=
0
;
i
<
(
int
)
m_aArray
.
size
();
i
++
)
{
{
CString
str
=
m_aArray
[
i
].
RenderToRtf
(
oNewParameter
);
sResult
+=
m_aArray
[
i
].
RenderToRtf
(
oNewParameter
);
sResult
.
AppendFormat
(
_T
(
"%ls"
),
str
.
GetBuffer
());
}
}
sResult
.
Append
(
_T
(
"}"
));
sResult
.
Append
(
_T
(
"}"
));
}
}
...
@@ -352,9 +351,10 @@ public:
...
@@ -352,9 +351,10 @@ public:
}
}
for
(
int
i
=
0
;
i
<
(
int
)
m_aArray
.
size
();
i
++
)
for
(
int
i
=
0
;
i
<
(
int
)
m_aArray
.
size
();
i
++
)
{
{
CString
str
=
m_aArray
[
i
].
RenderToRtf
(
oRenderParameter
);
sResult
.
Append
(
_T
(
"{"
));
sResult
.
AppendFormat
(
_T
(
"{%ls}"
),
str
.
GetBuffer
()
);
sResult
.
Append
(
m_aArray
[
i
].
RenderToRtf
(
oRenderParameter
));
}
sResult
.
Append
(
_T
(
"}"
));
}
sResult
.
Append
(
_T
(
"}"
));
sResult
.
Append
(
_T
(
"}"
));
}
}
return
sResult
;
return
sResult
;
...
@@ -382,8 +382,9 @@ public:
...
@@ -382,8 +382,9 @@ public:
sResult
.
Append
(
_T
(
"{
\\
*
\\
listoverridetable"
));
sResult
.
Append
(
_T
(
"{
\\
*
\\
listoverridetable"
));
for
(
int
i
=
0
;
i
<
(
int
)
m_aArray
.
size
();
i
++
)
for
(
int
i
=
0
;
i
<
(
int
)
m_aArray
.
size
();
i
++
)
{
{
CString
str
=
m_aArray
[
i
].
RenderToRtf
(
oRenderParameter
);
sResult
.
Append
(
_T
(
"{"
));
sResult
.
AppendFormat
(
_T
(
"{%ls}"
),
str
.
GetBuffer
()
);
sResult
.
Append
(
m_aArray
[
i
].
RenderToRtf
(
oRenderParameter
));
sResult
.
Append
(
_T
(
"}"
));
}
}
sResult
.
Append
(
_T
(
"}"
));
sResult
.
Append
(
_T
(
"}"
));
}
}
...
...
ASCOfficeRtfFile/RtfFormatLib/source/RtfProperty.cpp
View file @
e81517ca
...
@@ -9,7 +9,8 @@
...
@@ -9,7 +9,8 @@
CString
RtfFont
::
RenderToRtf
(
RenderParameter
oRenderParameter
)
CString
RtfFont
::
RenderToRtf
(
RenderParameter
oRenderParameter
)
{
{
//ATLASSERT( IsValid() );
if
(
IsValid
()
==
false
)
return
L""
;
CString
sResult
;
CString
sResult
;
if
(
RENDER_TO_RTF_PARAM_FONT_TBL
==
oRenderParameter
.
nType
)
if
(
RENDER_TO_RTF_PARAM_FONT_TBL
==
oRenderParameter
.
nType
)
{
{
...
@@ -60,127 +61,163 @@ CString RtfFont::RenderToRtf(RenderParameter oRenderParameter)
...
@@ -60,127 +61,163 @@ CString RtfFont::RenderToRtf(RenderParameter oRenderParameter)
CString
RtfFont
::
RenderToOOX
(
RenderParameter
oRenderParameter
)
CString
RtfFont
::
RenderToOOX
(
RenderParameter
oRenderParameter
)
{
{
//ATLASSERT( IsValid() );
if
(
IsValid
()
==
false
)
return
L""
;
CString
sResult
;
CString
sResult
;
if
(
IsValid
()
)
{
RtfDocument
*
poRtfDocument
=
static_cast
<
RtfDocument
*>
(
oRenderParameter
.
poDocument
);
RtfDocument
*
poRtfDocument
=
static_cast
<
RtfDocument
*>
(
oRenderParameter
.
poDocument
);
CString
sFontName
=
m_sName
;
CString
sFontName
=
m_sName
;
if
((
sFontName
.
GetLength
()
>
0
)
&&
(
sFontName
[
0
]
==
0x00b9
&&
m_sAltName
.
GetLength
()
>
0
)
)
if
((
sFontName
.
GetLength
()
>
0
)
&&
(
sFontName
[
0
]
==
0x00b9
&&
m_sAltName
.
GetLength
()
>
0
)
)
{
sFontName
=
m_sAltName
;
}
if
(
sFontName
.
IsEmpty
()
)
{
if
(
PROP_DEF
!=
poRtfDocument
->
m_oProperty
.
m_nDeffFont
)
{
{
sFontName
=
m_sAltName
;
RtfFont
oDefFont
;
poRtfDocument
->
m_oFontTable
.
GetFont
(
poRtfDocument
->
m_oProperty
.
m_nDeffFont
,
oDefFont
);
sFontName
=
oDefFont
.
m_sName
;
}
}
if
(
_T
(
""
)
==
sFontName
)
if
(
sFontName
.
IsEmpty
())
sFontName
=
_T
(
"Arial"
);
}
if
(
RENDER_TO_OOX_PARAM_MINOR_FONT
==
oRenderParameter
.
nType
)
{
CString
sTag
;
switch
(
m_eFontTheme
)
{
{
if
(
PROP_DEF
!=
poRtfDocument
->
m_oProperty
.
m_nDeffFont
)
case
ft_flominor
:
{
case
ft_fhiminor
:
sTag
=
_T
(
"latin"
);
break
;
RtfFont
oDefFont
;
case
ft_fdbminor
:
sTag
=
_T
(
"ea"
);
break
;
poRtfDocument
->
m_oFontTable
.
GetFont
(
poRtfDocument
->
m_oProperty
.
m_nDeffFont
,
oDefFont
);
case
ft_fbiminor
:
sTag
=
_T
(
"cs"
);
break
;
sFontName
=
oDefFont
.
m_sName
;
}
if
(
_T
(
""
)
==
sFontName
)
sFontName
=
_T
(
"Arial"
);
}
}
if
(
RENDER_TO_OOX_PARAM_MINOR_FONT
==
oRenderParameter
.
nType
)
if
(
!
sTag
.
IsEmpty
()
)
{
{
CString
sTag
;
sResult
.
Append
(
_T
(
"<"
)
)
;
switch
(
m_eFontTheme
)
sResult
+=
sTag
;
{
sResult
.
Append
(
_T
(
" typeface=
\"
"
));
case
ft_flominor
:
sResult
+=
Utils
::
PrepareToXML
(
sFontName
);
case
ft_fhiminor
:
sTag
=
_T
(
"latin"
);
break
;
sResult
.
Append
(
_T
(
"
\"
/>"
));
case
ft_fdbminor
:
sTag
=
_T
(
"ea"
);
break
;
case
ft_fbiminor
:
sTag
=
_T
(
"cs"
);
break
;
}
if
(
_T
(
""
)
!=
sTag
)
sResult
.
AppendFormat
(
_T
(
"<%ls typeface=
\"
%ls
\"
/>"
),
sTag
.
GetBuffer
(),
Utils
::
PrepareToXML
(
sFontName
).
GetBuffer
()
);
}
}
else
if
(
RENDER_TO_OOX_PARAM_MAJOR_FONT
==
oRenderParameter
.
nType
)
}
else
if
(
RENDER_TO_OOX_PARAM_MAJOR_FONT
==
oRenderParameter
.
nType
)
{
CString
sTag
;
switch
(
m_eFontTheme
)
{
{
CString
sTag
;
case
ft_flomajor
:
switch
(
m_eFontTheme
)
case
ft_fhiminor
:
sTag
=
_T
(
"latin"
);
break
;
{
case
ft_fdbmajor
:
sTag
=
_T
(
"ea"
);
break
;
case
ft_flomajor
:
case
ft_fbimajor
:
sTag
=
_T
(
"cs"
);
break
;
case
ft_fhiminor
:
sTag
=
_T
(
"latin"
);
break
;
case
ft_fdbmajor
:
sTag
=
_T
(
"ea"
);
break
;
case
ft_fbimajor
:
sTag
=
_T
(
"cs"
);
break
;
}
if
(
_T
(
""
)
!=
sTag
)
sResult
.
AppendFormat
(
_T
(
"<%ls typeface=
\"
%ls
\"
/>"
),
sTag
.
GetBuffer
(),
Utils
::
PrepareToXML
(
sFontName
).
GetBuffer
());
}
}
else
if
(
RENDER_TO_OOX_PARAM_FONTTABLE
==
oRenderParameter
.
nType
)
if
(
_T
(
""
)
!=
sTag
)
sResult
.
AppendFormat
(
_T
(
"<%ls typeface=
\"
%ls
\"
/>"
),
sTag
.
GetBuffer
(),
Utils
::
PrepareToXML
(
sFontName
).
GetBuffer
());
}
else
if
(
RENDER_TO_OOX_PARAM_FONTTABLE
==
oRenderParameter
.
nType
)
{
sResult
.
Append
(
_T
(
"<w:font w:name=
\"
"
)
);
sResult
+=
Utils
::
PrepareToXML
(
sFontName
);
sResult
.
Append
(
_T
(
"
\"
>"
));
if
(
!
m_sAltName
.
IsEmpty
()
)
{
{
sResult
.
AppendFormat
(
_T
(
"<w:font w:name=
\"
%ls
\"
>"
),
Utils
::
PrepareToXML
(
sFontName
).
GetBuffer
()
);
sResult
.
Append
(
_T
(
"<w:altName w:val=
\"
"
));
if
(
_T
(
""
)
!=
m_sAltName
)
sResult
+=
Utils
::
PrepareToXML
(
m_sAltName
);
sResult
.
AppendFormat
(
_T
(
"<w:altName w:val=
\"
%ls
\"
/>"
),
Utils
::
PrepareToXML
(
m_sAltName
).
GetBuffer
());
sResult
.
Append
(
_T
(
"
\"
/>"
));
if
(
_T
(
""
)
!=
m_sPanose
)
}
sResult
.
AppendFormat
(
_T
(
"<w:panose1 w:val=
\"
%ls
\"
/>"
),
m_sPanose
.
GetBuffer
());
if
(
!
m_sPanose
.
IsEmpty
()
)
{
sResult
.
Append
(
_T
(
"<w:panose1 w:val=
\"
"
));
sResult
+=
m_sPanose
;
sResult
.
Append
(
_T
(
"
\"
/>"
));
}
CString
sFamily
=
_T
(
""
);
CString
sFamily
=
_T
(
""
);
switch
(
m_eFontFamily
)
switch
(
m_eFontFamily
)
{
{
case
ff_fnil
:
sFamily
=
_T
(
"auto"
);
break
;
case
ff_fnil
:
sFamily
=
_T
(
"auto"
);
break
;
case
ff_froman
:
sFamily
=
_T
(
"roman"
);
break
;
case
ff_froman
:
sFamily
=
_T
(
"roman"
);
break
;
case
ff_fswiss
:
sFamily
=
_T
(
"swiss"
);
break
;
case
ff_fswiss
:
sFamily
=
_T
(
"swiss"
);
break
;
case
ff_fmodern
:
sFamily
=
_T
(
"modern"
);
break
;
case
ff_fmodern
:
sFamily
=
_T
(
"modern"
);
break
;
case
ff_fscript
:
sFamily
=
_T
(
"script"
);
break
;
case
ff_fscript
:
sFamily
=
_T
(
"script"
);
break
;
case
ff_fdecor
:
sFamily
=
_T
(
"decorative"
);
break
;
case
ff_fdecor
:
sFamily
=
_T
(
"decorative"
);
break
;
case
ff_ftech
:
sFamily
=
_T
(
"auto"
);
break
;
case
ff_ftech
:
sFamily
=
_T
(
"auto"
);
break
;
case
ff_fbidi
:
sFamily
=
_T
(
"auto"
);
break
;
case
ff_fbidi
:
sFamily
=
_T
(
"auto"
);
break
;
}
}
if
(
_T
(
""
)
!=
sFamily
)
if
(
!
sFamily
.
IsEmpty
()
)
sResult
.
AppendFormat
(
_T
(
"<w:family w:val=
\"
%ls
\"
/>"
),
sFamily
.
GetBuffer
());
{
if
(
PROP_DEF
!=
m_nCharset
)
sResult
.
Append
(
_T
(
"<w:family w:val=
\"
"
));
sResult
.
AppendFormat
(
_T
(
"<w:charset w:val=
\"
%ls
\"
/>"
),
Convert
::
ToStringHex
(
m_nCharset
,
2
).
GetBuffer
());
sResult
+=
sFamily
;
sResult
.
Append
(
_T
(
"
\"
/>"
));
}
if
(
PROP_DEF
!=
m_nCharset
)
{
sResult
.
Append
(
_T
(
"<w:charset w:val=
\"
"
));
sResult
+=
Convert
::
ToStringHex
(
m_nCharset
,
2
);
sResult
.
Append
(
_T
(
"
\"
/>"
));
}
if
(
PROP_DEF
!=
m_nPitch
)
if
(
PROP_DEF
!=
m_nPitch
)
{
CString
sPitch
;
switch
(
m_nPitch
)
{
{
CString
sPitch
;
case
0
:
sPitch
=
_T
(
"default"
);
break
;
switch
(
m_nPitch
)
case
1
:
sPitch
=
_T
(
"fixed"
);
break
;
{
case
2
:
sPitch
=
_T
(
"variable"
);
break
;
case
0
:
sPitch
=
_T
(
"default"
);
break
;
case
1
:
sPitch
=
_T
(
"fixed"
);
break
;
case
2
:
sPitch
=
_T
(
"variable"
);
break
;
}
sResult
.
AppendFormat
(
_T
(
"<w:pitch w:val=
\"
%ls
\"
/>"
),
sPitch
.
GetBuffer
());
}
}
sResult
.
Append
(
_T
(
"<w:pitch w:val=
\"
"
)
);
//важно
sResult
+=
sPitch
;
sResult
.
Append
Format
(
_T
(
"</w:font
>"
));
sResult
.
Append
(
_T
(
"
\"
/
>"
));
}
}
else
//важно
sResult
.
AppendFormat
(
_T
(
"</w:font>"
));
}
else
{
RtfFont
oCurFont
;
if
(
true
==
poRtfDocument
->
m_oFontTable
.
GetFont
(
m_nID
,
oCurFont
)
)
{
{
RtfFont
oCurFo
nt
;
CString
sHi
nt
;
if
(
true
==
poRtfDocument
->
m_oFontTable
.
GetFont
(
m_nID
,
oCurFont
)
)
switch
(
m_nCharset
)
{
{
CString
sHint
;
case
128
:
//Japanese
switch
(
m_nCharset
)
case
129
:
//Korean
case
130
:
//Korean
case
134
:
//China
case
136
:
//China
case
163
:
//Vietnamese
case
222
:
//Thai
{
{
case
128
:
//Japanese
sHint
=
_T
(
" w:hint=
\"
eastAsia
\"
/>"
);
case
129
:
//Korean
}
break
;
case
130
:
//Korean
case
177
:
//Hebrew
case
134
:
//China
case
178
:
//Arabic
case
136
:
//China
case
179
:
//Arabic
case
163
:
//Vietnamese
case
180
:
//Arabic
case
222
:
//Thai
case
181
:
//Hebrew
{
{
sHint
=
_T
(
" w:hint=
\"
eastAsia
\"
/>"
);
sHint
=
_T
(
" w:hint=
\"
cs
\"
/>"
);
}
break
;
}
break
;
case
177
:
//Hebrew
//?? нужно ли описывать default??? todooo
case
178
:
//Arabic
case
179
:
//Arabic
case
180
:
//Arabic
case
181
:
//Hebrew
{
sHint
=
_T
(
" w:hint=
\"
cs
\"
/>"
);
}
break
;
//?? нужно ли описывать default??? todooo
}
sResult
.
AppendFormat
(
_T
(
"<w:rFonts w:ascii=
\"
%ls
\"
w:eastAsia=
\"
%ls
\"
w:hAnsi=
\"
%ls
\"
w:cs=
\"
%ls
\"
%ls/>"
),
sFontName
.
GetBuffer
(),
sFontName
.
GetBuffer
(),
sFontName
.
GetBuffer
(),
sFontName
.
GetBuffer
(),
sHint
.
GetBuffer
());
}
}
sResult
.
Append
(
_T
(
"<w:rFonts w:ascii=
\"
"
)
);
sResult
+=
sFontName
;
sResult
.
Append
(
_T
(
"
\"
w:eastAsia=
\"
"
)
);
sResult
+=
sFontName
;
sResult
.
Append
(
_T
(
"
\"
w:hAnsi=
\"
"
)
);
sResult
+=
sFontName
;
sResult
.
Append
(
_T
(
"
\"
w:cs=
\"
"
)
);
sResult
+=
sFontName
;
sResult
.
Append
(
_T
(
"
\"
"
)
);
sResult
+=
sHint
;
sResult
.
Append
(
_T
(
"/>"
)
);
}
}
}
}
return
sResult
;
return
sResult
;
}
}
...
@@ -1928,21 +1965,29 @@ CString RtfParagraphProperty::RenderToOOX(RenderParameter oRenderParameter)
...
@@ -1928,21 +1965,29 @@ CString RtfParagraphProperty::RenderToOOX(RenderParameter oRenderParameter)
if
(
true
==
m_oBorderBox
.
IsValid
()
)
if
(
true
==
m_oBorderBox
.
IsValid
()
)
{
{
CString
sBorderContent
=
m_oBorderBox
.
RenderToOOX
(
oNewParam
);
CString
sBorderContent
=
m_oBorderBox
.
RenderToOOX
(
oNewParam
);
sBorder
.
Append
Format
(
_T
(
"<w:left %ls />"
),
sBorderContent
.
GetBuffer
()
);
sBorder
.
Append
(
_T
(
"<w:left "
));
sBorder
+=
sBorderContent
;
sBorder
.
Append
(
_T
(
" />"
)
);
sBorder
.
Append
Format
(
_T
(
"<w:top %ls />"
),
sBorderContent
.
GetBuffer
()
);
sBorder
.
Append
(
_T
(
"<w:top "
));
sBorder
+=
sBorderContent
;
sBorder
.
Append
(
_T
(
" />"
)
);
sBorder
.
Append
Format
(
_T
(
"<w:right %ls />"
),
sBorderContent
.
GetBuffer
()
);
sBorder
.
Append
(
_T
(
"<w:right "
));
sBorder
+=
sBorderContent
;
sBorder
.
Append
(
_T
(
" />"
)
);
sBorder
.
Append
Format
(
_T
(
"<w:bottom %ls />"
),
sBorderContent
.
GetBuffer
()
);
sBorder
.
Append
(
_T
(
"<w:bottom "
));
sBorder
+=
sBorderContent
;
sBorder
.
Append
(
_T
(
" />"
)
);
}
}
else
else
{
{
if
(
true
==
m_oBorderTop
.
IsValid
()
)
if
(
true
==
m_oBorderTop
.
IsValid
()
)
sBorder
.
AppendFormat
(
_T
(
"<w:top %ls />"
),
m_oBorderTop
.
RenderToOOX
(
oNewParam
).
GetBuffer
()
);
{
sBorder
.
Append
(
_T
(
"<w:top "
));
sBorder
+=
m_oBorderTop
.
RenderToOOX
(
oNewParam
);
sBorder
.
Append
(
_T
(
" />"
));
}
if
(
true
==
m_oBorderLeft
.
IsValid
()
)
if
(
true
==
m_oBorderLeft
.
IsValid
()
)
sBorder
.
AppendFormat
(
_T
(
"<w:left %ls />"
),
m_oBorderLeft
.
RenderToOOX
(
oNewParam
).
GetBuffer
()
);
{
sBorder
.
Append
(
_T
(
"<w:left "
));
sBorder
+=
m_oBorderLeft
.
RenderToOOX
(
oNewParam
);
sBorder
.
Append
(
_T
(
" />"
));
}
if
(
true
==
m_oBorderBottom
.
IsValid
()
)
if
(
true
==
m_oBorderBottom
.
IsValid
()
)
sBorder
.
AppendFormat
(
_T
(
"<w:bottom %ls />"
),
m_oBorderBottom
.
RenderToOOX
(
oNewParam
).
GetBuffer
()
);
{
sBorder
.
Append
(
_T
(
"<w:bottom "
));
sBorder
+=
m_oBorderBottom
.
RenderToOOX
(
oNewParam
);
sBorder
.
Append
(
_T
(
" />"
));
}
if
(
true
==
m_oBorderRight
.
IsValid
()
)
if
(
true
==
m_oBorderRight
.
IsValid
()
)
sBorder
.
AppendFormat
(
_T
(
"<w:right %ls />"
),
m_oBorderRight
.
RenderToOOX
(
oNewParam
).
GetBuffer
()
);
{
sBorder
.
Append
(
_T
(
"<w:right "
));
sBorder
+=
m_oBorderRight
.
RenderToOOX
(
oNewParam
);
sBorder
.
Append
(
_T
(
" />"
));
}
}
}
if
(
true
==
m_oBorderBar
.
IsValid
()
)
if
(
true
==
m_oBorderBar
.
IsValid
()
)
...
@@ -2650,47 +2695,47 @@ CString RtfInformation::RenderToRtf(RenderParameter oRenderParameter)
...
@@ -2650,47 +2695,47 @@ CString RtfInformation::RenderToRtf(RenderParameter oRenderParameter)
CString
sResult
;
CString
sResult
;
if
(
_T
(
""
)
!=
m_sTitle
)
if
(
_T
(
""
)
!=
m_sTitle
)
sResult
.
Append
Format
(
_T
(
"{
\\
title %ls}"
),
RtfChar
::
renderRtfText
(
m_sTitle
,
oRenderParameter
.
poDocument
).
GetBuffer
()
);
sResult
.
Append
(
_T
(
"{
\\
title "
));
sResult
+=
RtfChar
::
renderRtfText
(
m_sTitle
,
oRenderParameter
.
poDocument
);
sResult
.
Append
(
_T
(
"}"
)
);
if
(
_T
(
""
)
!=
m_sSubject
)
if
(
_T
(
""
)
!=
m_sSubject
)
sResult
.
Append
Format
(
_T
(
"{
\\
subject %ls}"
),
RtfChar
::
renderRtfText
(
m_sSubject
,
oRenderParameter
.
poDocument
).
GetBuffer
()
);
sResult
.
Append
(
_T
(
"{
\\
subject "
));
sResult
+=
RtfChar
::
renderRtfText
(
m_sSubject
,
oRenderParameter
.
poDocument
);
sResult
.
Append
(
_T
(
"}"
)
);
if
(
_T
(
""
)
!=
m_sAuthor
)
if
(
_T
(
""
)
!=
m_sAuthor
)
sResult
.
Append
Format
(
_T
(
"{
\\
author %ls}"
),
RtfChar
::
renderRtfText
(
m_sAuthor
,
oRenderParameter
.
poDocument
).
GetBuffer
()
);
sResult
.
Append
(
_T
(
"{
\\
author "
));
sResult
+=
RtfChar
::
renderRtfText
(
m_sAuthor
,
oRenderParameter
.
poDocument
);
sResult
.
Append
(
_T
(
"}"
)
);
if
(
_T
(
""
)
!=
m_sManager
)
if
(
_T
(
""
)
!=
m_sManager
)
sResult
.
Append
Format
(
_T
(
"{
\\
manager %ls}"
),
RtfChar
::
renderRtfText
(
m_sManager
,
oRenderParameter
.
poDocument
).
GetBuffer
()
);
sResult
.
Append
(
_T
(
"{
\\
manager "
));
sResult
+=
RtfChar
::
renderRtfText
(
m_sManager
,
oRenderParameter
.
poDocument
);
sResult
.
Append
(
_T
(
"}"
)
);
if
(
_T
(
""
)
!=
m_sCompany
)
if
(
_T
(
""
)
!=
m_sCompany
)
sResult
.
Append
Format
(
_T
(
"{
\\
company %ls}"
),
RtfChar
::
renderRtfText
(
m_sCompany
,
oRenderParameter
.
poDocument
).
GetBuffer
()
);
sResult
.
Append
(
_T
(
"{
\\
company "
));
sResult
+=
RtfChar
::
renderRtfText
(
m_sCompany
,
oRenderParameter
.
poDocument
);
sResult
.
Append
(
_T
(
"}"
)
);
if
(
_T
(
""
)
!=
m_sOperator
)
if
(
_T
(
""
)
!=
m_sOperator
)
sResult
.
Append
Format
(
_T
(
"{
\\
operator %ls}"
),
RtfChar
::
renderRtfText
(
m_sOperator
,
oRenderParameter
.
poDocument
).
GetBuffer
()
);
sResult
.
Append
(
_T
(
"{
\\
operator "
));
sResult
+=
RtfChar
::
renderRtfText
(
m_sOperator
,
oRenderParameter
.
poDocument
);
sResult
.
Append
(
_T
(
"}"
)
);
if
(
_T
(
""
)
!=
m_sCategory
)
if
(
_T
(
""
)
!=
m_sCategory
)
sResult
.
Append
Format
(
_T
(
"{
\\
category %ls}"
),
RtfChar
::
renderRtfText
(
m_sCategory
,
oRenderParameter
.
poDocument
).
GetBuffer
()
);
sResult
.
Append
(
_T
(
"{
\\
category "
));
sResult
+=
RtfChar
::
renderRtfText
(
m_sCategory
,
oRenderParameter
.
poDocument
);
sResult
.
Append
(
_T
(
"}"
)
);
if
(
_T
(
""
)
!=
m_sKeywords
)
if
(
_T
(
""
)
!=
m_sKeywords
)
sResult
.
Append
Format
(
_T
(
"{
\\
keywords %ls}"
),
RtfChar
::
renderRtfText
(
m_sKeywords
,
oRenderParameter
.
poDocument
).
GetBuffer
()
);
sResult
.
Append
(
_T
(
"{
\\
keywords "
));
sResult
+=
RtfChar
::
renderRtfText
(
m_sKeywords
,
oRenderParameter
.
poDocument
);
sResult
.
Append
(
_T
(
"}"
)
);
if
(
_T
(
""
)
!=
m_sComment
)
if
(
_T
(
""
)
!=
m_sComment
)
sResult
.
Append
Format
(
_T
(
"{
\\
comment %ls}"
),
RtfChar
::
renderRtfText
(
m_sComment
,
oRenderParameter
.
poDocument
).
GetBuffer
()
);
sResult
.
Append
(
_T
(
"{
\\
comment "
));
sResult
+=
RtfChar
::
renderRtfText
(
m_sComment
,
oRenderParameter
.
poDocument
);
sResult
.
Append
(
_T
(
"}"
)
);
if
(
PROP_DEF
!=
m_nVersion
)
if
(
PROP_DEF
!=
m_nVersion
)
sResult
.
AppendFormat
(
_T
(
"{
\\
version%d}"
),
m_nVersion
);
sResult
.
AppendFormat
(
_T
(
"{
\\
version%d}"
),
m_nVersion
);
if
(
_T
(
""
)
!=
m_sDocCom
)
if
(
_T
(
""
)
!=
m_sDocCom
)
sResult
.
Append
Format
(
_T
(
"{
\\
doccomm %ls}"
),
RtfChar
::
renderRtfText
(
m_sDocCom
,
oRenderParameter
.
poDocument
).
GetBuffer
()
);
sResult
.
Append
(
_T
(
"{
\\
doccomm "
));
sResult
+=
RtfChar
::
renderRtfText
(
m_sDocCom
,
oRenderParameter
.
poDocument
);
sResult
.
Append
(
_T
(
"}"
)
);
if
(
PROP_DEF
!=
m_nInternalVersion
)
if
(
PROP_DEF
!=
m_nInternalVersion
)
sResult
.
AppendFormat
(
_T
(
"{
\\
vern%d}"
),
m_nInternalVersion
);
sResult
.
AppendFormat
(
_T
(
"{
\\
vern%d}"
),
m_nInternalVersion
);
if
(
_T
(
""
)
!=
m_sLinkBase
)
if
(
_T
(
""
)
!=
m_sLinkBase
)
sResult
.
Append
Format
(
_T
(
"{
\\
hlinkbase %ls}"
),
RtfChar
::
renderRtfText
(
m_sLinkBase
,
oRenderParameter
.
poDocument
).
GetBuffer
()
);
sResult
.
Append
(
_T
(
"{
\\
hlinkbase "
));
sResult
+=
RtfChar
::
renderRtfText
(
m_sLinkBase
,
oRenderParameter
.
poDocument
);
sResult
.
Append
(
_T
(
"}"
)
);
CString
sCreateTime
=
m_oCreateTime
.
RenderToRtf
(
oRenderParameter
);
CString
sCreateTime
=
m_oCreateTime
.
RenderToRtf
(
oRenderParameter
);
if
(
_T
(
""
)
!=
sCreateTime
)
if
(
_T
(
""
)
!=
sCreateTime
)
sResult
.
Append
Format
(
_T
(
"{
\\
creatim%ls}"
),
sCreateTime
.
GetBuffer
()
);
sResult
.
Append
(
_T
(
"{
\\
creatim"
));
sResult
+=
sCreateTime
;
sResult
.
Append
(
_T
(
"}"
)
);
CString
sRevTime
=
m_oRevTime
.
RenderToRtf
(
oRenderParameter
);
CString
sRevTime
=
m_oRevTime
.
RenderToRtf
(
oRenderParameter
);
if
(
_T
(
""
)
!=
sRevTime
)
if
(
_T
(
""
)
!=
sRevTime
)
sResult
.
AppendFormat
(
_T
(
"{
\\
revtim%ls}"
),
sRevTime
.
GetBuffer
()
);
sResult
.
Append
(
_T
(
"{
\\
revtim"
));
sResult
+=
sRevTime
;
sResult
.
Append
(
_T
(
"}"
)
);
CString
sPrintTime
=
m_oPrintTime
.
RenderToRtf
(
oRenderParameter
);
CString
sPrintTime
=
m_oPrintTime
.
RenderToRtf
(
oRenderParameter
);
if
(
_T
(
""
)
!=
sPrintTime
)
if
(
_T
(
""
)
!=
sPrintTime
)
sResult
.
Append
Format
(
_T
(
"{
\\
printim%ls}"
),
sPrintTime
.
GetBuffer
()
);
sResult
.
Append
(
_T
(
"{
\\
printim"
));
sResult
+=
sPrintTime
;
sResult
.
Append
(
_T
(
"}"
)
);
CString
sBackupTime
=
m_oBackupTime
.
RenderToRtf
(
oRenderParameter
);
CString
sBackupTime
=
m_oBackupTime
.
RenderToRtf
(
oRenderParameter
);
if
(
_T
(
""
)
!=
sBackupTime
)
if
(
_T
(
""
)
!=
sBackupTime
)
sResult
.
Append
Format
(
_T
(
"{
\\
buptim%ls}"
),
sBackupTime
.
GetBuffer
()
);
sResult
.
Append
(
_T
(
"{
\\
buptim"
));
sResult
+=
sBackupTime
;
sResult
.
Append
(
_T
(
"}"
)
);
if
(
PROP_DEF
!=
m_nEndingTime
)
if
(
PROP_DEF
!=
m_nEndingTime
)
sResult
.
AppendFormat
(
_T
(
"{
\\
edmins%d}"
),
m_nEndingTime
);
sResult
.
AppendFormat
(
_T
(
"{
\\
edmins%d}"
),
m_nEndingTime
);
if
(
PROP_DEF
!=
m_nNumberOfPages
)
if
(
PROP_DEF
!=
m_nNumberOfPages
)
...
@@ -2822,54 +2867,58 @@ return sResult;
...
@@ -2822,54 +2867,58 @@ return sResult;
}
}
CString
RtfMathProperty
::
RenderToOOX
(
RenderParameter
oRenderParameter
)
CString
RtfMathProperty
::
RenderToOOX
(
RenderParameter
oRenderParameter
)
{
{
CString
sProperty
;
CString
sProperty
;
if
(
PROP_DEF
!=
mmathFont
)
if
(
PROP_DEF
!=
mmathFont
)
{
{
RtfDocument
*
poDoc
=
static_cast
<
RtfDocument
*>
(
oRenderParameter
.
poDocument
);
RtfDocument
*
poDoc
=
static_cast
<
RtfDocument
*>
(
oRenderParameter
.
poDocument
);
RtfFont
oFont
;
RtfFont
oFont
;
if
(
true
==
poDoc
->
m_oFontTable
.
GetFont
(
mmathFont
,
oFont
)
)
if
(
true
==
poDoc
->
m_oFontTable
.
GetFont
(
mmathFont
,
oFont
)
)
sProperty
.
AppendFormat
(
_T
(
"<m:mathFont m:val=
\"
%ls
\"
/>"
),
oFont
.
m_sName
.
GetBuffer
());
sProperty
.
AppendFormat
(
_T
(
"<m:mathFont m:val=
\"
%ls
\"
/>"
),
oFont
.
m_sName
.
GetBuffer
());
}
}
switch
(
mbrkBin
)
switch
(
mbrkBin
)
{
{
case
0
:
sProperty
.
Append
(
_T
(
"<m:brkBin m:val=
\"
before
\"
/>"
));
break
;
case
0
:
sProperty
.
Append
(
_T
(
"<m:brkBin m:val=
\"
before
\"
/>"
));
break
;
case
1
:
sProperty
.
Append
(
_T
(
"<m:brkBin m:val=
\"
after
\"
/>"
));
break
;
case
1
:
sProperty
.
Append
(
_T
(
"<m:brkBin m:val=
\"
after
\"
/>"
));
break
;
case
2
:
sProperty
.
Append
(
_T
(
"<m:brkBin m:val=
\"
repeat
\"
/>"
));
break
;
case
2
:
sProperty
.
Append
(
_T
(
"<m:brkBin m:val=
\"
repeat
\"
/>"
));
break
;
}
}
switch
(
mbrkBinSub
)
switch
(
mbrkBinSub
)
{
{
case
0
:
sProperty
.
Append
(
_T
(
"<m:brkBinSub m:val=
\"
--
\"
/>"
));
break
;
case
0
:
sProperty
.
Append
(
_T
(
"<m:brkBinSub m:val=
\"
--
\"
/>"
));
break
;
case
1
:
sProperty
.
Append
(
_T
(
"<m:brkBinSub m:val=
\"
+-
\"
/>"
));
break
;
case
1
:
sProperty
.
Append
(
_T
(
"<m:brkBinSub m:val=
\"
+-
\"
/>"
));
break
;
case
2
:
sProperty
.
Append
(
_T
(
"<m:brkBinSub m:val=
\"
-+
\"
/>"
));
break
;
case
2
:
sProperty
.
Append
(
_T
(
"<m:brkBinSub m:val=
\"
-+
\"
/>"
));
break
;
}
}
switch
(
mdefJc
)
switch
(
mdefJc
)
{
{
case
1
:
sProperty
.
Append
(
_T
(
"<m:defJc m:val=
\"
centerGroup
\"
/>"
));
break
;
case
1
:
sProperty
.
Append
(
_T
(
"<m:defJc m:val=
\"
centerGroup
\"
/>"
));
break
;
case
2
:
sProperty
.
Append
(
_T
(
"<m:defJc m:val=
\"
center
\"
/>"
));
break
;
case
2
:
sProperty
.
Append
(
_T
(
"<m:defJc m:val=
\"
center
\"
/>"
));
break
;
case
3
:
sProperty
.
Append
(
_T
(
"<m:defJc m:val=
\"
left
\"
/>"
));
break
;
case
3
:
sProperty
.
Append
(
_T
(
"<m:defJc m:val=
\"
left
\"
/>"
));
break
;
case
4
:
sProperty
.
Append
(
_T
(
"<m:defJc m:val=
\"
right
\"
/>"
));
break
;
case
4
:
sProperty
.
Append
(
_T
(
"<m:defJc m:val=
\"
right
\"
/>"
));
break
;
}
}
RENDER_OOX_INT
(
mdispDef
,
sProperty
,
_T
(
"m:dispDef"
)
)
RENDER_OOX_INT
(
mdispDef
,
sProperty
,
_T
(
"m:dispDef"
)
)
RENDER_OOX_INT
(
minterSp
,
sProperty
,
_T
(
"m:interSp"
)
)
RENDER_OOX_INT
(
minterSp
,
sProperty
,
_T
(
"m:interSp"
)
)
RENDER_OOX_INT
(
mintraSp
,
sProperty
,
_T
(
"m:intraSp"
)
)
RENDER_OOX_INT
(
mintraSp
,
sProperty
,
_T
(
"m:intraSp"
)
)
RENDER_OOX_INT
(
mlMargin
,
sProperty
,
_T
(
"m:lMargin"
)
)
RENDER_OOX_INT
(
mlMargin
,
sProperty
,
_T
(
"m:lMargin"
)
)
RENDER_OOX_INT
(
mrMargin
,
sProperty
,
_T
(
"m:rMargin"
)
)
RENDER_OOX_INT
(
mrMargin
,
sProperty
,
_T
(
"m:rMargin"
)
)
switch
(
mnaryLim
)
switch
(
mnaryLim
)
{
{
case
0
:
sProperty
.
Append
(
_T
(
"<m:naryLim m:val=
\"
subSup
\"
/>"
));
break
;
case
0
:
sProperty
.
Append
(
_T
(
"<m:naryLim m:val=
\"
subSup
\"
/>"
));
break
;
case
1
:
sProperty
.
Append
(
_T
(
"<m:naryLim m:val=
\"
undOvr
\"
/>"
));
break
;
case
1
:
sProperty
.
Append
(
_T
(
"<m:naryLim m:val=
\"
undOvr
\"
/>"
));
break
;
}
}
RENDER_OOX_INT
(
mpostSp
,
sProperty
,
_T
(
"m:postSp"
)
)
RENDER_OOX_INT
(
mpostSp
,
sProperty
,
_T
(
"m:postSp"
)
)
RENDER_OOX_INT
(
mpreSp
,
sProperty
,
_T
(
"m:preSp"
)
)
RENDER_OOX_INT
(
mpreSp
,
sProperty
,
_T
(
"m:preSp"
)
)
RENDER_OOX_INT
(
msmallFrac
,
sProperty
,
_T
(
"m:smallFrac"
)
)
RENDER_OOX_INT
(
msmallFrac
,
sProperty
,
_T
(
"m:smallFrac"
)
)
RENDER_OOX_INT
(
mwrapIndent
,
sProperty
,
_T
(
"m:wrapIndent"
)
)
RENDER_OOX_INT
(
mwrapIndent
,
sProperty
,
_T
(
"m:wrapIndent"
)
)
RENDER_OOX_INT
(
mwrapRight
,
sProperty
,
_T
(
"m:wrapRight"
)
)
RENDER_OOX_INT
(
mwrapRight
,
sProperty
,
_T
(
"m:wrapRight"
)
)
CString
sResult
;
if
(
false
==
sProperty
.
IsEmpty
()
)
CString
sResult
;
sResult
.
AppendFormat
(
_T
(
"<m:mathPr>%ls</m:mathPr>"
),
sProperty
.
GetBuffer
()
);
if
(
false
==
sProperty
.
IsEmpty
()
)
return
sResult
;
{
sResult
.
Append
(
_T
(
"<m:mathPr>"
)
);
sResult
+=
sProperty
;
sResult
.
Append
(
_T
(
"</m:mathPr>"
)
);
}
return
sResult
;
}
}
CString
RtfMathSpecProp
::
RenderToRtf
(
RenderParameter
oRenderParameter
)
CString
RtfMathSpecProp
::
RenderToRtf
(
RenderParameter
oRenderParameter
)
{
{
...
...
ASCOfficeRtfFile/RtfFormatLib/source/RtfProperty.h
View file @
e81517ca
...
@@ -28,35 +28,66 @@
...
@@ -28,35 +28,66 @@
#define RENDER_OOX_BOOL( prop, sResult, sName)\
#define RENDER_OOX_BOOL( prop, sResult, sName)\
if
(
0
==
prop
)
\
if
(
0
==
prop
)
\
sResult
.
AppendFormat
(
_T
(
"<%ls w:val=
\"
false
\"
/>"
),
sName
);
\
{
\
sResult
.
Append
(
_T
(
"<"
)
);
\
sResult
.
Append
(
sName
);
\
sResult
.
AppendFormat
(
_T
(
" w:val=
\"
false
\"
/>"
));
\
}
\
else
if
(
PROP_DEF
!=
prop
)
\
else
if
(
PROP_DEF
!=
prop
)
\
sResult
.
AppendFormat
(
_T
(
"<%ls w:val=
\"
true
\"
/>"
),
sName
);
{
\
sResult
.
Append
(
_T
(
"<"
)
);
\
#define RENDER_OOX_BOOL_ATTRIBUTE( prop, sResult, sName)\
sResult
.
Append
(
sName
);
\
if
(
0
==
prop
)
\
sResult
.
AppendFormat
(
_T
(
" w:val=
\"
true
\"
/>"
));
\
sResult
.
AppendFormat
(
_T
(
" %ls=
\"
0
\"
"
),
sName
);
\
}
else
if
(
PROP_DEF
!=
prop
)
\
sResult
.
AppendFormat
(
_T
(
" %ls=
\"
1
\"
"
),
sName
);
#define RENDER_OOX_INT( prop, sResult, sName)\
#define RENDER_OOX_INT( prop, sResult, sName)\
if
(
PROP_DEF
!=
prop
)
\
if
(
PROP_DEF
!=
prop
)
\
sResult
.
AppendFormat
(
_T
(
"<%ls w:val=
\"
%d
\"
/>"
),
sName
,
prop
);
{
\
sResult
.
Append
(
_T
(
"<"
)
);
\
sResult
.
Append
(
sName
);
\
sResult
.
AppendFormat
(
_T
(
" w:val=
\"
%d
\"
/>"
),
prop
);
\
}
#define RENDER_OOX_INT_ATTRIBUTE( prop, sResult, sName)\
#define RENDER_OOX_INT_ATTRIBUTE( prop, sResult, sName)\
if
(
PROP_DEF
!=
prop
)
\
if
(
PROP_DEF
!=
prop
)
\
sResult
.
AppendFormat
(
_T
(
" %ls=
\"
%d
\"
"
),
sName
,
prop
);
{
\
sResult
.
Append
(
_T
(
" "
)
);
\
sResult
.
Append
(
sName
);
\
sResult
.
AppendFormat
(
_T
(
"=
\"
%d
\"
"
),
prop
);
\
}
#define RENDER_OOX_BOOL_ATTRIBUTE( prop, sResult, sName)\
if
(
0
==
prop
)
\
{
\
sResult
.
Append
(
_T
(
" "
)
);
\
sResult
.
Append
(
sName
);
\
sResult
.
AppendFormat
(
_T
(
"=
\"
0
\"
"
));
\
}
\
else
if
(
PROP_DEF
!=
prop
)
\
{
\
sResult
.
Append
(
_T
(
" "
)
);
\
sResult
.
Append
(
sName
);
\
sResult
.
AppendFormat
(
_T
(
"=
\"
1
\"
"
));
\
}
#define RENDER_RTF_BOOL( prop, sResult, sName)\
#define RENDER_RTF_BOOL( prop, sResult, sName)\
if
(
0
==
prop
)
\
if
(
0
==
prop
)
\
sResult
.
AppendFormat
(
_T
(
"
\\
%ls0"
),
sName
);
\
{
\
sResult
.
Append
(
_T
(
"
\\
"
)
);
\
sResult
.
Append
(
sName
);
\
sResult
.
Append
(
_T
(
"0"
)
);
\
}
\
else
if
(
PROP_DEF
!=
prop
)
\
else
if
(
PROP_DEF
!=
prop
)
\
sResult
.
AppendFormat
(
_T
(
"
\\
%ls"
),
sName
);
{
\
sResult
.
Append
(
_T
(
"
\\
"
)
);
\
sResult
.
Append
(
sName
);
\
}
#define RENDER_RTF_INT( prop, sResult, sName)\
#define RENDER_RTF_INT( prop, sResult, sName)\
if
(
PROP_DEF
!=
prop
)
\
if
(
PROP_DEF
!=
prop
)
\
sResult
.
AppendFormat
(
_T
(
"
\\
%ls%d"
),
sName
,
prop
);
{
\
sResult
.
Append
(
_T
(
"
\\
"
)
);
\
sResult
.
Append
(
sName
);
\
sResult
.
AppendFormat
(
_T
(
"%d"
),
prop
);
\
}
class
RtfFont
:
public
IRenderableProperty
class
RtfFont
:
public
IRenderableProperty
...
...
ASCOfficeRtfFile/RtfFormatLib/source/RtfSection.cpp
View file @
e81517ca
...
@@ -746,57 +746,57 @@ CString RtfSectionProperty::RenderToOOX(RenderParameter oRenderParameter)
...
@@ -746,57 +746,57 @@ CString RtfSectionProperty::RenderToOOX(RenderParameter oRenderParameter)
return
sResult
;
return
sResult
;
}
}
CString
RtfSectionProperty
::
SaveFile
(
TextItemContainerPtr
oTarget
,
RenderParameter
oRenderParameter
,
bool
bHeader
)
CString
RtfSectionProperty
::
SaveFile
(
TextItemContainerPtr
oTarget
,
RenderParameter
oRenderParameter
,
bool
bHeader
)
{
{
OOXWriter
*
poOOXWriter
=
static_cast
<
OOXWriter
*>
(
oRenderParameter
.
poWriter
);
OOXWriter
*
poOOXWriter
=
static_cast
<
OOXWriter
*>
(
oRenderParameter
.
poWriter
);
RtfDocument
*
poRtfDocument
=
static_cast
<
RtfDocument
*>
(
oRenderParameter
.
poDocument
);
RtfDocument
*
poRtfDocument
=
static_cast
<
RtfDocument
*>
(
oRenderParameter
.
poDocument
);
CString
sFilename
;
CString
sFilename
;
if
(
true
==
bHeader
)
if
(
true
==
bHeader
)
sFilename
.
AppendFormat
(
_T
(
"header%d.xml"
),
poRtfDocument
->
m_oIdGenerator
.
Generate_HeaderNumber
()
);
sFilename
.
AppendFormat
(
_T
(
"header%d.xml"
),
poRtfDocument
->
m_oIdGenerator
.
Generate_HeaderNumber
()
);
else
else
sFilename
.
AppendFormat
(
_T
(
"footer%d.xml"
),
poRtfDocument
->
m_oIdGenerator
.
Generate_FooterNumber
()
);
sFilename
.
AppendFormat
(
_T
(
"footer%d.xml"
),
poRtfDocument
->
m_oIdGenerator
.
Generate_FooterNumber
()
);
CString
sContent
;
CString
sContent
;
CString
sRootName
;
CString
sRootName
;
if
(
true
==
bHeader
)
if
(
true
==
bHeader
)
sRootName
=
_T
(
"w:hdr"
);
sRootName
=
_T
(
"w:hdr"
);
else
else
sRootName
=
_T
(
"w:ftr"
);
sRootName
=
_T
(
"w:ftr"
);
sContent
.
AppendFormat
(
_T
(
"<?xml version=
\"
1.0
\"
encoding=
\"
UTF-8
\"
standalone=
\"
yes
\"
?>
\n
"
)
);
sContent
.
AppendFormat
(
_T
(
"<?xml version=
\"
1.0
\"
encoding=
\"
UTF-8
\"
standalone=
\"
yes
\"
?>
\n
"
)
);
sContent
.
AppendFormat
(
_T
(
"<%ls xmlns:ve=
\"
http://schemas.openxmlformats.org/markup-compatibility/2006
\"
xmlns:o=
\"
urn:schemas-microsoft-com:office:office
\"
xmlns:r=
\"
http://schemas.openxmlformats.org/officeDocument/2006/relationships
\"
xmlns:m=
\"
http://schemas.openxmlformats.org/officeDocument/2006/math
\"
xmlns:v=
\"
urn:schemas-microsoft-com:vml
\"
xmlns:wp=
\"
http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing
\"
xmlns:w10=
\"
urn:schemas-microsoft-com:office:word
\"
xmlns:w=
\"
http://schemas.openxmlformats.org/wordprocessingml/2006/main
\"
xmlns:wne=
\"
http://schemas.microsoft.com/office/word/2006/wordml
\"
>"
),
sRootName
.
GetBuffer
()
);
sContent
.
AppendFormat
(
_T
(
"<%ls xmlns:ve=
\"
http://schemas.openxmlformats.org/markup-compatibility/2006
\"
xmlns:o=
\"
urn:schemas-microsoft-com:office:office
\"
xmlns:r=
\"
http://schemas.openxmlformats.org/officeDocument/2006/relationships
\"
xmlns:m=
\"
http://schemas.openxmlformats.org/officeDocument/2006/math
\"
xmlns:v=
\"
urn:schemas-microsoft-com:vml
\"
xmlns:wp=
\"
http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing
\"
xmlns:w10=
\"
urn:schemas-microsoft-com:office:word
\"
xmlns:w=
\"
http://schemas.openxmlformats.org/wordprocessingml/2006/main
\"
xmlns:wne=
\"
http://schemas.microsoft.com/office/word/2006/wordml
\"
>"
),
sRootName
.
GetBuffer
()
);
RenderParameter
oNewParameter
=
oRenderParameter
;
RenderParameter
oNewParameter
=
oRenderParameter
;
OOXRelsWriterPtr
oNewRelsWr
=
OOXRelsWriterPtr
(
new
OOXRelsWriter
(
sFilename
,
*
poRtfDocument
)
);
OOXRelsWriterPtr
oNewRelsWr
=
OOXRelsWriterPtr
(
new
OOXRelsWriter
(
sFilename
,
*
poRtfDocument
)
);
poOOXWriter
->
m_oCustomRelsWriter
.
push_back
(
oNewRelsWr
);
poOOXWriter
->
m_oCustomRelsWriter
.
push_back
(
oNewRelsWr
);
oNewParameter
.
poRels
=
oNewRelsWr
.
get
();
oNewParameter
.
poRels
=
oNewRelsWr
.
get
();
sContent
.
Append
(
oTarget
->
RenderToOOX
(
oNewParameter
)
);
sContent
.
Append
(
oTarget
->
RenderToOOX
(
oNewParameter
)
);
sContent
.
AppendFormat
(
_T
(
"</%ls>"
),
sRootName
.
GetBuffer
()
);
sContent
.
AppendFormat
(
_T
(
"</%ls>"
),
sRootName
.
GetBuffer
()
);
std
::
string
sXmlUTF
=
NSFile
::
CUtf8Converter
::
GetUtf8StringFromUnicode
(
sContent
.
GetBuffer
());
std
::
string
sXmlUTF
=
NSFile
::
CUtf8Converter
::
GetUtf8StringFromUnicode
(
sContent
.
GetBuffer
());
CString
sFilePath
=
poOOXWriter
->
m_sTargetFolder
+
FILE_SEPARATOR_STR
+
_T
(
"word"
)
+
FILE_SEPARATOR_STR
+
sFilename
;
CString
sFilePath
=
poOOXWriter
->
m_sTargetFolder
+
FILE_SEPARATOR_STR
+
_T
(
"word"
)
+
FILE_SEPARATOR_STR
+
sFilename
;
CFile
file
;
CFile
file
;
if
(
file
.
CreateFile
(
sFilePath
)
==
S_OK
)
if
(
file
.
CreateFile
(
sFilePath
)
==
S_OK
)
{
{
file
.
WriteFile
((
void
*
)
sXmlUTF
.
c_str
(),
sXmlUTF
.
length
());
file
.
WriteFile
((
void
*
)
sXmlUTF
.
c_str
(),
sXmlUTF
.
length
());
file
.
CloseFile
();
file
.
CloseFile
();
}
}
CString
sContentTarget
=
_T
(
"/word/"
)
+
sFilename
;
CString
sContentTarget
=
_T
(
"/word/"
)
+
sFilename
;
CString
srID
;
CString
srID
;
if
(
true
==
bHeader
)
if
(
true
==
bHeader
)
{
{
poOOXWriter
->
m_oContentTypes
.
AddContent
(
_T
(
"application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml"
),
sContentTarget
);
poOOXWriter
->
m_oContentTypes
.
AddContent
(
_T
(
"application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml"
),
sContentTarget
);
srID
=
poOOXWriter
->
m_oDocRels
.
AddRelationship
(
_T
(
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/header"
),
sFilename
);
srID
=
poOOXWriter
->
m_oDocRels
.
AddRelationship
(
_T
(
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/header"
),
sFilename
);
}
else
{
poOOXWriter
->
m_oContentTypes
.
AddContent
(
_T
(
"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml"
),
sContentTarget
);
srID
=
poOOXWriter
->
m_oDocRels
.
AddRelationship
(
_T
(
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer"
),
sFilename
);
}
return
srID
;
}
}
else
{
poOOXWriter
->
m_oContentTypes
.
AddContent
(
_T
(
"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml"
),
sContentTarget
);
srID
=
poOOXWriter
->
m_oDocRels
.
AddRelationship
(
_T
(
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer"
),
sFilename
);
}
return
srID
;
}
ASCOfficeRtfFile/RtfFormatLib/source/Writer/OOXFootnoteWriter.h
View file @
e81517ca
...
@@ -16,7 +16,12 @@ public:
...
@@ -16,7 +16,12 @@ public:
CString
sFootnote
;
CString
sFootnote
;
sFootnote
.
Append
(
_T
(
"<w:footnote"
)
);
sFootnote
.
Append
(
_T
(
"<w:footnote"
)
);
if
(
false
==
sType
.
IsEmpty
()
)
if
(
false
==
sType
.
IsEmpty
()
)
sFootnote
.
AppendFormat
(
_T
(
" w:type=
\"
%ls
\"
"
),
sType
.
GetBuffer
()
);
{
sFootnote
.
Append
(
_T
(
" w:type=
\"
"
)
);
sFootnote
+=
sType
;
sFootnote
.
Append
(
_T
(
"
\"
"
));
}
if
(
PROP_DEF
!=
nID
)
if
(
PROP_DEF
!=
nID
)
sFootnote
.
AppendFormat
(
_T
(
" w:id=
\"
%d
\"
"
),
nID
);
sFootnote
.
AppendFormat
(
_T
(
" w:id=
\"
%d
\"
"
),
nID
);
sFootnote
.
Append
(
_T
(
">"
)
);
sFootnote
.
Append
(
_T
(
">"
)
);
...
@@ -29,9 +34,15 @@ public:
...
@@ -29,9 +34,15 @@ public:
{
{
m_sFootnotes
.
Append
(
_T
(
"<w:footnote"
)
);
m_sFootnotes
.
Append
(
_T
(
"<w:footnote"
)
);
if
(
false
==
sType
.
IsEmpty
()
)
if
(
false
==
sType
.
IsEmpty
()
)
m_sFootnotes
.
AppendFormat
(
_T
(
" w:type=
\"
%ls
\"
"
),
sType
.
GetBuffer
()
);
{
m_sFootnotes
.
Append
(
_T
(
" w:type=
\"
"
)
);
m_sFootnotes
+=
sType
;
m_sFootnotes
.
Append
(
_T
(
"
\"
"
));
}
if
(
PROP_DEF
!=
nID
)
if
(
PROP_DEF
!=
nID
)
{
m_sFootnotes
.
AppendFormat
(
_T
(
" w:id=
\"
%d
\"
"
),
nID
);
m_sFootnotes
.
AppendFormat
(
_T
(
" w:id=
\"
%d
\"
"
),
nID
);
}
m_sFootnotes
.
Append
(
_T
(
">"
)
);
m_sFootnotes
.
Append
(
_T
(
">"
)
);
m_sFootnotes
.
Append
(
sText
);
m_sFootnotes
.
Append
(
sText
);
m_sFootnotes
.
Append
(
_T
(
"</w:footnote>"
));
m_sFootnotes
.
Append
(
_T
(
"</w:footnote>"
));
...
@@ -87,7 +98,11 @@ public:
...
@@ -87,7 +98,11 @@ public:
CString
sEndnote
;
CString
sEndnote
;
sEndnote
.
Append
(
_T
(
"<w:endnote"
)
);
sEndnote
.
Append
(
_T
(
"<w:endnote"
)
);
if
(
false
==
sType
.
IsEmpty
()
)
if
(
false
==
sType
.
IsEmpty
()
)
sEndnote
.
AppendFormat
(
_T
(
" w:type=
\"
%ls
\"
"
),
sType
.
GetBuffer
()
);
{
sEndnote
.
Append
(
_T
(
" w:type=
\"
"
)
);
sEndnote
+=
sType
;
sEndnote
.
Append
(
_T
(
"
\"
"
));
}
if
(
-
2
!=
nID
)
if
(
-
2
!=
nID
)
sEndnote
.
AppendFormat
(
_T
(
" w:id=
\"
%d
\"
"
),
nID
);
sEndnote
.
AppendFormat
(
_T
(
" w:id=
\"
%d
\"
"
),
nID
);
sEndnote
.
Append
(
_T
(
">"
)
);
sEndnote
.
Append
(
_T
(
">"
)
);
...
@@ -100,7 +115,12 @@ public:
...
@@ -100,7 +115,12 @@ public:
{
{
m_sEndnotes
.
Append
(
_T
(
"<w:endnote"
)
);
m_sEndnotes
.
Append
(
_T
(
"<w:endnote"
)
);
if
(
false
==
sType
.
IsEmpty
()
)
if
(
false
==
sType
.
IsEmpty
()
)
m_sEndnotes
.
AppendFormat
(
_T
(
" w:type=
\"
%ls
\"
"
),
sType
.
GetBuffer
()
);
{
m_sEndnotes
.
Append
(
_T
(
" w:type=
\"
"
)
);
m_sEndnotes
+=
sType
;
m_sEndnotes
.
Append
(
_T
(
"
\"
"
));
}
if
(
-
2
!=
nID
)
if
(
-
2
!=
nID
)
m_sEndnotes
.
AppendFormat
(
_T
(
" w:id=
\"
%d
\"
"
),
nID
);
m_sEndnotes
.
AppendFormat
(
_T
(
" w:id=
\"
%d
\"
"
),
nID
);
m_sEndnotes
.
Append
(
_T
(
">"
)
);
m_sEndnotes
.
Append
(
_T
(
">"
)
);
...
...
ASCOfficeRtfFile/RtfFormatTest/RtfFormatTest.cpp
View file @
e81517ca
...
@@ -3,36 +3,52 @@
...
@@ -3,36 +3,52 @@
#include <tchar.h>
#include <tchar.h>
#include "../RtfFormatLib/source/ConvertationManager.h"
#include "../RtfFormatLib/source/ConvertationManager.h"
#include "../../Common/DocxFormat/Source/SystemUtility/FileSystem/Directory.h"
#include "../../OfficeUtils/src/OfficeUtils.h"
#include <algorithm>
#include <algorithm>
#include <string>
#include <string>
int
_tmain
(
int
argc
,
_TCHAR
*
argv
[])
int
_tmain
(
int
argc
,
_TCHAR
*
argv
[])
{
{
std
::
wstring
sTemp
=
_T
(
"D:
\\
test
\\
Temp"
);
std
::
wstring
srcFileName
=
argv
[
1
];
std
::
wstring
dstFileName
=
argv
[
2
];
std
::
wstring
outputDir
=
FileSystem
::
Directory
::
GetFolderPath
(
dstFileName
);
std
::
wstring
sArg_1
=
argv
[
1
];
std
::
wstring
dstTempPath
=
FileSystem
::
Directory
::
CreateDirectoryWithUniqueName
(
outputDir
);
std
::
wstring
sArg_2
=
argv
[
2
];
int
n1
=
s
Arg_1
.
rfind
(
_T
(
'.'
));
int
n1
=
s
rcFileName
.
rfind
(
_T
(
'.'
));
int
n2
=
sArg_2
.
rfind
(
_T
(
'.'
));
int
n2
=
dstFileName
.
rfind
(
_T
(
'.'
));
std
::
wstring
ext_1
=
n1
>=
0
?
s
Arg_1
.
substr
(
n1
+
1
,
sArg_1
.
length
()
-
n1
)
:
_T
(
""
);
//ext_1.MakeLower();
std
::
wstring
ext_1
=
n1
>=
0
?
s
rcFileName
.
substr
(
n1
+
1
,
srcFileName
.
length
()
-
n1
)
:
_T
(
""
);
//ext_1.MakeLower();
std
::
wstring
ext_2
=
n2
>=
0
?
sArg_2
.
substr
(
n2
+
1
,
sArg_2
.
length
()
-
n2
)
:
_T
(
""
);
//ext_2.MakeLower();
std
::
wstring
ext_2
=
n2
>=
0
?
dstFileName
.
substr
(
n2
+
1
,
dstFileName
.
length
()
-
n2
)
:
_T
(
""
);
//ext_2.MakeLower();
std
::
transform
(
ext_1
.
begin
(),
ext_1
.
end
(),
ext_1
.
begin
(),
::
tolower
);
std
::
transform
(
ext_1
.
begin
(),
ext_1
.
end
(),
ext_1
.
begin
(),
::
tolower
);
RtfConvertationManager
rtfConvert
;
RtfConvertationManager
rtfConvert
;
rtfConvert
.
m_sTempFolder
=
sTemp
;
rtfConvert
.
m_sTempFolder
=
dstTempPath
;
COfficeUtils
oCOfficeUtils
(
NULL
);
if
(
ext_1
==
_T
(
"rtf"
))
if
(
ext_1
==
_T
(
"rtf"
))
{
// rtf->docx
{
rtfConvert
.
ConvertRtfToOOX
(
sArg_1
,
sArg_2
);
// rtf->docx
rtfConvert
.
ConvertRtfToOOX
(
srcFileName
,
dstTempPath
);
if
(
S_OK
!=
oCOfficeUtils
.
CompressFileOrDirectory
(
dstTempPath
.
c_str
(),
dstFileName
.
c_str
(),
-
1
))
return
S_FALSE
;
}
}
if
(
ext_2
==
_T
(
"rtf"
))
if
(
ext_2
==
_T
(
"rtf"
))
{
// docx->rtf
{
rtfConvert
.
ConvertOOXToRtf
(
sArg_2
,
sArg_1
);
// docx->rtf
if
(
S_OK
!=
oCOfficeUtils
.
ExtractToDirectory
(
srcFileName
.
c_str
(),
dstTempPath
.
c_str
(),
NULL
,
0
))
return
S_FALSE
;
rtfConvert
.
ConvertOOXToRtf
(
dstTempPath
,
srcFileName
);
}
}
FileSystem
::
Directory
::
DeleteDirectory
(
dstTempPath
);
return
0
;
return
0
;
}
}
Common/DocxFormat/Source/DocxFormat/Document.h
View file @
e81517ca
...
@@ -187,6 +187,93 @@ namespace OOX
...
@@ -187,6 +187,93 @@ namespace OOX
CPath
oRootPath
;
CPath
oRootPath
;
read
(
oRootPath
,
oPath
);
read
(
oRootPath
,
oPath
);
}
}
void
CreateElements
(
XmlUtils
::
CXmlLiteReader
&
oReader
,
int
Depth
)
{
while
(
oReader
.
ReadNextSiblingNode
(
Depth
)
)
{
CWCharWrapper
sName
=
oReader
.
GetName
();
WritingElement
*
pItem
=
NULL
;
/*if ( _T("w:altChunk") == sName )
pItem = new Logic::CAltChunk( oReader );
else*/
if
(
_T
(
"w:bookmarkEnd"
)
==
sName
)
pItem
=
new
Logic
::
CBookmarkEnd
(
oReader
);
else
if
(
_T
(
"w:bookmarkStart"
)
==
sName
)
pItem
=
new
Logic
::
CBookmarkStart
(
oReader
);
else
if
(
_T
(
"w:commentRangeEnd"
)
==
sName
)
pItem
=
new
Logic
::
CCommentRangeEnd
(
oReader
);
else
if
(
_T
(
"w:commentRangeStart"
)
==
sName
)
pItem
=
new
Logic
::
CCommentRangeStart
(
oReader
);
//else if ( _T("w:customXml") == sName )
// pItem = new Logic::CCustomXml( oReader );
else
if
(
_T
(
"w:customXmlDelRangeEnd"
)
==
sName
)
pItem
=
new
Logic
::
CCustomXmlDelRangeEnd
(
oReader
);
else
if
(
_T
(
"w:customXmlDelRangeStart"
)
==
sName
)
pItem
=
new
Logic
::
CCustomXmlDelRangeStart
(
oReader
);
else
if
(
_T
(
"w:customXmlInsRangeEnd"
)
==
sName
)
pItem
=
new
Logic
::
CCustomXmlInsRangeEnd
(
oReader
);
else
if
(
_T
(
"w:customXmlInsRangeStart"
)
==
sName
)
pItem
=
new
Logic
::
CCustomXmlInsRangeStart
(
oReader
);
else
if
(
_T
(
"w:customXmlMoveFromRangeEnd"
)
==
sName
)
pItem
=
new
Logic
::
CCustomXmlMoveFromRangeEnd
(
oReader
);
else
if
(
_T
(
"w:customXmlMoveFromRangeStart"
)
==
sName
)
pItem
=
new
Logic
::
CCustomXmlMoveFromRangeStart
(
oReader
);
else
if
(
_T
(
"w:customXmlMoveToRangeEnd"
)
==
sName
)
pItem
=
new
Logic
::
CCustomXmlMoveToRangeEnd
(
oReader
);
else
if
(
_T
(
"w:customXmlMoveToRangeStart"
)
==
sName
)
pItem
=
new
Logic
::
CCustomXmlMoveToRangeStart
(
oReader
);
else
if
(
_T
(
"w:del"
)
==
sName
)
pItem
=
new
Logic
::
CDel
(
oReader
);
else
if
(
_T
(
"w:ins"
)
==
sName
)
pItem
=
new
Logic
::
CIns
(
oReader
);
//else if ( _T("w:moveFrom") == sName )
// pItem = new Logic::CMoveFrom( oReader );
else
if
(
_T
(
"w:moveFromRangeEnd"
)
==
sName
)
pItem
=
new
Logic
::
CMoveToRangeEnd
(
oReader
);
else
if
(
_T
(
"w:moveFromRangeStart"
)
==
sName
)
pItem
=
new
Logic
::
CMoveToRangeStart
(
oReader
);
//else if ( _T("w:moveTo") == sName )
// pItem = new Logic::CMoveTo( oReader );
else
if
(
_T
(
"w:moveToRangeEnd"
)
==
sName
)
pItem
=
new
Logic
::
CMoveToRangeEnd
(
oReader
);
else
if
(
_T
(
"w:moveToRangeStart"
)
==
sName
)
pItem
=
new
Logic
::
CMoveToRangeStart
(
oReader
);
else
if
(
_T
(
"m:oMath"
)
==
sName
)
pItem
=
new
Logic
::
COMath
(
oReader
);
else
if
(
_T
(
"m:oMathPara"
)
==
sName
)
pItem
=
new
Logic
::
COMathPara
(
oReader
);
else
if
(
_T
(
"w:p"
)
==
sName
)
pItem
=
new
Logic
::
CParagraph
(
oReader
);
else
if
(
_T
(
"w:permEnd"
)
==
sName
)
pItem
=
new
Logic
::
CPermEnd
(
oReader
);
else
if
(
_T
(
"w:permStart"
)
==
sName
)
pItem
=
new
Logic
::
CPermStart
(
oReader
);
else
if
(
_T
(
"w:proofErr"
)
==
sName
)
pItem
=
new
Logic
::
CProofErr
(
oReader
);
else
if
(
_T
(
"w:sdt"
)
==
sName
)
pItem
=
new
Logic
::
CSdt
(
oReader
);
else
if
(
_T
(
"w:sectPr"
)
==
sName
)
m_oSectPr
=
oReader
;
else
if
(
_T
(
"w:tbl"
)
==
sName
)
pItem
=
new
Logic
::
CTbl
(
oReader
);
else
if
(
_T
(
"wx:sect"
)
==
sName
&&
!
oReader
.
IsEmptyNode
())
{
int
nWxSectDepth
=
oReader
.
GetDepth
();
CreateElements
(
oReader
,
nWxSectDepth
);
}
else
if
(
_T
(
"wx:pBdrGroup"
)
==
sName
&&
!
oReader
.
IsEmptyNode
())
{
int
nWxBdrGroupDepth
=
oReader
.
GetDepth
();
CreateElements
(
oReader
,
nWxBdrGroupDepth
);
}
if
(
pItem
)
m_arrItems
.
push_back
(
pItem
);
}
}
virtual
void
read
(
const
CPath
&
oRootPath
,
const
CPath
&
oPath
)
virtual
void
read
(
const
CPath
&
oRootPath
,
const
CPath
&
oPath
)
{
{
m_oReadPath
=
oPath
;
m_oReadPath
=
oPath
;
...
@@ -204,7 +291,7 @@ namespace OOX
...
@@ -204,7 +291,7 @@ namespace OOX
return
;
return
;
CWCharWrapper
sName
=
oReader
.
GetName
();
CWCharWrapper
sName
=
oReader
.
GetName
();
if
(
_T
(
"w:document"
)
==
sName
)
if
(
_T
(
"w:document"
)
==
sName
||
_T
(
"w:wordDocument"
)
==
sName
)
{
{
ReadAttributes
(
oReader
);
ReadAttributes
(
oReader
);
...
@@ -218,77 +305,8 @@ namespace OOX
...
@@ -218,77 +305,8 @@ namespace OOX
if
(
_T
(
"w:body"
)
==
sName
&&
!
oReader
.
IsEmptyNode
()
)
if
(
_T
(
"w:body"
)
==
sName
&&
!
oReader
.
IsEmptyNode
()
)
{
{
int
nBodyDepth
=
oReader
.
GetDepth
();
int
nBodyDepth
=
oReader
.
GetDepth
();
while
(
oReader
.
ReadNextSiblingNode
(
nBodyDepth
)
)
{
CreateElements
(
oReader
,
nBodyDepth
);
sName
=
oReader
.
GetName
();
WritingElement
*
pItem
=
NULL
;
/*if ( _T("w:altChunk") == sName )
pItem = new Logic::CAltChunk( oReader );
else*/
if
(
_T
(
"w:bookmarkEnd"
)
==
sName
)
pItem
=
new
Logic
::
CBookmarkEnd
(
oReader
);
else
if
(
_T
(
"w:bookmarkStart"
)
==
sName
)
pItem
=
new
Logic
::
CBookmarkStart
(
oReader
);
else
if
(
_T
(
"w:commentRangeEnd"
)
==
sName
)
pItem
=
new
Logic
::
CCommentRangeEnd
(
oReader
);
else
if
(
_T
(
"w:commentRangeStart"
)
==
sName
)
pItem
=
new
Logic
::
CCommentRangeStart
(
oReader
);
//else if ( _T("w:customXml") == sName )
// pItem = new Logic::CCustomXml( oReader );
else
if
(
_T
(
"w:customXmlDelRangeEnd"
)
==
sName
)
pItem
=
new
Logic
::
CCustomXmlDelRangeEnd
(
oReader
);
else
if
(
_T
(
"w:customXmlDelRangeStart"
)
==
sName
)
pItem
=
new
Logic
::
CCustomXmlDelRangeStart
(
oReader
);
else
if
(
_T
(
"w:customXmlInsRangeEnd"
)
==
sName
)
pItem
=
new
Logic
::
CCustomXmlInsRangeEnd
(
oReader
);
else
if
(
_T
(
"w:customXmlInsRangeStart"
)
==
sName
)
pItem
=
new
Logic
::
CCustomXmlInsRangeStart
(
oReader
);
else
if
(
_T
(
"w:customXmlMoveFromRangeEnd"
)
==
sName
)
pItem
=
new
Logic
::
CCustomXmlMoveFromRangeEnd
(
oReader
);
else
if
(
_T
(
"w:customXmlMoveFromRangeStart"
)
==
sName
)
pItem
=
new
Logic
::
CCustomXmlMoveFromRangeStart
(
oReader
);
else
if
(
_T
(
"w:customXmlMoveToRangeEnd"
)
==
sName
)
pItem
=
new
Logic
::
CCustomXmlMoveToRangeEnd
(
oReader
);
else
if
(
_T
(
"w:customXmlMoveToRangeStart"
)
==
sName
)
pItem
=
new
Logic
::
CCustomXmlMoveToRangeStart
(
oReader
);
else
if
(
_T
(
"w:del"
)
==
sName
)
pItem
=
new
Logic
::
CDel
(
oReader
);
else
if
(
_T
(
"w:ins"
)
==
sName
)
pItem
=
new
Logic
::
CIns
(
oReader
);
//else if ( _T("w:moveFrom") == sName )
// pItem = new Logic::CMoveFrom( oReader );
else
if
(
_T
(
"w:moveFromRangeEnd"
)
==
sName
)
pItem
=
new
Logic
::
CMoveToRangeEnd
(
oReader
);
else
if
(
_T
(
"w:moveFromRangeStart"
)
==
sName
)
pItem
=
new
Logic
::
CMoveToRangeStart
(
oReader
);
//else if ( _T("w:moveTo") == sName )
// pItem = new Logic::CMoveTo( oReader );
else
if
(
_T
(
"w:moveToRangeEnd"
)
==
sName
)
pItem
=
new
Logic
::
CMoveToRangeEnd
(
oReader
);
else
if
(
_T
(
"w:moveToRangeStart"
)
==
sName
)
pItem
=
new
Logic
::
CMoveToRangeStart
(
oReader
);
else
if
(
_T
(
"m:oMath"
)
==
sName
)
pItem
=
new
Logic
::
COMath
(
oReader
);
else
if
(
_T
(
"m:oMathPara"
)
==
sName
)
pItem
=
new
Logic
::
COMathPara
(
oReader
);
else
if
(
_T
(
"w:p"
)
==
sName
)
pItem
=
new
Logic
::
CParagraph
(
oReader
);
else
if
(
_T
(
"w:permEnd"
)
==
sName
)
pItem
=
new
Logic
::
CPermEnd
(
oReader
);
else
if
(
_T
(
"w:permStart"
)
==
sName
)
pItem
=
new
Logic
::
CPermStart
(
oReader
);
else
if
(
_T
(
"w:proofErr"
)
==
sName
)
pItem
=
new
Logic
::
CProofErr
(
oReader
);
else
if
(
_T
(
"w:sdt"
)
==
sName
)
pItem
=
new
Logic
::
CSdt
(
oReader
);
else
if
(
_T
(
"w:sectPr"
)
==
sName
)
m_oSectPr
=
oReader
;
else
if
(
_T
(
"w:tbl"
)
==
sName
)
pItem
=
new
Logic
::
CTbl
(
oReader
);
if
(
pItem
)
m_arrItems
.
push_back
(
pItem
);
}
}
}
else
if
(
_T
(
"w:background"
)
==
sName
)
else
if
(
_T
(
"w:background"
)
==
sName
)
m_oBackground
=
oReader
;
m_oBackground
=
oReader
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment