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
0d8c668f
Commit
0d8c668f
authored
Dec 23, 2017
by
ElenaSubbotina
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
OdfFormat, fix bug 36596 (only for onlyoffice editors)
parent
310cff0d
Changes
28
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
261 additions
and
109 deletions
+261
-109
ASCOfficeOdfFile/src/docx/oox_chart_context.h
ASCOfficeOdfFile/src/docx/oox_chart_context.h
+1
-1
ASCOfficeOdfFile/src/docx/oox_chart_legend.cpp
ASCOfficeOdfFile/src/docx/oox_chart_legend.cpp
+1
-2
ASCOfficeOdfFile/src/docx/oox_chart_legend.h
ASCOfficeOdfFile/src/docx/oox_chart_legend.h
+1
-1
ASCOfficeOdfFile/src/odf/chart_build_oox.cpp
ASCOfficeOdfFile/src/odf/chart_build_oox.cpp
+22
-0
ASCOfficeOdfFile/src/odf/chart_build_oox.h
ASCOfficeOdfFile/src/odf/chart_build_oox.h
+1
-1
ASCOfficeOdfFile/src/odf/chart_objects.h
ASCOfficeOdfFile/src/odf/chart_objects.h
+6
-0
ASCOfficeOdfFile/src/odf/office_chart.h
ASCOfficeOdfFile/src/odf/office_chart.h
+3
-5
ASCOfficeOdfFile/src/odf/style_table_properties.cpp
ASCOfficeOdfFile/src/odf/style_table_properties.cpp
+21
-12
ASCOfficeOdfFile/src/odf/style_table_properties.h
ASCOfficeOdfFile/src/odf/style_table_properties.h
+2
-1
ASCOfficeOdfFile/src/odf/table.cpp
ASCOfficeOdfFile/src/odf/table.cpp
+0
-17
ASCOfficeOdfFile/src/odf/table_docx.cpp
ASCOfficeOdfFile/src/odf/table_docx.cpp
+0
-1
ASCOfficeOdfFileW/source/OdfFormat/odf_chart_context.cpp
ASCOfficeOdfFileW/source/OdfFormat/odf_chart_context.cpp
+46
-6
ASCOfficeOdfFileW/source/OdfFormat/odf_chart_context.h
ASCOfficeOdfFileW/source/OdfFormat/odf_chart_context.h
+4
-0
ASCOfficeOdfFileW/source/OdfFormat/odf_conversion_context.cpp
...fficeOdfFileW/source/OdfFormat/odf_conversion_context.cpp
+1
-1
ASCOfficeOdfFileW/source/OdfFormat/odf_drawing_context.cpp
ASCOfficeOdfFileW/source/OdfFormat/odf_drawing_context.cpp
+42
-30
ASCOfficeOdfFileW/source/OdfFormat/odf_drawing_context.h
ASCOfficeOdfFileW/source/OdfFormat/odf_drawing_context.h
+1
-0
ASCOfficeOdfFileW/source/OdfFormat/odf_text_context.cpp
ASCOfficeOdfFileW/source/OdfFormat/odf_text_context.cpp
+2
-2
ASCOfficeOdfFileW/source/OdfFormat/odf_text_context.h
ASCOfficeOdfFileW/source/OdfFormat/odf_text_context.h
+1
-1
ASCOfficeOdfFileW/source/OdfFormat/odp_conversion_context.cpp
...fficeOdfFileW/source/OdfFormat/odp_conversion_context.cpp
+1
-2
ASCOfficeOdfFileW/source/OdfFormat/ods_conversion_context.cpp
...fficeOdfFileW/source/OdfFormat/ods_conversion_context.cpp
+1
-2
ASCOfficeOdfFileW/source/OdfFormat/odt_conversion_context.cpp
...fficeOdfFileW/source/OdfFormat/odt_conversion_context.cpp
+3
-2
ASCOfficeOdfFileW/source/OdfFormat/style_chart_properties.h
ASCOfficeOdfFileW/source/OdfFormat/style_chart_properties.h
+4
-4
ASCOfficeOdfFileW/source/OdfFormat/style_table_properties.cpp
...fficeOdfFileW/source/OdfFormat/style_table_properties.cpp
+12
-5
ASCOfficeOdfFileW/source/OdfFormat/style_table_properties.h
ASCOfficeOdfFileW/source/OdfFormat/style_table_properties.h
+2
-2
ASCOfficeOdfFileW/source/Oox2OdfConverter/ConvertDrawing.cpp
ASCOfficeOdfFileW/source/Oox2OdfConverter/ConvertDrawing.cpp
+5
-1
ASCOfficeOdfFileW/source/Oox2OdfConverter/Converter.h
ASCOfficeOdfFileW/source/Oox2OdfConverter/Converter.h
+5
-1
ASCOfficeOdfFileW/source/Oox2OdfConverter/ConverterChart.cpp
ASCOfficeOdfFileW/source/Oox2OdfConverter/ConverterChart.cpp
+72
-9
ASCOfficeOdfFileW/source/Oox2OdfConverter/DocxConverter.cpp
ASCOfficeOdfFileW/source/Oox2OdfConverter/DocxConverter.cpp
+1
-0
No files found.
ASCOfficeOdfFile/src/docx/oox_chart_context.h
View file @
0d8c668f
...
...
@@ -103,7 +103,7 @@ public:
reset_fill
(
l
.
fill_
);
//floor_.content_= l;
}
void
set_legend
(
odf_reader
::
chart
::
simple
&
l
)
void
set_legend
(
odf_reader
::
chart
::
legend
&
l
)
{
reset_fill
(
l
.
fill_
);
legend_
.
content_
=
l
;
...
...
ASCOfficeOdfFile/src/docx/oox_chart_legend.cpp
View file @
0d8c668f
...
...
@@ -52,10 +52,9 @@ void oox_chart_legend::oox_serialize(std::wostream & _Wostream)
{
CP_XML_NODE
(
L"c:legend"
)
{
CP_XML_NODE
(
L"c:legendPos"
)
{
CP_XML_ATTR
(
L"val"
,
"r"
);
// "b" | "l" | "r" | "t"// == bottom left right top
CP_XML_ATTR
(
L"val"
,
content_
.
position
);
}
layout_
.
oox_serialize
(
CP_XML_STREAM
());
...
...
ASCOfficeOdfFile/src/docx/oox_chart_legend.h
View file @
0d8c668f
...
...
@@ -48,7 +48,7 @@ public:
void
oox_serialize
(
std
::
wostream
&
_Wostream
);
odf_reader
::
chart
::
simple
content_
;
odf_reader
::
chart
::
legend
content_
;
private:
cpdoccore
::
oox
::
oox_layout
layout_
;
//layout (Layout) §21.2.2.88
...
...
ASCOfficeOdfFile/src/odf/chart_build_oox.cpp
View file @
0d8c668f
...
...
@@ -762,6 +762,28 @@ void process_build_object::visit(const chart_footer& val)
void
process_build_object
::
visit
(
const
chart_legend
&
val
)
{
object_odf_context_
.
legend_
.
bEnabled
=
true
;
object_odf_context_
.
legend_
.
position
=
L"r"
;
if
(
val
.
attlist_
.
chart_legend_position_
)
{
std
::
wstring
pos
=
val
.
attlist_
.
chart_legend_position_
.
get
();
if
(
pos
==
L"bottom"
)
object_odf_context_
.
legend_
.
position
=
L"b"
;
if
(
pos
==
L"start"
)
object_odf_context_
.
legend_
.
position
=
L"l"
;
if
(
pos
==
L"top"
)
object_odf_context_
.
legend_
.
position
=
L"t"
;
if
(
pos
==
L"top-end"
)
object_odf_context_
.
legend_
.
position
=
L"tr"
;
if
(
pos
==
L"top-start"
)
object_odf_context_
.
legend_
.
position
=
L"tl"
;
if
(
pos
==
L"bottom-start"
)
object_odf_context_
.
legend_
.
position
=
L"bl"
;
if
(
pos
==
L"bottom-end"
)
object_odf_context_
.
legend_
.
position
=
L"br"
;
}
if
(
val
.
attlist_
.
chart_legend_align_
)
{
std
::
wstring
align
=
val
.
attlist_
.
chart_legend_align_
.
get
();
//if ( pos == L"start") object_odf_context_.legend_.align = L"b";
//if ( pos == L"center") object_odf_context_.legend_.align = L"l";
//if ( pos == L"end") object_odf_context_.legend_.align = L"t";
}
ApplyChartProperties
(
val
.
attlist_
.
common_attlist_
.
chart_style_name_
.
get_value_or
(
L""
),
object_odf_context_
.
legend_
.
properties_
);
ApplyGraphicProperties
(
val
.
attlist_
.
common_attlist_
.
chart_style_name_
.
get_value_or
(
L""
),
object_odf_context_
.
legend_
.
graphic_properties_
,
object_odf_context_
.
legend_
.
fill_
);
...
...
ASCOfficeOdfFile/src/odf/chart_build_oox.h
View file @
0d8c668f
...
...
@@ -188,7 +188,7 @@ public:
office_element_ptr_array
title_odf_context_
;
chart
::
title
sub_title_
;
chart
::
simple
legend_
;
chart
::
legend
legend_
;
chart
::
plot_area
plot_area_
;
chart
::
simple
wall_
;
...
...
ASCOfficeOdfFile/src/odf/chart_objects.h
View file @
0d8c668f
...
...
@@ -76,6 +76,7 @@ namespace chart {
struct
simple
{
simple
()
:
bEnabled
(
false
)
{}
bool
bEnabled
;
std
::
vector
<
_property
>
properties_
;
std
::
vector
<
_property
>
text_properties_
;
...
...
@@ -92,6 +93,11 @@ namespace chart {
treadline
(){
bEquation
=
false
;
bREquation
=
false
;}
};
struct
legend
:
public
simple
{
std
::
wstring
position
;
std
::
wstring
align
;
};
struct
plot_area
:
public
simple
{
std
::
wstring
cell_range_address_
;
...
...
ASCOfficeOdfFile/src/odf/office_chart.h
View file @
0d8c668f
...
...
@@ -72,7 +72,6 @@ class common_chart_attlist
public:
void
add_attributes
(
const
xml
::
attributes_wc_ptr
&
Attributes
);
public:
_CP_OPT
(
std
::
wstring
)
chart_style_name_
;
};
...
...
@@ -117,7 +116,6 @@ class chart_title_attlist
public:
void
add_attributes
(
const
xml
::
attributes_wc_ptr
&
Attributes
);
public:
_CP_OPT
(
std
::
wstring
)
table_cell_range_
;
odf_types
::
common_draw_position_attlist
common_draw_position_attlist_
;
common_chart_attlist
common_attlist_
;
...
...
@@ -194,13 +192,13 @@ class chart_legend_attlist
public:
void
add_attributes
(
const
xml
::
attributes_wc_ptr
&
Attributes
);
public:
_CP_OPT
(
std
::
wstring
)
chart_legend_position_
;
_CP_OPT
(
std
::
wstring
)
chart_legend_align_
;
odf_types
::
common_draw_position_attlist
common_draw_position_attlist_
;
_CP_OPT
(
std
::
wstring
)
style_legend_expansion_
;
_CP_OPT
(
double
)
style_legend_expansion_aspect_ratio_
;
common_chart_attlist
common_attlist_
;
odf_types
::
common_draw_position_attlist
common_draw_position_attlist_
;
common_chart_attlist
common_attlist_
;
};
...
...
ASCOfficeOdfFile/src/odf/style_table_properties.cpp
View file @
0d8c668f
...
...
@@ -67,10 +67,11 @@ void table_format_properties::add_attributes( const xml::attributes_wc_ptr & Att
CP_APPLY_ATTR
(
L"style:rel-width"
,
style_rel_width_
);
CP_APPLY_ATTR
(
L"style:may-break-between-rows"
,
style_may_break_between_rows_
);
CP_APPLY_ATTR
(
L"table:align"
,
table_align_
);
CP_APPLY_ATTR
(
L"table:border-model"
,
table_border_model_
);
CP_APPLY_ATTR
(
L"table:display"
,
table_display_
);
CP_APPLY_ATTR
(
L"tableooo:tab-color"
,
tableooo_tab_color_
);
CP_APPLY_ATTR
(
L"table:align"
,
table_align_
);
CP_APPLY_ATTR
(
L"table:border-model"
,
table_border_model_
);
CP_APPLY_ATTR
(
L"table:display"
,
table_display_
);
CP_APPLY_ATTR
(
L"tableooo:tab-color"
,
tableooo_tab_color_
);
CP_APPLY_ATTR
(
L"style:use-optimal-column-width"
,
style_use_optimal_column_width_
);
}
bool
table_format_properties
::
add_child_element
(
xml
::
sax
*
Reader
,
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
,
document_context
*
Context
)
...
...
@@ -94,17 +95,22 @@ void table_format_properties::docx_convert(oox::docx_conversion_context & Contex
if
(
style_rel_width_
)
{
int
w_w
=
(
int
)(
0.5
+
50.0
*
style_rel_width_
->
get_value
());
_tblPr
<<
L"<w:tblW w:type=
\"
pct
\"
w:w=
\"
"
<<
w_w
<<
"
\"
/>"
;
_tblPr
<<
L"<w:tblW w:type=
\"
pct
\"
w:w=
\"
"
<<
w_w
<<
"
\"
/>"
;
}
else
if
(
style_width_
)
else
if
(
style_use_optimal_column_width_
)
{
_tblPr
<<
L"<w:tblW w:type=
\"
auto
\"
w:w=
\"
0
\"
/>"
;
}
else
if
(
style_width_
)
{
int
w_w
=
(
int
)(
0.5
+
20.0
*
style_width_
->
get_value_unit
(
length
::
pt
));
if
(
w_w
>
31680
)
w_w
=
31680
;
_tblPr
<<
L"<w:tblW w:type=
\"
dxa
\"
w:w=
\"
"
<<
w_w
<<
"
\"
/>"
;
_tblPr
<<
L"<w:tblW w:type=
\"
dxa
\"
w:w=
\"
"
<<
w_w
<<
"
\"
/>"
;
}
else
{
_tblPr
<<
L"<w:tblW w:type=
\"
pct
\"
w:w=
\"
5000
\"
/>"
;
_tblPr
<<
L"<w:tblW w:type=
\"
pct
\"
w:w=
\"
5000
\"
/>"
;
}
if
(
common_break_attlist_
.
fo_break_before_
)
...
...
@@ -127,23 +133,26 @@ void table_format_properties::docx_convert(oox::docx_conversion_context & Contex
{
odf_types
::
length
indent
=
common_horizontal_margin_attlist_
.
fo_margin_left_
->
get_length
();
_tblPr
<<
L"<w:tblInd w:w=
\"
"
<<
indent
.
get_value_unit
(
odf_types
::
length
::
pt
)
*
20
<<
"
\"
w:type=
\"
dxa
\"
/>"
;
_tblPr
<<
L"<w:tblInd w:w=
\"
"
<<
indent
.
get_value_unit
(
odf_types
::
length
::
pt
)
*
20
<<
"
\"
w:type=
\"
dxa
\"
/>"
;
}
}
else
//if (table_align_->get_type() == table_align::Center)
w_val
=
boost
::
lexical_cast
<
std
::
wstring
>
(
*
table_align_
);
_tblPr
<<
L"<w:jc w:val=
\"
"
<<
w_val
<<
"
\"
/>"
;
_tblPr
<<
L"<w:jc w:val=
\"
"
<<
w_val
<<
"
\"
/>"
;
}
_tblPr
<<
"<w:tblLayout w:type=
\"
fixed
\"
/>"
;
if
(
!
style_use_optimal_column_width_
)
{
_tblPr
<<
"<w:tblLayout w:type=
\"
fixed
\"
/>"
;
}
if
(
common_background_color_attlist_
.
fo_background_color_
)
{
const
std
::
wstring
w_fill
=
(
common_background_color_attlist_
.
fo_background_color_
->
get_type
()
==
background_color
::
Enabled
?
common_background_color_attlist_
.
fo_background_color_
->
get_color
().
get_hex_value
()
:
L"auto"
);
_tblPr
<<
L"<w:shd w:val=
\"
clear
\"
w:color=
\"
auto
\"
w:fill=
\"
"
<<
w_fill
<<
"
\"
/>"
;
_tblPr
<<
L"<w:shd w:val=
\"
clear
\"
w:color=
\"
auto
\"
w:fill=
\"
"
<<
w_fill
<<
"
\"
/>"
;
}
}
...
...
ASCOfficeOdfFile/src/odf/style_table_properties.h
View file @
0d8c668f
...
...
@@ -79,7 +79,6 @@ public:
_CP_OPT
(
odf_types
::
length
)
style_width_
;
_CP_OPT
(
odf_types
::
percent
)
style_rel_width_
;
office_element_ptr
style_background_image_
;
_CP_OPT
(
bool
)
style_may_break_between_rows_
;
_CP_OPT
(
odf_types
::
border_model
)
table_border_model_
;
...
...
@@ -87,6 +86,8 @@ public:
_CP_OPT
(
bool
)
table_display_
;
_CP_OPT
(
odf_types
::
color
)
tableooo_tab_color_
;
_CP_OPT
(
odf_types
::
Bool
)
style_use_optimal_column_width_
;
//not specification
office_element_ptr
style_background_image_
;
};
class
style_table_properties
:
public
office_element_impl
<
style_table_properties
>
...
...
ASCOfficeOdfFile/src/odf/table.cpp
View file @
0d8c668f
...
...
@@ -337,23 +337,6 @@ void table_columns_and_groups::add_child_element( xml::sax * Reader, const std::
}
else
not_applicable_element
(
L"table-columns-and-groups"
,
Reader
,
Ns
,
Name
);
/*
if (CP_CHECK_NAME(L"table", L"table-column-group") && type_ != 1)
{
type_ = 0;
CP_CREATE_ELEMENT_SIMPLE(table_table_column_group_);
}
else if (( CP_CHECK_NAME(L"table", L"table-columns") ||
CP_CHECK_NAME(L"table", L"table-column") ||
CP_CHECK_NAME(L"table", L"table-header-columns") )
&& type_ != 0)
{
type_ = 1;
table_columns_no_group_.add_child_element(Reader, Ns, Name, Context);
}
else
not_applicable_element(L"table-columns-and-groups", Reader, Ns, Name);
*/
}
//////////////////////////////////////////////////////////////////////////////////////////////////
...
...
ASCOfficeOdfFile/src/odf/table_docx.cpp
View file @
0d8c668f
...
...
@@ -164,7 +164,6 @@ void table_table::docx_convert(oox::docx_conversion_context & Context)
if
(
inst
&&
inst
->
content
())
inst
->
content
()
->
docx_convert
(
Context
);
Context
.
get_styles_context
().
docx_serialize_table_style
(
_Wostream
,
Context
.
get_text_tracked_context
().
dumpTblPr_
);
_Wostream
<<
L"<w:tblGrid>"
;
...
...
ASCOfficeOdfFileW/source/OdfFormat/odf_chart_context.cpp
View file @
0d8c668f
...
...
@@ -335,7 +335,7 @@ void odf_chart_context::start_chart(office_element_ptr & root)
root
->
add_child_element
(
chart_elm
);
//////////
impl_
->
styles_context_
->
create_style
(
L""
,
style_family
::
Chart
,
true
,
false
,
-
1
);
impl_
->
styles_context_
->
create_style
(
L""
,
style_family
::
Chart
,
true
,
false
,
-
1
);
office_element_ptr
&
style_elm
=
impl_
->
styles_context_
->
last_state
()
->
get_office_element
();
...
...
@@ -916,18 +916,19 @@ void odf_chart_context::start_text()
style
*
style_
=
dynamic_cast
<
style
*>
(
impl_
->
current_chart_state_
.
elements_
.
back
().
style_elm
.
get
());
if
(
style_
)
{
impl_
->
current_level_
.
back
().
paragraph_properties_
=
style_
->
content_
.
get_style_paragraph_properties
();
impl_
->
current_level_
.
back
().
text_properties_
=
style_
->
content_
.
get_style_text_properties
();
impl_
->
current_level_
.
back
().
paragraph_properties_
=
style_
->
content_
.
get_style_paragraph_properties
();
impl_
->
current_level_
.
back
().
text_properties_
=
style_
->
content_
.
get_style_text_properties
();
}
impl_
->
odf_context_
->
text_context
()
->
set_single_object
(
true
,
impl_
->
current_level_
.
back
().
paragraph_properties_
,
impl_
->
current_level_
.
back
().
text_properties_
);
impl_
->
odf_context_
->
text_context
()
->
set_single_object
(
true
,
impl_
->
current_level_
.
back
().
paragraph_properties_
,
impl_
->
current_level_
.
back
().
text_properties_
);
}
void
odf_chart_context
::
end_text
()
{
odf_text_context
*
text_context_
=
text_context
();
odf_text_context
*
text_context_
=
text_context
();
if
(
text_context_
==
NULL
||
impl_
->
current_level_
.
size
()
<
1
)
return
;
for
(
size_t
i
=
0
;
i
<
text_context_
->
text_elements_list_
.
size
();
i
++
)
for
(
size_t
i
=
0
;
i
<
text_context_
->
text_elements_list_
.
size
();
i
++
)
{
if
(
text_context_
->
text_elements_list_
[
i
].
level
==
0
)
{
...
...
@@ -945,6 +946,45 @@ void odf_chart_context::end_text()
impl_
->
odf_context_
->
end_text_context
();
}
void
odf_chart_context
::
set_textarea_vertical_align
(
int
align
)
{
if
(
!
impl_
->
current_level_
.
back
().
chart_properties_
)
return
;
//switch(align)
//{
//case 0://SimpleTypes::textanchoringtypeB:
// impl_->current_graphic_properties->draw_textarea_vertical_align_ = odf_types::vertical_align(odf_types::vertical_align::Bottom); break;
//case 1://SimpleTypes::textanchoringtypeCtr:
// impl_->current_graphic_properties->draw_textarea_vertical_align_ = odf_types::vertical_align(odf_types::vertical_align::Middle); break;
//case 2://SimpleTypes::textanchoringtypeDist:
// impl_->current_graphic_properties->draw_textarea_vertical_align_ = odf_types::vertical_align(odf_types::vertical_align::Baseline);break;
//case 3://SimpleTypes::textanchoringtypeJust:
// impl_->current_graphic_properties->draw_textarea_vertical_align_ = odf_types::vertical_align(odf_types::vertical_align::Justify); break;
//case 4://SimpleTypes::textanchoringtypeT:
// impl_->current_graphic_properties->draw_textarea_vertical_align_ = odf_types::vertical_align(odf_types::vertical_align::Top); break;
//}
}
void
odf_chart_context
::
set_textarea_rotation
(
double
val
)
{
if
(
!
impl_
->
current_level_
.
back
().
chart_properties_
)
return
;
if
(
val
<
0.001
&&
val
>
-
0.001
)
return
;
if
(
val
<
-
360
||
val
>
360
)
return
;
if
(
val
<
0
)
val
+=
360
;
val
=
360
-
val
;
impl_
->
current_level_
.
back
().
chart_properties_
->
content_
.
common_rotation_angle_attlist_
.
style_rotation_angle_
=
(
unsigned
int
)
val
;
}
void
odf_chart_context
::
set_textarea_padding
(
_CP_OPT
(
double
)
&
left
,
_CP_OPT
(
double
)
&
top
,
_CP_OPT
(
double
)
&
right
,
_CP_OPT
(
double
)
&
bottom
)
//in pt
{
if
(
!
impl_
->
current_level_
.
back
().
chart_properties_
)
return
;
//if (left) impl_->current_graphic_properties->common_padding_attlist_.fo_padding_left_ = length(*left, length::pt);
//if (top) impl_->current_graphic_properties->common_padding_attlist_.fo_padding_top_ = length(*top, length::pt);
//if (right) impl_->current_graphic_properties->common_padding_attlist_.fo_padding_right_ = length(*right,length::pt);
//if (bottom) impl_->current_graphic_properties->common_padding_attlist_.fo_padding_bottom_ = length(*bottom,length::pt);
}
void
odf_chart_context
::
start_floor
()
{
office_element_ptr
elm
;
...
...
ASCOfficeOdfFileW/source/OdfFormat/odf_chart_context.h
View file @
0d8c668f
...
...
@@ -137,6 +137,10 @@ public:
void
start_text
();
void
end_text
();
void
set_textarea_vertical_align
(
int
align
);
void
set_textarea_padding
(
_CP_OPT
(
double
)
&
left
,
_CP_OPT
(
double
)
&
top
,
_CP_OPT
(
double
)
&
right
,
_CP_OPT
(
double
)
&
bottom
);
//in pt
void
set_textarea_rotation
(
double
val
);
void
add_domain
(
std
::
wstring
formula
);
void
add_categories
(
std
::
wstring
formula
,
office_element_ptr
&
axis
);
...
...
ASCOfficeOdfFileW/source/OdfFormat/odf_conversion_context.cpp
View file @
0d8c668f
...
...
@@ -177,7 +177,7 @@ void odf_conversion_context::start_chart()
create_object
();
create_element
(
L"office"
,
L"chart"
,
objects_
.
back
().
content
,
this
,
true
);
chart_context_
.
set_styles_context
(
styles_context
());
chart_context_
.
set_styles_context
(
odf_conversion_context
::
styles_context
());
chart_context_
.
start_chart
(
get_current_object_element
());
}
void
odf_conversion_context
::
start_spreadsheet
()
...
...
ASCOfficeOdfFileW/source/OdfFormat/odf_drawing_context.cpp
View file @
0d8c668f
...
...
@@ -2101,6 +2101,36 @@ void odf_drawing_context::set_line_dash_preset(int style)
impl_
->
current_graphic_properties
->
draw_stroke_
=
line_style
(
line_style
::
Solid
);
break
;
}
}
void
odf_drawing_context
::
set_paragraph_properties
(
style_paragraph_properties
*
paragraph_properties
)
{
if
(
impl_
->
current_drawing_state_
.
elements_
.
empty
())
return
;
if
(
!
impl_
->
current_paragraph_properties
)
{
draw_base
*
draw
=
dynamic_cast
<
draw_base
*>
(
impl_
->
current_drawing_state_
.
elements_
[
0
].
elm
.
get
());
if
(
draw
)
{
if
(
!
draw
->
common_draw_attlists_
.
shape_with_text_and_styles_
.
common_shape_draw_attlist_
.
draw_text_style_name_
)
{
impl_
->
styles_context_
->
create_style
(
L""
,
style_family
::
Paragraph
,
true
,
false
,
-
1
);
office_element_ptr
&
style_shape_elm
=
impl_
->
styles_context_
->
last_state
()
->
get_office_element
();
style
*
style_
=
dynamic_cast
<
style
*>
(
style_shape_elm
.
get
());
if
(
style_
)
{
impl_
->
current_paragraph_properties
=
style_
->
content_
.
get_style_paragraph_properties
();
draw
->
common_draw_attlists_
.
shape_with_text_and_styles_
.
common_shape_draw_attlist_
.
draw_text_style_name_
=
style_
->
style_name_
;
}
}
else
{
//??? find by name
}
}
}
if
(
impl_
->
current_paragraph_properties
)
impl_
->
current_paragraph_properties
->
apply_from
(
paragraph_properties
);
}
void
odf_drawing_context
::
set_textarea_vertical_align
(
int
align
)
{
...
...
@@ -2136,6 +2166,18 @@ void odf_drawing_context::set_textarea_fit_to_size(bool val)
impl_
->
current_graphic_properties
->
draw_fit_to_size_
=
val
;
}
void
odf_drawing_context
::
set_textarea_rotation
(
double
val
)
{
odf_style_state_ptr
style_state
=
impl_
->
styles_context_
->
last_state
(
style_family
::
Paragraph
);
if
(
style_state
)
{
impl_
->
current_text_properties
=
style_state
->
get_text_properties
();
}
if
(
!
impl_
->
current_text_properties
)
return
;
impl_
->
current_text_properties
->
content_
.
style_text_rotation_angle_
=
(
int
)
val
;
}
void
odf_drawing_context
::
set_textarea_font
(
std
::
wstring
&
latin
,
std
::
wstring
&
cs
,
std
::
wstring
&
ea
)
{
...
...
@@ -2249,36 +2291,6 @@ void odf_drawing_context::set_textarea_writing_mode(int mode)
}
}
}
void
odf_drawing_context
::
set_paragraph_properties
(
style_paragraph_properties
*
paragraph_properties
)
{
if
(
impl_
->
current_drawing_state_
.
elements_
.
empty
())
return
;
if
(
!
impl_
->
current_paragraph_properties
)
{
draw_base
*
draw
=
dynamic_cast
<
draw_base
*>
(
impl_
->
current_drawing_state_
.
elements_
[
0
].
elm
.
get
());
if
(
draw
)
{
if
(
!
draw
->
common_draw_attlists_
.
shape_with_text_and_styles_
.
common_shape_draw_attlist_
.
draw_text_style_name_
)
{
impl_
->
styles_context_
->
create_style
(
L""
,
style_family
::
Paragraph
,
true
,
false
,
-
1
);
office_element_ptr
&
style_shape_elm
=
impl_
->
styles_context_
->
last_state
()
->
get_office_element
();
style
*
style_
=
dynamic_cast
<
style
*>
(
style_shape_elm
.
get
());
if
(
style_
)
{
impl_
->
current_paragraph_properties
=
style_
->
content_
.
get_style_paragraph_properties
();
draw
->
common_draw_attlists_
.
shape_with_text_and_styles_
.
common_shape_draw_attlist_
.
draw_text_style_name_
=
style_
->
style_name_
;
}
}
else
{
//??? find by name
}
}
}
if
(
impl_
->
current_paragraph_properties
)
impl_
->
current_paragraph_properties
->
apply_from
(
paragraph_properties
);
}
void
odf_drawing_context
::
set_textarea_padding
(
_CP_OPT
(
double
)
&
left
,
_CP_OPT
(
double
)
&
top
,
_CP_OPT
(
double
)
&
right
,
_CP_OPT
(
double
)
&
bottom
)
//in pt
{
if
(
!
impl_
->
current_graphic_properties
)
return
;
...
...
ASCOfficeOdfFileW/source/OdfFormat/odf_drawing_context.h
View file @
0d8c668f
...
...
@@ -231,6 +231,7 @@ public:
void
set_textarea_fontcolor
(
std
::
wstring
hexColor
);
void
set_textarea_font
(
std
::
wstring
&
latin
,
std
::
wstring
&
cs
,
std
::
wstring
&
ea
);
void
set_textarea_fit_to_size
(
bool
val
);
void
set_textarea_rotation
(
double
val
);
void
set_placeholder_id
(
std
::
wstring
val
);
void
set_placeholder_type
(
int
val
);
...
...
ASCOfficeOdfFileW/source/OdfFormat/odf_text_context.cpp
View file @
0d8c668f
...
...
@@ -54,10 +54,10 @@ namespace cpdoccore {
namespace
odf_writer
{
odf_text_context
::
odf_text_context
(
odf_conversion_context
*
odf_context
)
odf_text_context
::
odf_text_context
(
odf_conversion_context
*
odf_context
,
odf_style_context
*
styles_context
)
{
odf_context_
=
odf_context
;
styles_context_
=
odf_context
->
styles_context
()
;
styles_context_
=
styles_context
;
single_paragraph_
=
false
;
paragraph_properties_
=
NULL
;
...
...
ASCOfficeOdfFileW/source/OdfFormat/odf_text_context.h
View file @
0d8c668f
...
...
@@ -53,7 +53,7 @@ class style_text_properties;
class
odf_text_context
:
boost
::
noncopyable
{
public:
odf_text_context
(
odf_conversion_context
*
odf_context
);
odf_text_context
(
odf_conversion_context
*
odf_context
,
odf_style_context
*
styles_context
);
~
odf_text_context
();
public:
odf_style_context
*
get_styles_context
();
//для embedded
...
...
ASCOfficeOdfFileW/source/OdfFormat/odp_conversion_context.cpp
View file @
0d8c668f
...
...
@@ -132,8 +132,7 @@ void odp_conversion_context::end_layout_slide()
}
void
odp_conversion_context
::
start_text_context
()
{
text_context_
=
new
odf_text_context
(
this
);
text_context_
->
set_styles_context
(
slide_context_
.
get_styles_context
());
text_context_
=
new
odf_text_context
(
this
,
slide_context_
.
get_styles_context
());
}
void
odp_conversion_context
::
end_text_context
()
{
...
...
ASCOfficeOdfFileW/source/OdfFormat/ods_conversion_context.cpp
View file @
0d8c668f
...
...
@@ -472,8 +472,7 @@ void ods_conversion_context::add_column(int start_column, int repeated, int leve
}
void
ods_conversion_context
::
start_text_context
()
{
current_text_context_
=
new
odf_text_context
(
this
);
current_text_context_
=
new
odf_text_context
(
this
,
styles_context
());
}
void
ods_conversion_context
::
end_text_context
()
{
...
...
ASCOfficeOdfFileW/source/OdfFormat/odt_conversion_context.cpp
View file @
0d8c668f
...
...
@@ -105,7 +105,8 @@ void odt_conversion_context::start_document()
root_document_
=
get_current_object_element
();
root_text_
=
dynamic_cast
<
office_text
*>
(
root_document_
.
get
());
main_text_context_
=
new
odf_text_context
(
this
);
main_text_context_
=
new
odf_text_context
(
this
,
styles_context
());
page_layout_context
()
->
set_styles_context
(
styles_context
());
...
...
@@ -182,7 +183,7 @@ odf_text_context* odt_conversion_context::text_context()
}
void
odt_conversion_context
::
start_text_context
()
{
odf_text_context_ptr
new_text_context_
=
boost
::
shared_ptr
<
odf_text_context
>
(
new
odf_text_context
(
this
));
odf_text_context_ptr
new_text_context_
=
boost
::
shared_ptr
<
odf_text_context
>
(
new
odf_text_context
(
this
,
odf_conversion_context
::
styles_context
()
));
if
(
!
new_text_context_
)
return
;
text_context_
.
push_back
(
new_text_context_
);
...
...
ASCOfficeOdfFileW/source/OdfFormat/style_chart_properties.h
View file @
0d8c668f
...
...
@@ -106,15 +106,15 @@ public:
_CP_OPT
(
double
)
chart_error_margin_
;
_CP_OPT
(
double
)
chart_error_upper_limit_
;
_CP_OPT
(
odf_types
::
chart_interpolation
)
chart_interpolation_
;
_CP_OPT
(
odf_types
::
chart_interpolation
)
chart_interpolation_
;
_CP_OPT
(
odf_types
::
chart_solid_type
)
chart_solid_type_
;
_CP_OPT
(
odf_types
::
chart_label_arrangement
)
chart_label_arrangement_
;
_CP_OPT
(
odf_types
::
chart_label_arrangement
)
chart_label_arrangement_
;
_CP_OPT
(
odf_types
::
direction
)
style_direction_
;
_CP_OPT
(
odf_types
::
chart_series_source
)
chart_series_source_
;
_CP_OPT
(
odf_types
::
chart_series_source
)
chart_series_source_
;
_CP_OPT
(
odf_types
::
length
)
chart_symbol_width_
;
_CP_OPT
(
odf_types
::
length
)
chart_symbol_height_
;
_CP_OPT
(
odf_types
::
chart_regression_type
)
chart_regression_type_
;
_CP_OPT
(
odf_types
::
chart_data_label_number
)
chart_data_label_number_
;
_CP_OPT
(
odf_types
::
chart_data_label_number
)
chart_data_label_number_
;
_CP_OPT
(
odf_types
::
chart_error_category
)
chart_error_category_
;
_CP_OPT
(
std
::
wstring
)
chart_axis_label_position_
;
...
...
ASCOfficeOdfFileW/source/OdfFormat/style_table_properties.cpp
View file @
0d8c668f
...
...
@@ -83,8 +83,13 @@ void table_format_properties::serialize(std::wostream & _Wostream,const wchar_t
common_keep_with_next_attlist_
.
serialize
(
CP_GET_XML_NODE
());
common_border_attlist_
.
serialize
(
CP_GET_XML_NODE
());
if
(
style_background_image_
)
style_background_image_
->
serialize
(
_Wostream
);
CP_XML_ATTR_OPT
(
L"table:align"
,
table_align_
);
//not from specification !!
CP_XML_ATTR_OPT
(
L"style:use-optimal-column-width"
,
style_use_optimal_column_width_
);
//not from specification !!
if
(
style_background_image_
)
style_background_image_
->
serialize
(
_Wostream
);
}
}
}
...
...
@@ -109,7 +114,8 @@ void table_format_properties::apply_from(const table_format_properties & Other)
common_keep_with_next_attlist_
.
apply_from
(
Other
.
common_keep_with_next_attlist_
);
common_border_attlist_
.
apply_from
(
Other
.
common_border_attlist_
);
style_background_image_
=
Other
.
style_background_image_
;
style_background_image_
=
Other
.
style_background_image_
;
style_use_optimal_column_width_
=
Other
.
style_use_optimal_column_width_
;
}
// style:table-properties
...
...
@@ -145,9 +151,10 @@ void style_table_column_properties_attlist::serialize(std::wostream & _Wostream,
{
CP_XML_NODE_SIMPLE
()
{
CP_XML_ATTR_OPT
(
L"style:column-width"
,
style_column_width_
);
CP_XML_ATTR_OPT
(
L"style:rel-column-width"
,
style_rel_column_width_
);
CP_XML_ATTR_OPT
(
L"style:use-optimal-column-width"
,
style_use_optimal_column_width_
);
CP_XML_ATTR_OPT
(
L"style:column-width"
,
style_column_width_
);
CP_XML_ATTR_OPT
(
L"style:rel-column-width"
,
style_rel_column_width_
);
CP_XML_ATTR_OPT
(
L"style:use-optimal-column-width"
,
style_use_optimal_column_width_
);
common_break_attlist_
.
serialize
(
CP_GET_XML_NODE
());
}
}
...
...
ASCOfficeOdfFileW/source/OdfFormat/style_table_properties.h
View file @
0d8c668f
...
...
@@ -84,8 +84,8 @@ public:
odf_types
::
common_border_attlist
common_border_attlist_
;
office_element_ptr
style_background_image_
;
office_element_ptr
style_background_image_
;
_CP_OPT
(
odf_types
::
Bool
)
style_use_optimal_column_width_
;
};
...
...
ASCOfficeOdfFileW/source/Oox2OdfConverter/ConvertDrawing.cpp
View file @
0d8c668f
...
...
@@ -1165,6 +1165,10 @@ void OoxConverter::convert(PPTX::Logic::BodyPr *oox_bodyPr)
//+ style section
//+element text:section в котором параграфы
}
if
(
oox_bodyPr
->
rot
.
IsInit
())
{
odf_context
()
->
drawing_context
()
->
set_textarea_rotation
(
oox_bodyPr
->
rot
.
get
()
/
60000
);
}
switch
(
oox_bodyPr
->
Fit
.
type
)
{
...
...
@@ -1505,7 +1509,7 @@ void OoxConverter::convert(PPTX::Logic::Paragraph *oox_paragraph, PPTX::Logic::T
}
//свойства могут быть приписаны не только к параграфу, но и к самому объекту
odf_writer
::
style_paragraph_properties
*
paragraph_properties
=
odf_context
()
->
text_context
()
->
get_paragraph_properties
();
odf_writer
::
style_text_properties
*
text_properties
=
NULL
;
odf_writer
::
style_text_properties
*
text_properties
=
odf_context
()
->
text_context
()
->
get_text_properties
()
;
if
(
!
paragraph_properties
)
{
...
...
ASCOfficeOdfFileW/source/Oox2OdfConverter/Converter.h
View file @
0d8c668f
...
...
@@ -395,7 +395,6 @@ public:
void
convert
(
PPTX
::
Logic
::
StyleRef
*
oox_styleRef
,
int
type
);
void
convert
(
PPTX
::
Logic
::
Path2D
*
oox_path2D
);
void
convert
(
PPTX
::
Logic
::
PathBase
*
oox_path
);
void
convert
(
PPTX
::
Logic
::
BodyPr
*
oox_bodyPr
);
void
convert
(
PPTX
::
Logic
::
UniFill
*
oox_fill
,
DWORD
ARGB
=
0
);
void
convert
(
PPTX
::
Logic
::
UniColor
*
color
,
DWORD
&
nARGB
);
void
convert
(
PPTX
::
Logic
::
UniColor
*
color
,
std
::
wstring
&
hexString
,
_CP_OPT
(
double
)
&
opacity
,
DWORD
ARGB
=
0
);
...
...
@@ -420,7 +419,12 @@ public:
void
convert
(
PPTX
::
Logic
::
Run
*
oox_run
);
void
convert
(
PPTX
::
Logic
::
Fld
*
oox_fld
);
void
convert
(
PPTX
::
Logic
::
Br
*
oox_br
);
void
convert
(
PPTX
::
Logic
::
TxBody
*
oox_txBody
,
PPTX
::
Logic
::
ShapeStyle
*
oox_style
=
NULL
);
void
convert_chart_text
(
PPTX
::
Logic
::
TxBody
*
oox_txBody
);
void
convert
(
PPTX
::
Logic
::
BodyPr
*
oox_bodyPr
);
void
convert_chart_text
(
PPTX
::
Logic
::
BodyPr
*
oox_bodyPr
);
void
convert
(
PPTX
::
Logic
::
MathParaWrapper
*
oox_math
);
void
convert
(
PPTX
::
Logic
::
NvGraphicFramePr
*
oox_framePr
);
void
convert
(
PPTX
::
Logic
::
ChartRec
*
oox_chart
);
...
...
ASCOfficeOdfFileW/source/Oox2OdfConverter/ConverterChart.cpp
View file @
0d8c668f
...
...
@@ -49,6 +49,61 @@
namespace
Oox2Odf
{
void
OoxConverter
::
convert_chart_text
(
PPTX
::
Logic
::
TxBody
*
oox_txBody
)
{
if
(
!
oox_txBody
)
return
;
if
(
oox_txBody
->
Paragrs
.
empty
())
return
;
odf_context
()
->
chart_context
()
->
start_text
();
convert
(
oox_txBody
->
lstStyle
.
GetPointer
());
for
(
size_t
i
=
0
;
i
<
oox_txBody
->
Paragrs
.
size
();
i
++
)
{
convert
(
&
oox_txBody
->
Paragrs
[
i
],
oox_txBody
->
lstStyle
.
GetPointer
());
//внешние настройки для текста
convert_chart_text
(
oox_txBody
->
bodyPr
.
GetPointer
());
}
odf_context
()
->
chart_context
()
->
end_text
();
}
void
OoxConverter
::
convert_chart_text
(
PPTX
::
Logic
::
BodyPr
*
oox_bodyPr
)
{
if
(
!
oox_bodyPr
)
return
;
if
(
oox_bodyPr
->
vert
.
IsInit
())
{
//odf_context()->chart_context()->set_textarea_writing_mode (oox_bodyPr->vert->GetBYTECode());
}
if
(
oox_bodyPr
->
anchor
.
IsInit
())
{
//odf_context()->chart_context()->set_textarea_vertical_align (oox_bodyPr->anchor->GetBYTECode());
}
_CP_OPT
(
double
)
lIns
,
tIns
,
rIns
,
bIns
;
if
(
oox_bodyPr
->
lIns
.
IsInit
())
lIns
=
oox_bodyPr
->
lIns
.
get
()
/
12700.
;
//pt
if
(
oox_bodyPr
->
tIns
.
IsInit
())
tIns
=
oox_bodyPr
->
tIns
.
get
()
/
12700.
;
if
(
oox_bodyPr
->
rIns
.
IsInit
())
rIns
=
oox_bodyPr
->
rIns
.
get
()
/
12700.
;
if
(
oox_bodyPr
->
bIns
.
IsInit
())
bIns
=
oox_bodyPr
->
bIns
.
get
()
/
12700.
;
//odf_context()->chart_context()->set_textarea_padding (lIns, tIns, rIns, bIns);
//if (oox_bodyPr->wrap.IsInit())
// odf_context()->chart_context()->set_textarea_wrap(oox_bodyPr->wrap->GetBYTECode());
if
((
oox_bodyPr
->
numCol
.
IsInit
())
&&
(
oox_bodyPr
->
numCol
.
get
()
>
1
))
{
//+ style section
//+element text:section в котором параграфы
}
if
(
oox_bodyPr
->
rot
.
IsInit
())
{
odf_context
()
->
chart_context
()
->
set_textarea_rotation
(
oox_bodyPr
->
rot
.
get
()
/
60000
);
}
}
void
OoxConverter
::
convert
(
OOX
::
Spreadsheet
::
CT_ChartSpace
*
oox_chart
)
{
if
(
!
oox_chart
)
return
;
...
...
@@ -56,7 +111,7 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_ChartSpace *oox_chart)
convert
(
oox_chart
->
m_externalData
);
convert
(
oox_chart
->
m_oSpPr
.
GetPointer
());
convert
(
oox_chart
->
m_oTxPr
.
GetPointer
());
convert
_chart_text
(
oox_chart
->
m_oTxPr
.
GetPointer
());
convert
(
oox_chart
->
m_chart
->
m_title
);
convert
(
oox_chart
->
m_chart
->
m_legend
);
...
...
@@ -103,7 +158,7 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_Tx* ct_tx)
{
if
(
ct_tx
==
NULL
)
return
;
convert
(
ct_tx
->
m_oRich
.
GetPointer
());
convert
_chart_text
(
ct_tx
->
m_oRich
.
GetPointer
());
}
void
OoxConverter
::
convert
(
OOX
::
Spreadsheet
::
CT_Layout
*
ct_layout
)
{
...
...
@@ -130,7 +185,7 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_Title* ct_title)
odf_context
()
->
chart_context
()
->
start_title
();
convert
(
ct_title
->
m_oSpPr
.
GetPointer
());
convert
(
ct_title
->
m_layout
);
convert
(
ct_title
->
m_oTxPr
.
GetPointer
());
convert
_chart_text
(
ct_title
->
m_oTxPr
.
GetPointer
());
///////////////////////////////
convert
(
ct_title
->
m_tx
);
odf_context
()
->
chart_context
()
->
end_element
();
...
...
@@ -145,7 +200,7 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_Legend* ct_legend)
if
((
ct_legend
->
m_legendPos
)
&&
(
ct_legend
->
m_legendPos
->
m_val
))
odf_context
()
->
chart_context
()
->
set_legend_position
(
*
ct_legend
->
m_legendPos
->
m_val
);
convert
(
ct_legend
->
m_oTxPr
.
GetPointer
());
convert
_chart_text
(
ct_legend
->
m_oTxPr
.
GetPointer
());
if
(
ct_legend
->
m_legendEntry
.
size
()
>
0
)
{
convert
(
ct_legend
->
m_legendEntry
[
0
]);
// в odf_writer нет в легенде множественности стилей
...
...
@@ -157,7 +212,7 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_LegendEntry* ct_legend)
{
if
(
ct_legend
==
NULL
)
return
;
convert
(
ct_legend
->
m_oTxPr
.
GetPointer
());
convert
_chart_text
(
ct_legend
->
m_oTxPr
.
GetPointer
());
}
void
OoxConverter
::
convert
(
OOX
::
Spreadsheet
::
CT_PlotArea
*
ct_plotArea
)
{
...
...
@@ -222,7 +277,9 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_CatAx* axis)
odf_context
()
->
chart_context
()
->
set_axis_dimension
(
1
);
if
(
axis
->
m_axId
&&
axis
->
m_axId
->
m_val
)
odf_context
()
->
chart_context
()
->
set_axis_id
(
*
axis
->
m_axId
->
m_val
);
convert
(
axis
->
m_oSpPr
.
GetPointer
());
if
(
axis
->
m_scaling
)
{
if
(
axis
->
m_scaling
->
m_logBase
)
...
...
@@ -249,7 +306,7 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_CatAx* axis)
odf_context
()
->
chart_context
()
->
set_axis_label_position
(
*
axis
->
m_tickLblPos
->
m_val
);
///////////////////
convert
(
axis
->
m_oTxPr
.
GetPointer
());
convert
_chart_text
(
axis
->
m_oTxPr
.
GetPointer
());
convert
(
axis
->
m_title
);
convert
(
axis
->
m_majorGridlines
,
1
);
convert
(
axis
->
m_minorGridlines
,
2
);
...
...
@@ -263,7 +320,9 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_DateAx* axis)
odf_context
()
->
chart_context
()
->
set_axis_dimension
(
1
);
if
(
axis
->
m_axId
&&
axis
->
m_axId
->
m_val
)
odf_context
()
->
chart_context
()
->
set_axis_id
(
*
axis
->
m_axId
->
m_val
);
convert
(
axis
->
m_oSpPr
.
GetPointer
());
if
(
axis
->
m_scaling
)
{
if
(
axis
->
m_scaling
->
m_logBase
)
...
...
@@ -288,7 +347,7 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_DateAx* axis)
if
(
axis
->
m_axPos
&&
axis
->
m_axPos
->
m_val
)
odf_context
()
->
chart_context
()
->
set_axis_position
(
*
axis
->
m_axPos
->
m_val
);
//////////////////
convert
(
axis
->
m_oTxPr
.
GetPointer
());
convert
_chart_text
(
axis
->
m_oTxPr
.
GetPointer
());
convert
(
axis
->
m_title
);
convert
(
axis
->
m_majorGridlines
,
1
);
convert
(
axis
->
m_minorGridlines
,
2
);
...
...
@@ -302,7 +361,9 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_SerAx* axis)
odf_context
()
->
chart_context
()
->
set_axis_dimension
(
1
);
if
(
axis
->
m_axId
&&
axis
->
m_axId
->
m_val
)
odf_context
()
->
chart_context
()
->
set_axis_id
(
*
axis
->
m_axId
->
m_val
);
convert
(
axis
->
m_oSpPr
.
GetPointer
());
if
(
axis
->
m_scaling
)
{
if
(
axis
->
m_scaling
->
m_logBase
)
...
...
@@ -327,7 +388,7 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_SerAx* axis)
if
(
axis
->
m_axPos
&&
axis
->
m_axPos
->
m_val
)
odf_context
()
->
chart_context
()
->
set_axis_position
(
*
axis
->
m_axPos
->
m_val
);
///////////////////////////
convert
(
axis
->
m_oTxPr
.
GetPointer
());
convert
_chart_text
(
axis
->
m_oTxPr
.
GetPointer
());
convert
(
axis
->
m_title
);
convert
(
axis
->
m_majorGridlines
,
1
);
convert
(
axis
->
m_minorGridlines
,
2
);
...
...
@@ -341,7 +402,9 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_ValAx* axis)
odf_context
()
->
chart_context
()
->
set_axis_dimension
(
2
);
if
(
axis
->
m_axId
&&
axis
->
m_axId
->
m_val
)
odf_context
()
->
chart_context
()
->
set_axis_id
(
*
axis
->
m_axId
->
m_val
);
convert
(
axis
->
m_oSpPr
.
GetPointer
());
if
(
axis
->
m_scaling
)
{
if
(
axis
->
m_scaling
->
m_logBase
)
...
...
@@ -365,7 +428,7 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_ValAx* axis)
if
(
axis
->
m_axPos
&&
axis
->
m_axPos
->
m_val
)
odf_context
()
->
chart_context
()
->
set_axis_position
(
*
axis
->
m_axPos
->
m_val
);
/////////////////////////////
convert
(
axis
->
m_oTxPr
.
GetPointer
());
convert
_chart_text
(
axis
->
m_oTxPr
.
GetPointer
());
convert
(
axis
->
m_title
);
convert
(
axis
->
m_majorGridlines
,
1
);
convert
(
axis
->
m_minorGridlines
,
2
);
...
...
ASCOfficeOdfFileW/source/Oox2OdfConverter/DocxConverter.cpp
View file @
0d8c668f
...
...
@@ -3942,6 +3942,7 @@ bool DocxConverter::convert(OOX::Logic::CTableProperty *oox_table_pr, odf_writer
{
//динамическое расширение - автоподбор по содержимому.
odt_context
->
table_context
()
->
set_optimal_column_width
(
true
);
table_properties
->
table_format_properties_
.
style_use_optimal_column_width_
=
true
;
}
}
}
...
...
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