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
e6ee6861
Commit
e6ee6861
authored
Apr 21, 2016
by
ElenaSubbotina
Committed by
Alexander Trofimov
May 21, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
RtfFormatReader - Formula 01.rtf - конвертация формул в docx
parent
46fa2b43
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
538 additions
and
423 deletions
+538
-423
ASCOfficeRtfFile/RtfFormatLib/source/DestinationCommand.h
ASCOfficeRtfFile/RtfFormatLib/source/DestinationCommand.h
+37
-4
ASCOfficeRtfFile/RtfFormatLib/source/Reader/OOXMathReader.h
ASCOfficeRtfFile/RtfFormatLib/source/Reader/OOXMathReader.h
+47
-47
ASCOfficeRtfFile/RtfFormatLib/source/RtfChar.h
ASCOfficeRtfFile/RtfFormatLib/source/RtfChar.h
+259
-241
ASCOfficeRtfFile/RtfFormatLib/source/RtfDocument.cpp
ASCOfficeRtfFile/RtfFormatLib/source/RtfDocument.cpp
+9
-9
ASCOfficeRtfFile/RtfFormatLib/source/RtfMath.h
ASCOfficeRtfFile/RtfFormatLib/source/RtfMath.h
+101
-41
ASCOfficeRtfFile/RtfFormatLib/source/RtfProperty.h
ASCOfficeRtfFile/RtfFormatLib/source/RtfProperty.h
+82
-78
ASCOfficeRtfFile/RtfFormatLib/source/RtfSection.cpp
ASCOfficeRtfFile/RtfFormatLib/source/RtfSection.cpp
+3
-3
No files found.
ASCOfficeRtfFile/RtfFormatLib/source/DestinationCommand.h
View file @
e6ee6861
...
...
@@ -1762,6 +1762,11 @@ public:
if
(
true
==
hasParameter
)
oDocument
.
m_oMathProp
.
mwrapRight
=
parameter
;
}
else
if
(
_T
(
"mintLim"
)
==
sCommand
)
{
if
(
true
==
hasParameter
)
oDocument
.
m_oMathProp
.
mintLim
=
parameter
;
}
else
{
return
false
;
...
...
@@ -1823,20 +1828,48 @@ public:
Skip
(
oDocument
,
oReader
);
else
{
if
(
RtfMath
::
IsRtfControlWord
(
sCommand
)
==
true
)
bool
isBoolMath
=
RtfMath
::
IsRtfControlPropertyBool
(
sCommand
);
bool
isValMath
=
isBoolMath
?
false
:
RtfMath
::
IsRtfControlProperty
(
sCommand
);
bool
isMath
=
(
isValMath
||
isBoolMath
)
?
false
:
RtfMath
::
IsRtfControlWord
(
sCommand
);
if
(
isMath
||
isValMath
||
isBoolMath
)
{
if
(
m_oMath
.
IsEmpty
()
)
m_oMath
.
SetRtfName
(
sCommand
);
if
(
true
==
m_oMath
.
m_bHeader
)
{
m_oMath
.
m_bHeader
=
false
;
if
(
m_oMath
.
IsEmpty
())
m_oMath
.
SetRtfName
(
sCommand
);
}
else
{
RtfMathPtr
oNewMath
(
new
RtfMath
()
);
oNewMath
->
SetRtfName
(
sCommand
);
oNewMath
->
m_bIsVal
=
isValMath
;
oNewMath
->
m_bIsBool
=
isBoolMath
;
RtfMathReader
oSubMathReader
(
*
oNewMath
);
StartSubReader
(
oSubMathReader
,
oDocument
,
oReader
);
if
(
RtfParagraphProperty
::
pa_none
!=
oSubMathReader
.
m_eParAlign
)
m_eParAlign
=
oSubMathReader
.
m_eParAlign
;
if
(
oNewMath
->
IsValid
()
==
true
)
m_oMath
.
AddItem
(
oNewMath
);
{
if
(
m_oMath
.
m_bIsVal
||
m_oMath
.
m_bIsBool
)
{
IDocumentElementPtr
item
;
oNewMath
->
GetItem
(
item
,
0
);
if
((
item
)
&&
(
TYPE_RTF_PARAGRAPH
==
item
->
GetType
()))
{
m_oMath
.
m_oVal
=
*
((
RtfParagraph
*
)(
item
.
get
()));
}
}
else
{
m_oMath
.
AddItem
(
oNewMath
);
}
}
}
}
else
if
(
RtfCharPropCommand
::
ExecuteCommand
(
oDocument
,
oReader
,
sCommand
,
hasParameter
,
parameter
)
==
true
)
...
...
ASCOfficeRtfFile/RtfFormatLib/source/Reader/OOXMathReader.h
View file @
e6ee6861
...
...
@@ -28,7 +28,7 @@ public:
{
OOX
::
Logic
::
CRunProperty
*
ooxRPr
=
dynamic_cast
<
OOX
::
Logic
::
CRunProperty
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
OOXrPrReader
orPrReader
(
ooxRPr
);
orPrReader
.
Parse
(
oParam
,
oOutput
.
oProperty
.
m_oCharProp
);
orPrReader
.
Parse
(
oParam
,
oOutput
.
m_
oProperty
.
m_oCharProp
);
///
oCurrentProp
=
RtfCharProperty
();
oCurrentProp
.
SetDefaultOOX
();
...
...
@@ -38,20 +38,20 @@ public:
{
OOX
::
Logic
::
CAlnScr
*
ooxAlnScr
=
dynamic_cast
<
OOX
::
Logic
::
CAlnScr
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxAlnScr
->
m_val
.
IsInit
())
oNewMath
->
oProperty
.
malnScr
=
ooxAlnScr
->
m_val
->
ToBool
();
oNewMath
->
m_
oProperty
.
malnScr
=
ooxAlnScr
->
m_val
->
ToBool
();
}
break
;
case
OOX
:
:
et_m_oMathParaPr
:
{
OOX
::
Logic
::
COMathParaPr
*
ooxMathParaPr
=
dynamic_cast
<
OOX
::
Logic
::
COMathParaPr
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMathParaPr
->
m_oMJc
.
IsInit
()
&&
ooxMathParaPr
->
m_oMJc
->
m_val
.
IsInit
())
{
oNewMath
->
oProperty
.
moMathParaPr
=
1
;
oNewMath
->
m_
oProperty
.
moMathParaPr
=
1
;
switch
(
ooxMathParaPr
->
m_oMJc
->
m_val
->
GetValue
())
{
case
SimpleTypes
:
:
mjcCenter
:
oNewMath
->
oProperty
.
moMathParaPr
=
1
;
break
;
case
SimpleTypes
:
:
mjcCenterGroup
:
oNewMath
->
oProperty
.
moMathParaPr
=
2
;
break
;
case
SimpleTypes
:
:
mjcLeft
:
oNewMath
->
oProperty
.
moMathParaPr
=
3
;
break
;
case
SimpleTypes
:
:
mjcRight
:
oNewMath
->
oProperty
.
moMathParaPr
=
4
;
break
;
case
SimpleTypes
:
:
mjcCenter
:
oNewMath
->
m_
oProperty
.
moMathParaPr
=
1
;
break
;
case
SimpleTypes
:
:
mjcCenterGroup
:
oNewMath
->
m_
oProperty
.
moMathParaPr
=
2
;
break
;
case
SimpleTypes
:
:
mjcLeft
:
oNewMath
->
m_
oProperty
.
moMathParaPr
=
3
;
break
;
case
SimpleTypes
:
:
mjcRight
:
oNewMath
->
m_
oProperty
.
moMathParaPr
=
4
;
break
;
}
}
}
break
;
...
...
@@ -59,7 +59,7 @@ public:
{
OOX
::
Logic
::
CBrk
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CBrk
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_alnAt
.
IsInit
()
)
oNewMath
->
oProperty
.
Break
=
ooxMath
->
m_alnAt
->
GetValue
();
oNewMath
->
m_
oProperty
.
Break
=
ooxMath
->
m_alnAt
->
GetValue
();
}
break
;
case
OOX
:
:
et_m_chr
:
{
...
...
@@ -80,20 +80,20 @@ public:
nValue
=
sValue
[
0
];
}
if
(
PROP_DEF
!=
nValue
)
oNewMath
->
oProperty
.
mchr
=
nValue
;
oNewMath
->
m_
oProperty
.
mchr
=
nValue
;
}
}
break
;
case
OOX
:
:
et_m_lit
:
{
OOX
::
Logic
::
CLit
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CLit
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
mlit
=
ooxMath
->
m_val
->
ToBool
();
oNewMath
->
m_
oProperty
.
mlit
=
ooxMath
->
m_val
->
ToBool
();
}
break
;
case
OOX
:
:
et_m_nor
:
{
OOX
::
Logic
::
CNor
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CNor
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
NormalText
=
ooxMath
->
m_val
->
ToBool
();
oNewMath
->
m_
oProperty
.
NormalText
=
ooxMath
->
m_val
->
ToBool
();
}
break
;
case
OOX
:
:
et_m_scr
:
{
...
...
@@ -102,12 +102,12 @@ public:
{
switch
(
ooxMath
->
m_val
->
GetValue
())
{
case
SimpleTypes
:
:
scriptDoubleStruck
:
oNewMath
->
oProperty
.
mscr
=
3
;
break
;
case
SimpleTypes
:
:
scriptFraktur
:
oNewMath
->
oProperty
.
mscr
=
2
;
break
;
case
SimpleTypes
:
:
scriptMonospace
:
oNewMath
->
oProperty
.
mscr
=
5
;
break
;
case
SimpleTypes
:
:
scriptRoman
:
oNewMath
->
oProperty
.
mscr
=
0
;
break
;
case
SimpleTypes
:
:
scriptSansSerif
:
oNewMath
->
oProperty
.
mscr
=
4
;
break
;
case
SimpleTypes
:
:
scriptScript
:
oNewMath
->
oProperty
.
mscr
=
1
;
break
;
case
SimpleTypes
:
:
scriptDoubleStruck
:
oNewMath
->
m_
oProperty
.
mscr
=
3
;
break
;
case
SimpleTypes
:
:
scriptFraktur
:
oNewMath
->
m_
oProperty
.
mscr
=
2
;
break
;
case
SimpleTypes
:
:
scriptMonospace
:
oNewMath
->
m_
oProperty
.
mscr
=
5
;
break
;
case
SimpleTypes
:
:
scriptRoman
:
oNewMath
->
m_
oProperty
.
mscr
=
0
;
break
;
case
SimpleTypes
:
:
scriptSansSerif
:
oNewMath
->
m_
oProperty
.
mscr
=
4
;
break
;
case
SimpleTypes
:
:
scriptScript
:
oNewMath
->
m_
oProperty
.
mscr
=
1
;
break
;
}
}
}
break
;
...
...
@@ -118,10 +118,10 @@ public:
{
switch
(
ooxMath
->
m_val
->
GetValue
())
{
case
SimpleTypes
:
:
styleBold
:
oNewMath
->
oProperty
.
msty
=
1
;
break
;
case
SimpleTypes
:
:
styleBoldItalic
:
oNewMath
->
oProperty
.
msty
=
3
;
break
;
case
SimpleTypes
:
:
styleItalic
:
oNewMath
->
oProperty
.
msty
=
2
;
break
;
case
SimpleTypes
:
:
stylePlain
:
oNewMath
->
oProperty
.
msty
=
0
;
break
;
case
SimpleTypes
:
:
styleBold
:
oNewMath
->
m_
oProperty
.
msty
=
1
;
break
;
case
SimpleTypes
:
:
styleBoldItalic
:
oNewMath
->
m_
oProperty
.
msty
=
3
;
break
;
case
SimpleTypes
:
:
styleItalic
:
oNewMath
->
m_
oProperty
.
msty
=
2
;
break
;
case
SimpleTypes
:
:
stylePlain
:
oNewMath
->
m_
oProperty
.
msty
=
0
;
break
;
}
}
}
break
;
...
...
@@ -132,10 +132,10 @@ public:
{
switch
(
ooxMath
->
m_val
->
GetValue
())
{
case
SimpleTypes
:
:
mjcCenter
:
oNewMath
->
oProperty
.
moMathParaPr
=
1
;
break
;
case
SimpleTypes
:
:
mjcCenterGroup
:
oNewMath
->
oProperty
.
moMathParaPr
=
2
;
break
;
case
SimpleTypes
:
:
mjcLeft
:
oNewMath
->
oProperty
.
moMathParaPr
=
3
;
break
;
case
SimpleTypes
:
:
mjcRight
:
oNewMath
->
oProperty
.
moMathParaPr
=
4
;
break
;
case
SimpleTypes
:
:
mjcCenter
:
oNewMath
->
m_
oProperty
.
moMathParaPr
=
1
;
break
;
case
SimpleTypes
:
:
mjcCenterGroup
:
oNewMath
->
m_
oProperty
.
moMathParaPr
=
2
;
break
;
case
SimpleTypes
:
:
mjcLeft
:
oNewMath
->
m_
oProperty
.
moMathParaPr
=
3
;
break
;
case
SimpleTypes
:
:
mjcRight
:
oNewMath
->
m_
oProperty
.
moMathParaPr
=
4
;
break
;
}
}
}
break
;
...
...
@@ -143,7 +143,7 @@ public:
{
OOX
::
Logic
::
CRSp
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CRSp
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
RowSpacing
=
ooxMath
->
m_val
->
GetValue
();
oNewMath
->
m_
oProperty
.
RowSpacing
=
ooxMath
->
m_val
->
GetValue
();
}
break
;
case
OOX
:
:
et_m_t
:
{
...
...
@@ -159,127 +159,127 @@ public:
{
OOX
::
Logic
::
CRSpRule
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CRSpRule
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
RowSpacingRule
=
ooxMath
->
m_val
->
GetValue
();
oNewMath
->
m_
oProperty
.
RowSpacingRule
=
ooxMath
->
m_val
->
GetValue
();
}
break
;
case
OOX
:
:
et_m_cGp
:
{
OOX
::
Logic
::
CCGp
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CCGp
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
())
oNewMath
->
oProperty
.
CellGap
=
ooxMath
->
m_val
->
GetValue
();
oNewMath
->
m_
oProperty
.
CellGap
=
ooxMath
->
m_val
->
GetValue
();
}
break
;
case
OOX
:
:
et_m_cGpRule
:
{
OOX
::
Logic
::
CCGpRule
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CCGpRule
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
CellGapRule
=
ooxMath
->
m_val
->
GetValue
();
oNewMath
->
m_
oProperty
.
CellGapRule
=
ooxMath
->
m_val
->
GetValue
();
}
break
;
case
OOX
:
:
et_m_cSp
:
{
OOX
::
Logic
::
CCSp
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CCSp
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
CellSpacing
=
ooxMath
->
m_val
->
GetValue
();
oNewMath
->
m_
oProperty
.
CellSpacing
=
ooxMath
->
m_val
->
GetValue
();
}
break
;
case
OOX
:
:
et_m_hideLeft
:
{
OOX
::
Logic
::
CHideLeft
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CHideLeft
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
HideLeft
=
ooxMath
->
m_val
->
ToBool
();
oNewMath
->
m_
oProperty
.
HideLeft
=
ooxMath
->
m_val
->
ToBool
();
}
break
;
case
OOX
:
:
et_m_hideTop
:
{
OOX
::
Logic
::
CHideTop
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CHideTop
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
HideTop
=
ooxMath
->
m_val
->
ToBool
();
oNewMath
->
m_
oProperty
.
HideTop
=
ooxMath
->
m_val
->
ToBool
();
}
break
;
case
OOX
:
:
et_m_hideRight
:
{
OOX
::
Logic
::
CHideRight
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CHideRight
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
HideRight
=
ooxMath
->
m_val
->
ToBool
();
oNewMath
->
m_
oProperty
.
HideRight
=
ooxMath
->
m_val
->
ToBool
();
}
break
;
case
OOX
:
:
et_m_hideBot
:
{
OOX
::
Logic
::
CHideBot
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CHideBot
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
HideBottom
=
ooxMath
->
m_val
->
ToBool
();
oNewMath
->
m_
oProperty
.
HideBottom
=
ooxMath
->
m_val
->
ToBool
();
}
break
;
case
OOX
:
:
et_m_strikeH
:
{
OOX
::
Logic
::
CStrikeH
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CStrikeH
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
StrikeHor
=
ooxMath
->
m_val
->
ToBool
();
oNewMath
->
m_
oProperty
.
StrikeHor
=
ooxMath
->
m_val
->
ToBool
();
}
break
;
case
OOX
:
:
et_m_strikeV
:
{
OOX
::
Logic
::
CStrikeV
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CStrikeV
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
StrikeVer
=
ooxMath
->
m_val
->
ToBool
();
oNewMath
->
m_
oProperty
.
StrikeVer
=
ooxMath
->
m_val
->
ToBool
();
}
break
;
case
OOX
:
:
et_m_strikeTLBR
:
{
OOX
::
Logic
::
CStrikeTLBR
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CStrikeTLBR
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
StrikeLR
=
ooxMath
->
m_val
->
ToBool
();
oNewMath
->
m_
oProperty
.
StrikeLR
=
ooxMath
->
m_val
->
ToBool
();
}
break
;
case
OOX
:
:
et_m_strikeBLTR
:
{
OOX
::
Logic
::
CStrikeBLTR
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CStrikeBLTR
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
StrikeRL
=
ooxMath
->
m_val
->
ToBool
();
oNewMath
->
m_
oProperty
.
StrikeRL
=
ooxMath
->
m_val
->
ToBool
();
}
break
;
case
OOX
:
:
et_m_aln
:
{
OOX
::
Logic
::
CAln
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CAln
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
Alignment
=
ooxMath
->
m_val
->
ToBool
();
oNewMath
->
m_
oProperty
.
Alignment
=
ooxMath
->
m_val
->
ToBool
();
}
break
;
case
OOX
:
:
et_m_diff
:
{
OOX
::
Logic
::
CDiff
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CDiff
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
Differential
=
ooxMath
->
m_val
->
ToBool
();
oNewMath
->
m_
oProperty
.
Differential
=
ooxMath
->
m_val
->
ToBool
();
}
break
;
case
OOX
:
:
et_m_noBreak
:
{
OOX
::
Logic
::
CNoBreak
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CNoBreak
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
NoBreak
=
ooxMath
->
m_val
->
ToBool
();
oNewMath
->
m_
oProperty
.
NoBreak
=
ooxMath
->
m_val
->
ToBool
();
}
break
;
case
OOX
:
:
et_m_opEmu
:
{
OOX
::
Logic
::
COpEmu
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
COpEmu
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
Emulator
=
ooxMath
->
m_val
->
ToBool
();
oNewMath
->
m_
oProperty
.
Emulator
=
ooxMath
->
m_val
->
ToBool
();
}
break
;
case
OOX
:
:
et_m_show
:
{
OOX
::
Logic
::
CShow
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CShow
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
mshow
=
ooxMath
->
m_val
->
ToBool
();
oNewMath
->
m_
oProperty
.
mshow
=
ooxMath
->
m_val
->
ToBool
();
}
break
;
case
OOX
:
:
et_m_transp
:
{
OOX
::
Logic
::
CTransp
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CTransp
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
mtransp
=
ooxMath
->
m_val
->
ToBool
();
oNewMath
->
m_
oProperty
.
mtransp
=
ooxMath
->
m_val
->
ToBool
();
}
case
OOX
:
:
et_m_zeroAsc
:
{
OOX
::
Logic
::
CZeroAsc
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CZeroAsc
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
mzeroAsc
=
ooxMath
->
m_val
->
ToBool
();
oNewMath
->
m_
oProperty
.
mzeroAsc
=
ooxMath
->
m_val
->
ToBool
();
}
break
;
case
OOX
:
:
et_m_zeroDesc
:
{
OOX
::
Logic
::
CZeroDesc
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CZeroDesc
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
mzeroDesc
=
ooxMath
->
m_val
->
ToBool
();
oNewMath
->
m_
oProperty
.
mzeroDesc
=
ooxMath
->
m_val
->
ToBool
();
}
case
OOX
:
:
et_m_zeroWid
:
{
OOX
::
Logic
::
CZeroWid
*
ooxMath
=
dynamic_cast
<
OOX
::
Logic
::
CZeroWid
*>
(
m_ooxElem
->
m_arrItems
[
i
]);
if
(
ooxMath
->
m_val
.
IsInit
()
)
oNewMath
->
oProperty
.
mzeroWid
=
ooxMath
->
m_val
->
ToBool
();
oNewMath
->
m_
oProperty
.
mzeroWid
=
ooxMath
->
m_val
->
ToBool
();
}
break
;
default:
{
...
...
ASCOfficeRtfFile/RtfFormatLib/source/RtfChar.h
View file @
e6ee6861
...
...
@@ -6,89 +6,97 @@
class
RtfAbsPosTab
:
public
IDocumentElement
{
public:
typedef
enum
{
l_none
,
l_ptablnone
,
//\ptablnone Absolute position tab with a blank leading (default).
l_ptabldot
,
//\ptabldot Absolute position tab with a leading that uses period symbols (.....).
l_ptablminus
,
//\ptablminus Absolute position tab with a leading that uses minus symbols (-----).
l_ptabluscore
,
//\ptabluscore Absolute position tab with a leading that uses underscore symbols (_____).
l_ptablmdot
,
//\ptablmdot Absolute position tab with a leading that uses middle dot symbols (•••••).
}
Leader
;
public:
Leader
m_eLeader
;
public:
typedef
enum
{
a_none
,
a_left
,
a_center
,
a_right
,
}
Alignment
;
public:
Alignment
m_eAlignment
;
public:
typedef
enum
{
r_none
,
r_margin
,
r_indent
,
}
Relative
;
public:
Relative
m_eRelative
;
public:
enum
Leader
{
l_none
,
l_ptablnone
,
//\ptablnone Absolute position tab with a blank leading (default).
l_ptabldot
,
//\ptabldot Absolute position tab with a leading that uses period symbols (.....).
l_ptablminus
,
//\ptablminus Absolute position tab with a leading that uses minus symbols (-----).
l_ptabluscore
,
//\ptabluscore Absolute position tab with a leading that uses underscore symbols (_____).
l_ptablmdot
,
//\ptablmdot Absolute position tab with a leading that uses middle dot symbols (•••••).
}
;
enum
Alignment
{
a_none
,
a_left
,
a_center
,
a_right
,
};
enum
Relative
{
r_none
,
r_margin
,
r_indent
,
}
;
public:
RtfAbsPosTab
()
Leader
m_eLeader
;
Alignment
m_eAlignment
;
Relative
m_eRelative
;
RtfAbsPosTab
()
{
}
bool
IsValid
()
{
return
a_none
!=
m_eAlignment
&&
r_none
!=
m_eRelative
;
}
CString
RenderToRtf
(
RenderParameter
oRenderParameter
)
{
CString
sResult
;
switch
(
m_eLeader
)
{
case
l_ptablnone
:
sResult
.
Append
(
_T
(
"
\\
ptablnone"
));
break
;
case
l_ptabldot
:
sResult
.
Append
(
_T
(
"
\\
ptabldot"
));
break
;
case
l_ptablminus
:
sResult
.
Append
(
_T
(
"
\\
ptablminus"
));
break
;
case
l_ptabluscore
:
sResult
.
Append
(
_T
(
"
\\
ptabluscore"
));
break
;
case
l_ptablmdot
:
sResult
.
Append
(
_T
(
"
\\
ptablmdo"
));
break
;
}
public:
bool
IsValid
(
)
switch
(
m_eRelative
)
{
return
a_none
!=
m_eAlignment
&&
r_none
!=
m_eRelative
;
case
r_margin
:
sResult
.
Append
(
_T
(
"
\\
pmartabq"
));
break
;
case
r_indent
:
sResult
.
Append
(
_T
(
"
\\
pindtabq"
));
break
;
}
public:
CString
RenderToRtf
(
RenderParameter
oRenderParameter
)
switch
(
m_eAlignment
)
{
CString
sResult
;
switch
(
m_eLeader
)
{
case
l_ptablnone
:
sResult
.
Append
(
_T
(
"
\\
ptablnone"
));
break
;
case
l_ptabldot
:
sResult
.
Append
(
_T
(
"
\\
ptabldot"
));
break
;
case
l_ptablminus
:
sResult
.
Append
(
_T
(
"
\\
ptablminus"
));
break
;
case
l_ptabluscore
:
sResult
.
Append
(
_T
(
"
\\
ptabluscore"
));
break
;
case
l_ptablmdot
:
sResult
.
Append
(
_T
(
"
\\
ptablmdo"
));
break
;
}
switch
(
m_eRelative
)
{
case
r_margin
:
sResult
.
Append
(
_T
(
"
\\
pmartabq"
));
break
;
case
r_indent
:
sResult
.
Append
(
_T
(
"
\\
pindtabq"
));
break
;
}
switch
(
m_eAlignment
)
{
case
a_left
:
sResult
.
Append
(
_T
(
"l"
));
break
;
case
a_center
:
sResult
.
Append
(
_T
(
"c"
));
break
;
case
a_right
:
sResult
.
Append
(
_T
(
"r"
));
break
;
}
if
(
false
==
sResult
.
IsEmpty
()
)
sResult
=
_T
(
"{"
)
+
sResult
+
_T
(
"}"
);
return
sResult
;
case
a_left
:
sResult
.
Append
(
_T
(
"l"
));
break
;
case
a_center
:
sResult
.
Append
(
_T
(
"c"
));
break
;
case
a_right
:
sResult
.
Append
(
_T
(
"r"
));
break
;
}
public:
CString
RenderToOOX
(
RenderParameter
oRenderParameter
)
if
(
false
==
sResult
.
IsEmpty
()
)
sResult
=
_T
(
"{"
)
+
sResult
+
_T
(
"}"
);
return
sResult
;
}
CString
RenderToOOX
(
RenderParameter
oRenderParameter
)
{
CString
sResult
;
switch
(
m_eLeader
)
{
CString
sResult
;
switch
(
m_eLeader
)
{
case
l_ptablnone
:
sResult
.
Append
(
_T
(
" w:leader=
\"
none
\"
"
));
break
;
case
l_ptabldot
:
sResult
.
Append
(
_T
(
" w:leader=
\"
dot
\"
"
));
break
;
case
l_ptablminus
:
sResult
.
Append
(
_T
(
" w:leader=
\"
hyphen
\"
"
));
break
;
case
l_ptabluscore
:
sResult
.
Append
(
_T
(
" w:leader=
\"
underscore
\"
"
));
break
;
case
l_ptablmdot
:
sResult
.
Append
(
_T
(
" w:leader=
\"
middleDot
\"
"
));
break
;
}
switch
(
m_eRelative
)
{
case
r_margin
:
sResult
.
Append
(
_T
(
" w:relativeTo=
\"
margin
\"
"
));
break
;
case
r_indent
:
sResult
.
Append
(
_T
(
" w:relativeTo=
\"
indent
\"
"
));
break
;
}
switch
(
m_eAlignment
)
{
case
a_left
:
sResult
.
Append
(
_T
(
" w:alignment=
\"
left
\"
"
));
break
;
case
a_center
:
sResult
.
Append
(
_T
(
" w:alignment=
\"
center
\"
"
));
break
;
case
a_right
:
sResult
.
Append
(
_T
(
" w:alignment=
\"
right
\"
"
));
break
;
}
if
(
false
==
sResult
.
IsEmpty
()
)
sResult
=
_T
(
"<w:ptab"
)
+
sResult
+
_T
(
"/>"
);
return
sResult
;
case
l_ptablnone
:
sResult
.
Append
(
_T
(
" w:leader=
\"
none
\"
"
));
break
;
case
l_ptabldot
:
sResult
.
Append
(
_T
(
" w:leader=
\"
dot
\"
"
));
break
;
case
l_ptablminus
:
sResult
.
Append
(
_T
(
" w:leader=
\"
hyphen
\"
"
));
break
;
case
l_ptabluscore
:
sResult
.
Append
(
_T
(
" w:leader=
\"
underscore
\"
"
));
break
;
case
l_ptablmdot
:
sResult
.
Append
(
_T
(
" w:leader=
\"
middleDot
\"
"
));
break
;
}
switch
(
m_eRelative
)
{
case
r_margin
:
sResult
.
Append
(
_T
(
" w:relativeTo=
\"
margin
\"
"
));
break
;
case
r_indent
:
sResult
.
Append
(
_T
(
" w:relativeTo=
\"
indent
\"
"
));
break
;
}
switch
(
m_eAlignment
)
{
case
a_left
:
sResult
.
Append
(
_T
(
" w:alignment=
\"
left
\"
"
));
break
;
case
a_center
:
sResult
.
Append
(
_T
(
" w:alignment=
\"
center
\"
"
));
break
;
case
a_right
:
sResult
.
Append
(
_T
(
" w:alignment=
\"
right
\"
"
));
break
;
}
if
(
false
==
sResult
.
IsEmpty
()
)
sResult
=
_T
(
"<w:ptab"
)
+
sResult
+
_T
(
"/>"
);
return
sResult
;
}
};
class
RtfCharSpecial
:
public
IDocumentElement
{
public:
typedef
enum
{
public:
typedef
enum
{
rsc_none
,
rsc_chdate
,
//\chdate Current date (as in headers).
rsc_chdpl
,
//\chdpl Current date in long format (for example, Wednesday, February 20, 2008).
...
...
@@ -120,182 +128,171 @@ public: typedef enum {
rsc_zwnbo
,
//\zwnbo Zero-width non-break opportunity. Used to remove break opportunity between two characters.
rsc_zwj
,
//\zwj Zero-width joiner. This is used for ligating (joining) characters.
rsc_zwnj
,
//\zwnj Zero-width nonjoiner. This is used for unligating a character.
}
RtfSpecChar
;
}
RtfSpecChar
;
public:
int
m_nTextWrapBreak
;
//\lbrN Text wrapping break of type
public:
int
m_nSoftHeight
;
//\softlheightN Nonrequired line height. This is emitted as a prefix to each line.
public:
RtfSpecChar
m_eType
;
public:
RtfCharProperty
m_oProperty
;
public:
RtfCharSpecial
()
int
m_nTextWrapBreak
;
//\lbrN Text wrapping break of type
int
m_nSoftHeight
;
//\softlheightN Nonrequired line height. This is emitted as a prefix to each line.
RtfSpecChar
m_eType
;
RtfCharProperty
m_oProperty
;
RtfCharSpecial
()
{
m_eType
=
rsc_none
;
m_nTextWrapBreak
=
PROP_DEF
;
m_nSoftHeight
=
PROP_DEF
;
}
CString
RenderToRtf
(
RenderParameter
oRenderParameter
)
{
CString
sResult
;
sResult
.
Append
(
_T
(
"{"
)
);
sResult
.
Append
(
m_oProperty
.
RenderToRtf
(
oRenderParameter
)
);
switch
(
m_eType
)
{
m_eType
=
rsc_none
;
m_nTextWrapBreak
=
PROP_DEF
;
m_nSoftHeight
=
PROP_DEF
;
case
rsc_chdate
:
sResult
.
Append
(
_T
(
"
\\
chdate"
)
);
break
;
case
rsc_chdpl
:
sResult
.
Append
(
_T
(
"
\\
chdpl"
)
);
break
;
case
rsc_chdpa
:
sResult
.
Append
(
_T
(
"
\\
chdpa"
)
);
break
;
case
rsc_chtime
:
sResult
.
Append
(
_T
(
"
\\
chtime"
)
);
break
;
case
rsc_chpgn
:
sResult
.
Append
(
_T
(
"
\\
chpgn"
)
);
break
;
case
rsc_sectnum
:
sResult
.
Append
(
_T
(
"
\\
sectnum"
)
);
break
;
case
rsc_chftn
:
sResult
.
Append
(
_T
(
"
\\
chftn"
)
);
break
;
case
rsc_chftnEnd
:
sResult
.
Append
(
_T
(
"
\\
chftn"
)
);
break
;
case
rsc_chatn
:
sResult
.
Append
(
_T
(
"
\\
chatn"
)
);
break
;
case
rsc_chftnsep
:
sResult
.
Append
(
_T
(
"
\\
chftnsep"
)
);
break
;
case
rsc_chftnsepc
:
sResult
.
Append
(
_T
(
"
\\
chftnsepc"
)
);
break
;
case
rsc_page
:
sResult
.
Append
(
_T
(
"
\\
page"
)
);
break
;
case
rsc_column
:
sResult
.
Append
(
_T
(
"
\\
column"
)
);
break
;
case
rsc_line
:
sResult
.
Append
(
_T
(
"
\\
line"
)
);
break
;
case
rsc_softpage
:
sResult
.
Append
(
_T
(
"
\\
softpage"
)
);
break
;
case
rsc_softcol
:
sResult
.
Append
(
_T
(
"
\\
softcol"
)
);
break
;
case
rsc_softline
:
sResult
.
Append
(
_T
(
"
\\
softline"
)
);
break
;
case
rsc_tab
:
sResult
.
Append
(
_T
(
"
\\
tab"
)
);
break
;
case
rsc_Formula
:
sResult
.
Append
(
_T
(
"
\\
|"
)
);
break
;
case
rsc_OptHyphen
:
sResult
.
Append
(
_T
(
"
\\
-"
)
);
break
;
case
rsc_NonBrHyphen
:
sResult
.
Append
(
_T
(
"
\\
_"
)
);
break
;
case
rsc_NonBrSpace
:
sResult
.
Append
(
_T
(
"
\\
~"
)
);
break
;
case
rsc_zwbo
:
sResult
.
Append
(
_T
(
"
\\
zwbo"
)
);
break
;
case
rsc_zwnbo
:
sResult
.
Append
(
_T
(
"
\\
zwnbo"
)
);
break
;
case
rsc_zwj
:
sResult
.
Append
(
_T
(
"
\\
zwj"
)
);
break
;
case
rsc_zwnj
:
sResult
.
Append
(
_T
(
"
\\
zwnj"
)
);
break
;
}
public:
CString
RenderToRtf
(
RenderParameter
oRenderParameter
)
if
(
PROP_DEF
!=
m_nTextWrapBreak
)
sResult
.
Append
(
_T
(
"
\\
par"
)
);
//switch ( m_nTextWrapBreak ) //не воспринимается word
//{
// case 0: sResult.Append( _T("\\lbr0") );break;
// case 1: sResult.Append( _T("\\lbr1") );break;
// case 2: sResult.Append( _T("\\lbr2") );break;
// case 3: sResult.Append( _T("\\lbr3") );break;
//}
if
(
PROP_DEF
!=
m_nSoftHeight
)
{
CString
sResult
;
sResult
.
Append
(
_T
(
"{"
)
);
sResult
.
Append
(
m_oProperty
.
RenderToRtf
(
oRenderParameter
)
);
switch
(
m_eType
)
{
case
rsc_chdate
:
sResult
.
Append
(
_T
(
"
\\
chdate"
)
);
break
;
case
rsc_chdpl
:
sResult
.
Append
(
_T
(
"
\\
chdpl"
)
);
break
;
case
rsc_chdpa
:
sResult
.
Append
(
_T
(
"
\\
chdpa"
)
);
break
;
case
rsc_chtime
:
sResult
.
Append
(
_T
(
"
\\
chtime"
)
);
break
;
case
rsc_chpgn
:
sResult
.
Append
(
_T
(
"
\\
chpgn"
)
);
break
;
case
rsc_sectnum
:
sResult
.
Append
(
_T
(
"
\\
sectnum"
)
);
break
;
case
rsc_chftn
:
sResult
.
Append
(
_T
(
"
\\
chftn"
)
);
break
;
case
rsc_chftnEnd
:
sResult
.
Append
(
_T
(
"
\\
chftn"
)
);
break
;
case
rsc_chatn
:
sResult
.
Append
(
_T
(
"
\\
chatn"
)
);
break
;
case
rsc_chftnsep
:
sResult
.
Append
(
_T
(
"
\\
chftnsep"
)
);
break
;
case
rsc_chftnsepc
:
sResult
.
Append
(
_T
(
"
\\
chftnsepc"
)
);
break
;
case
rsc_page
:
sResult
.
Append
(
_T
(
"
\\
page"
)
);
break
;
case
rsc_column
:
sResult
.
Append
(
_T
(
"
\\
column"
)
);
break
;
case
rsc_line
:
sResult
.
Append
(
_T
(
"
\\
line"
)
);
break
;
case
rsc_softpage
:
sResult
.
Append
(
_T
(
"
\\
softpage"
)
);
break
;
case
rsc_softcol
:
sResult
.
Append
(
_T
(
"
\\
softcol"
)
);
break
;
case
rsc_softline
:
sResult
.
Append
(
_T
(
"
\\
softline"
)
);
break
;
case
rsc_tab
:
sResult
.
Append
(
_T
(
"
\\
tab"
)
);
break
;
case
rsc_Formula
:
sResult
.
Append
(
_T
(
"
\\
|"
)
);
break
;
case
rsc_OptHyphen
:
sResult
.
Append
(
_T
(
"
\\
-"
)
);
break
;
case
rsc_NonBrHyphen
:
sResult
.
Append
(
_T
(
"
\\
_"
)
);
break
;
case
rsc_NonBrSpace
:
sResult
.
Append
(
_T
(
"
\\
~"
)
);
break
;
case
rsc_zwbo
:
sResult
.
Append
(
_T
(
"
\\
zwbo"
)
);
break
;
case
rsc_zwnbo
:
sResult
.
Append
(
_T
(
"
\\
zwnbo"
)
);
break
;
case
rsc_zwj
:
sResult
.
Append
(
_T
(
"
\\
zwj"
)
);
break
;
case
rsc_zwnj
:
sResult
.
Append
(
_T
(
"
\\
zwnj"
)
);
break
;
}
if
(
PROP_DEF
!=
m_nTextWrapBreak
)
sResult
.
Append
(
_T
(
"
\\
par"
)
);
//switch ( m_nTextWrapBreak ) //не воспринимается word
//{
// case 0: sResult.Append( _T("\\lbr0") );break;
// case 1: sResult.Append( _T("\\lbr1") );break;
// case 2: sResult.Append( _T("\\lbr2") );break;
// case 3: sResult.Append( _T("\\lbr3") );break;
//}
if
(
PROP_DEF
!=
m_nSoftHeight
)
{
sResult
.
AppendFormat
(
_T
(
"
\\
softlheight%d"
),
m_nSoftHeight
);
}
sResult
.
Append
(
_T
(
"}"
)
);
return
sResult
;
sResult
.
AppendFormat
(
_T
(
"
\\
softlheight%d"
),
m_nSoftHeight
);
}
public:
CString
_RenderToOOX
(
RenderParameter
oRenderParameter
)
sResult
.
Append
(
_T
(
"}"
)
);
return
sResult
;
}
CString
_RenderToOOX
(
RenderParameter
oRenderParameter
)
{
CString
sResult
;
switch
(
m_eType
)
{
CString
sResult
;
switch
(
m_eType
)
{
case
rsc_chdate
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_chdpl
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_chdpa
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_chtime
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_chpgn
:
sResult
.
Append
(
_T
(
"<w:pgNum />"
)
);
break
;
case
rsc_sectnum
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_chftn
:
sResult
.
Append
(
_T
(
"<w:footnoteRef/>"
)
);
break
;
case
rsc_chftnEnd
:
sResult
.
Append
(
_T
(
"<w:endnoteRef/>"
)
);
break
;
case
rsc_chatn
:
sResult
.
Append
(
_T
(
"<w:annotationRef />"
)
);
break
;
case
rsc_chftnsep
:
sResult
.
Append
(
_T
(
"<w:separator />"
)
);
break
;
case
rsc_chftnsepc
:
sResult
.
Append
(
_T
(
"<w:continuationSeparator/>"
)
);
break
;
case
rsc_page
:
sResult
.
Append
(
_T
(
"<w:br w:type=
\"
page
\"
/>"
)
);
break
;
case
rsc_column
:
sResult
.
Append
(
_T
(
"<w:br w:type=
\"
column
\"
/>"
)
);
break
;
case
rsc_line
:
sResult
.
Append
(
_T
(
"<w:br w:type=
\"
textWrapping
\"
w:clear=
\"
none
\"
/>"
)
);
break
;
case
rsc_softpage
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_softcol
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_softline
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_tab
:
sResult
.
Append
(
_T
(
"<w:tab/>"
)
);
break
;
case
rsc_emspace
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_qmspace
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_Formula
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_OptHyphen
:
sResult
.
Append
(
_T
(
"<w:t xml:space=
\"
preserve
\"
>-</w:t>"
)
);
break
;
//<w:softHyphen/>
case
rsc_NonBrHyphen
:
sResult
.
Append
(
_T
(
"<w:t xml:space=
\"
preserve
\"
>-</w:t>"
)
);
break
;
//<w:nonBreakHyphen/>
case
rsc_NonBrSpace
:
sResult
.
Append
(
_T
(
"<w:t xml:space=
\"
preserve
\"
> </w:t>"
)
);
break
;
case
rsc_zwbo
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_zwnbo
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_zwj
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_zwnj
:
sResult
.
Append
(
_T
(
""
)
);
break
;
}
switch
(
m_nTextWrapBreak
)
{
case
0
:
sResult
.
Append
(
_T
(
"<w:br w:type=
\"
textWrapping
\"
w:clear=
\"
none
\"
/>"
)
);
break
;
case
1
:
sResult
.
Append
(
_T
(
"<w:br w:type=
\"
textWrapping
\"
w:clear=
\"
left
\"
/>"
)
);
break
;
case
2
:
sResult
.
Append
(
_T
(
"<w:br w:type=
\"
textWrapping
\"
w:clear=
\"
right
\"
/>"
)
);
break
;
case
3
:
sResult
.
Append
(
_T
(
"<w:br w:type=
\"
textWrapping
\"
w:clear=
\"
all
\"
/>"
)
);
break
;
}
return
sResult
;
case
rsc_chdate
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_chdpl
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_chdpa
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_chtime
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_chpgn
:
sResult
.
Append
(
_T
(
"<w:pgNum />"
)
);
break
;
case
rsc_sectnum
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_chftn
:
sResult
.
Append
(
_T
(
"<w:footnoteRef/>"
)
);
break
;
case
rsc_chftnEnd
:
sResult
.
Append
(
_T
(
"<w:endnoteRef/>"
)
);
break
;
case
rsc_chatn
:
sResult
.
Append
(
_T
(
"<w:annotationRef />"
)
);
break
;
case
rsc_chftnsep
:
sResult
.
Append
(
_T
(
"<w:separator />"
)
);
break
;
case
rsc_chftnsepc
:
sResult
.
Append
(
_T
(
"<w:continuationSeparator/>"
)
);
break
;
case
rsc_page
:
sResult
.
Append
(
_T
(
"<w:br w:type=
\"
page
\"
/>"
)
);
break
;
case
rsc_column
:
sResult
.
Append
(
_T
(
"<w:br w:type=
\"
column
\"
/>"
)
);
break
;
case
rsc_line
:
sResult
.
Append
(
_T
(
"<w:br w:type=
\"
textWrapping
\"
w:clear=
\"
none
\"
/>"
)
);
break
;
case
rsc_softpage
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_softcol
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_softline
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_tab
:
sResult
.
Append
(
_T
(
"<w:tab/>"
)
);
break
;
case
rsc_emspace
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_qmspace
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_Formula
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_OptHyphen
:
sResult
.
Append
(
_T
(
"<w:t xml:space=
\"
preserve
\"
>-</w:t>"
)
);
break
;
//<w:softHyphen/>
case
rsc_NonBrHyphen
:
sResult
.
Append
(
_T
(
"<w:t xml:space=
\"
preserve
\"
>-</w:t>"
)
);
break
;
//<w:nonBreakHyphen/>
case
rsc_NonBrSpace
:
sResult
.
Append
(
_T
(
"<w:t xml:space=
\"
preserve
\"
> </w:t>"
)
);
break
;
case
rsc_zwbo
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_zwnbo
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_zwj
:
sResult
.
Append
(
_T
(
""
)
);
break
;
case
rsc_zwnj
:
sResult
.
Append
(
_T
(
""
)
);
break
;
}
public:
CString
RenderToOOX
(
RenderParameter
oRenderParameter
)
switch
(
m_nTextWrapBreak
)
{
CString
sResult
;
if
(
RENDER_TO_OOX_PARAM_RUN
==
oRenderParameter
.
nType
)
{
sResult
.
Append
(
_T
(
"<w:r>"
));
sResult
.
Append
(
_T
(
"<w:rPr>"
));
sResult
.
Append
(
m_oProperty
.
RenderToOOX
(
oRenderParameter
)
);
sResult
.
Append
(
_T
(
"</w:rPr>"
));
sResult
.
Append
(
_RenderToOOX
(
oRenderParameter
)
);
sResult
.
Append
(
_T
(
"</w:r>"
));
}
else
if
(
RENDER_TO_OOX_PARAM_TEXT
==
oRenderParameter
.
nType
||
RENDER_TO_OOX_PARAM_MATH
==
oRenderParameter
.
nType
||
RENDER_TO_OOX_PARAM_PLAIN
==
oRenderParameter
.
nType
)
sResult
.
Append
(
_RenderToOOX
(
oRenderParameter
)
);
return
sResult
;
case
0
:
sResult
.
Append
(
_T
(
"<w:br w:type=
\"
textWrapping
\"
w:clear=
\"
none
\"
/>"
)
);
break
;
case
1
:
sResult
.
Append
(
_T
(
"<w:br w:type=
\"
textWrapping
\"
w:clear=
\"
left
\"
/>"
)
);
break
;
case
2
:
sResult
.
Append
(
_T
(
"<w:br w:type=
\"
textWrapping
\"
w:clear=
\"
right
\"
/>"
)
);
break
;
case
3
:
sResult
.
Append
(
_T
(
"<w:br w:type=
\"
textWrapping
\"
w:clear=
\"
all
\"
/>"
)
);
break
;
}
return
sResult
;
}
CString
RenderToOOX
(
RenderParameter
oRenderParameter
)
{
CString
sResult
;
if
(
RENDER_TO_OOX_PARAM_RUN
==
oRenderParameter
.
nType
)
{
sResult
.
Append
(
_T
(
"<w:r>"
));
sResult
.
Append
(
_T
(
"<w:rPr>"
));
sResult
.
Append
(
m_oProperty
.
RenderToOOX
(
oRenderParameter
)
);
sResult
.
Append
(
_T
(
"</w:rPr>"
));
sResult
.
Append
(
_RenderToOOX
(
oRenderParameter
)
);
sResult
.
Append
(
_T
(
"</w:r>"
));
}
else
if
(
RENDER_TO_OOX_PARAM_TEXT
==
oRenderParameter
.
nType
||
RENDER_TO_OOX_PARAM_MATH
==
oRenderParameter
.
nType
||
RENDER_TO_OOX_PARAM_PLAIN
==
oRenderParameter
.
nType
)
sResult
.
Append
(
_RenderToOOX
(
oRenderParameter
)
);
return
sResult
;
}
};
typedef
boost
::
shared_ptr
<
RtfCharSpecial
>
RtfCharSpecialPtr
;
class
RtfChar
:
public
IDocumentElement
{
public:
RtfChar
()
{
m_bRtfEncode
=
true
;
}
protected:
CString
m_sChars
;
public:
RtfCharProperty
m_oProperty
;
public:
bool
m_bRtfEncode
;
public:
RtfChar
()
{
m_bRtfEncode
=
true
;
}
RtfCharProperty
m_oProperty
;
bool
m_bRtfEncode
;
public:
int
GetType
()
{
return
TYPE_RTF_CHAR
;
}
public:
void
AddText
(
CString
text
)
{
m_sChars
.
Append
(
text
);
}
public:
void
setText
(
CString
text
)
{
m_sChars
=
text
;
}
public:
CString
GetText
()
{
return
m_sChars
;
}
private:
CString
renderTextToXML
(
CString
sParam
)
{
CString
sResult
;
if
(
_T
(
"Text"
)
==
sParam
)
{
sResult
.
AppendFormat
(
_T
(
"<w:t xml:space=
\"
preserve
\"
>%ls</w:t>"
),
Utils
::
PrepareToXML
(
m_sChars
).
GetBuffer
()
);
}
else
if
(
_T
(
"Math"
)
==
sParam
)
{
sResult
.
AppendFormat
(
_T
(
"<m:t xml:space=
\"
preserve
\"
>%ls</m:t>"
),
Utils
::
PrepareToXML
(
m_sChars
).
GetBuffer
());
}
return
sResult
;
}
public:
int
GetType
()
{
return
TYPE_RTF_CHAR
;
}
void
AddText
(
CString
text
)
{
m_sChars
.
Append
(
text
);
}
void
setText
(
CString
text
)
{
m_sChars
=
text
;
}
CString
GetText
()
{
return
m_sChars
;
}
CString
RenderToOOX
(
RenderParameter
oRenderParameter
)
{
CString
sResult
;
if
(
RENDER_TO_OOX_PARAM_RUN
==
oRenderParameter
.
nType
)
{
sResult
.
Append
(
_T
(
"<w:r>"
));
sResult
.
Append
(
_T
(
"<w:rPr>"
));
sResult
.
Append
(
m_oProperty
.
RenderToOOX
(
oRenderParameter
)
);
sResult
.
Append
(
_T
(
"</w:rPr>"
));
sResult
.
Append
(
renderTextToXML
(
_T
(
"Text"
))
);
sResult
.
Append
(
_T
(
"<w:rPr>"
));
sResult
.
Append
(
m_oProperty
.
RenderToOOX
(
oRenderParameter
)
);
sResult
.
Append
(
_T
(
"</w:rPr>"
));
sResult
.
Append
(
renderTextToXML
(
_T
(
"Text"
))
);
sResult
.
Append
(
_T
(
"</w:r>"
));
}
else
if
(
RENDER_TO_OOX_PARAM_TEXT
==
oRenderParameter
.
nType
)
...
...
@@ -336,29 +333,50 @@ public:
}
return
result
;
}
private:
CString
renderTextToXML
(
CString
sParam
)
{
CString
sResult
;
if
(
_T
(
"Text"
)
==
sParam
)
{
sResult
.
Append
(
_T
(
"<w:t xml:space=
\"
preserve
\"
>"
));
sResult
+=
Utils
::
PrepareToXML
(
m_sChars
);
sResult
.
Append
(
_T
(
"</w:t>"
));
}
else
if
(
_T
(
"Math"
)
==
sParam
&&
!
m_sChars
.
IsEmpty
())
{
sResult
.
Append
(
_T
(
"<m:r>"
));
sResult
.
Append
(
_T
(
"<m:t>"
));
sResult
+=
Utils
::
PrepareToXML
(
m_sChars
);
sResult
.
Append
(
_T
(
"</m:t>"
));
sResult
.
Append
(
_T
(
"</m:r>"
));
}
return
sResult
;
}
};
class
RtfCharNative
:
public
RtfChar
{
public:
CString
RenderToRtf
(
RenderParameter
oRenderParameter
)
public:
CString
RenderToRtf
(
RenderParameter
oRenderParameter
)
{
CString
result
;
if
(
RENDER_TO_RTF_PARAM_CHAR
==
oRenderParameter
.
nType
)
{
CString
result
;
if
(
RENDER_TO_RTF_PARAM_CHAR
==
oRenderParameter
.
nType
)
{
result
=
m_sChars
;
}
else
result
=
m_sChars
;
}
else
{
CString
sText
=
m_sChars
;
if
(
_T
(
""
)
!=
sText
)
{
CString
sText
=
m_sChars
;
if
(
_T
(
""
)
!=
sText
)
{
result
.
Append
(
_T
(
"{"
));
result
.
Append
(
m_oProperty
.
RenderToRtf
(
oRenderParameter
)
);
result
.
Append
(
_T
(
" "
)
+
sText
);
result
.
Append
(
_T
(
"}"
));
}
result
.
Append
(
_T
(
"{"
));
result
.
Append
(
m_oProperty
.
RenderToRtf
(
oRenderParameter
)
);
result
.
Append
(
_T
(
" "
)
+
sText
);
result
.
Append
(
_T
(
"}"
));
}
return
result
;
}
return
result
;
}
};
typedef
boost
::
shared_ptr
<
RtfCharNative
>
RtfCharNativePtr
;
typedef
boost
::
shared_ptr
<
RtfChar
>
RtfCharPtr
;
ASCOfficeRtfFile/RtfFormatLib/source/RtfDocument.cpp
View file @
e6ee6861
...
...
@@ -16,15 +16,15 @@ RtfDocument::RtfDocument()
m_oDefaultParagraphProp
.
SetDefaultRtf
();
}
int
RtfDocument
::
GetType
()
{
return
TYPE_RTF_DOCUMENT
;
}
{
return
TYPE_RTF_DOCUMENT
;
}
CString
RtfDocument
::
RenderToRtf
(
RenderParameter
oRenderParameter
)
{
return
_T
(
""
);
}
{
return
_T
(
""
);
}
CString
RtfDocument
::
RenderToOOX
(
RenderParameter
oRenderParameter
)
{
return
_T
(
""
);
}
\ No newline at end of file
{
return
_T
(
""
);
}
\ No newline at end of file
ASCOfficeRtfFile/RtfFormatLib/source/RtfMath.h
View file @
e6ee6861
...
...
@@ -6,15 +6,22 @@
class
RtfMath
:
public
IDocumentElement
,
public
ItemContainer
<
IDocumentElementPtr
>
{
private:
CString
m_sRtfName
;
CString
m_sOOXName
;
CString
m_sRtfName
;
CString
m_sOOXName
;
public:
RtfMathSpecProp
oProperty
;
RtfParagraph
m_oVal
;
RtfShapePtr
m_oPicture
;
bool
m_bHeader
;
//чтобы отличать заголовок от вложенных групп
bool
m_bIsVal
;
bool
m_bIsBool
;
RtfMathSpecProp
m_oProperty
;
RtfParagraph
m_oVal
;
RtfShapePtr
m_oPicture
;
RtfMath
(
)
{
m_bHeader
=
true
;
m_bIsVal
=
m_bIsBool
=
false
;
}
RtfMath
(
const
RtfMath
&
oMath
)
{
...
...
@@ -22,16 +29,16 @@ public:
}
RtfMath
&
operator
=
(
const
RtfMath
&
oMath
)
{
m_sRtfName
=
oMath
.
m_sRtfName
;
m_sOOXName
=
oMath
.
m_sOOXName
;
m_bHeader
=
oMath
.
m_bHeader
;
m_bIsVal
=
oMath
.
m_bIsVal
;
m_bIsBool
=
oMath
.
m_bIsBool
;
m_sRtfName
=
oMath
.
m_sRtfName
;
m_sOOXName
=
oMath
.
m_sOOXName
;
m_aArray
.
clear
();
m_aArray
=
oMath
.
m_aArray
;
//for( int i = 0; i < oMath.m_aArray.size(); i++ )
//{
// RtfMath* oCopyMath = new RtfMath();
// (*oCopyMath) = (*oMath.m_aArray[i]);
// m_aArray.push_back( oCopyMath );
//}
m_aArray
=
oMath
.
m_aArray
;
return
(
*
this
);
}
bool
IsEmpty
()
...
...
@@ -42,9 +49,46 @@ public:
{
return
(
false
==
m_sRtfName
.
IsEmpty
());
}
static
bool
IsRtfControlPropertyBool
(
CString
sControlW
)
{
const
TCHAR
*
mc_aRtfControlWords
[]
=
{
L"maln"
,
L"malnScr"
,
L"mdegHide"
,
L"mdiff"
,
L"mdispDef"
,
L"mgrow"
,
L"mhideBot"
,
L"mhideLeft"
,
L"mhideRight"
,
L"mhideTop"
,
L"mlit"
,
L"mmaxDist"
,
L"mnoBreak"
,
L"mnor"
,
L"mobjDist"
,
L"mopEmu"
,
L"mplcHide"
,
L"mshow"
,
L"msmallFracN"
,
L"mstrikeBLTR"
,
L"mstrikeH"
,
L"mstrikeTLBR"
,
L"mstrikeV"
,
L"msubHide"
,
L"msupHide"
,
L"mtransp"
,
L"mwrapRight"
,
L"mzeroAsc"
,
L"mzeroDesc"
,
L"mzeroWid"
};
int
mc_nRtfControlWordsSize
=
sizeof
(
mc_aRtfControlWords
)
/
sizeof
(
TCHAR
*
);
//можно бинарный поиск вставить
for
(
int
i
=
0
;
i
<
mc_nRtfControlWordsSize
;
i
++
)
if
(
mc_aRtfControlWords
[
i
]
==
sControlW
)
return
true
;
return
false
;
}
static
bool
IsRtfControlProperty
(
CString
sControlW
)
{
const
TCHAR
*
mc_aRtfControlWords
[]
=
{
L"margSz"
,
L"mbaseJc"
,
L"mbegChr"
,
L"mbrkBin"
,
L"mbrkBinSub"
,
L"mcGp"
,
L"mcGpRule"
,
L"mchr"
,
L"mcount"
,
L"mcSp"
,
L"mdefJc"
,
L"mendChr"
,
L"minterSp"
,
L"mintLim"
,
L"mintraSp"
,
L"mmJc"
,
L"mlimLoc"
,
L"mlMargin"
,
L"mmcJc"
,
L"mnaryLim"
,
L"mpos"
,
L"mpostSp"
,
L"mpreSp"
,
L"mrMargin"
,
L"mrSp"
,
L"mrSpRule"
,
L"msepChr"
,
L"mshp"
,
L"mtype"
,
L"mvertJc"
,
L"mwrapIndent"
,
L"mmathFont"
};
int
mc_nRtfControlWordsSize
=
sizeof
(
mc_aRtfControlWords
)
/
sizeof
(
TCHAR
*
);
//можно бинарный поиск вставить
for
(
int
i
=
0
;
i
<
mc_nRtfControlWordsSize
;
i
++
)
if
(
mc_aRtfControlWords
[
i
]
==
sControlW
)
return
true
;
return
false
;
}
static
bool
IsRtfControlWord
(
CString
sControlW
)
{
const
TCHAR
*
mc_aRtfControlWords
[]
=
{
_T
(
"macc"
),
_T
(
"maccPr"
),
_T
(
"maln"
),
_T
(
"malnScr"
),
_T
(
"margPr"
),
_T
(
"margSz"
),
_T
(
"mbar"
),
_T
(
"mbarPr"
),
_T
(
"mbaseJc"
),
_T
(
"mbegChr"
),
_T
(
"mborderBox"
),
_T
(
"mborderBoxPr"
),
_T
(
"mbox"
),
_T
(
"mboxPr"
),
_T
(
"mbrkN"
),
_T
(
"mbrkBinN"
),
_T
(
"mbrkBinSubN"
),
_T
(
"mcGpN"
),
_T
(
"mcGpRuleN"
),
_T
(
"mchr"
),
_T
(
"mcount"
),
_T
(
"mcSpN"
),
_T
(
"mctrlPr"
),
_T
(
"md"
),
_T
(
"mdefJcN"
),
_T
(
"mdeg"
),
_T
(
"mdegHide"
),
_T
(
"mden"
),
_T
(
"mdiff"
),
_T
(
"mdiffStyN"
),
_T
(
"mdispDefN"
),
_T
(
"mdPr"
),
_T
(
"me"
),
_T
(
"mendChr"
),
_T
(
"meqArr"
),
_T
(
"meqArrPr"
),
_T
(
"mf"
),
_T
(
"mfName"
),
_T
(
"mfPr"
),
_T
(
"mfunc"
),
_T
(
"mfuncPr"
),
_T
(
"mgroupChr"
),
_T
(
"mgroupChrPr"
),
_T
(
"mgrow"
),
_T
(
"mhideBot"
),
_T
(
"mhideLeft"
),
_T
(
"mhideRight"
),
_T
(
"mhideTop"
),
_T
(
"minterSpN"
),
_T
(
"mintLimN"
),
_T
(
"mintraSpN"
),
_T
(
"mjcN"
),
_T
(
"mlim"
),
_T
(
"mlimLoc"
),
_T
(
"mlimLow"
),
_T
(
"mlimLowPr"
),
_T
(
"mlimUpp"
),
_T
(
"mlimUppPr"
),
_T
(
"mlit"
),
_T
(
"mlMarginN"
),
_T
(
"mm"
),
_T
(
"mmath"
),
_T
(
"mmathFontN"
),
_T
(
"mmathPict"
),
_T
(
"mmathPr"
),
_T
(
"mmaxDist"
),
_T
(
"mmc"
),
_T
(
"mmcJc"
),
_T
(
"mmcPr"
),
_T
(
"mmcs"
),
_T
(
"mmPr"
),
_T
(
"mmr"
),
_T
(
"mnary"
),
_T
(
"mnaryLimN"
),
_T
(
"mnaryPr"
),
_T
(
"mnoBreak"
),
_T
(
"mnor"
),
_T
(
"mnum"
),
_T
(
"mobjDist"
),
_T
(
"moMath"
),
_T
(
"moMathPara"
),
_T
(
"moMathParaPr"
),
_T
(
"mopEmu"
),
_T
(
"mphant"
),
_T
(
"mphantPr"
),
_T
(
"mplcHide"
),
_T
(
"mpos"
),
_T
(
"mpostSpN"
),
_T
(
"mpreSpN"
),
_T
(
"mr"
),
_T
(
"mrad"
),
_T
(
"mradPr"
),
_T
(
"mrMarginN"
),
_T
(
"mrPr"
),
_T
(
"mrSpN"
),
_T
(
"mrSpRuleN"
),
_T
(
"mscrN"
),
_T
(
"msepChr"
),
_T
(
"mshow"
),
_T
(
"mshp"
),
_T
(
"msmallFracN"
),
_T
(
"msPre"
),
_T
(
"msPrePr"
),
_T
(
"msSub"
),
_T
(
"msSubPr"
),
_T
(
"msSubSup"
),
_T
(
"msSubSupPr"
),
_T
(
"msSup"
),
_T
(
"msSupPr"
),
_T
(
"mstrikeBLTR"
),
_T
(
"mstrikeH"
),
_T
(
"mstrikeTLBR"
),
_T
(
"mstrikeV"
),
_T
(
"mstyN"
),
_T
(
"msub"
),
_T
(
"msubHide"
),
_T
(
"msup"
),
_T
(
"msupHide"
),
_T
(
"mtransp"
),
_T
(
"mtype"
),
_T
(
"mvertJc"
),
_T
(
"mwrapIndentN"
),
_T
(
"mwrapRightN"
),
_T
(
"mzeroAsc"
),
_T
(
"mzeroDesc"
),
_T
(
"mzeroWid"
)};
const
TCHAR
*
mc_aRtfControlWords
[]
=
{
L"moMath"
,
L"moMathPara"
,
L"moMathParaPr"
,
L"maccPr"
,
L"macc"
,
L"me"
,
L"mctrlPr"
,
L"margPr"
,
L"mbarPr"
,
L"mbar"
,
L"mborderBoxPr"
,
L"mborderBox"
,
L"mboxPr"
,
L"mbox"
/*, L"mbrk"*/
,
L"mdPr"
,
L"md"
,
L"meqArrPr"
,
L"meqArr"
,
L"mfPr"
,
L"mf"
,
L"mfuncPr"
,
L"mfunc"
,
L"mgroupChrPr"
,
L"mgroupChr"
,
L"mlimLowPr"
,
L"mlimLow"
,
L"mlimUppPr"
,
L"mlimUpp"
,
L"mmathPr"
,
L"mmcPr"
,
L"mmc"
,
L"mmcs"
,
L"mmPr"
,
L"mmr"
,
L"mm"
,
L"mnaryPr"
,
L"mnary"
,
L"mphantPr"
,
L"mphant"
,
L"mmRun"
,
L"mmDel"
,
L"mmIns"
,
L"mradPr"
,
L"mrad"
,
/*MRPr",*/
L"msPrePr"
,
L"msPre"
,
L"msSubPr"
,
L"msSub"
,
L"msSubSupPr"
,
L"msSubSup"
,
L"msSupPr"
,
L"msSup"
,
L"msub"
,
L"msup"
,
L"mden"
,
L"mlim"
,
L"mnum"
,
L"mdeg"
/*mmText",*/
,
L"mfName"
};
int
mc_nRtfControlWordsSize
=
sizeof
(
mc_aRtfControlWords
)
/
sizeof
(
TCHAR
*
);
//можно бинарный поиск вставить
...
...
@@ -86,7 +130,7 @@ public:
RenderParameter
oNewParameter
=
oRenderParameter
;
oNewParameter
.
nType
=
RENDER_TO_RTF_PARAM_UNKNOWN
;
sResult
.
Append
(
oProperty
.
RenderToRtf
(
oNewParameter
)
);
sResult
.
Append
(
m_
oProperty
.
RenderToRtf
(
oNewParameter
)
);
//if( _T("mr") == m_sRtfName )
//{
...
...
@@ -113,47 +157,63 @@ public:
CString
RenderToOOX
(
RenderParameter
oRenderParameter
)
{
CString
sResult
;
//#ifdef RTF_MATH_OOX
RenderParameter
oNewParam
=
oRenderParameter
;
sResult
.
Append
(
_T
(
"<"
)
);
sResult
+=
m_sOOXName
;
CString
sContent
;
CString
sProp
;
CString
sVal
;
RenderParameter
oNewParam
=
oRenderParameter
;
oNewParam
.
nType
=
RENDER_TO_OOX_PARAM_TEXT
;
CString
sProp
=
oProperty
.
RenderToOOX
(
oNewParam
);
oNewParam
.
nType
=
RENDER_TO_OOX_PARAM_MATH
;
//CString sVal = m_oVal.RenderToOOX( oNewParam );
//if( false == sVal.IsEmpty() )
//{
// sResult.Append( _T(" w:val=\"") );
// sResult += sVal;
// sResult.Append( _T("\"") );
//}
sResult
.
Append
(
_T
(
">"
)
);
sProp
=
m_oProperty
.
RenderToOOX
(
oNewParam
);
//oNewParam.nType = RENDER_TO_OOX_PARAM_PLAIN;
//sVal = m_oVal.RenderToOOX( oNewParam );
sResult
.
Append
(
sProp
);
if
(
m_aArray
.
size
()
==
1
)
sResult
.
Append
(
m_aArray
[
0
]
->
RenderToOOX
(
oNewParam
));
if
(
m_bIsVal
||
m_bIsBool
)
{
oNewParam
.
nType
=
RENDER_TO_OOX_PARAM_PLAIN
;
for
(
int
i
=
0
;
i
<
(
int
)
m_aArray
.
size
();
i
++
)
{
sVal
+=
m_aArray
[
i
]
->
RenderToOOX
(
oNewParam
);
}
}
else
{
for
(
int
i
=
1
;
i
<
(
int
)
m_aArray
.
size
();
i
++
)
oNewParam
.
nType
=
RENDER_TO_OOX_PARAM_MATH
;
for
(
int
i
=
0
;
i
<
(
int
)
m_aArray
.
size
();
i
++
)
{
s
Result
.
Append
(
m_aArray
[
i
]
->
RenderToOOX
(
oNewParam
)
);
s
Content
+=
m_aArray
[
i
]
->
RenderToOOX
(
oNewParam
);
}
}
sResult
.
Append
(
_T
(
"<"
)
);
sResult
+=
m_sOOXName
;
if
(
false
==
sVal
.
IsEmpty
()
)
{
if
(
m_bIsBool
)
{
if
(
sVal
==
L"on"
)
sVal
=
L"1"
;
else
sVal
=
L"0"
;
}
sResult
.
Append
(
_T
(
" m:val=
\"
"
)
);
sResult
+=
sVal
;
sResult
.
Append
(
_T
(
"
\"
"
)
);
}
sResult
.
Append
(
_T
(
">"
)
);
sResult
+=
sProp
;
sResult
+=
sContent
;
sResult
.
Append
(
_T
(
"</"
)
);
sResult
+=
m_sOOXName
;
sResult
.
Append
(
_T
(
">"
));
//#else
//альтернативная картинка
// if( NULL != m_oPicture )
// sResult.Append( m_oPicture->RenderToOOX(oRenderParameter) );
//#endif
return
sResult
;
}
};
...
...
ASCOfficeRtfFile/RtfFormatLib/source/RtfProperty.h
View file @
e6ee6861
...
...
@@ -3040,81 +3040,85 @@ public:
class
RtfMathProperty
:
public
IRenderableProperty
{
public:
int
mbrkBin
;
int
mbrkBinSub
;
int
mdefJc
;
int
mdispDef
;
int
minterSp
;
int
mintraSp
;
int
mlMargin
;
int
mmathFont
;
int
mnaryLim
;
int
mpostSp
;
int
mpreSp
;
int
mrMargin
;
int
msmallFrac
;
int
mwrapIndent
;
int
mwrapRight
;
RtfMathProperty
()
{
SetDefault
();
}
public:
int
mbrkBin
;
int
mbrkBinSub
;
int
mdefJc
;
int
mdispDef
;
int
minterSp
;
int
mintraSp
;
int
mlMargin
;
int
mmathFont
;
int
mnaryLim
;
int
mpostSp
;
int
mpreSp
;
int
mrMargin
;
int
msmallFrac
;
int
mwrapIndent
;
int
mwrapRight
;
int
mintLim
;
RtfMathProperty
()
{
SetDefault
();
}
// bool IsValid()
// {
// return PROP_DEF != mbrkBin || PROP_DEF != mbrkBinSub || PROP_DEF != mdispDef || PROP_DEF != minterSp ||
// PROP_DEF != mintraSp || PROP_DEF != mlMargin || PROP_DEF != mmathFont || PROP_DEF != mnaryLim ||
// PROP_DEF != mpostSp || PROP_DEF != mpreSp || PROP_DEF != mrMargin || PROP_DEF != msmallFrac ||
// PROP_DEF != mwrapIndent || PROP_DEF != mwrapRight ;
// }
void
SetDefaultRtf
()
{
SetDefault
();
}
void
SetDefaultOOX
()
{
SetDefault
();
}
void
SetDefault
()
{
DEFAULT_PROPERTY
(
mbrkBin
)
DEFAULT_PROPERTY
(
mbrkBinSub
)
mdefJc
=
1
;
//centered as a group
DEFAULT_PROPERTY
(
mdispDef
)
DEFAULT_PROPERTY
(
minterSp
)
DEFAULT_PROPERTY
(
mintraSp
)
DEFAULT_PROPERTY
(
mlMargin
)
DEFAULT_PROPERTY
(
mmathFont
)
DEFAULT_PROPERTY
(
mnaryLim
)
DEFAULT_PROPERTY
(
mpostSp
)
DEFAULT_PROPERTY
(
mpreSp
)
DEFAULT_PROPERTY
(
mrMargin
)
DEFAULT_PROPERTY
(
msmallFrac
)
DEFAULT_PROPERTY
(
mwrapIndent
)
DEFAULT_PROPERTY
(
mwrapRight
)
}
CString
RenderToRtf
(
RenderParameter
oRenderParameter
);
CString
RenderToOOX
(
RenderParameter
oRenderParameter
);
//bool IsValid()
//{
// return PROP_DEF != mbrkBin || PROP_DEF != mbrkBinSub || PROP_DEF != mdispDef || PROP_DEF != minterSp ||
// PROP_DEF != mintraSp || PROP_DEF != mlMargin || PROP_DEF != mmathFont || PROP_DEF != mnaryLim ||
// PROP_DEF != mpostSp || PROP_DEF != mpreSp || PROP_DEF != mrMargin || PROP_DEF != msmallFrac ||
// PROP_DEF != mwrapIndent || PROP_DEF != mwrapRight ;
//}
void
SetDefaultRtf
()
{
SetDefault
();
}
void
SetDefaultOOX
()
{
SetDefault
();
}
void
SetDefault
()
{
DEFAULT_PROPERTY
(
mintLim
)
DEFAULT_PROPERTY
(
mbrkBin
)
DEFAULT_PROPERTY
(
mbrkBinSub
)
mdefJc
=
1
;
//centered as a group
DEFAULT_PROPERTY
(
mdispDef
)
DEFAULT_PROPERTY
(
minterSp
)
DEFAULT_PROPERTY
(
mintraSp
)
DEFAULT_PROPERTY
(
mlMargin
)
DEFAULT_PROPERTY
(
mmathFont
)
DEFAULT_PROPERTY
(
mnaryLim
)
DEFAULT_PROPERTY
(
mpostSp
)
DEFAULT_PROPERTY
(
mpreSp
)
DEFAULT_PROPERTY
(
mrMargin
)
DEFAULT_PROPERTY
(
msmallFrac
)
DEFAULT_PROPERTY
(
mwrapIndent
)
DEFAULT_PROPERTY
(
mwrapRight
)
}
CString
RenderToRtf
(
RenderParameter
oRenderParameter
);
CString
RenderToOOX
(
RenderParameter
oRenderParameter
);
};
class
RtfMathSpecProp
:
public
IRenderableProperty
{
//moMathParaPr
public:
int
moMathParaPr
;
//moMath
int
Font
;
//mboxPr
int
Break
;
//meqArrPr
int
RowSpacing
;
int
RowSpacingRule
;
//mmPr
public:
int
moMathParaPr
;
//moMathParaPr
int
Font
;
//moMath
int
Break
;
//mboxPr
int
RowSpacing
;
//meqArrPr
int
RowSpacingRule
;
//mmPr
int
CellGap
;
int
CellGapRule
;
int
CellSpacing
;
//msSubSupPr
int
malnScr
;
//borderBoxPrp
int
HideLeft
;
int
malnScr
;
//msSubSupPr
int
HideLeft
;
//borderBoxPrp
int
HideTop
;
int
HideRight
;
int
HideBottom
;
...
...
@@ -3122,26 +3126,26 @@ public: int moMathParaPr;
int
StrikeVer
;
int
StrikeLR
;
int
StrikeRL
;
//boxPrp
int
Alignment
;
int
Alignment
;
//boxPrp
int
Differential
;
int
NoBreak
;
int
Emulator
;
//mrPr
int
NormalText
;
int
NormalText
;
//mrPr
int
mscr
;
int
msty
;
int
mlit
;
//phantPrp
int
mshow
;
int
mshow
;
//phantPrp
int
mtransp
;
int
mzeroAsc
;
int
mzeroDesc
;
int
mzeroWid
;
//mchr
int
mchr
;
//charProp
RtfCharProperty
m_oCharProp
;
int
mchr
;
//mchr
RtfCharProperty
m_oCharProp
;
//charProp
RtfMathSpecProp
()
{
...
...
ASCOfficeRtfFile/RtfFormatLib/source/RtfSection.cpp
View file @
e6ee6861
...
...
@@ -765,10 +765,10 @@ CString RtfSectionProperty::SaveFile( TextItemContainerPtr oTarget, RenderParame
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
()
);
RenderParameter
oNewParameter
=
oRenderParameter
;
OOXRelsWriterPtr
oNewRelsWr
=
OOXRelsWriterPtr
(
new
OOXRelsWriter
(
sFilename
,
*
poRtfDocument
)
);
RenderParameter
oNewParameter
=
oRenderParameter
;
OOXRelsWriterPtr
oNewRelsWr
=
OOXRelsWriterPtr
(
new
OOXRelsWriter
(
sFilename
,
*
poRtfDocument
)
);
poOOXWriter
->
m_oCustomRelsWriter
.
push_back
(
oNewRelsWr
);
oNewParameter
.
poRels
=
oNewRelsWr
.
get
();
oNewParameter
.
poRels
=
oNewRelsWr
.
get
();
sContent
.
Append
(
oTarget
->
RenderToOOX
(
oNewParameter
)
);
sContent
.
AppendFormat
(
_T
(
"</%ls>"
),
sRootName
.
GetBuffer
()
);
...
...
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