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
a7e3158c
Commit
a7e3158c
authored
Nov 30, 2016
by
ElenaSubbotina
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'release/v4.2.0' into develop
parents
b75495c4
329077ca
Changes
41
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
41 changed files
with
564 additions
and
417 deletions
+564
-417
ASCOfficeDocFile/DocDocxConverter/DocumentMapping.cpp
ASCOfficeDocFile/DocDocxConverter/DocumentMapping.cpp
+13
-12
ASCOfficeDocFile/DocDocxConverter/DocumentMapping.h
ASCOfficeDocFile/DocDocxConverter/DocumentMapping.h
+1
-0
ASCOfficeOdfFile/src/docx/docx_conversion_context.cpp
ASCOfficeOdfFile/src/docx/docx_conversion_context.cpp
+80
-70
ASCOfficeOdfFile/src/docx/docx_conversion_context.h
ASCOfficeOdfFile/src/docx/docx_conversion_context.h
+26
-38
ASCOfficeOdfFile/src/docx/docx_drawing.cpp
ASCOfficeOdfFile/src/docx/docx_drawing.cpp
+35
-5
ASCOfficeOdfFile/src/docx/docx_drawing.h
ASCOfficeOdfFile/src/docx/docx_drawing.h
+8
-4
ASCOfficeOdfFile/src/docx/oox_package.cpp
ASCOfficeOdfFile/src/docx/oox_package.cpp
+15
-12
ASCOfficeOdfFile/src/docx/pptx_output_xml.cpp
ASCOfficeOdfFile/src/docx/pptx_output_xml.cpp
+24
-14
ASCOfficeOdfFile/src/docx/pptx_text_context.cpp
ASCOfficeOdfFile/src/docx/pptx_text_context.cpp
+5
-4
ASCOfficeOdfFile/src/docx/xlsx_table_metrics.cpp
ASCOfficeOdfFile/src/docx/xlsx_table_metrics.cpp
+3
-3
ASCOfficeOdfFile/src/odf/datatypes/common_attlists.cpp
ASCOfficeOdfFile/src/odf/datatypes/common_attlists.cpp
+3
-2
ASCOfficeOdfFile/src/odf/datatypes/common_attlists.h
ASCOfficeOdfFile/src/odf/datatypes/common_attlists.h
+4
-4
ASCOfficeOdfFile/src/odf/datatypes/custom_shape_types_convert.h
...iceOdfFile/src/odf/datatypes/custom_shape_types_convert.h
+8
-7
ASCOfficeOdfFile/src/odf/datatypes/length.cpp
ASCOfficeOdfFile/src/odf/datatypes/length.cpp
+3
-4
ASCOfficeOdfFile/src/odf/draw_frame_docx.cpp
ASCOfficeOdfFile/src/odf/draw_frame_docx.cpp
+43
-15
ASCOfficeOdfFile/src/odf/draw_frame_pptx.cpp
ASCOfficeOdfFile/src/odf/draw_frame_pptx.cpp
+2
-2
ASCOfficeOdfFile/src/odf/draw_shapes.cpp
ASCOfficeOdfFile/src/odf/draw_shapes.cpp
+3
-4
ASCOfficeOdfFile/src/odf/draw_shapes.h
ASCOfficeOdfFile/src/odf/draw_shapes.h
+3
-0
ASCOfficeOdfFile/src/odf/draw_shapes_docx.cpp
ASCOfficeOdfFile/src/odf/draw_shapes_docx.cpp
+15
-9
ASCOfficeOdfFile/src/odf/draw_shapes_pptx.cpp
ASCOfficeOdfFile/src/odf/draw_shapes_pptx.cpp
+10
-6
ASCOfficeOdfFile/src/odf/office_text.cpp
ASCOfficeOdfFile/src/odf/office_text.cpp
+17
-0
ASCOfficeOdfFile/src/odf/office_text.h
ASCOfficeOdfFile/src/odf/office_text.h
+4
-1
ASCOfficeOdfFile/src/odf/paragraph_elements.cpp
ASCOfficeOdfFile/src/odf/paragraph_elements.cpp
+12
-12
ASCOfficeOdfFile/src/odf/paragraph_elements.h
ASCOfficeOdfFile/src/odf/paragraph_elements.h
+2
-2
ASCOfficeOdfFile/src/odf/ruby.cpp
ASCOfficeOdfFile/src/odf/ruby.cpp
+3
-3
ASCOfficeOdfFile/src/odf/ruby.h
ASCOfficeOdfFile/src/odf/ruby.h
+3
-3
ASCOfficeOdfFile/src/odf/style_paragraph_properties_pptx.cpp
ASCOfficeOdfFile/src/odf/style_paragraph_properties_pptx.cpp
+20
-20
ASCOfficeOdfFile/src/odf/style_text_properties.cpp
ASCOfficeOdfFile/src/odf/style_text_properties.cpp
+25
-14
ASCOfficeOdfFile/src/odf/styles.cpp
ASCOfficeOdfFile/src/odf/styles.cpp
+38
-39
ASCOfficeOdfFile/src/odf/svg_parser.cpp
ASCOfficeOdfFile/src/odf/svg_parser.cpp
+1
-1
ASCOfficeOdfFile/src/odf/table_docx.cpp
ASCOfficeOdfFile/src/odf/table_docx.cpp
+0
-12
ASCOfficeOdfFile/src/odf/text_elements.cpp
ASCOfficeOdfFile/src/odf/text_elements.cpp
+87
-62
ASCOfficeOdfFile/src/odf/text_elements.h
ASCOfficeOdfFile/src/odf/text_elements.h
+13
-14
ASCOfficePPTFile/PPTFormatLib/Win32/PPTFormatLib.vcproj
ASCOfficePPTFile/PPTFormatLib/Win32/PPTFormatLib.vcproj
+8
-0
ASCOfficePPTXFile/ASCOfficeDrawingConverter.cpp
ASCOfficePPTXFile/ASCOfficeDrawingConverter.cpp
+1
-1
ASCOfficePPTXFile/Editor/Drawing/Shapes/BaseShape/PPTShape/Formula.h
...TXFile/Editor/Drawing/Shapes/BaseShape/PPTShape/Formula.h
+14
-11
ASCOfficePPTXFile/Editor/Drawing/Shapes/BaseShape/PPTShape/ppt2pptxshapeconverter.h
...rawing/Shapes/BaseShape/PPTShape/ppt2pptxshapeconverter.h
+5
-0
ASCOfficePPTXFile/Editor/XmlWriter.h
ASCOfficePPTXFile/Editor/XmlWriter.h
+4
-4
Makefile
Makefile
+1
-1
X2tConverter/build/Qt/X2tConverter.pri
X2tConverter/build/Qt/X2tConverter.pri
+1
-1
X2tConverter/build/Qt/X2tConverter.pro
X2tConverter/build/Qt/X2tConverter.pro
+1
-1
No files found.
ASCOfficeDocFile/DocDocxConverter/DocumentMapping.cpp
View file @
a7e3158c
...
...
@@ -41,7 +41,7 @@
namespace
DocFileFormat
{
DocumentMapping
::
DocumentMapping
(
ConversionContext
*
context
,
IMapping
*
caller
)
:
_skipRuns
(
0
),
_lastValidPapx
(
NULL
),
_lastValidSepx
(
NULL
),
_writeInstrText
(
false
),
DocumentMapping
::
DocumentMapping
(
ConversionContext
*
context
,
IMapping
*
caller
)
:
_skipRuns
(
0
),
_lastValidPapx
(
NULL
),
_lastValidSepx
(
NULL
),
_fldCharCounter
(
0
),
AbstractOpenXmlMapping
(
new
XMLTools
::
CStringXmlWriter
()
),
_sectionNr
(
0
),
_footnoteNr
(
0
),
_endnoteNr
(
0
),
_commentNr
(
0
),
_caller
(
caller
)
{
...
...
@@ -53,6 +53,10 @@ namespace DocFileFormat
_writeInstrText
=
false
;
_isSectionPageBreak
=
0
;
_isTextBoxContent
=
false
;
//--------------------------------------------
_embeddedObject
=
false
;
_writeInstrText
=
false
;
}
DocumentMapping
::
DocumentMapping
(
ConversionContext
*
context
,
XMLTools
::
CStringXmlWriter
*
writer
,
IMapping
*
caller
)
:
_skipRuns
(
0
),
_lastValidPapx
(
NULL
),
_lastValidSepx
(
NULL
),
_writeInstrText
(
false
),
...
...
@@ -67,6 +71,7 @@ namespace DocFileFormat
_writeInstrText
=
false
;
_isSectionPageBreak
=
0
;
_isTextBoxContent
=
false
;
_embeddedObject
=
false
;
}
DocumentMapping
::~
DocumentMapping
()
...
...
@@ -643,13 +648,13 @@ namespace DocFileFormat
}
cpFieldSep1
=
cpFieldSep2
;
}
_skipRuns
=
5
;
_skipRuns
=
5
;
//with separator
}
}
else
if
(
bEMBED
||
bLINK
||
bQUOTE
)
{
int
cpPic
=
searchNextTextMark
(
m_document
->
Text
,
cpFieldStart
,
TextMark
::
Picture
);
int
cpFieldSep
=
searchNextTextMark
(
m_document
->
Text
,
cpFieldStart
,
TextMark
::
FieldSeparator
);
int
cpPic
=
searchNextTextMark
(
m_document
->
Text
,
cpFieldStart
,
TextMark
::
Picture
);
int
cpFieldSep
=
searchNextTextMark
(
m_document
->
Text
,
cpFieldStart
,
TextMark
::
FieldSeparator
);
if
(
cpPic
<
cpFieldEnd
)
{
...
...
@@ -731,14 +736,8 @@ namespace DocFileFormat
}
}
if
(
bEMBED
)
{
//Приложения_011015.doc(9 стр) ellipt_eq.doc конфликтные
cp
=
cpFieldEnd
;
_skipRuns
=
3
;
}
else
_skipRuns
=
5
;
_skipRuns
=
3
;
_embeddedObject
=
true
;
}
else
{
...
...
@@ -759,6 +758,7 @@ namespace DocFileFormat
m_pXmlWriter
->
WriteString
(
elem
.
GetXMLString
().
c_str
()
);
}
if
(
_embeddedObject
)
_skipRuns
+=
2
;
}
else
if
(
TextMark
::
FieldEndMark
==
code
)
{
...
...
@@ -781,6 +781,7 @@ namespace DocFileFormat
{
_writeInstrText
=
false
;
}
_embeddedObject
=
false
;
}
else
if
((
TextMark
::
Symbol
==
code
)
&&
fSpec
)
{
...
...
ASCOfficeDocFile/DocDocxConverter/DocumentMapping.h
View file @
a7e3158c
...
...
@@ -137,6 +137,7 @@ namespace DocFileFormat
ParagraphPropertyExceptions
*
_lastValidPapx
;
SectionPropertyExceptions
*
_lastValidSepx
;
bool
_embeddedObject
;
int
_skipRuns
;
int
_sectionNr
;
int
_footnoteNr
;
...
...
ASCOfficeOdfFile/src/docx/docx_conversion_context.cpp
View file @
a7e3158c
...
...
@@ -82,12 +82,13 @@ void text_tracked_context::start_changes_content()
void
text_tracked_context
::
end_changes_content
()
{
current_state_
.
content
.
push_back
(
changes_stream_
.
str
());
docx_context_
.
set_delete_text_state
(
false
);
docx_context_
.
set_paragraph_state
(
bParaStateDocx_
);
docx_context_
.
set_run_state
(
bRunStateDocx_
);
docx_context_
.
set_delete_text_state
(
false
);
current_state_
.
content
=
changes_stream_
.
str
();
docx_context_
.
set_stream_man
(
docx_stream_
);
docx_context_
.
set_stream_man
(
docx_stream_
);
}
void
text_tracked_context
::
start_change
(
std
::
wstring
id
)
{
...
...
@@ -130,28 +131,27 @@ text_tracked_context::_state & text_tracked_context::get_tracked_change(std::wst
docx_conversion_context
::
docx_conversion_context
(
odf_reader
::
odf_document
*
OdfDocument
)
:
mediaitems_
(
OdfDocument
->
get_folder
()
),
next_dump_page_properties_
(
false
),
page_break_after_
(
false
),
page_break_before_
(
false
),
in_run_
(
false
),
in_automatic_style_
(
false
),
in_paragraph_
(
false
),
in_header_
(
false
),
in_drawing_content_
(
false
),
text_tracked_context_
(
*
this
),
table_context_
(
*
this
),
output_document_
(
NULL
),
section_properties_in_table_
(
NULL
),
process_note_
(
noNote
),
new_list_style_number_
(
0
),
is_rtl_
(
false
),
is_paragraph_keep_
(
false
),
is_delete_text_
(
false
),
delayed_converting_
(
false
),
process_headers_footers_
(
false
),
process_comment_
(
false
),
math_context_
(
false
),
odf_document_
(
OdfDocument
)
next_dump_page_properties_
(
false
),
page_break_after_
(
false
),
page_break_before_
(
false
),
in_run_
(
false
),
in_automatic_style_
(
false
),
in_paragraph_
(
false
),
in_header_
(
false
),
in_drawing_content_
(
false
),
text_tracked_context_
(
*
this
),
table_context_
(
*
this
),
output_document_
(
NULL
),
process_note_
(
noNote
),
new_list_style_number_
(
0
),
is_rtl_
(
false
),
is_paragraph_keep_
(
false
),
is_delete_text_
(
false
),
delayed_converting_
(
false
),
process_headers_footers_
(
false
),
process_comment_
(
false
),
math_context_
(
false
),
odf_document_
(
OdfDocument
)
{
streams_man_
=
streams_man
::
create
(
temp_stream_
);
applicationFonts_
=
new
CApplicationFonts
();
...
...
@@ -1102,7 +1102,7 @@ void docx_conversion_context::docx_serialize_list_properties(std::wostream & str
void
docx_conversion_context
::
add_delayed_element
(
odf_reader
::
office_element
*
Elm
)
{
delayed_elements_
.
push_back
(
Elm
);
delayed_elements_
.
push_back
(
Elm
);
}
void
docx_conversion_context
::
docx_convert_delayed
()
...
...
@@ -1110,14 +1110,15 @@ void docx_conversion_context::docx_convert_delayed()
if
(
delayed_elements_
.
empty
())
return
;
if
(
delayed_converting_
)
return
;
//зацикливание иначе
if
(
get_drawing_context
().
get_current_level
()
>
0
)
return
;
//вложенный frame
if
(
get_drawing_context
().
get_current_level
()
>
0
)
return
;
//вложенный frame
delayed_converting_
=
true
;
while
(
!
delayed_elements_
.
empty
())
{
odf_reader
::
office_element
*
elm
=
delayed_elements_
.
front
();
elm
->
docx_convert
(
*
this
);
delayed_elements_
.
pop_front
();
delayed_elements_
.
pop_front
();
}
delayed_converting_
=
false
;
}
...
...
@@ -1128,19 +1129,6 @@ void section_context::add_section(const std::wstring & SectionName, const std::w
sections_
.
push_back
(
newSec
);
}
void
docx_conversion_context
::
section_properties_in_table
(
odf_reader
::
office_element
*
Elm
)
{
section_properties_in_table_
=
Elm
;
}
odf_reader
::
office_element
*
docx_conversion_context
::
get_section_properties_in_table
()
{
odf_reader
::
office_element
*
elm
=
section_properties_in_table_
;
section_properties_in_table_
=
NULL
;
return
elm
;
}
namespace
{
// обработка Header/Footer
...
...
@@ -1273,31 +1261,47 @@ typedef std::map<std::wstring, text_tracked_context::_state>::iterator map_chang
void
docx_conversion_context
::
start_text_changes
(
std
::
wstring
id
)
{
text_tracked_context
::
_state
&
state
=
text_tracked_context_
.
get_tracked_change
(
id
);
if
(
state
.
id
!=
id
)
return
;
text_tracked_context
::
_state
&
state
_add
=
text_tracked_context_
.
get_tracked_change
(
id
);
if
(
state
_add
.
id
!=
id
)
return
;
map_current_changes_
.
insert
(
std
::
pair
<
std
::
wstring
,
text_tracked_context
::
_state
>
(
id
,
state
));
map_current_changes_
.
insert
(
std
::
pair
<
std
::
wstring
,
text_tracked_context
::
_state
>
(
id
,
state
_add
));
if
(
in_paragraph_
&&
(
state
.
type
==
1
||
state
.
type
==
2
))
if
(
in_paragraph_
&&
(
state_add
.
type
==
1
||
state_add
.
type
==
2
))
{
finish_run
();
map_changes_iterator
it
=
map_current_changes_
.
find
(
id
);
text_tracked_context
::
_state
&
state
=
it
->
second
;
std
::
wstring
format_change
=
L" w:date=
\"
"
+
state
.
date
+
L"
\"
"
+
L" w:author=
\"
"
+
state
.
author
+
L"
\"
"
;
if
(
state
.
type
==
1
)
output_stream
()
<<
L"<w:ins"
;
if
(
state
.
type
==
2
)
output_stream
()
<<
L"<w:del"
;
finish_run
();
state
.
active
=
true
;
if
(
state
.
type
==
1
)
{
output_stream
()
<<
L" w:date=
\"
"
<<
state
.
date
<<
L"
\"
"
;
output_stream
()
<<
L" w:author=
\"
"
<<
state
.
author
<<
L"
\"
"
;
output_stream
()
<<
L" w:id=
\"
"
<<
std
::
to_wstring
(
current_id_changes
++
)
<<
L"
\"
"
;
output_stream
()
<<
L">"
;
output_stream
()
<<
L"<w:ins"
<<
format_change
<<
L" w:id=
\"
"
<<
std
::
to_wstring
(
current_id_changes
++
)
<<
L"
\"
>"
;
}
if
(
state
.
type
==
2
)
output_stream
()
<<
state
.
content
;
if
(
state
.
type
==
2
)
{
for
(
int
i
=
0
;
i
<
state
.
content
.
size
();
i
++
)
{
output_stream
()
<<
L"<w:del"
<<
format_change
<<
L" w:id=
\"
"
<<
std
::
to_wstring
(
current_id_changes
++
)
<<
L"
\"
>"
;
output_stream
()
<<
state
.
content
[
i
];
output_stream
()
<<
L"</w:del>"
;
}
map_current_changes_
.
erase
(
it
);
}
}
}
void
docx_conversion_context
::
start_changes
()
{
if
(
map_current_changes_
.
empty
())
return
;
if
(
process_comment_
)
return
;
text_tracked_context_
.
dumpPPr_
.
clear
();
text_tracked_context_
.
dumpRPr_
.
clear
();
...
...
@@ -1309,8 +1313,8 @@ void docx_conversion_context::start_changes()
{
text_tracked_context
::
_state
&
state
=
it
->
second
;
if
(
state
.
type
==
0
)
continue
;
//unknown change ... todooo
if
(
state
.
type
==
0
)
continue
;
//unknown change ... todooo
if
(
state
.
active
)
continue
;
std
::
wstring
change_attr
;
change_attr
+=
L" w:date=
\"
"
+
state
.
date
+
L"
\"
"
;
...
...
@@ -1396,16 +1400,21 @@ void docx_conversion_context::start_changes()
void
docx_conversion_context
::
end_changes
()
{
//for (map_changes_iterator it = map_current_changes_.begin(); it != map_current_changes_.end(); it++)
//{
// text_tracked_context::_state &state = it->second;
if
(
process_comment_
)
return
;
// if (state.type == 0) continue; //unknown change ... libra format change skip
// if (state.type == 3) continue;
for
(
map_changes_iterator
it
=
map_current_changes_
.
begin
();
it
!=
map_current_changes_
.
end
();
it
++
)
{
text_tracked_context
::
_state
&
state
=
it
->
second
;
// if (state.type == 1) output_stream() << L"</w:ins>";
// if (state.type == 2) output_stream() << L"</w:del>";
//}
if
(
state
.
type
==
0
)
continue
;
//unknown change ... libra format change skip
if
(
state
.
type
==
3
)
continue
;
if
(
!
state
.
active
)
continue
;
if
(
state
.
type
==
1
)
output_stream
()
<<
L"</w:ins>"
;
if
(
state
.
type
==
2
)
output_stream
()
<<
L"</w:del>"
;
state
.
active
=
false
;
}
text_tracked_context_
.
dumpTcPr_
.
clear
();
text_tracked_context_
.
dumpTblPr_
.
clear
();
...
...
@@ -1421,14 +1430,15 @@ void docx_conversion_context::end_text_changes (std::wstring id)
if
(
it
==
map_current_changes_
.
end
())
return
;
if
(
in_paragraph_
)
text_tracked_context
::
_state
&
state
=
it
->
second
;
if
(
state
.
active
)
{
finish_run
();
text_tracked_context
::
_state
&
state
=
it
->
second
;
if
(
in_paragraph_
)
finish_run
();
if
(
state
.
type
==
1
)
output_stream
()
<<
L"</w:ins>"
;
if
(
state
.
type
==
2
)
output_stream
()
<<
L"</w:del>"
;
if
(
state
.
type
==
1
)
output_stream
()
<<
L"</w:ins>"
;
if
(
state
.
type
==
2
)
output_stream
()
<<
L"</w:del>"
;
}
map_current_changes_
.
erase
(
it
);
...
...
ASCOfficeOdfFile/src/docx/docx_conversion_context.h
View file @
a7e3158c
...
...
@@ -490,13 +490,14 @@ class text_tracked_context
public:
struct
_state
{
std
::
wstring
id
;
std
::
wstring
author
;
std
::
wstring
date
;
int
type
;
std
::
wstring
content
;
//delete elements
std
::
wstring
style_name
;
std
::
wstring
id
;
std
::
wstring
author
;
std
::
wstring
date
;
int
type
;
std
::
wstring
style_name
;
std
::
vector
<
std
::
wstring
>
content
;
//delete elements
bool
active
;
void
clear
()
{
type
=
0
;
...
...
@@ -504,6 +505,7 @@ public:
author
.
clear
();
date
.
clear
();
content
.
clear
();
active
=
false
;
}
};
std
::
wstring
dumpPPr_
;
...
...
@@ -683,9 +685,6 @@ public:
docx_table_context
&
get_table_context
()
{
return
table_context_
;
}
odf_reader
::
office_element
*
get_section_properties_in_table
();
void
section_properties_in_table
(
odf_reader
::
office_element
*
Elm
);
StreamsManPtr
get_stream_man
()
const
{
return
streams_man_
;
}
void
set_stream_man
(
StreamsManPtr
Sm
)
{
streams_man_
=
Sm
;
}
...
...
@@ -752,23 +751,23 @@ private:
odf_reader
::
odf_document
*
odf_document_
;
CApplicationFonts
*
applicationFonts_
;
std
::
vector
<
odf_reader
::
_property
>
settings_properties_
;
std
::
vector
<
odf_reader
::
_property
>
settings_properties_
;
hyperlinks
hyperlinks_
;
mediaitems
mediaitems_
;
hyperlinks
hyperlinks_
;
mediaitems
mediaitems_
;
std
::
vector
<
oox_chart_context_ptr
>
charts_
;
headers_footers
headers_footers_
;
std
::
wstring
automatic_parent_style_
;
std
::
list
<
const
odf_reader
::
style_text_properties
*
>
text_properties_stack_
;
std
::
wstring
automatic_parent_style_
;
std
::
wstring
current_master_page_name_
;
std
::
wstring
text_list_style_name_
;
std
::
list
<
std
::
wstring
>
list_style_stack_
;
bool
first_element_list_item_
;
bool
page_break_after_
;
bool
page_break_before_
;
bool
page_break_
;
std
::
wstring
text_list_style_name_
;
std
::
list
<
std
::
wstring
>
list_style_stack_
;
bool
first_element_list_item_
;
bool
in_automatic_style_
;
bool
in_drawing_content_
;
bool
in_paragraph_
;
...
...
@@ -777,25 +776,14 @@ private:
bool
is_delete_text_
;
bool
is_rtl_
;
// right-to-left
bool
is_paragraph_keep_
;
NoteType
process_note_
;
int
new_list_style_number_
;
// счетчик для нумерации имен созданных в процессе конвертации стилей
NoteType
process_note_
;
std
::
list
<
odf_reader
::
office_element
*>
delayed_elements_
;
std
::
vector
<
oox_chart_context_ptr
>
charts_
;
odf_reader
::
office_element
*
section_properties_in_table_
;
headers_footers
headers_footers_
;
std
::
wstring
current_master_page_name_
;
// счетчик для нумерации имен созданных в процессе конвертации стилей
int
new_list_style_number_
;
std
::
map
<
std
::
wstring
,
text_tracked_context
::
_state
>
map_current_changes_
;
// цепочки переименований нумераций
boost
::
unordered_map
<
std
::
wstring
,
std
::
wstring
>
list_style_renames_
;
std
::
list
<
const
odf_reader
::
style_text_properties
*
>
text_properties_stack_
;
std
::
map
<
std
::
wstring
,
text_tracked_context
::
_state
>
map_current_changes_
;
boost
::
unordered_map
<
std
::
wstring
,
std
::
wstring
>
list_style_renames_
;
// цепочки переименований нумераций
};
}
...
...
ASCOfficeOdfFile/src/docx/docx_drawing.cpp
View file @
a7e3158c
...
...
@@ -435,11 +435,12 @@ void docx_serialize_wps(std::wostream & strm, _docx_drawing & val)
CP_XML_ATTR
(
L"y"
,
0
);
}
CP_XML_NODE
(
L"wp:positionH"
)
{
std
::
wstring
relativeFrom
=
L"margin"
;
if
(
val
.
styleHorizontalRel
)
relativeFrom
=
val
.
styleHorizontalRel
->
get_type_str
();
if
(
relativeFrom
==
L"column"
)
relativeFrom
=
L"margin"
;
CP_XML_ATTR
(
L"relativeFrom"
,
relativeFrom
);
...
...
@@ -453,15 +454,14 @@ void docx_serialize_wps(std::wostream & strm, _docx_drawing & val)
else
{
CP_XML_NODE
(
L"wp:posOffset"
)
{
CP_XML_STREAM
()
<<
val
.
posOffsetH
;}
}
}
}
CP_XML_NODE
(
L"wp:positionV"
)
{
std
::
wstring
relativeFrom
=
L"paragraph"
;
if
(
val
.
styleVerticalRel
)
relativeFrom
=
val
.
styleVerticalRel
->
get_type_str
();
CP_XML_ATTR
(
L"relativeFrom"
,
relativeFrom
);
if
(
val
.
styleVerticalPos
&&
...
...
@@ -481,7 +481,6 @@ void docx_serialize_wps(std::wostream & strm, _docx_drawing & val)
}
}
}
CP_XML_NODE
(
L"wp:extent"
)
{
CP_XML_ATTR
(
L"cx"
,
val
.
cx
);
...
...
@@ -492,6 +491,37 @@ void docx_serialize_wps(std::wostream & strm, _docx_drawing & val)
}
docx_serialize_common
(
CP_XML_STREAM
(),
val
);
if
(
val
.
pctWidth
)
{
std
::
wstring
relativeFrom
=
L"margin"
;
if
(
val
.
styleHorizontalRel
)
relativeFrom
=
val
.
styleHorizontalRel
->
get_type_str
();
if
(
relativeFrom
==
L"column"
)
relativeFrom
=
L"margin"
;
CP_XML_NODE
(
L"wp14:sizeRelH"
)
{
CP_XML_ATTR
(
L"relativeFrom"
,
relativeFrom
);
CP_XML_NODE
(
L"wp14:pctWidth"
)
{
CP_XML_STREAM
()
<<
(
val
.
pctWidth
.
get
()
*
1000
);
}
}
}
if
(
val
.
pctHeight
)
{
std
::
wstring
relativeFrom
=
L"paragraph"
;
if
(
val
.
styleVerticalRel
)
relativeFrom
=
val
.
styleVerticalRel
->
get_type_str
();
CP_XML_NODE
(
L"wp14:sizeRelV"
)
{
CP_XML_ATTR
(
L"relativeFrom"
,
relativeFrom
);
CP_XML_NODE
(
L"wp14:pctHeight"
)
{
CP_XML_STREAM
()
<<
(
val
.
pctHeight
.
get
()
*
1000
);
}
}
}
}
}
}
...
...
ASCOfficeOdfFile/src/docx/docx_drawing.h
View file @
a7e3158c
...
...
@@ -49,17 +49,18 @@ struct _docx_drawing : _oox_drawing
_docx_drawing
()
:
_oox_drawing
(),
parallel
(
0
),
isInline
(
false
),
number_wrapped_paragraphs
(
0
),
posOffsetV
(
0
),
posOffsetH
(
0
)
{
}
unsigned
int
parallel
;
bool
isInline
;
unsigned
int
parallel
;
//_CP_OPT(run_through) styleRunThrough ;
//_CP_OPT(run_through)
styleRunThrough ;
_CP_OPT
(
odf_types
::
horizontal_rel
)
styleHorizontalRel
;
_CP_OPT
(
odf_types
::
horizontal_pos
)
styleHorizontalPos
;
_CP_OPT
(
odf_types
::
vertical_pos
)
styleVerticalPos
;
_CP_OPT
(
odf_types
::
vertical_rel
)
styleVerticalRel
;
_CP_OPT
(
odf_types
::
style_wrap
)
styleWrap
;
_CP_OPT
(
odf_types
::
style_wrap
)
styleWrap
;
bool
isInline
;
int
number_wrapped_paragraphs
;
std
::
wstring
relativeHeight
;
...
...
@@ -67,6 +68,9 @@ struct _docx_drawing : _oox_drawing
int
posOffsetV
;
int
posOffsetH
;
_CP_OPT
(
int
)
pctWidth
;
_CP_OPT
(
int
)
pctHeight
;
int
margin_rect
[
4
];
//0-left, 1 -top, 2- right, 3 - bottom
//std::wstring distB;
...
...
ASCOfficeOdfFile/src/docx/oox_package.cpp
View file @
a7e3158c
...
...
@@ -61,18 +61,21 @@ static void ConvertSvmToImage(std::wstring &file_svm, std::wstring &file_png, CA
static
std
::
wstring
get_mime_type
(
const
std
::
wstring
&
extension
)
{
if
(
L"eps"
==
extension
)
return
L"image/x-eps"
;
if
(
L"wmf"
==
extension
)
return
L"image/x-wmf"
;
if
(
L"emf"
==
extension
)
return
L"image/x-emf"
;
if
(
L"gif"
==
extension
)
return
L"image/x-gif"
;
if
(
L"png"
==
extension
)
return
L"image/x-png"
;
if
(
L"jpg"
==
extension
)
return
L"image/x-jpeg"
;
if
(
L"jpeg"
==
extension
)
return
L"image/x-jpeg"
;
if
(
L"tiff"
==
extension
)
return
L"image/x-tiff"
;
if
(
L"pdf"
==
extension
)
return
L"application/pdf"
;
if
(
L"wav"
==
extension
)
return
L"audio/wav"
;
if
(
L"bin"
==
extension
)
return
L"application/vnd.openxmlformats-officedocument.oleObject"
;
if
(
L"xlsx"
==
extension
)
return
L"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
;
if
(
L"eps"
==
extension
)
return
L"image/x-eps"
;
else
if
(
L"wmf"
==
extension
)
return
L"image/x-wmf"
;
else
if
(
L"emf"
==
extension
)
return
L"image/x-emf"
;
else
if
(
L"gif"
==
extension
)
return
L"image/x-gif"
;
else
if
(
L"png"
==
extension
)
return
L"image/x-png"
;
else
if
(
L"jpg"
==
extension
)
return
L"image/x-jpeg"
;
else
if
(
L"jpeg"
==
extension
)
return
L"image/x-jpeg"
;
else
if
(
L"tif"
==
extension
)
return
L"image/x-tiff"
;
else
if
(
L"tiff"
==
extension
)
return
L"image/x-tiff"
;
else
if
(
L"pdf"
==
extension
)
return
L"application/pdf"
;
else
if
(
L"wav"
==
extension
)
return
L"audio/wav"
;
else
if
(
L"bin"
==
extension
)
return
L"application/vnd.openxmlformats-officedocument.oleObject"
;
else
if
(
L"xlsx"
==
extension
)
return
L"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
;
else
return
L"application/octet-stream"
;
return
L""
;
}
...
...
ASCOfficeOdfFile/src/docx/pptx_output_xml.cpp
View file @
a7e3158c
...
...
@@ -89,11 +89,14 @@ void pptx_xml_slide::write_to(std::wostream & strm)
{
CP_XML_NODE
(
L"p:sld"
)
{
CP_XML_ATTR
(
L"xmlns:p"
,
L"http://schemas.openxmlformats.org/presentationml/2006/main"
);
CP_XML_ATTR
(
L"xmlns:r"
,
L"http://schemas.openxmlformats.org/officeDocument/2006/relationships"
);
CP_XML_ATTR
(
L"xmlns:a"
,
L"http://schemas.openxmlformats.org/drawingml/2006/main"
);
CP_XML_NODE
(
L"p:cSld"
)
CP_XML_ATTR
(
L"xmlns:a"
,
L"http://schemas.openxmlformats.org/drawingml/2006/main"
);
CP_XML_ATTR
(
L"xmlns:p"
,
L"http://schemas.openxmlformats.org/presentationml/2006/main"
);
CP_XML_ATTR
(
L"xmlns:r"
,
L"http://schemas.openxmlformats.org/officeDocument/2006/relationships"
);
CP_XML_ATTR
(
L"xmlns:p14"
,
L"http://schemas.microsoft.com/office/powerpoint/2010/main"
);
CP_XML_ATTR
(
L"xmlns:p15"
,
L"http://schemas.microsoft.com/office/powerpoint/2012/main"
);
CP_XML_ATTR
(
L"xmlns:mc"
,
L"http://schemas.openxmlformats.org/markup-compatibility/2006"
);
CP_XML_NODE
(
L"p:cSld"
)
{
CP_XML_ATTR
(
L"name"
,
name
());
...
...
@@ -147,15 +150,19 @@ void pptx_xml_slideLayout::write_to(std::wostream & strm)
{
CP_XML_NODE
(
L"p:sldLayout"
)
{
CP_XML_ATTR
(
L"xmlns:a"
,
L"http://schemas.openxmlformats.org/drawingml/2006/main"
);
CP_XML_ATTR
(
L"xmlns:p"
,
L"http://schemas.openxmlformats.org/presentationml/2006/main"
);
CP_XML_ATTR
(
L"xmlns:r"
,
L"http://schemas.openxmlformats.org/officeDocument/2006/relationships"
);
CP_XML_ATTR
(
L"xmlns:p14"
,
L"http://schemas.microsoft.com/office/powerpoint/2010/main"
);
CP_XML_ATTR
(
L"xmlns:p15"
,
L"http://schemas.microsoft.com/office/powerpoint/2012/main"
);
CP_XML_ATTR
(
L"xmlns:mc"
,
L"http://schemas.openxmlformats.org/markup-compatibility/2006"
);
//if (slideLayoutData_.str().length()<0)
// CP_XML_ATTR(L"type",L"cust");//---------------------------!!!!!!!!!!!!
//else
// CP_XML_ATTR(L"type",L"cust");
CP_XML_ATTR
(
L"xmlns:p"
,
L"http://schemas.openxmlformats.org/presentationml/2006/main"
);
CP_XML_ATTR
(
L"xmlns:r"
,
L"http://schemas.openxmlformats.org/officeDocument/2006/relationships"
);
CP_XML_ATTR
(
L"xmlns:a"
,
L"http://schemas.openxmlformats.org/drawingml/2006/main"
);
CP_XML_NODE
(
L"p:cSld"
)
// CP_XML_ATTR(L"type",L"cust");
CP_XML_NODE
(
L"p:cSld"
)
{
CP_XML_NODE
(
L"p:spTree"
)
{
...
...
@@ -239,9 +246,12 @@ void pptx_xml_slideMaster::write_to(std::wostream & strm)
{
CP_XML_NODE
(
L"p:sldMaster"
)
{
CP_XML_ATTR
(
L"xmlns:a"
,
L"http://schemas.openxmlformats.org/drawingml/2006/main"
);
CP_XML_ATTR
(
L"xmlns:r"
,
L"http://schemas.openxmlformats.org/officeDocument/2006/relationships"
);
CP_XML_ATTR
(
L"xmlns:p"
,
L"http://schemas.openxmlformats.org/presentationml/2006/main"
);
CP_XML_ATTR
(
L"xmlns:a"
,
L"http://schemas.openxmlformats.org/drawingml/2006/main"
);
CP_XML_ATTR
(
L"xmlns:p"
,
L"http://schemas.openxmlformats.org/presentationml/2006/main"
);
CP_XML_ATTR
(
L"xmlns:r"
,
L"http://schemas.openxmlformats.org/officeDocument/2006/relationships"
);
CP_XML_ATTR
(
L"xmlns:p14"
,
L"http://schemas.microsoft.com/office/powerpoint/2010/main"
);
CP_XML_ATTR
(
L"xmlns:p15"
,
L"http://schemas.microsoft.com/office/powerpoint/2012/main"
);
CP_XML_ATTR
(
L"xmlns:mc"
,
L"http://schemas.openxmlformats.org/markup-compatibility/2006"
);
CP_XML_NODE
(
L"p:cSld"
)
{
...
...
ASCOfficeOdfFile/src/docx/pptx_text_context.cpp
View file @
a7e3158c
...
...
@@ -363,19 +363,20 @@ void pptx_text_context::Impl::write_pPr(std::wostream & strm)
odf_reader
::
paragraph_format_properties
paragraph_properties_
;
ApplyParagraphProperties
(
paragraph_style_name_
,
paragraph_properties_
,
odf_types
::
style_family
::
Paragraph
);
ApplyListProperties
(
paragraph_properties_
,
level
);
//выравнивания листа накатим на свойства параграфа
ApplyListProperties
(
paragraph_properties_
,
level
);
//выравнивания листа накатим на свойства параграфа
paragraph_properties_
.
pptx_convert
(
pptx_context_
);
const
std
::
wstring
&
paragraphAttr
=
get_styles_context
().
paragraph_attr
().
str
();
const
std
::
wstring
&
paragraphNodes
=
get_styles_context
().
paragraph_nodes
().
str
();
if
(
level
<
0
&&
paragraphAttr
.
length
()
<
1
&&
paragraphNodes
.
length
()
<
1
)
return
;
if
(
level
<
0
&&
paragraphAttr
.
length
()
<
1
&&
!
paragraphNodes
.
empty
()
)
return
;
strm
<<
L"<a:pPr "
;
if
(
level
>=
0
)
if
(
level
>=
0
)
{
if
(
level
>
8
)
level
=
0
;
strm
<<
L"lvl=
\"
"
<<
level
<<
L"
\"
"
;
}
...
...
@@ -384,7 +385,7 @@ void pptx_text_context::Impl::write_pPr(std::wostream & strm)
strm
<<
">"
;
strm
<<
paragraphNodes
;
if
(
level
>=
0
)
if
(
level
>=
0
)
{
...
...
ASCOfficeOdfFile/src/docx/xlsx_table_metrics.cpp
View file @
a7e3158c
...
...
@@ -223,7 +223,7 @@ public:
const
std
::
pair
<
int
,
double
>
c
=
cols_
.
search
(
x_pt
);
const
std
::
pair
<
int
,
double
>
r
=
rows_
.
search
(
y_pt
);
xlsx_table_position
res
=
{(
size_t
)
c
.
first
,
c
.
second
,
(
size_t
)
r
.
first
,
r
.
second
};
xlsx_table_position
res
=
{(
size_t
)
c
.
first
,
c
.
second
,
(
size_t
)
r
.
first
,
r
.
second
};
return
res
;
}
...
...
@@ -236,7 +236,7 @@ public:
r
=
rows_
.
search
(
offset_row
,
y_pt
);
xlsx_table_position
res
=
{(
size_t
)
c
.
first
,
c
.
second
,
(
size_t
)
r
.
first
,
r
.
second
};
xlsx_table_position
res
=
{(
size_t
)
c
.
first
,
c
.
second
,
(
size_t
)
r
.
first
,
r
.
second
};
return
res
;
}
...
...
@@ -246,7 +246,7 @@ public:
std
::
pair
<
int
,
double
>
r
=
rows_
.
search
(
last_row
,
0
);
xlsx_table_position
res
=
{(
size_t
)
c
.
first
,
c
.
second
,
(
size_t
)
r
.
first
,
r
.
second
};
xlsx_table_position
res
=
{(
size_t
)
c
.
first
,
c
.
second
,
(
size_t
)
r
.
first
,
r
.
second
};
return
res
;
}
...
...
ASCOfficeOdfFile/src/odf/datatypes/common_attlists.cpp
View file @
a7e3158c
...
...
@@ -533,8 +533,9 @@ void common_draw_rel_size_attlist::apply_from(const common_draw_rel_size_attlist
void
common_draw_rel_size_attlist
::
serialize
(
CP_ATTR_NODE
)
{
common_draw_size_attlist_
.
serialize
(
CP_GET_XML_NODE
());
CP_XML_ATTR_OPT
(
L"style:rel-width"
,
style_rel_width_
);
CP_XML_ATTR_OPT
(
L"style:rel-height"
,
style_rel_height_
);
CP_XML_ATTR_OPT
(
L"style:rel-width"
,
style_rel_width_
);
CP_XML_ATTR_OPT
(
L"style:rel-height"
,
style_rel_height_
);
}
//////////////////////////////////////////////////////////////////////////////////////////////////
...
...
ASCOfficeOdfFile/src/odf/datatypes/common_attlists.h
View file @
a7e3158c
...
...
@@ -443,10 +443,10 @@ public:
void
apply_from
(
const
common_draw_rel_size_attlist
&
Other
);
void
serialize
(
CP_ATTR_NODE
);
public:
common_draw_size_attlist
common_draw_size_attlist_
;
_CP_OPT
(
percent_or_scale
)
style_rel_width_
;
_CP_OPT
(
percent_or_scale
)
style_rel_height_
;
common_draw_size_attlist
common_draw_size_attlist_
;
_CP_OPT
(
percent_or_scale
)
style_rel_width_
;
_CP_OPT
(
percent_or_scale
)
style_rel_height_
;
};
/// common-vertical-rel-attlist
...
...
ASCOfficeOdfFile/src/odf/datatypes/custom_shape_types_convert.h
View file @
a7e3158c
...
...
@@ -185,6 +185,7 @@ static const _shape_converter _OO_OOX_custom_shapes[]=
{
L"mso-spt179"
,
L""
,
0
,
0
,
0
},
{
L"mso-spt180"
,
L""
,
0
,
0
,
0
},
{
L"mso-spt182"
,
L"leftRightUpArrow"
,
0
,
0
,
0
},
{
L"mso-spt188"
,
L"flowChartPunchedTape"
,
0
,
0
,
0
},
{
L"mso-spt189"
,
L"actionButtonBlank"
,
0
,
0
,
0
},
{
L"mso-spt190"
,
L"actionButtonHome"
,
0
,
0
,
0
},
{
L"mso-spt191"
,
L"actionButtonHelp"
,
0
,
0
,
0
},
...
...
@@ -284,7 +285,7 @@ static const _shape_converter _OO_OOX_wordart[]=
{
L"fontwork-triangle-up"
,
L"textTriangle"
,
0
,
0
,
0
},
{
L"fontwork-triangle-down"
,
L"textTriangleInverted"
,
0
,
0
,
0
},
{
L"fontwork-circle-pour"
,
L"textCirclePour"
,
0
,
0
,
0
},
{
L"fontwork-circle-pour"
,
L"textCirclePour"
,
0
,
0
,
0
},
{
L"fontwork-circle-curve"
,
L"textCircle"
,
0
,
0
,
0
},
{
L"fontwork-open-circle-curve"
,
L"textPlain"
,
1
,
30000
,
70000
},
{
L"fontwork-open-circle-pour"
,
L"textPlain"
,
1
,
30000
,
70000
},
...
...
@@ -296,18 +297,18 @@ static const _shape_converter _OO_OOX_wordart[]=
{
L"mso-spt142"
,
L"textRingInside"
,
0
,
0
,
0
},
{
L"mso-spt143"
,
L"textRingOutside"
,
0
,
0
,
0
},
{
L"mso-spt157"
,
L"textWave2"
,
0
,
0
,
0
},
{
L"mso-spt157"
,
L"textWave2"
,
0
,
0
,
0
},
{
L"mso-spt158"
,
L"textDoubleWave1"
,
0
,
0
,
0
},
{
L"mso-spt159"
,
L"textWave4"
,
0
,
0
,
0
},
{
L"mso-spt160"
,
L"textInflate"
,
0
,
0
,
0
},
//???
{
L"mso-spt161"
,
L"textDeflate"
,
0
,
0
,
0
},
{
L"mso-spt159"
,
L"textWave4"
,
0
,
0
,
0
},
{
L"mso-spt160"
,
L"textInflate"
,
0
,
0
,
0
},
//???
{
L"mso-spt161"
,
L"textDeflate"
,
0
,
0
,
0
},
{
L"mso-spt162"
,
L"textInflateBottom"
,
0
,
0
,
0
},
{
L"mso-spt163"
,
L"textDeflateBottom"
,
0
,
0
,
0
},
{
L"mso-spt164"
,
L"textInflateTop"
,
0
,
0
,
0
},
{
L"mso-spt165"
,
L"textDeflateTop"
,
0
,
0
,
0
},
{
L"mso-spt166"
,
L"textDeflateInflateDeflate"
,
0
,
0
,
0
},
{
L"mso-spt174"
,
L"textCanUp"
,
0
,
0
,
0
},
{
L"mso-spt175"
,
L"textCanDown"
,
0
,
0
,
0
},
{
L"mso-spt174"
,
L"textCanUp"
,
0
,
0
,
0
},
{
L"mso-spt175"
,
L"textCanDown"
,
0
,
0
,
0
},
{
L"mso-spt188"
,
L"textDoubleWave1"
,
0
,
0
,
0
},
};
\ No newline at end of file
ASCOfficeOdfFile/src/odf/datatypes/length.cpp
View file @
a7e3158c
...
...
@@ -31,12 +31,11 @@
*/
#include "length.h"
#include "../../../../Common/DocxFormat/Source/Base/Types_32.h"
#include <iostream>
#include <sstream>
#include <boost/lexical_cast.hpp>
namespace
cpdoccore
{
namespace
odf_types
{
std
::
wostream
&
operator
<<
(
std
::
wostream
&
_Wostream
,
const
length
::
unit
_Unit
)
...
...
@@ -223,9 +222,9 @@ double to_pt(const length & Val)
return
0.0
;
}
int
pt_to_emu
(
double
Val
)
_INT64
pt_to_emu
(
double
Val
)
{
return
static_cast
<
int
>
(
Val
*
360000
*
2.54
)
/
72
;
return
static_cast
<
_INT64
>
(
Val
*
360000
*
2.54
)
/
72
;
}
}
...
...
ASCOfficeOdfFile/src/odf/draw_frame_docx.cpp
View file @
a7e3158c
...
...
@@ -855,7 +855,6 @@ void common_draw_docx_convert(oox::docx_conversion_context & Context, const unio
drawing
.
behindDoc
=
L"1"
;
}
drawing
.
margin_rect
[
0
]
=
GetMargin
(
graphicProperties
,
sideLeft
);
drawing
.
margin_rect
[
1
]
=
GetMargin
(
graphicProperties
,
sideTop
);
drawing
.
margin_rect
[
2
]
=
GetMargin
(
graphicProperties
,
sideRight
);
...
...
@@ -864,6 +863,17 @@ void common_draw_docx_convert(oox::docx_conversion_context & Context, const unio
drawing
.
posOffsetH
=
ComputeMarginX
(
pagePropertiesNode
,
pageProperties
,
attlists_
,
graphicProperties
,
drawing
.
additional
);
drawing
.
posOffsetV
=
ComputeMarginY
(
pageProperties
,
attlists_
,
graphicProperties
,
drawing
.
additional
);
if
(
attlists_
.
rel_size_
.
style_rel_width_
)
{
int
type
=
attlists_
.
rel_size_
.
style_rel_width_
->
get_type
();
drawing
.
pctWidth
=
attlists_
.
rel_size_
.
style_rel_width_
->
get_percent
().
get_value
();
}
if
(
attlists_
.
rel_size_
.
style_rel_height_
)
{
int
type
=
attlists_
.
rel_size_
.
style_rel_height_
->
get_type
();
drawing
.
pctHeight
=
attlists_
.
rel_size_
.
style_rel_height_
->
get_percent
().
get_value
();
}
}
drawing
.
number_wrapped_paragraphs
=
graphicProperties
.
style_number_wrapped_paragraphs_
.
get_value_or
(
integer_or_nolimit
(
integer_or_nolimit
::
NoLimit
)
).
get_value
();
...
...
@@ -998,7 +1008,7 @@ void common_draw_docx_convert(oox::docx_conversion_context & Context, const unio
}
void
draw_shape
::
docx_convert
(
oox
::
docx_conversion_context
&
Context
)
{
/////...../////
//--------------------------------------------------------------------------------------------------
oox
::
_docx_drawing
drawing
=
oox
::
_docx_drawing
();
...
...
@@ -1016,10 +1026,17 @@ void draw_shape::docx_convert(oox::docx_conversion_context & Context)
}
Context
.
get_drawing_context
().
clear_stream_shape
();
/////////
common_draw_docx_convert
(
Context
,
common_draw_attlists_
,
drawing
);
/////////
if
(
bad_shape_
&&
drawing
.
fill
.
bitmap
)
// CV_Kucheruk_Maria(rus).odt - картинка по дебильному
{
drawing
.
sub_type
=
1
;
bad_shape_
=
false
;
}
if
(
drawing
.
fill
.
type
<
1
&&
!
IsExistProperty
(
drawing
.
additional
,
L"stroke"
))
//бывает что и не определено ничего
{
drawing
.
fill
.
solid
=
oox
::
oox_solid_fill
::
create
();
...
...
@@ -1027,6 +1044,12 @@ void draw_shape::docx_convert(oox::docx_conversion_context & Context)
drawing
.
fill
.
type
=
1
;
}
if
(
bad_shape_
)
{
Context
.
get_drawing_context
().
stop_shape
();
return
;
}
std
::
wostream
&
strm
=
Context
.
output_stream
();
bool
pState
=
Context
.
get_paragraph_state
();
...
...
@@ -1170,13 +1193,6 @@ void draw_image::docx_convert(oox::docx_conversion_context & Context)
void
draw_text_box
::
docx_convert
(
oox
::
docx_conversion_context
&
Context
)
{
// if (Context.get_drawing_context().get_current_level() > 1 )
//{
// if(Context.delayed_converting_ == false)
// Context.add_delayed_element(Context.get_drawing_context().get_current_frame());
// return;
//}
//тут может быть не только текст , но и таблицы, другие объекты ...
oox
::
StreamsManPtr
prev
=
Context
.
get_stream_man
();
...
...
@@ -1185,11 +1201,11 @@ void draw_text_box::docx_convert(oox::docx_conversion_context & Context)
bool
pState
=
Context
.
get_paragraph_state
();
bool
runState
=
Context
.
get_run_state
();
bool
keepState
=
Context
.
get_paragraph_keep
();
Context
.
set_run_state
(
false
);
Context
.
set_paragraph_state
(
false
);
bool
drState
=
Context
.
get_drawing_state_content
();
Context
.
set_drawing_state_content
(
true
);
...
...
@@ -1205,6 +1221,7 @@ void draw_text_box::docx_convert(oox::docx_conversion_context & Context)
Context
.
set_run_state
(
runState
);
Context
.
set_paragraph_state
(
pState
);
Context
.
set_drawing_state_content
(
drState
);
Context
.
set_paragraph_keep
(
keepState
);
/////...../////
...
...
@@ -1229,6 +1246,7 @@ void draw_text_box::docx_convert(oox::docx_conversion_context & Context)
//+ локальные
bool
auto_fit_text
=
false
;
bool
auto_fit_shape
=
false
;
if
(
!
draw_text_box_attlist_
.
fo_min_height_
)
draw_text_box_attlist_
.
fo_min_height_
=
frame
->
draw_frame_attlist_
.
fo_min_height_
;
if
(
!
draw_text_box_attlist_
.
fo_min_width_
)
draw_text_box_attlist_
.
fo_min_width_
=
frame
->
draw_frame_attlist_
.
fo_min_width_
;
...
...
@@ -1238,19 +1256,25 @@ void draw_text_box::docx_convert(oox::docx_conversion_context & Context)
size_t
min_y
=
get_value_emu
(
draw_text_box_attlist_
.
fo_min_height_
->
get_length
());
if
(
drawing
.
cy
<
min_y
)
{
drawing
.
cy
=
min_y
;
auto_fit_text
=
true
;
drawing
.
cy
=
min_y
;
}
if
(
drawing
.
cy
<
36000
)
auto_fit_shape
=
true
;
}
if
((
draw_text_box_attlist_
.
fo_min_width_
)
&&
(
draw_text_box_attlist_
.
fo_min_width_
->
get_type
()
==
length_or_percent
::
Length
))
{
size_t
min_x
=
get_value_emu
(
draw_text_box_attlist_
.
fo_min_width_
->
get_length
());
if
(
drawing
.
cx
<
min_x
)
{
drawing
.
cx
=
min_x
;
auto_fit_text
=
true
;
drawing
.
cx
=
min_x
;
}
if
(
drawing
.
cx
<
36000
)
auto_fit_shape
=
true
;
}
if
((
draw_text_box_attlist_
.
fo_max_height_
)
&&
(
draw_text_box_attlist_
.
fo_max_height_
->
get_type
()
==
length_or_percent
::
Length
))
{
size_t
max_y
=
get_value_emu
(
draw_text_box_attlist_
.
fo_max_height_
->
get_length
());
...
...
@@ -1261,9 +1285,12 @@ void draw_text_box::docx_convert(oox::docx_conversion_context & Context)
size_t
max_x
=
get_value_emu
(
draw_text_box_attlist_
.
fo_max_width_
->
get_length
());
if
(
drawing
.
cx
>
max_x
)
drawing
.
cy
=
max_x
;
}
if
(
auto_fit_text
)
if
(
auto_fit_shape
)
drawing
.
additional
.
push_back
(
_property
(
L"auto-grow-height"
,
auto_fit_shape
));
else
if
(
auto_fit_text
)
drawing
.
additional
.
push_back
(
_property
(
L"fit-to-size"
,
auto_fit_text
));
///////////////////////////////////////////////////////////////////
std
::
wostream
&
strm
=
Context
.
output_stream
();
...
...
@@ -1277,6 +1304,7 @@ void draw_text_box::docx_convert(oox::docx_conversion_context & Context)
Context
.
set_paragraph_keep
(
true
);
pState
=
Context
.
get_paragraph_state
();
}
keepState
=
Context
.
get_paragraph_keep
();
Context
.
set_paragraph_state
(
false
);
...
...
@@ -1288,7 +1316,8 @@ void draw_text_box::docx_convert(oox::docx_conversion_context & Context)
if
(
!
Context
.
get_drawing_context
().
in_group
())
Context
.
finish_run
();
Context
.
set_paragraph_state
(
pState
);
Context
.
set_paragraph_state
(
pState
);
Context
.
set_paragraph_keep
(
keepState
);
}
void
draw_g
::
docx_convert
(
oox
::
docx_conversion_context
&
Context
)
{
...
...
@@ -1406,7 +1435,6 @@ void draw_g::docx_convert(oox::docx_conversion_context & Context)
}
void
draw_frame
::
docx_convert
(
oox
::
docx_conversion_context
&
Context
)
{
//if ((!Context.get_paragraph_state() && !Context.get_drawing_context().in_group()) && !Context.delayed_converting_)
if
(
Context
.
get_drawing_context
().
get_current_level
()
>
0
&&
!
Context
.
get_drawing_context
().
in_group
()
)
{
Context
.
add_delayed_element
(
this
);
...
...
ASCOfficeOdfFile/src/odf/draw_frame_pptx.cpp
View file @
a7e3158c
...
...
@@ -109,8 +109,8 @@ void draw_frame::pptx_convert(oox::pptx_conversion_context & Context)
double
x_pt
=
common_draw_attlists_
.
position_
.
svg_x_
.
get_value_or
(
length
(
0
)).
get_value_unit
(
length
::
pt
);
double
y_pt
=
common_draw_attlists_
.
position_
.
svg_y_
.
get_value_or
(
length
(
0
)).
get_value_unit
(
length
::
pt
);
if
(
x_pt
<
0
)
x_pt
=
0
;
if
(
y_pt
<
0
)
y_pt
=
0
;
if
(
x_pt
<
0
)
x_pt
=
0
;
if
(
y_pt
<
0
)
y_pt
=
0
;
Context
.
get_slide_context
().
set_rect
(
width_pt
,
height_pt
,
x_pt
,
y_pt
);
}
...
...
ASCOfficeOdfFile/src/odf/draw_shapes.cpp
View file @
a7e3158c
...
...
@@ -467,8 +467,6 @@ void draw_enhanced_geometry::add_child_element( xml::sax * Reader, const std::ws
}
void
draw_enhanced_geometry
::
find_draw_type_oox
()
{
word_art_
=
false
;
if
(
draw_enhanced_geometry_attlist_
.
draw_text_path_
&&
*
draw_enhanced_geometry_attlist_
.
draw_text_path_
==
true
)
{
...
...
@@ -489,12 +487,13 @@ void draw_enhanced_geometry::find_draw_type_oox()
{
if
(
_OO_OOX_wordart
[
i
].
odf_reader
==
odf_type
)
{
word_art_
=
true
;
draw_type_oox_index_
=
i
;
break
;
}
}
}
else
if
(
!
draw_type_oox_index_
)
{
int
count
=
sizeof
(
_OO_OOX_custom_shapes
)
/
sizeof
(
_shape_converter
);
int
pos
=
odf_type
.
find
(
L"ooxml-"
);
...
...
@@ -546,7 +545,7 @@ void draw_enhanced_geometry::find_draw_type_oox()
catch
(...)
{
}
if
(
min
<
0
)
min
=
0
;
if
(
min
<
0
)
min
=
0
;
try
{
...
...
ASCOfficeOdfFile/src/odf/draw_shapes.h
View file @
a7e3158c
...
...
@@ -65,6 +65,8 @@ public:
static
const
ElementType
type
=
typeDrawShape
;
static
const
xml
::
NodeType
xml_type
=
xml
::
typeElement
;
draw_shape
()
:
bad_shape_
(
false
),
word_art_
(
false
)
{}
virtual
void
add_attributes
(
const
xml
::
attributes_wc_ptr
&
Attributes
);
virtual
void
add_child_element
(
xml
::
sax
*
Reader
,
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
);
...
...
@@ -87,6 +89,7 @@ public:
CPDOCCORE_DEFINE_VISITABLE
();
friend
class
odf_document
;
//----------------------------------------------------------------------------------------------
bool
bad_shape_
;
bool
word_art_
;
int
sub_type_
;
std
::
vector
<
odf_reader
::
_property
>
additional_
;
...
...
ASCOfficeOdfFile/src/odf/draw_shapes_docx.cpp
View file @
a7e3158c
...
...
@@ -60,8 +60,6 @@ namespace cpdoccore {
namespace
odf_reader
{
void
draw_shape
::
common_docx_convert
(
oox
::
docx_conversion_context
&
Context
)
{
Context
.
get_drawing_context
().
start_shape
(
this
);
...
...
@@ -115,7 +113,6 @@ void draw_shape::common_docx_convert(oox::docx_conversion_context & Context)
}
void
draw_rect
::
docx_convert
(
oox
::
docx_conversion_context
&
Context
)
{
//if (Context.get_drawing_context().get_current_level() >0 )return;
if
(
Context
.
get_drawing_context
().
get_current_level
()
>
0
&&
!
Context
.
get_drawing_context
().
in_group
()
)
{
if
(
Context
.
delayed_converting_
==
false
)
...
...
@@ -245,17 +242,21 @@ void draw_enhanced_geometry::docx_convert(oox::docx_conversion_context & Context
shape
->
word_art_
=
word_art_
;
bool
set_shape
=
false
;
if
(
draw_type_oox_index_
)
{
shape
->
additional_
.
push_back
(
_property
(
L"odf-custom-draw-index"
,
draw_type_oox_index_
.
get
()));
if
(
shape
->
word_art_
==
true
)
shape
->
additional_
.
push_back
(
_property
(
L"wordArt"
,
true
));
shape
->
additional_
.
push_back
(
_property
(
L"wordArt"
,
true
));
set_shape
=
true
;
}
if
(
sub_type_
)
{
shape
->
sub_type_
=
sub_type_
.
get
();
set_shape
=
true
;
}
if
(
draw_enhanced_geometry_attlist_
.
draw_enhanced_path_
)
...
...
@@ -279,6 +280,8 @@ void draw_enhanced_geometry::docx_convert(oox::docx_conversion_context & Context
std
::
wstringstream
output_
;
svg_path
::
oox_serialize
(
output_
,
o_Polyline
);
shape
->
additional_
.
push_back
(
odf_reader
::
_property
(
L"custom_path"
,
output_
.
str
()));
set_shape
=
true
;
if
(
draw_enhanced_geometry_attlist_
.
drawooo_sub_view_size_
)
{
...
...
@@ -303,12 +306,9 @@ void draw_enhanced_geometry::docx_convert(oox::docx_conversion_context & Context
}
}
}
else
if
(
!
draw_type_oox_index_
)
{
draw_type_oox_index_
=
0
;
}
}
else
if
(
draw_enhanced_geometry_attlist_
.
draw_modifiers_
)
if
(
draw_enhanced_geometry_attlist_
.
draw_modifiers_
)
{
shape
->
additional_
.
push_back
(
_property
(
L"draw-modifiers"
,
draw_enhanced_geometry_attlist_
.
draw_modifiers_
.
get
()));
if
(
draw_handle_geometry_
.
size
()
>
0
)
...
...
@@ -320,6 +320,12 @@ void draw_enhanced_geometry::docx_convert(oox::docx_conversion_context & Context
}
}
}
if
(
!
set_shape
)
{
shape
->
bad_shape_
=
true
;
}
}
}
}
\ No newline at end of file
ASCOfficeOdfFile/src/odf/draw_shapes_pptx.cpp
View file @
a7e3158c
...
...
@@ -166,8 +166,6 @@ void draw_shape::common_pptx_convert(oox::pptx_conversion_context & Context)
{
Context
.
get_slide_context
().
set_property
(
_property
(
L"text-content"
,
text_content_
));
}
//Context.get_slide_context().end_drawing();
}
void
draw_rect
::
pptx_convert
(
oox
::
pptx_conversion_context
&
Context
)
{
...
...
@@ -304,6 +302,8 @@ void draw_enhanced_geometry::pptx_convert(oox::pptx_conversion_context & Context
{
find_draw_type_oox
();
bool
set_shape
=
false
;
if
(
draw_type_oox_index_
)
{
Context
.
get_slide_context
().
set_property
(
_property
(
L"odf-custom-draw-index"
,
draw_type_oox_index_
.
get
()));
...
...
@@ -311,10 +311,12 @@ void draw_enhanced_geometry::pptx_convert(oox::pptx_conversion_context & Context
if
(
word_art_
==
true
)
Context
.
get_slide_context
().
set_property
(
_property
(
L"wordArt"
,
true
));
set_shape
=
true
;
}
if
(
sub_type_
)
{
Context
.
get_slide_context
().
start_shape
(
sub_type_
.
get
());
set_shape
=
true
;
}
if
(
draw_enhanced_geometry_attlist_
.
draw_enhanced_path_
)
...
...
@@ -339,6 +341,8 @@ void draw_enhanced_geometry::pptx_convert(oox::pptx_conversion_context & Context
svg_path
::
oox_serialize
(
output_
,
o_Polyline
);
Context
.
get_slide_context
().
set_property
(
odf_reader
::
_property
(
L"custom_path"
,
output_
.
str
()));
set_shape
=
true
;
if
(
draw_enhanced_geometry_attlist_
.
drawooo_sub_view_size_
)
{
std
::
vector
<
std
::
wstring
>
splitted
;
...
...
@@ -362,10 +366,6 @@ void draw_enhanced_geometry::pptx_convert(oox::pptx_conversion_context & Context
}
}
}
else
if
(
!
draw_type_oox_index_
)
{
draw_type_oox_index_
=
0
;
}
}
if
(
draw_enhanced_geometry_attlist_
.
draw_modifiers_
)
{
...
...
@@ -380,6 +380,10 @@ void draw_enhanced_geometry::pptx_convert(oox::pptx_conversion_context & Context
}
}
}
if
(
!
set_shape
)
{
Context
.
get_slide_context
().
start_shape
(
1
);
//restart type shape
}
}
}
}
\ No newline at end of file
ASCOfficeOdfFile/src/odf/office_text.cpp
View file @
a7e3158c
...
...
@@ -147,6 +147,14 @@ void office_text::pptx_convert(oox::pptx_conversion_context & Context)
const
wchar_t
*
office_change_info
::
ns
=
L"office"
;
const
wchar_t
*
office_change_info
::
name
=
L"change-info"
;
void
office_change_info
::
add_attributes
(
const
xml
::
attributes_wc_ptr
&
Attributes
)
{
int
count
=
Attributes
->
size
();
CP_APPLY_ATTR
(
L"office:chg-author"
,
office_chg_author_
);
CP_APPLY_ATTR
(
L"office:chg-date-time"
,
office_chg_date_time_
);
}
void
office_change_info
::
add_child_element
(
xml
::
sax
*
Reader
,
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
if
CP_CHECK_NAME
(
L"dc"
,
L"date"
)
...
...
@@ -165,14 +173,23 @@ void office_change_info::docx_convert(oox::docx_conversion_context & Context)
{
std
::
wstring
date
;
std
::
wstring
author
;
if
(
dc_date_
)
{
date
=
xml
::
utils
::
replace_text_to_xml
(
dynamic_cast
<
dc_date
*
>
(
dc_date_
.
get
())
->
content_
);
}
else
if
(
office_chg_date_time_
)
{
date
=
*
office_chg_date_time_
;
}
if
(
dc_creator_
)
{
author
=
xml
::
utils
::
replace_text_to_xml
(
dynamic_cast
<
dc_creator
*
>
(
dc_creator_
.
get
())
->
content_
);
}
else
if
(
office_chg_author_
)
{
author
=
*
office_chg_author_
;
}
Context
.
get_text_tracked_context
().
set_user_info
(
author
,
date
);
}
...
...
ASCOfficeOdfFile/src/odf/office_text.h
View file @
a7e3158c
...
...
@@ -88,11 +88,14 @@ public:
virtual
void
docx_convert
(
oox
::
docx_conversion_context
&
Context
)
;
private:
virtual
void
add_attributes
(
const
xml
::
attributes_wc_ptr
&
Attributes
)
{}
virtual
void
add_attributes
(
const
xml
::
attributes_wc_ptr
&
Attributes
)
;
virtual
void
add_child_element
(
xml
::
sax
*
Reader
,
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
);
office_element_ptr
dc_date_
;
office_element_ptr
dc_creator_
;
_CP_OPT
(
std
::
wstring
)
office_chg_author_
;
_CP_OPT
(
std
::
wstring
)
office_chg_date_time_
;
};
CP_REGISTER_OFFICE_ELEMENT2
(
office_change_info
)
...
...
ASCOfficeOdfFile/src/odf/paragraph_elements.cpp
View file @
a7e3158c
...
...
@@ -332,7 +332,7 @@ const wchar_t * span::name = L"span";
std
::
wostream
&
span
::
text_to_stream
(
std
::
wostream
&
_Wostream
)
const
{
BOOST_FOREACH
(
const
office_element_ptr
&
parElement
,
paragraph_
content_
)
BOOST_FOREACH
(
const
office_element_ptr
&
parElement
,
content_
)
{
parElement
->
text_to_stream
(
_Wostream
);
}
...
...
@@ -359,13 +359,13 @@ void span::add_attributes( const xml::attributes_wc_ptr & Attributes )
void
span
::
add_child_element
(
xml
::
sax
*
Reader
,
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
CP_CREATE_ELEMENT
(
paragraph_
content_
);
CP_CREATE_ELEMENT
(
content_
);
}
void
span
::
add_text
(
const
std
::
wstring
&
Text
)
{
office_element_ptr
elm
=
text
::
create
(
Text
);
paragraph_
content_
.
push_back
(
elm
);
content_
.
push_back
(
elm
);
}
void
span
::
docx_convert
(
oox
::
docx_conversion_context
&
Context
)
...
...
@@ -406,7 +406,7 @@ void span::docx_convert(oox::docx_conversion_context & Context)
if
(
!
addNewRun
)
Context
.
add_new_run
();
BOOST_FOREACH
(
const
office_element_ptr
&
parElement
,
paragraph_
content_
)
BOOST_FOREACH
(
const
office_element_ptr
&
parElement
,
content_
)
{
parElement
->
docx_convert
(
Context
);
}
...
...
@@ -420,7 +420,7 @@ void span::docx_convert(oox::docx_conversion_context & Context)
void
span
::
xlsx_convert
(
oox
::
xlsx_conversion_context
&
Context
)
{
Context
.
start_span
(
text_style_name_
.
style_name
());
BOOST_FOREACH
(
const
office_element_ptr
&
elm
,
paragraph_
content_
)
BOOST_FOREACH
(
const
office_element_ptr
&
elm
,
content_
)
{
elm
->
xlsx_convert
(
Context
);
}
...
...
@@ -432,7 +432,7 @@ void span::pptx_convert(oox::pptx_conversion_context & Context)
Context
.
get_text_context
().
get_styles_context
().
start_process_style
(
styleInst
);
Context
.
get_text_context
().
start_span
(
text_style_name_
.
style_name
());
BOOST_FOREACH
(
const
office_element_ptr
&
elm
,
paragraph_
content_
)
BOOST_FOREACH
(
const
office_element_ptr
&
elm
,
content_
)
{
elm
->
pptx_convert
(
Context
);
}
...
...
@@ -446,7 +446,7 @@ const wchar_t * a::name = L"a";
std
::
wostream
&
a
::
text_to_stream
(
std
::
wostream
&
_Wostream
)
const
{
BOOST_FOREACH
(
const
office_element_ptr
&
element
,
paragraph_
content_
)
BOOST_FOREACH
(
const
office_element_ptr
&
element
,
content_
)
{
element
->
text_to_stream
(
_Wostream
);
}
...
...
@@ -465,13 +465,13 @@ void a::add_attributes( const xml::attributes_wc_ptr & Attributes )
void
a
::
add_child_element
(
xml
::
sax
*
Reader
,
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
CP_CREATE_ELEMENT
(
paragraph_
content_
);
CP_CREATE_ELEMENT
(
content_
);
}
void
a
::
add_text
(
const
std
::
wstring
&
Text
)
{
office_element_ptr
elm
=
text
::
create
(
Text
)
;
paragraph_
content_
.
push_back
(
elm
);
content_
.
push_back
(
elm
);
}
void
a
::
docx_convert
(
oox
::
docx_conversion_context
&
Context
)
...
...
@@ -527,7 +527,7 @@ void a::docx_convert(oox::docx_conversion_context & Context)
if
(
!
addNewRun
)
Context
.
add_new_run
();
BOOST_FOREACH
(
const
office_element_ptr
&
parElement
,
paragraph_
content_
)
BOOST_FOREACH
(
const
office_element_ptr
&
parElement
,
content_
)
{
parElement
->
docx_convert
(
Context
);
}
...
...
@@ -542,7 +542,7 @@ void a::docx_convert(oox::docx_conversion_context & Context)
void
a
::
xlsx_convert
(
oox
::
xlsx_conversion_context
&
Context
)
{
Context
.
start_hyperlink
(
text_style_name_
.
style_name
());
BOOST_FOREACH
(
const
office_element_ptr
&
elm
,
paragraph_
content_
)
BOOST_FOREACH
(
const
office_element_ptr
&
elm
,
content_
)
{
elm
->
xlsx_convert
(
Context
);
}
...
...
@@ -551,7 +551,7 @@ void a::xlsx_convert(oox::xlsx_conversion_context & Context)
void
a
::
pptx_convert
(
oox
::
pptx_conversion_context
&
Context
)
{
Context
.
get_text_context
().
start_hyperlink
();
BOOST_FOREACH
(
const
office_element_ptr
&
elm
,
paragraph_
content_
)
BOOST_FOREACH
(
const
office_element_ptr
&
elm
,
content_
)
{
elm
->
pptx_convert
(
Context
);
}
...
...
ASCOfficeOdfFile/src/odf/paragraph_elements.h
View file @
a7e3158c
...
...
@@ -378,7 +378,7 @@ public:
span
()
{}
office_element_ptr_array
paragraph_
content_
;
office_element_ptr_array
content_
;
odf_types
::
style_ref
text_style_name_
;
odf_types
::
style_ref_array
text_class_names_
;
...
...
@@ -424,7 +424,7 @@ private:
odf_types
::
style_ref
text_style_name_
;
odf_types
::
style_ref
text_visited_style_name_
;
office_element_ptr_array
paragraph_
content_
;
office_element_ptr_array
content_
;
};
CP_REGISTER_OFFICE_ELEMENT2
(
a
);
...
...
ASCOfficeOdfFile/src/odf/ruby.cpp
View file @
a7e3158c
...
...
@@ -55,7 +55,7 @@ const wchar_t * ruby_base::name = L"ruby-base";
std
::
wostream
&
ruby_base
::
text_to_stream
(
std
::
wostream
&
_Wostream
)
const
{
serialize_elements_text
(
_Wostream
,
paragraph_
content_
);
serialize_elements_text
(
_Wostream
,
content_
);
return
_Wostream
;
}
...
...
@@ -65,13 +65,13 @@ void ruby_base::add_attributes( const xml::attributes_wc_ptr & Attributes )
void
ruby_base
::
add_child_element
(
xml
::
sax
*
Reader
,
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
CP_CREATE_ELEMENT
(
paragraph_
content_
);
CP_CREATE_ELEMENT
(
content_
);
}
void
ruby_base
::
add_text
(
const
std
::
wstring
&
Text
)
{
office_element_ptr
elm
=
text
::
create
(
Text
)
;
paragraph_
content_
.
push_back
(
elm
);
content_
.
push_back
(
elm
);
}
// text:ruby-text
...
...
ASCOfficeOdfFile/src/odf/ruby.h
View file @
a7e3158c
...
...
@@ -64,7 +64,7 @@ private:
virtual
void
add_text
(
const
std
::
wstring
&
Text
);
private:
office_element_ptr_array
paragraph_
content_
;
office_element_ptr_array
content_
;
};
...
...
@@ -94,8 +94,8 @@ private:
virtual
void
add_text
(
const
std
::
wstring
&
Text
);
private:
odf_types
::
style_ref
text_style_name_
;
office_element_ptr_array
content_
;
odf_types
::
style_ref
text_style_name_
;
office_element_ptr_array
content_
;
};
...
...
ASCOfficeOdfFile/src/odf/style_paragraph_properties_pptx.cpp
View file @
a7e3158c
...
...
@@ -276,25 +276,6 @@ void paragraph_format_properties::pptx_convert(oox::pptx_conversion_context & Co
{
std
::
wstringstream
&
_pPr
=
Context
.
get_text_context
().
get_styles_context
().
paragraph_attr
();
//сначала аттрибуты к самому pPr или defPPr
if
(
fo_text_align_
)
{
std
::
wstring
jc
;
switch
(
fo_text_align_
->
get_type
())
{
case
text_align
:
:
Start
:
case
text_align
:
:
Left
:
jc
=
L"l"
;
break
;
case
text_align
:
:
End
:
case
text_align
:
:
Right
:
jc
=
L"r"
;
break
;
case
text_align
:
:
Center
:
jc
=
L"ctr"
;
break
;
case
text_align
:
:
Justify
:
jc
=
L"just"
;
break
;
}
if
(
jc
.
length
()
>
0
)
_pPr
<<
L"algn=
\"
"
<<
jc
<<
"
\"
"
;
}
if
(
fo_margin_left_
||
fo_margin_right_
||
fo_text_indent_
)
{
// TODO auto indent
...
...
@@ -315,6 +296,26 @@ void paragraph_format_properties::pptx_convert(oox::pptx_conversion_context & Co
if
(
!
w_firstLine
.
empty
())
_pPr
<<
L"indent=
\"
"
<<
w_firstLine
<<
"
\"
"
;
}
if
(
fo_text_align_
)
{
std
::
wstring
jc
;
switch
(
fo_text_align_
->
get_type
())
{
case
text_align
:
:
Start
:
case
text_align
:
:
Left
:
jc
=
L"l"
;
break
;
case
text_align
:
:
End
:
case
text_align
:
:
Right
:
jc
=
L"r"
;
break
;
case
text_align
:
:
Center
:
jc
=
L"ctr"
;
break
;
case
text_align
:
:
Justify
:
jc
=
L"just"
;
break
;
}
if
(
jc
.
length
()
>
0
)
_pPr
<<
L"algn=
\"
"
<<
jc
<<
"
\"
"
;
}
if
(
style_vertical_align_
)
{
std
::
wstring
w_val
;
...
...
@@ -329,7 +330,6 @@ void paragraph_format_properties::pptx_convert(oox::pptx_conversion_context & Co
if
(
!
w_val
.
empty
())
_pPr
<<
L"fontAlgn=
\"
"
<<
w_val
<<
"
\"
"
;
}
//if (style_writing_mode_)
//{
...
...
ASCOfficeOdfFile/src/odf/style_text_properties.cpp
View file @
a7e3158c
...
...
@@ -343,7 +343,18 @@ void text_format_properties_content::pptx_convert(oox::pptx_conversion_context &
CP_XML_ATTR
(
L"cap"
,
"small"
);
}
}
// underline
if
(
fo_text_transform_
)
{
if
(
fo_text_transform_
->
get_type
()
==
text_transform
::
Uppercase
)
{
CP_XML_ATTR
(
L"cap"
,
"all"
);
}
else
if
(
fo_text_transform_
->
get_type
()
==
text_transform
::
Lowercase
)
{
CP_XML_ATTR
(
L"cap"
,
"small"
);
}
}
// underline
line_width
under
=
style_text_underline_width_
.
get_value_or
(
line_width
::
Auto
);
bool
underlineBold
=
under
.
get_type
()
==
line_width
::
Bold
||
under
.
get_type
()
==
line_width
::
Thick
;
...
...
@@ -363,7 +374,7 @@ void text_format_properties_content::pptx_convert(oox::pptx_conversion_context &
switch
(
style_text_underline_type_
->
get_type
())
{
case
line_type
:
:
Single
:
underline
=
L"sng"
;
break
;
case
line_type
:
:
Double
:
underline
=
L"d
ouble
"
;
break
;
case
line_type
:
:
Double
:
underline
=
L"d
bl
"
;
break
;
}
}
else
if
(
style_text_underline_style_
)
...
...
@@ -397,8 +408,8 @@ void text_format_properties_content::pptx_convert(oox::pptx_conversion_context &
case
line_style
:
:
Wave
:
if
(
underlineBold
)
underline
=
L"wavyHeavy"
;
else
if
(
style_text_underline_type_
.
get_value_or
(
line_type
(
line_type
::
Single
)
).
get_type
()
==
line_type
::
Double
)
underline
=
L"wavyD
ouble
"
;
else
underline
=
L"wav
e
"
;
underline
=
L"wavyD
bl
"
;
else
underline
=
L"wav
y
"
;
break
;
}
}
...
...
@@ -425,10 +436,10 @@ void text_format_properties_content::pptx_convert(oox::pptx_conversion_context &
if
(
fo_language_
||
style_language_asian_
||
style_language_complex_
)
{
std
::
wstring
w_val
;
if
(
fo_language_
)
w_val
=
*
fo_language_
;
else
if
(
fo_country_
)
w_val
=
*
fo_country_
;
else
if
(
style_country_asian_
)
w_val
=
*
style_country_asian_
;
else
if
(
style_language_asian_
)
w_val
=
*
style_language_asian_
;
if
(
fo_language_
)
w_val
=
*
fo_language_
;
else
if
(
fo_country_
)
w_val
=
*
fo_country_
;
else
if
(
style_country_asian_
)
w_val
=
*
style_country_asian_
;
else
if
(
style_language_asian_
)
w_val
=
*
style_language_asian_
;
else
if
(
style_language_complex_
)
w_val
=
*
style_language_complex_
;
else
if
(
style_country_complex_
)
w_val
=
*
style_country_complex_
;
...
...
@@ -619,7 +630,7 @@ void text_format_properties_content::docx_convert(oox::docx_conversion_context &
underline
=
L"single"
;
break
;
case
line_type
:
:
Double
:
underline
=
L"d
ouble
"
;
underline
=
L"d
bl
"
;
break
;
}
}
...
...
@@ -666,9 +677,9 @@ void text_format_properties_content::docx_convert(oox::docx_conversion_context &
if
(
underlineBold
)
underline
=
L"wavyHeavy"
;
else
if
(
style_text_underline_type_
.
get_value_or
(
line_type
(
line_type
::
Single
)
).
get_type
()
==
line_type
::
Double
)
underline
=
L"wavyD
ouble
"
;
underline
=
L"wavyD
bl
"
;
else
underline
=
L"wav
e
"
;
underline
=
L"wav
y
"
;
break
;
}
}
...
...
@@ -1109,7 +1120,7 @@ void text_format_properties_content::oox_convert (std::wostream & _rPr, bool gra
underline
=
L"single"
;
break
;
case
line_type
:
:
Double
:
underline
=
L"d
ouble
"
;
underline
=
L"d
bl
"
;
break
;
}
}
...
...
@@ -1156,9 +1167,9 @@ void text_format_properties_content::oox_convert (std::wostream & _rPr, bool gra
if
(
underlineBold
)
underline
=
L"wavyHeavy"
;
else
if
(
style_text_underline_type_
.
get_value_or
(
line_type
(
line_type
::
Single
)
).
get_type
()
==
line_type
::
Double
)
underline
=
L"wavyD
ouble
"
;
underline
=
L"wavyD
bl
"
;
else
underline
=
L"wav
e
"
;
underline
=
L"wav
y
"
;
break
;
}
}
...
...
ASCOfficeOdfFile/src/odf/styles.cpp
View file @
a7e3158c
...
...
@@ -747,11 +747,11 @@ const wchar_t * style_column::name = L"column";
void
style_column
::
add_attributes
(
const
xml
::
attributes_wc_ptr
&
Attributes
)
{
CP_APPLY_ATTR
(
L"style:rel-width"
,
style_rel_width_
);
CP_APPLY_ATTR
(
L"fo:start-indent"
,
fo_start_indent_
,
length
(
0.0
,
length
::
cm
));
CP_APPLY_ATTR
(
L"fo:end-indent"
,
fo_end_indent_
,
length
(
0.0
,
length
::
cm
));
CP_APPLY_ATTR
(
L"fo:space-before"
,
fo_space_before_
,
length
(
0.0
,
length
::
cm
));
CP_APPLY_ATTR
(
L"fo:space-after"
,
fo_space_after_
,
length
(
0.0
,
length
::
cm
));
CP_APPLY_ATTR
(
L"style:rel-width"
,
style_rel_width_
);
CP_APPLY_ATTR
(
L"fo:start-indent"
,
fo_start_indent_
,
length
(
0.0
,
length
::
cm
));
CP_APPLY_ATTR
(
L"fo:end-indent"
,
fo_end_indent_
,
length
(
0.0
,
length
::
cm
));
CP_APPLY_ATTR
(
L"fo:space-before"
,
fo_space_before_
,
length
(
0.0
,
length
::
cm
));
CP_APPLY_ATTR
(
L"fo:space-after"
,
fo_space_after_
,
length
(
0.0
,
length
::
cm
));
}
...
...
@@ -1177,20 +1177,23 @@ void style_page_layout_properties_attlist::pptx_convert(oox::pptx_conversion_con
if
(
fo_page_width_
||
fo_page_height_
||
style_print_orientation_
)
{
std
::
wstring
w_w
=
L""
,
w_h
=
L""
;
std
::
wstring
w_w
,
w_h
;
int
h
=
0
,
w
=
0
;
_INT64
h
=
0
,
w
=
0
;
if
(
fo_page_width_
)
{
w
=
fo_page_width_
->
get_value_unit
(
length
::
emu
);
if
(
w
<
914400
)
w
=
914400
;
w_w
=
boost
::
lexical_cast
<
std
::
wstring
>
(
w
);
w_w
=
std
::
to_wstring
(
w
);
}
if
(
fo_page_height_
)
{
h
=
fo_page_height_
->
get_value_unit
(
length
::
emu
);
w_h
=
boost
::
lexical_cast
<
std
::
wstring
>
(
h
);
if
(
h
<
914400
)
h
=
914400
;
w_h
=
std
::
to_wstring
(
h
);
}
std
::
wstring
w_orient
=
L"custom"
;
...
...
@@ -1219,13 +1222,13 @@ void style_page_layout_properties_attlist::pptx_convert(oox::pptx_conversion_con
// style-footnote-sep-attlist
void
style_footnote_sep_attlist
::
add_attributes
(
const
xml
::
attributes_wc_ptr
&
Attributes
)
{
CP_APPLY_ATTR
(
L"style:width"
,
style_width_
);
CP_APPLY_ATTR
(
L"style:rel-width"
,
style_rel_width_
);
CP_APPLY_ATTR
(
L"style:color"
,
style_color_
);
CP_APPLY_ATTR
(
L"style:line-style"
,
style_line_style_
);
CP_APPLY_ATTR
(
L"style:type"
,
style_adjustment_
,
style_type
(
style_type
::
Left
));
// default Left
CP_APPLY_ATTR
(
L"style:distance-before-sep"
,
style_distance_before_sep_
);
CP_APPLY_ATTR
(
L"style:distance-after-sep"
,
style_distance_after_sep_
);
CP_APPLY_ATTR
(
L"style:width"
,
style_width_
);
CP_APPLY_ATTR
(
L"style:rel-width"
,
style_rel_width_
);
CP_APPLY_ATTR
(
L"style:color"
,
style_color_
);
CP_APPLY_ATTR
(
L"style:line-style"
,
style_line_style_
);
CP_APPLY_ATTR
(
L"style:type"
,
style_adjustment_
,
style_type
(
style_type
::
Left
));
// default Left
CP_APPLY_ATTR
(
L"style:distance-before-sep"
,
style_distance_before_sep_
);
CP_APPLY_ATTR
(
L"style:distance-after-sep"
,
style_distance_after_sep_
);
}
/// style:footnote-sep
...
...
@@ -1275,13 +1278,6 @@ bool style_page_layout_properties::docx_back_serialize(std::wostream & strm, oox
}
void
style_page_layout_properties
::
docx_convert_serialize
(
std
::
wostream
&
strm
,
oox
::
docx_conversion_context
&
Context
)
{
if
(
Context
.
get_table_context
().
in_table
())
{
// мы находимся внутри таблицы, устанавливаем специальное значение
Context
.
section_properties_in_table
(
this
);
return
;
}
style_columns
*
columns
=
dynamic_cast
<
style_columns
*>
(
style_page_layout_properties_elements_
.
style_columns_
.
get
());
CP_XML_WRITER
(
strm
)
...
...
@@ -1462,39 +1458,42 @@ void style_master_page::pptx_convert(oox::pptx_conversion_context & Context)
////////////////
const
wchar_t
*
hdrHeader
=
L"<w:hdr \
xmlns:wpc=
\"
http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas
\"
\
xmlns:mc=
\"
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:w=
\"
http://schemas.openxmlformats.org/wordprocessingml/2006/main
\"
\
xmlns:m=
\"
http://schemas.openxmlformats.org/officeDocument/2006/math
\"
\
xmlns:v=
\"
urn:schemas-microsoft-com:vml
\"
\
xmlns:wp14=
\"
http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing
\"
\
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:w14=
\"
http://schemas.microsoft.com/office/word/2010/wordml
\"
\
xmlns:wp=
\"
http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing
\"
\
xmlns:wp14=
\"
http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing
\"
\
xmlns:wpi=
\"
http://schemas.microsoft.com/office/word/2010/wordprocessingInk
\"
\
xmlns:wpg=
\"
http://schemas.microsoft.com/office/word/2010/wordprocessingGroup
\"
\
xmlns:wps=
\"
http://schemas.microsoft.com/office/word/2010/wordprocessingShape
\"
\
xmlns:wpc=
\"
http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas
\"
\
xmlns:mc=
\"
http://schemas.openxmlformats.org/markup-compatibility/2006
\"
\
xmlns:wpi=
\"
http://schemas.microsoft.com/office/word/2010/wordprocessingInk
\"
\
xmlns:wne=
\"
http://schemas.microsoft.com/office/word/2006/wordml
\"
\
xmlns:wps=
\"
http://schemas.microsoft.com/office/word/2010/wordprocessingShape
\"
\
xmlns:a=
\"
http://schemas.openxmlformats.org/drawingml/2006/main
\"
\
xmlns:v=
\"
urn:schemas-microsoft-com:vml
\"
\
mc:Ignorable=
\"
w14 wp14
\"
>"
;
const
wchar_t
*
ftrHeader
=
L"<w:ftr \
xmlns:wpc=
\"
http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas
\"
\
xmlns:mc=
\"
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:w=
\"
http://schemas.openxmlformats.org/wordprocessingml/2006/main
\"
\
xmlns:m=
\"
http://schemas.openxmlformats.org/officeDocument/2006/math
\"
\
xmlns:v=
\"
urn:schemas-microsoft-com:vml
\"
\
xmlns:wp14=
\"
http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing
\"
\
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:w14=
\"
http://schemas.microsoft.com/office/word/2010/wordml
\"
\
xmlns:wp=
\"
http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing
\"
\
xmlns:wp14=
\"
http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing
\"
\
xmlns:wpi=
\"
http://schemas.microsoft.com/office/word/2010/wordprocessingInk
\"
\
xmlns:wpg=
\"
http://schemas.microsoft.com/office/word/2010/wordprocessingGroup
\"
\
xmlns:wps=
\"
http://schemas.microsoft.com/office/word/2010/wordprocessingShape
\"
\
xmlns:wpc=
\"
http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas
\"
\
xmlns:mc=
\"
http://schemas.openxmlformats.org/markup-compatibility/2006
\"
\
xmlns:wpi=
\"
http://schemas.microsoft.com/office/word/2010/wordprocessingInk
\"
\
xmlns:wne=
\"
http://schemas.microsoft.com/office/word/2006/wordml
\"
\
xmlns:wps=
\"
http://schemas.microsoft.com/office/word/2010/wordprocessingShape
\"
\
xmlns:a=
\"
http://schemas.openxmlformats.org/drawingml/2006/main
\"
\
xmlns:v=
\"
urn:schemas-microsoft-com:vml
\"
\
mc:Ignorable=
\"
w14 wp14
\"
>"
;
void
style_header
::
docx_convert
(
oox
::
docx_conversion_context
&
Context
)
...
...
ASCOfficeOdfFile/src/odf/svg_parser.cpp
View file @
a7e3158c
...
...
@@ -754,7 +754,7 @@ namespace svg_path
}
}
if
((
aCurrPoly
.
points
.
size
()
>
0
||
!
bIsClosed
)
&&
!
aCurrPoly
.
command
.
empty
())
if
((
aCurrPoly
.
points
.
size
()
>
0
||
!
bIsClosed
)
&&
!
aCurrPoly
.
command
.
empty
()
&&
aCurrPoly
.
command
!=
L"a:cubicBezTo"
)
{
// end-process last poly
...
...
ASCOfficeOdfFile/src/odf/table_docx.cpp
View file @
a7e3158c
...
...
@@ -175,18 +175,6 @@ void table_table::docx_convert(oox::docx_conversion_context & Context)
Context
.
get_table_context
().
end_table
();
_Wostream
<<
L"</w:tbl>"
;
if
(
office_element
*
elm
=
Context
.
get_section_properties_in_table
())
{
if
(
Context
.
get_table_context
().
in_table
())
Context
.
section_properties_in_table
(
elm
);
else
{
_Wostream
<<
L"<w:p><w:pPr>"
;
elm
->
docx_convert
(
Context
);
_Wostream
<<
L"</w:pPr></w:p>"
;
}
}
}
void
table_columns
::
docx_convert
(
oox
::
docx_conversion_context
&
Context
)
...
...
ASCOfficeOdfFile/src/odf/text_elements.cpp
View file @
a7e3158c
This diff is collapsed.
Click to expand it.
ASCOfficeOdfFile/src/odf/text_elements.h
View file @
a7e3158c
...
...
@@ -56,12 +56,12 @@ public:
std
::
wostream
&
text_to_stream
(
std
::
wostream
&
_Wostream
)
const
;
void
add_attributes
(
const
xml
::
attributes_wc_ptr
&
Attributes
);
void
add_child_element
(
xml
::
sax
*
Reader
,
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
,
document_context
*
Context
);
void
add_text
(
const
std
::
wstring
&
Text
);
void
add_attributes
(
const
xml
::
attributes_wc_ptr
&
Attributes
);
void
add_child_element
(
xml
::
sax
*
Reader
,
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
,
document_context
*
Context
);
void
add_text
(
const
std
::
wstring
&
Text
);
paragraph
*
get_next
()
{
return
next_par_
;
}
void
set_next
(
paragraph
*
next
)
{
next_par_
=
next
;}
paragraph
*
get_next
()
{
return
next_par_
;
}
void
set_next
(
paragraph
*
next
)
{
next_par_
=
next
;}
void
set_next_section
(
bool
Val
)
{
...
...
@@ -75,17 +75,17 @@ public:
void
afterCreate
(
document_context
*
ctx
);
void
docx_convert
(
oox
::
docx_conversion_context
&
Context
)
;
void
xlsx_convert
(
oox
::
xlsx_conversion_context
&
Context
)
;
void
pptx_convert
(
oox
::
pptx_conversion_context
&
Context
)
;
void
docx_convert
(
oox
::
docx_conversion_context
&
Context
)
;
void
xlsx_convert
(
oox
::
xlsx_conversion_context
&
Context
)
;
void
pptx_convert
(
oox
::
pptx_conversion_context
&
Context
)
;
void
drop_cap_docx_convert
(
oox
::
docx_conversion_context
&
Context
);
office_element_ptr_array
content_
;
private:
void
drop_cap_text_docx_convert
(
office_element_ptr
first_text_paragraph
,
oox
::
docx_conversion_context
&
Context
);
paragraph_attrs
paragraph_attrs_
;
office_element_ptr_array
paragraph_content_
;
paragraph_attrs
attrs_
;
paragraph
*
next_par_
;
...
...
@@ -117,6 +117,7 @@ public:
virtual
void
afterCreate
();
virtual
std
::
wostream
&
text_to_stream
(
std
::
wostream
&
_Wostream
)
const
;
paragraph
paragraph_
;
private:
virtual
void
add_attributes
(
const
xml
::
attributes_wc_ptr
&
Attributes
);
...
...
@@ -130,8 +131,6 @@ private:
_CP_OPT
(
bool
)
text_is_list_header_
;
_CP_OPT
(
std
::
wstring
)
text_number_
;
paragraph
paragraph_
;
friend
class
par_docx_convert_class
;
};
...
...
@@ -545,8 +544,8 @@ private:
virtual
void
add_attributes
(
const
xml
::
attributes_wc_ptr
&
Attributes
);
virtual
void
add_child_element
(
xml
::
sax
*
Reader
,
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
);
_CP_OPT
(
std
::
wstring
)
text_id_
;
//== xml:id
office_element_ptr
element_
;
_CP_OPT
(
std
::
wstring
)
text_id_
;
//== xml:id
office_element_ptr
_array
content_
;
};
CP_REGISTER_OFFICE_ELEMENT2
(
text_changed_region
);
...
...
ASCOfficePPTFile/PPTFormatLib/Win32/PPTFormatLib.vcproj
View file @
a7e3158c
...
...
@@ -369,6 +369,14 @@
<File
RelativePath=
"..\..\..\ASCOfficeDocxFile2\DocWrapper\DocxSerializer.cpp"
>
<FileConfiguration
Name=
"Debug|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
AdditionalOptions=
"/bigobj"
/>
</FileConfiguration>
<FileConfiguration
Name=
"Debug|x64"
>
...
...
ASCOfficePPTXFile/ASCOfficeDrawingConverter.cpp
View file @
a7e3158c
...
...
@@ -4206,7 +4206,7 @@ HRESULT CDrawingConverter::SaveObject(LONG lStart, LONG lLength, const CString&
if
(
-
1
==
nIndexF
)
return
S_FALSE
;
int
nIndexTail
=
(
std
::
min
)(
strMainProps
.
Find
(
_T
(
"<wp14:sizeRelH"
)),
strMainProps
.
Find
(
_T
(
"<wp14:sizeRelV"
)
));
int
nIndexTail
=
strMainProps
.
Find
(
_T
(
"<wp14:sizeRel"
));
if
(
-
1
!=
nIndexTail
)
{
strMainPropsTail
=
strMainProps
.
Right
(
strMainProps
.
GetLength
()
-
nIndexTail
);
...
...
ASCOfficePPTXFile/Editor/Drawing/Shapes/BaseShape/PPTShape/Formula.h
View file @
a7e3158c
...
...
@@ -116,42 +116,44 @@ namespace NSGuidesVML
ptValue
=
2
};
static
LONG
GetValue
(
CString
strParam
,
ParamType
&
ptType
,
bool
&
bRes
,
static
long
GetValue
(
CString
strParam
,
ParamType
&
ptType
,
bool
&
bRes
,
long
lShapeWidth
=
ShapeSizeVML
,
long
lShapeHeight
=
ShapeSizeVML
)
{
ptType
=
ptValue
;
bRes
=
true
;
ptType
=
ptValue
;
bRes
=
true
;
long
val
=
0
;
if
(
'#'
==
strParam
[
0
])
{
ptType
=
ptAdjust
;
return
(
LONG
)
XmlUtils
::
GetInteger
(
strParam
.
Mid
(
1
));
val
=
XmlUtils
::
GetInteger
(
strParam
.
Mid
(
1
));
}
else
if
(
'@'
==
strParam
[
0
])
{
ptType
=
ptFormula
;
return
(
LONG
)
XmlUtils
::
GetInteger
(
strParam
.
Mid
(
1
));
val
=
XmlUtils
::
GetInteger
(
strParam
.
Mid
(
1
));
}
else
if
(
!
NSStringUtils
::
IsNumber
(
strParam
))
{
if
(
_T
(
"width"
)
==
strParam
)
{
return
lShapeWidth
;
val
=
lShapeWidth
;
}
else
if
(
_T
(
"height"
)
==
strParam
)
{
return
lShapeHeight
;
val
=
lShapeHeight
;
}
else
if
(
_T
(
"pixelWidth"
)
==
strParam
)
{
return
lShapeWidth
;
val
=
lShapeWidth
;
}
else
if
(
_T
(
"pixelHeight"
)
==
strParam
)
{
return
lShapeHeight
;
val
=
lShapeHeight
;
}
else
if
(
_T
(
"pixelLineWidth"
)
==
strParam
||
_T
(
"lineDrawn"
)
==
strParam
)
{
return
1
;
val
=
1
;
}
else
{
...
...
@@ -162,8 +164,9 @@ namespace NSGuidesVML
else
{
ptType
=
ptValue
;
return
(
LONG
)
XmlUtils
::
GetInteger
(
strParam
);
val
=
XmlUtils
::
GetInteger
(
strParam
);
}
return
val
;
}
static
FormulaType
GetFormula
(
CString
strName
,
bool
&
bRes
)
...
...
ASCOfficePPTXFile/Editor/Drawing/Shapes/BaseShape/PPTShape/ppt2pptxshapeconverter.h
View file @
a7e3158c
...
...
@@ -2669,6 +2669,11 @@ namespace NSGuidesVML
{
if
(
0
!=
m_arSlicesPath
.
size
())
{
if
(
lValue
>=
0x7fffff00
||
lValue
<=
-
0x7fffff00
)
{
lValue
=
0
;
//process(2).ppt - todooo разобраться что за хрень это ваще приплыла
}
m_arSlicesPath
[
m_arSlicesPath
.
size
()
-
1
].
AddParam
(
lValue
,
eParamType
);
}
}
...
...
ASCOfficePPTXFile/Editor/XmlWriter.h
View file @
a7e3158c
...
...
@@ -324,14 +324,14 @@ namespace NSBinPptxRW
m_lFlag
=
0
;
m_lGroupIndex
=
0
;
m_lObjectId
=
0
;
m_lObjectIdVML
=
0
;
m_lObjectIdVML
=
0
;
m_lObjectIdOle
=
0
;
m_bIsUseOffice2007
=
false
;
m_strStyleMain
=
_T
(
""
);
m_strStyleMain
=
_T
(
""
);
m_strAttributesMain
=
_T
(
""
);
m_strNodes
=
_T
(
""
);
m_strOleXlsx
=
_T
(
""
);
m_strNodes
=
_T
(
""
);
m_strOleXlsx
=
_T
(
""
);
m_pOOXToVMLRenderer
=
NULL
;
m_bIsTop
=
false
;
...
...
Makefile
View file @
a7e3158c
...
...
@@ -226,7 +226,7 @@ endef
.PHONY
:
all bin lib clean
all
:
lib bin
all
:
lib bin
bin
:
$(X2T) $(ALLFONTSGEN)
...
...
X2tConverter/build/Qt/X2tConverter.pri
View file @
a7e3158c
...
...
@@ -7,7 +7,7 @@
QT -= core
QT -= gui
VERSION = 2.0.2.41
2
VERSION = 2.0.2.41
7
DEFINES += INTVER=$$VERSION
TARGET = x2t
...
...
X2tConverter/build/Qt/X2tConverter.pro
View file @
a7e3158c
...
...
@@ -33,4 +33,4 @@ core_linux_32 {
}
core_mac
{
DESTDIR
=
$$
DESTDIR
/
mac_64
}
}
\ No newline at end of file
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