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
19960fa3
Commit
19960fa3
authored
Apr 04, 2017
by
ElenaSubbotina
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
OdfFormatWriter - presentation tables
parent
32121d6d
Changes
31
Show whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
1206 additions
and
1186 deletions
+1206
-1186
ASCOfficeOdfFileW/OdfFileWTest/OdfFileWTest.vcproj
ASCOfficeOdfFileW/OdfFileWTest/OdfFileWTest.vcproj
+1
-1
ASCOfficeOdfFileW/linux/OdfFileWriterLib.pro
ASCOfficeOdfFileW/linux/OdfFileWriterLib.pro
+2
-4
ASCOfficeOdfFileW/source/OdfFormat/odf_chart_context.cpp
ASCOfficeOdfFileW/source/OdfFormat/odf_chart_context.cpp
+11
-11
ASCOfficeOdfFileW/source/OdfFormat/odf_drawing_context.cpp
ASCOfficeOdfFileW/source/OdfFormat/odf_drawing_context.cpp
+157
-157
ASCOfficeOdfFileW/source/OdfFormat/odf_drawing_context.h
ASCOfficeOdfFileW/source/OdfFormat/odf_drawing_context.h
+3
-3
ASCOfficeOdfFileW/source/OdfFormat/odf_style_context.cpp
ASCOfficeOdfFileW/source/OdfFormat/odf_style_context.cpp
+3
-3
ASCOfficeOdfFileW/source/OdfFormat/odf_style_state.cpp
ASCOfficeOdfFileW/source/OdfFormat/odf_style_state.cpp
+20
-10
ASCOfficeOdfFileW/source/OdfFormat/odf_style_state.h
ASCOfficeOdfFileW/source/OdfFormat/odf_style_state.h
+9
-6
ASCOfficeOdfFileW/source/OdfFormat/odf_table_context.cpp
ASCOfficeOdfFileW/source/OdfFormat/odf_table_context.cpp
+56
-20
ASCOfficeOdfFileW/source/OdfFormat/odf_table_context.h
ASCOfficeOdfFileW/source/OdfFormat/odf_table_context.h
+1
-1
ASCOfficeOdfFileW/source/OdfFormat/odp_conversion_context.cpp
...fficeOdfFileW/source/OdfFormat/odp_conversion_context.cpp
+5
-6
ASCOfficeOdfFileW/source/OdfFormat/odp_conversion_context.h
ASCOfficeOdfFileW/source/OdfFormat/odp_conversion_context.h
+6
-5
ASCOfficeOdfFileW/source/OdfFormat/odp_slide_context.cpp
ASCOfficeOdfFileW/source/OdfFormat/odp_slide_context.cpp
+171
-5
ASCOfficeOdfFileW/source/OdfFormat/odp_slide_context.h
ASCOfficeOdfFileW/source/OdfFormat/odp_slide_context.h
+22
-2
ASCOfficeOdfFileW/source/OdfFormat/ods_table_context.cpp
ASCOfficeOdfFileW/source/OdfFormat/ods_table_context.cpp
+0
-1
ASCOfficeOdfFileW/source/OdfFormat/odt_conversion_context.h
ASCOfficeOdfFileW/source/OdfFormat/odt_conversion_context.h
+2
-2
ASCOfficeOdfFileW/source/OdfFormat/style_graphic_properties.cpp
...iceOdfFileW/source/OdfFormat/style_graphic_properties.cpp
+68
-2
ASCOfficeOdfFileW/source/OdfFormat/style_graphic_properties.h
...fficeOdfFileW/source/OdfFormat/style_graphic_properties.h
+20
-2
ASCOfficeOdfFileW/source/OdfFormat/styles.cpp
ASCOfficeOdfFileW/source/OdfFormat/styles.cpp
+21
-5
ASCOfficeOdfFileW/source/OdfFormat/styles.h
ASCOfficeOdfFileW/source/OdfFormat/styles.h
+9
-9
ASCOfficeOdfFileW/source/OdfFormat/table.h
ASCOfficeOdfFileW/source/OdfFormat/table.h
+40
-65
ASCOfficeOdfFileW/source/Oox2OdfConverter/ConvertDrawing.cpp
ASCOfficeOdfFileW/source/Oox2OdfConverter/ConvertDrawing.cpp
+80
-45
ASCOfficeOdfFileW/source/Oox2OdfConverter/Converter.cpp
ASCOfficeOdfFileW/source/Oox2OdfConverter/Converter.cpp
+8
-787
ASCOfficeOdfFileW/source/Oox2OdfConverter/Converter.h
ASCOfficeOdfFileW/source/Oox2OdfConverter/Converter.h
+12
-2
ASCOfficeOdfFileW/source/Oox2OdfConverter/DocxConverter.cpp
ASCOfficeOdfFileW/source/Oox2OdfConverter/DocxConverter.cpp
+4
-4
ASCOfficeOdfFileW/source/Oox2OdfConverter/PptxConverter.cpp
ASCOfficeOdfFileW/source/Oox2OdfConverter/PptxConverter.cpp
+418
-13
ASCOfficeOdfFileW/source/Oox2OdfConverter/PptxConverter.h
ASCOfficeOdfFileW/source/Oox2OdfConverter/PptxConverter.h
+22
-5
ASCOfficePPTXFile/PPTXFormat/Logic/Table/TableCellProperties.h
...ficePPTXFile/PPTXFormat/Logic/Table/TableCellProperties.h
+23
-9
Common/DocxFormat/Source/DocxFormat/Logic/Table.h
Common/DocxFormat/Source/DocxFormat/Logic/Table.h
+1
-1
DesktopEditor/xml/include/xmlutils.h
DesktopEditor/xml/include/xmlutils.h
+2
-0
DesktopEditor/xml/src/xmldom.cpp
DesktopEditor/xml/src/xmldom.cpp
+9
-0
No files found.
ASCOfficeOdfFileW/OdfFileWTest/OdfFileWTest.vcproj
View file @
19960fa3
...
...
@@ -43,7 +43,7 @@
<Tool
Name=
"VCCLCompilerTool"
Optimization=
"0"
PreprocessorDefinitions=
"WIN32;_DEBUG;_CONSOLE;
BOOST_EXCEPTION_DISABLE;
USE_LITE_READER;_USE_XMLLITE_READER_;_USE_LIBXML2_READER_;LIBXML_READER_ENABLED;__WORDSIZE=32;DONT_WRITE_EMBEDDED_FONTS"
PreprocessorDefinitions=
"WIN32;_DEBUG;_CONSOLE;USE_LITE_READER;_USE_XMLLITE_READER_;_USE_LIBXML2_READER_;LIBXML_READER_ENABLED;__WORDSIZE=32;DONT_WRITE_EMBEDDED_FONTS"
MinimalRebuild=
"true"
BasicRuntimeChecks=
"3"
RuntimeLibrary=
"3"
...
...
ASCOfficeOdfFileW/linux/OdfFileWriterLib.pro
View file @
19960fa3
...
...
@@ -105,7 +105,7 @@ SOURCES += \
..
/
source
/
OdfFormat
/
odp_page_state
.
cpp
\
..
/
source
/
OdfFormat
/
odp_slide_context
.
cpp
\
..
/
source
/
OdfFormat
/
office_presentation
.
cpp
\
..
/
source
/
OdfFormat
/
style_presentation
.
cpp
\
..
/
source
/
OdfFormat
/
style_presentation
.
cpp
}
SOURCES
+=
\
...
...
@@ -115,9 +115,7 @@ SOURCES += \
..
/
source
/
Oox2OdfConverter
/
DocxConverter
.
cpp
\
..
/
source
/
Oox2OdfConverter
/
XlsxConverter
.
cpp
\
..
/
source
/
Oox2OdfConverter
/
ConvertDrawing
.
cpp
\
..
/
source
/
Oox2OdfConverter
/
PptxConverter
.
cpp
\
..
/
source
/
OdfFormat
/
anim_elements
.
cpp
\
..
/
source
/
OdfFormat
/
style_presentation
.
cpp
..
/
source
/
Oox2OdfConverter
/
PptxConverter
.
cpp
HEADERS
+=
\
..
/
source
/
OdfFormat
/
abstract_xml
.
h
\
...
...
ASCOfficeOdfFileW/source/OdfFormat/odf_chart_context.cpp
View file @
19960fa3
...
...
@@ -109,7 +109,7 @@ namespace odf_writer
struct
odf_chart_level_state
{
style_text_properties
*
text_properties_
;
style_graphic
_properties
*
graphic_properties_
;
graphic_format
_properties
*
graphic_properties_
;
style_paragraph_properties
*
paragraph_properties_
;
style_chart_properties
*
chart_properties_
;
...
...
@@ -297,8 +297,8 @@ void odf_chart_context::Impl::set_default_series_color()
color
col
=
color
(
default_MS_series_colors
[
current_series_count_
]);
current_level_
.
back
().
graphic_properties_
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_color_
=
col
;
current_level_
.
back
().
graphic_properties_
->
content_
.
svg_stroke_color_
=
col
;
current_level_
.
back
().
graphic_properties_
->
common_draw_fill_attlist_
.
draw_fill_color_
=
col
;
current_level_
.
back
().
graphic_properties_
->
svg_stroke_color_
=
col
;
}
////////////////////////////////////////////////////////////////////////////
...
...
@@ -641,7 +641,7 @@ void odf_chart_context::start_series(std::wstring type)
if
(
style_
)
{
impl_
->
current_level_
.
back
().
graphic_properties_
=
style_
->
content_
.
get_
style_
graphic_properties
();
impl_
->
current_level_
.
back
().
graphic_properties_
=
style_
->
content_
.
get_graphic_properties
();
impl_
->
set_default_series_color
();
}
...
...
@@ -968,7 +968,7 @@ void odf_chart_context::start_floor()
if
(
style_
)
{
impl_
->
current_level_
.
back
().
graphic_properties_
=
style_
->
content_
.
get_
style_
graphic_properties
();
impl_
->
current_level_
.
back
().
graphic_properties_
=
style_
->
content_
.
get_graphic_properties
();
}
}
void
odf_chart_context
::
start_wall
()
...
...
@@ -993,9 +993,9 @@ void odf_chart_context::start_wall()
if
(
style_
)
{
impl_
->
current_level_
.
back
().
graphic_properties_
=
style_
->
content_
.
get_
style_
graphic_properties
();
impl_
->
current_level_
.
back
().
graphic_properties_
=
style_
->
content_
.
get_graphic_properties
();
if
(
impl_
->
current_level_
.
back
().
graphic_properties_
)
impl_
->
current_level_
.
back
().
graphic_properties_
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_color_
=
color
(
L"#ffffff"
);
impl_
->
current_level_
.
back
().
graphic_properties_
->
common_draw_fill_attlist_
.
draw_fill_color_
=
color
(
L"#ffffff"
);
}
}
void
odf_chart_context
::
start_legend
()
...
...
@@ -1036,7 +1036,7 @@ void odf_chart_context::start_stock_range_line()
style_name
=
style_
->
style_name_
;
line
->
common_attlist_
.
chart_style_name_
=
style_name
;
impl_
->
current_level_
.
back
().
graphic_properties_
=
style_
->
content_
.
get_
style_
graphic_properties
();
impl_
->
current_level_
.
back
().
graphic_properties_
=
style_
->
content_
.
get_graphic_properties
();
impl_
->
set_default_series_color
();
}
start_element
(
elm
,
style_elm
,
style_name
);
...
...
@@ -1059,7 +1059,7 @@ void odf_chart_context::start_stock_gain_marker()
style_name
=
style_
->
style_name_
;
marker
->
common_attlist_
.
chart_style_name_
=
style_name
;
impl_
->
current_level_
.
back
().
graphic_properties_
=
style_
->
content_
.
get_
style_
graphic_properties
();
impl_
->
current_level_
.
back
().
graphic_properties_
=
style_
->
content_
.
get_graphic_properties
();
impl_
->
set_default_series_color
();
}
start_element
(
elm
,
style_elm
,
style_name
);
...
...
@@ -1082,7 +1082,7 @@ void odf_chart_context::start_stock_loss_marker()
style_name
=
style_
->
style_name_
;
marker
->
common_attlist_
.
chart_style_name_
=
style_name
;
impl_
->
current_level_
.
back
().
graphic_properties_
=
style_
->
content_
.
get_
style_
graphic_properties
();
impl_
->
current_level_
.
back
().
graphic_properties_
=
style_
->
content_
.
get_graphic_properties
();
impl_
->
set_default_series_color
();
}
start_element
(
elm
,
style_elm
,
style_name
);
...
...
@@ -1219,7 +1219,7 @@ void odf_chart_context::set_no_fill(bool Val)
if
(
Val
==
false
)
return
;
if
(
!
impl_
->
current_level_
.
back
().
graphic_properties_
)
return
;
impl_
->
current_level_
.
back
().
graphic_properties_
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_
=
draw_fill
(
draw_fill
::
none
);
impl_
->
current_level_
.
back
().
graphic_properties_
->
common_draw_fill_attlist_
.
draw_fill_
=
draw_fill
(
draw_fill
::
none
);
}
void
odf_chart_context
::
set_axis_tick_major
(
int
type
)
...
...
ASCOfficeOdfFileW/source/OdfFormat/odf_drawing_context.cpp
View file @
19960fa3
...
...
@@ -264,7 +264,7 @@ public:
void
create_draw_base
(
int
type
);
office_element_ptr
create_draw_element
(
int
type
);
style_graphic
_properties
*
current_graphic_properties
;
graphic_format
_properties
*
current_graphic_properties
;
style_paragraph_properties
*
current_paragraph_properties
;
style_text_properties
*
current_text_properties
;
...
...
@@ -325,7 +325,7 @@ void odf_drawing_context::set_background_state(bool Val)
{
impl_
->
is_background_
=
Val
;
impl_
->
current_graphic_properties
=
new
style_graphic
_properties
();
impl_
->
current_graphic_properties
=
new
graphic_format
_properties
();
}
void
odf_drawing_context
::
check_anchor
()
...
...
@@ -385,24 +385,24 @@ void odf_drawing_context::start_group()
if
(
style_
)
{
style_name
=
style_
->
style_name_
;
impl_
->
current_graphic_properties
=
style_
->
content_
.
get_
style_
graphic_properties
();
impl_
->
current_graphic_properties
=
style_
->
content_
.
get_graphic_properties
();
}
group
->
common_draw_attlists_
.
shape_with_text_and_styles_
.
common_draw_shape_with_styles_attlist_
.
common_draw_style_name_attlist_
.
draw_style_name_
=
style_ref
(
style_name
);
impl_
->
current_graphic_properties
->
content_
.
style_wrap_
=
impl_
->
anchor_settings_
.
style_wrap_
;
impl_
->
current_graphic_properties
->
content_
.
style_run_through_
=
impl_
->
anchor_settings_
.
run_through_
;
impl_
->
current_graphic_properties
->
style_wrap_
=
impl_
->
anchor_settings_
.
style_wrap_
;
impl_
->
current_graphic_properties
->
style_run_through_
=
impl_
->
anchor_settings_
.
run_through_
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_vertical_pos_attlist_
.
style_vertical_pos_
=
impl_
->
anchor_settings_
.
style_vertical_pos_
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_horizontal_pos_attlist_
.
style_horizontal_pos_
=
impl_
->
anchor_settings_
.
style_horizontal_pos_
;
impl_
->
current_graphic_properties
->
common_vertical_pos_attlist_
.
style_vertical_pos_
=
impl_
->
anchor_settings_
.
style_vertical_pos_
;
impl_
->
current_graphic_properties
->
common_horizontal_pos_attlist_
.
style_horizontal_pos_
=
impl_
->
anchor_settings_
.
style_horizontal_pos_
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_vertical_rel_attlist_
.
style_vertical_rel_
=
impl_
->
anchor_settings_
.
style_vertical_rel_
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_horizontal_rel_attlist_
.
style_horizontal_rel_
=
impl_
->
anchor_settings_
.
style_horizontal_rel_
;
impl_
->
current_graphic_properties
->
common_vertical_rel_attlist_
.
style_vertical_rel_
=
impl_
->
anchor_settings_
.
style_vertical_rel_
;
impl_
->
current_graphic_properties
->
common_horizontal_rel_attlist_
.
style_horizontal_rel_
=
impl_
->
anchor_settings_
.
style_horizontal_rel_
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_horizontal_margin_attlist_
.
fo_margin_left_
=
impl_
->
anchor_settings_
.
fo_margin_left_
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_vertical_margin_attlist_
.
fo_margin_top_
=
impl_
->
anchor_settings_
.
fo_margin_top_
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_horizontal_margin_attlist_
.
fo_margin_right_
=
impl_
->
anchor_settings_
.
fo_margin_right_
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_vertical_margin_attlist_
.
fo_margin_bottom_
=
impl_
->
anchor_settings_
.
fo_margin_bottom_
;
impl_
->
current_graphic_properties
->
common_horizontal_margin_attlist_
.
fo_margin_left_
=
impl_
->
anchor_settings_
.
fo_margin_left_
;
impl_
->
current_graphic_properties
->
common_vertical_margin_attlist_
.
fo_margin_top_
=
impl_
->
anchor_settings_
.
fo_margin_top_
;
impl_
->
current_graphic_properties
->
common_horizontal_margin_attlist_
.
fo_margin_right_
=
impl_
->
anchor_settings_
.
fo_margin_right_
;
impl_
->
current_graphic_properties
->
common_vertical_margin_attlist_
.
fo_margin_bottom_
=
impl_
->
anchor_settings_
.
fo_margin_bottom_
;
if
(
group
)
{
...
...
@@ -467,7 +467,7 @@ void odf_drawing_context::end_drawing_background(odf_types::common_draw_fill_att
if
(
!
impl_
->
is_background_
||
!
impl_
->
current_graphic_properties
)
return
;
common_draw_attlist
.
apply_from
(
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
);
common_draw_attlist
.
apply_from
(
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
);
delete
impl_
->
current_graphic_properties
;
...
...
@@ -573,22 +573,22 @@ void odf_drawing_context::end_drawing()
}
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_vertical_pos_attlist_
.
style_vertical_pos_
=
impl_
->
anchor_settings_
.
style_vertical_pos_
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_horizontal_pos_attlist_
.
style_horizontal_pos_
=
impl_
->
anchor_settings_
.
style_horizontal_pos_
;
impl_
->
current_graphic_properties
->
common_vertical_pos_attlist_
.
style_vertical_pos_
=
impl_
->
anchor_settings_
.
style_vertical_pos_
;
impl_
->
current_graphic_properties
->
common_horizontal_pos_attlist_
.
style_horizontal_pos_
=
impl_
->
anchor_settings_
.
style_horizontal_pos_
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_vertical_rel_attlist_
.
style_vertical_rel_
=
impl_
->
anchor_settings_
.
style_vertical_rel_
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_horizontal_rel_attlist_
.
style_horizontal_rel_
=
impl_
->
anchor_settings_
.
style_horizontal_rel_
;
impl_
->
current_graphic_properties
->
common_vertical_rel_attlist_
.
style_vertical_rel_
=
impl_
->
anchor_settings_
.
style_vertical_rel_
;
impl_
->
current_graphic_properties
->
common_horizontal_rel_attlist_
.
style_horizontal_rel_
=
impl_
->
anchor_settings_
.
style_horizontal_rel_
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_horizontal_margin_attlist_
.
fo_margin_left_
=
impl_
->
anchor_settings_
.
fo_margin_left_
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_vertical_margin_attlist_
.
fo_margin_top_
=
impl_
->
anchor_settings_
.
fo_margin_top_
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_horizontal_margin_attlist_
.
fo_margin_right_
=
impl_
->
anchor_settings_
.
fo_margin_right_
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_vertical_margin_attlist_
.
fo_margin_bottom_
=
impl_
->
anchor_settings_
.
fo_margin_bottom_
;
impl_
->
current_graphic_properties
->
common_horizontal_margin_attlist_
.
fo_margin_left_
=
impl_
->
anchor_settings_
.
fo_margin_left_
;
impl_
->
current_graphic_properties
->
common_vertical_margin_attlist_
.
fo_margin_top_
=
impl_
->
anchor_settings_
.
fo_margin_top_
;
impl_
->
current_graphic_properties
->
common_horizontal_margin_attlist_
.
fo_margin_right_
=
impl_
->
anchor_settings_
.
fo_margin_right_
;
impl_
->
current_graphic_properties
->
common_vertical_margin_attlist_
.
fo_margin_bottom_
=
impl_
->
anchor_settings_
.
fo_margin_bottom_
;
if
(
draw
&&
!
impl_
->
current_drawing_state_
.
in_group
)
draw
->
common_draw_attlists_
.
shape_with_text_and_styles_
.
common_draw_shape_with_styles_attlist_
.
common_text_spreadsheet_shape_attlist_
.
common_text_anchor_attlist_
.
type_
=
impl_
->
anchor_settings_
.
anchor_type_
;
impl_
->
current_graphic_properties
->
content_
.
style_wrap_
=
impl_
->
anchor_settings_
.
style_wrap_
;
impl_
->
current_graphic_properties
->
content_
.
style_run_through_
=
impl_
->
anchor_settings_
.
run_through_
;
impl_
->
current_graphic_properties
->
style_wrap_
=
impl_
->
anchor_settings_
.
style_wrap_
;
impl_
->
current_graphic_properties
->
style_run_through_
=
impl_
->
anchor_settings_
.
run_through_
;
//if (impl_->anchor_settings_.anchor_type_ && impl_->anchor_settings_.anchor_type_->get_type()== anchor_type::AsChar)
//{
...
...
@@ -673,7 +673,7 @@ void odf_drawing_context::Impl::create_draw_base(int type)
if
(
style_
)
{
style_name
=
style_
->
style_name_
;
current_graphic_properties
=
style_
->
content_
.
get_
style_
graphic_properties
();
current_graphic_properties
=
style_
->
content_
.
get_graphic_properties
();
}
draw
->
common_draw_attlists_
.
shape_with_text_and_styles_
.
common_draw_shape_with_styles_attlist_
.
common_draw_style_name_attlist_
.
draw_style_name_
=
style_ref
(
style_name
);
...
...
@@ -961,18 +961,18 @@ void odf_drawing_context::corrected_line_fill()
{
if
(
!
impl_
->
current_graphic_properties
)
return
;
if
(
!
impl_
->
current_graphic_properties
->
content_
.
draw_stroke_
&&
!
impl_
->
current_graphic_properties
->
content_
.
svg_stroke_color_
&&
!
impl_
->
current_graphic_properties
->
content_
.
draw_stroke_dash_
&&
!
impl_
->
current_graphic_properties
->
content_
.
svg_stroke_width_
&&
!
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_
&&
!
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_color_
&&
!
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_image_name_
&&
!
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_hatch_name_
&&
!
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_gradient_name_
)
if
(
!
impl_
->
current_graphic_properties
->
draw_stroke_
&&
!
impl_
->
current_graphic_properties
->
svg_stroke_color_
&&
!
impl_
->
current_graphic_properties
->
draw_stroke_dash_
&&
!
impl_
->
current_graphic_properties
->
svg_stroke_width_
&&
!
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_
&&
!
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_color_
&&
!
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_image_name_
&&
!
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_hatch_name_
&&
!
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_gradient_name_
)
{
impl_
->
current_graphic_properties
->
content_
.
svg_stroke_width_
=
length
(
length
(
1.
,
length
::
pt
).
get_value_unit
(
length
::
cm
),
length
::
cm
);
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_
=
draw_fill
::
none
;;
impl_
->
current_graphic_properties
->
svg_stroke_width_
=
length
(
length
(
1.
,
length
::
pt
).
get_value_unit
(
length
::
cm
),
length
::
cm
);
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_
=
draw_fill
::
none
;;
}
}
void
odf_drawing_context
::
start_frame
()
...
...
@@ -985,7 +985,7 @@ void odf_drawing_context::start_frame()
{
impl_
->
anchor_settings_
.
style_wrap_
=
style_wrap
(
style_wrap
::
RunThrough
);
}
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_background_color_attlist_
.
fo_background_color_
=
odf_types
::
background_color
(
odf_types
::
background_color
::
Transparent
);
impl_
->
current_graphic_properties
->
common_background_color_attlist_
.
fo_background_color_
=
odf_types
::
background_color
(
odf_types
::
background_color
::
Transparent
);
}
}
...
...
@@ -1017,7 +1017,7 @@ void odf_drawing_context::start_element(office_element_ptr elm, office_element_p
if
(
style_
)
{
style_name
=
style_
->
style_name_
;
impl_
->
current_graphic_properties
=
style_
->
content_
.
get_
style_
graphic_properties
();
impl_
->
current_graphic_properties
=
style_
->
content_
.
get_graphic_properties
();
if
(
impl_
->
current_drawing_state_
.
name_
.
empty
())
{
...
...
@@ -1080,10 +1080,10 @@ void odf_drawing_context::set_opacity(double percent_)
switch
(
impl_
->
current_drawing_part_
)
{
case
Area
:
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_opacity_
=
percent
(
percent_
);
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_opacity_
=
percent
(
percent_
);
break
;
case
Line
:
impl_
->
current_graphic_properties
->
content_
.
svg_stroke_opacity_
=
percent
(
percent_
);
impl_
->
current_graphic_properties
->
svg_stroke_opacity_
=
percent
(
percent_
);
break
;
}
}
...
...
@@ -1094,17 +1094,17 @@ void odf_drawing_context::set_shadow(int type, std::wstring hexColor, _CP_OPT(do
int
res
=
0
;
if
((
res
=
hexColor
.
find
(
L"#"
))
<
0
)
hexColor
=
std
::
wstring
(
L"#"
)
+
hexColor
;
impl_
->
current_graphic_properties
->
content_
.
draw_shadow_offset_x_
=
length
(
length
(
dist_pt
,
length
::
pt
).
get_value_unit
(
length
::
cm
),
length
::
cm
);
impl_
->
current_graphic_properties
->
draw_shadow_offset_x_
=
length
(
length
(
dist_pt
,
length
::
pt
).
get_value_unit
(
length
::
cm
),
length
::
cm
);
if
(
dist_pt_y
>
0
)
impl_
->
current_graphic_properties
->
content_
.
draw_shadow_offset_y_
=
length
(
length
(
dist_pt_y
,
length
::
pt
).
get_value_unit
(
length
::
cm
),
length
::
cm
);
impl_
->
current_graphic_properties
->
draw_shadow_offset_y_
=
length
(
length
(
dist_pt_y
,
length
::
pt
).
get_value_unit
(
length
::
cm
),
length
::
cm
);
else
impl_
->
current_graphic_properties
->
content_
.
draw_shadow_offset_y_
=
length
(
length
(
dist_pt
,
length
::
pt
).
get_value_unit
(
length
::
cm
),
length
::
cm
);
impl_
->
current_graphic_properties
->
draw_shadow_offset_y_
=
length
(
length
(
dist_pt
,
length
::
pt
).
get_value_unit
(
length
::
cm
),
length
::
cm
);
impl_
->
current_graphic_properties
->
content_
.
draw_shadow_
=
shadow_type1
(
shadow_type1
::
Visible
);
if
(
opacity
)
impl_
->
current_graphic_properties
->
content_
.
draw_shadow_opacity_
=
*
opacity
;
impl_
->
current_graphic_properties
->
draw_shadow_
=
shadow_type1
(
shadow_type1
::
Visible
);
if
(
opacity
)
impl_
->
current_graphic_properties
->
draw_shadow_opacity_
=
*
opacity
;
impl_
->
current_graphic_properties
->
content_
.
draw_shadow_color_
=
hexColor
;
impl_
->
current_graphic_properties
->
draw_shadow_color_
=
hexColor
;
}
void
odf_drawing_context
::
set_layer
(
std
::
wstring
val
)
{
...
...
@@ -1125,16 +1125,16 @@ void odf_drawing_context::set_no_fill()
{
case
Area
:
if
((
impl_
->
is_footer_
||
impl_
->
is_header_
||
impl_
->
is_background_
)
&&
(
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_
)
&&
(
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_
->
get_type
()
==
draw_fill
::
bitmap
))
(
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_
)
&&
(
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_
->
get_type
()
==
draw_fill
::
bitmap
))
{
}
else
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_
=
draw_fill
::
none
;
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_
=
draw_fill
::
none
;
break
;
case
Line
:
//impl_->current_graphic_properties->co
ntent_.co
mmon_draw_fill_attlist_.draw_fill_ = draw_fill::none;??????
impl_
->
current_graphic_properties
->
content_
.
draw_stroke_
=
line_style
(
line_style
::
None
);
//impl_->current_graphic_properties->common_draw_fill_attlist_.draw_fill_ = draw_fill::none;??????
impl_
->
current_graphic_properties
->
draw_stroke_
=
line_style
(
line_style
::
None
);
break
;
}
}
...
...
@@ -1142,7 +1142,7 @@ void odf_drawing_context::set_type_fill(int type)
{
if
(
!
impl_
->
current_graphic_properties
)
return
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_
=
(
draw_fill
::
type
)
type
;
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_
=
(
draw_fill
::
type
)
type
;
}
void
odf_drawing_context
::
set_fill_color
(
unsigned
int
Color
)
...
...
@@ -1165,24 +1165,24 @@ void odf_drawing_context::set_solid_fill(std::wstring hexColor)
switch
(
impl_
->
current_drawing_part_
)
{
case
Area
:
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_color_
=
hexColor
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_background_color_attlist_
.
fo_background_color_
=
color
(
hexColor
);
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_color_
=
hexColor
;
impl_
->
current_graphic_properties
->
common_background_color_attlist_
.
fo_background_color_
=
color
(
hexColor
);
//последнее нужно - что если будут вводить текст - под текстом будет цвет фона (или он поменяется в полях текста)
if
((
impl_
->
is_footer_
||
impl_
->
is_header_
||
impl_
->
is_background_
)
&&
(
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_
)
&&
(
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_
->
get_type
()
==
draw_fill
::
bitmap
))
(
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_
)
&&
(
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_
->
get_type
()
==
draw_fill
::
bitmap
))
{
}
else
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_
=
draw_fill
::
solid
;
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_
=
draw_fill
::
solid
;
break
;
case
Line
:
impl_
->
current_graphic_properties
->
content_
.
svg_stroke_color_
=
hexColor
;
if
(
!
impl_
->
current_graphic_properties
->
content_
.
draw_stroke_
)
impl_
->
current_graphic_properties
->
content_
.
draw_stroke_
=
line_style
(
line_style
::
Solid
);
//default
if
(
!
impl_
->
current_graphic_properties
->
content_
.
svg_stroke_width_
)
impl_
->
current_graphic_properties
->
content_
.
svg_stroke_width_
=
length
(
length
(
1
,
length
::
pt
).
get_value_unit
(
length
::
cm
),
length
::
cm
);
//default
impl_
->
current_graphic_properties
->
svg_stroke_color_
=
hexColor
;
if
(
!
impl_
->
current_graphic_properties
->
draw_stroke_
)
impl_
->
current_graphic_properties
->
draw_stroke_
=
line_style
(
line_style
::
Solid
);
//default
if
(
!
impl_
->
current_graphic_properties
->
svg_stroke_width_
)
impl_
->
current_graphic_properties
->
svg_stroke_width_
=
length
(
length
(
1
,
length
::
pt
).
get_value_unit
(
length
::
cm
),
length
::
cm
);
//default
break
;
}
}
...
...
@@ -1249,10 +1249,10 @@ void odf_drawing_context::set_flip_H(bool bVal)
if
(
impl_
->
current_graphic_properties
==
NULL
)
return
;
if
(
bVal
==
false
)
return
;
//for image
if
(
impl_
->
current_graphic_properties
->
content_
.
style_mirror_
)
impl_
->
current_graphic_properties
->
content_
.
style_mirror_
=
*
impl_
->
current_graphic_properties
->
content_
.
style_mirror_
+
std
::
wstring
(
L" horizontal"
);
if
(
impl_
->
current_graphic_properties
->
style_mirror_
)
impl_
->
current_graphic_properties
->
style_mirror_
=
*
impl_
->
current_graphic_properties
->
style_mirror_
+
std
::
wstring
(
L" horizontal"
);
else
impl_
->
current_graphic_properties
->
content_
.
style_mirror_
=
std
::
wstring
(
L"horizontal"
);
impl_
->
current_graphic_properties
->
style_mirror_
=
std
::
wstring
(
L"horizontal"
);
}
void
odf_drawing_context
::
set_flip_V
(
bool
bVal
)
{
...
...
@@ -1261,10 +1261,10 @@ void odf_drawing_context::set_flip_V(bool bVal)
if
(
impl_
->
current_graphic_properties
==
NULL
)
return
;
if
(
bVal
==
false
)
return
;
//for image
if
(
impl_
->
current_graphic_properties
->
content_
.
style_mirror_
)
impl_
->
current_graphic_properties
->
content_
.
style_mirror_
=
*
impl_
->
current_graphic_properties
->
content_
.
style_mirror_
+
std
::
wstring
(
L" vertical"
);
if
(
impl_
->
current_graphic_properties
->
style_mirror_
)
impl_
->
current_graphic_properties
->
style_mirror_
=
*
impl_
->
current_graphic_properties
->
style_mirror_
+
std
::
wstring
(
L" vertical"
);
else
impl_
->
current_graphic_properties
->
content_
.
style_mirror_
=
std
::
wstring
(
L"vertical"
);
impl_
->
current_graphic_properties
->
style_mirror_
=
std
::
wstring
(
L"vertical"
);
}
void
odf_drawing_context
::
set_rotate
(
double
dVal
)
...
...
@@ -1676,39 +1676,39 @@ void odf_drawing_context::set_size( _CP_OPT(double) & width_pt, _CP_OPT(double)
void
odf_drawing_context
::
set_line_width
(
double
pt
)
{
if
(
!
impl_
->
current_graphic_properties
)
return
;
impl_
->
current_graphic_properties
->
content_
.
svg_stroke_width_
=
length
(
length
(
pt
,
length
::
pt
).
get_value_unit
(
length
::
cm
),
length
::
cm
);
impl_
->
current_graphic_properties
->
svg_stroke_width_
=
length
(
length
(
pt
,
length
::
pt
).
get_value_unit
(
length
::
cm
),
length
::
cm
);
}
void
odf_drawing_context
::
set_line_tail
(
int
type
,
int
len
,
int
width
)
{
if
(
!
impl_
->
current_graphic_properties
)
return
;
impl_
->
current_graphic_properties
->
content_
.
draw_marker_end_
=
add_marker_style
(
type
);
impl_
->
current_graphic_properties
->
draw_marker_end_
=
add_marker_style
(
type
);
switch
(
width
)
{
case
0
:
//lineendwidthLarge
impl_
->
current_graphic_properties
->
content_
.
draw_marker_end_width_
=
length
(
0.4
,
length
::
cm
);
break
;
impl_
->
current_graphic_properties
->
draw_marker_end_width_
=
length
(
0.4
,
length
::
cm
);
break
;
case
1
:
//lineendwidthMedium
impl_
->
current_graphic_properties
->
content_
.
draw_marker_end_width_
=
length
(
0.3
,
length
::
cm
);
break
;
impl_
->
current_graphic_properties
->
draw_marker_end_width_
=
length
(
0.3
,
length
::
cm
);
break
;
case
2
:
//lineendwidthSmall
impl_
->
current_graphic_properties
->
content_
.
draw_marker_end_width_
=
length
(
0.2
,
length
::
cm
);
break
;
impl_
->
current_graphic_properties
->
draw_marker_end_width_
=
length
(
0.2
,
length
::
cm
);
break
;
}
}
void
odf_drawing_context
::
set_line_head
(
int
type
,
int
len
,
int
width
)
{
if
(
!
impl_
->
current_graphic_properties
)
return
;
impl_
->
current_graphic_properties
->
content_
.
draw_marker_start_
=
add_marker_style
(
type
);
impl_
->
current_graphic_properties
->
draw_marker_start_
=
add_marker_style
(
type
);
switch
(
width
)
{
case
0
:
//lineendwidthLarge
impl_
->
current_graphic_properties
->
content_
.
draw_marker_start_width_
=
length
(
0.4
,
length
::
cm
);
break
;
impl_
->
current_graphic_properties
->
draw_marker_start_width_
=
length
(
0.4
,
length
::
cm
);
break
;
case
1
:
//lineendwidthMedium
impl_
->
current_graphic_properties
->
content_
.
draw_marker_start_width_
=
length
(
0.3
,
length
::
cm
);
break
;
impl_
->
current_graphic_properties
->
draw_marker_start_width_
=
length
(
0.3
,
length
::
cm
);
break
;
case
2
:
//lineendwidthSmall
impl_
->
current_graphic_properties
->
content_
.
draw_marker_start_width_
=
length
(
0.2
,
length
::
cm
);
break
;
impl_
->
current_graphic_properties
->
draw_marker_start_width_
=
length
(
0.2
,
length
::
cm
);
break
;
}
}
...
...
@@ -1778,28 +1778,28 @@ void odf_drawing_context::set_line_dash_preset(int style)
{
if
(
!
impl_
->
current_graphic_properties
)
return
;
if
((
impl_
->
current_graphic_properties
->
content_
.
draw_stroke_
)
&&
(
impl_
->
current_graphic_properties
->
content_
.
draw_stroke_
->
get_type
()
==
line_style
::
None
))
return
;
if
((
impl_
->
current_graphic_properties
->
draw_stroke_
)
&&
(
impl_
->
current_graphic_properties
->
draw_stroke_
->
get_type
()
==
line_style
::
None
))
return
;
switch
(
style
)
//+создать стиль, привзать имена
{
case
0
:
//presetlinedashvalDash
case
7
:
//presetlinedashvalSysDash
impl_
->
current_graphic_properties
->
content_
.
draw_stroke_
=
line_style
(
line_style
::
Dash
);
break
;
impl_
->
current_graphic_properties
->
draw_stroke_
=
line_style
(
line_style
::
Dash
);
break
;
case
1
:
//presetlinedashvalDashDot
case
8
:
//presetlinedashvalSysDashDot
impl_
->
current_graphic_properties
->
content_
.
draw_stroke_
=
line_style
(
line_style
::
DotDash
);
break
;
impl_
->
current_graphic_properties
->
draw_stroke_
=
line_style
(
line_style
::
DotDash
);
break
;
case
2
:
//presetlinedashvalDot
case
10
:
//presetlinedashvalSysDot
impl_
->
current_graphic_properties
->
content_
.
draw_stroke_
=
line_style
(
line_style
::
Dotted
);
break
;
impl_
->
current_graphic_properties
->
draw_stroke_
=
line_style
(
line_style
::
Dotted
);
break
;
case
3
:
//presetlinedashvalLgDash
case
4
:
//presetlinedashvalLgDashDot
impl_
->
current_graphic_properties
->
content_
.
draw_stroke_
=
line_style
(
line_style
::
LongDash
);
break
;
impl_
->
current_graphic_properties
->
draw_stroke_
=
line_style
(
line_style
::
LongDash
);
break
;
case
5
:
//presetlinedashvalLgDashDotDot
case
9
:
//presetlinedashvalSysDashDotDot
impl_
->
current_graphic_properties
->
content_
.
draw_stroke_
=
line_style
(
line_style
::
DotDotDash
);
break
;
impl_
->
current_graphic_properties
->
draw_stroke_
=
line_style
(
line_style
::
DotDotDash
);
break
;
case
6
:
//presetlinedashvalSolid
impl_
->
current_graphic_properties
->
content_
.
draw_stroke_
=
line_style
(
line_style
::
Solid
);
break
;
impl_
->
current_graphic_properties
->
draw_stroke_
=
line_style
(
line_style
::
Solid
);
break
;
}
}
...
...
@@ -1809,15 +1809,15 @@ void odf_drawing_context::set_textarea_vertical_align(int align)
switch
(
align
)
{
case
0
:
//SimpleTypes::textanchoringtypeB:
impl_
->
current_graphic_properties
->
content_
.
draw_textarea_vertical_align_
=
odf_types
::
vertical_align
(
odf_types
::
vertical_align
::
Bottom
);
break
;
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
->
content_
.
draw_textarea_vertical_align_
=
odf_types
::
vertical_align
(
odf_types
::
vertical_align
::
Middle
);
break
;
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
->
content_
.
draw_textarea_vertical_align_
=
odf_types
::
vertical_align
(
odf_types
::
vertical_align
::
Baseline
);
break
;
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
->
content_
.
draw_textarea_vertical_align_
=
odf_types
::
vertical_align
(
odf_types
::
vertical_align
::
Justify
);
break
;
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
->
content_
.
draw_textarea_vertical_align_
=
odf_types
::
vertical_align
(
odf_types
::
vertical_align
::
Top
);
break
;
impl_
->
current_graphic_properties
->
draw_textarea_vertical_align_
=
odf_types
::
vertical_align
(
odf_types
::
vertical_align
::
Top
);
break
;
}
}
void
odf_drawing_context
::
set_textarea_wrap
(
bool
Val
)
...
...
@@ -1825,9 +1825,9 @@ void odf_drawing_context::set_textarea_wrap(bool Val)
if
(
!
impl_
->
current_graphic_properties
)
return
;
if
(
Val
)
impl_
->
current_graphic_properties
->
content_
.
fo_wrap_option_
=
wrap_option
(
wrap_option
::
Wrap
);
impl_
->
current_graphic_properties
->
fo_wrap_option_
=
wrap_option
(
wrap_option
::
Wrap
);
else
impl_
->
current_graphic_properties
->
content_
.
fo_wrap_option_
=
wrap_option
(
wrap_option
::
NoWrap
);
impl_
->
current_graphic_properties
->
fo_wrap_option_
=
wrap_option
(
wrap_option
::
NoWrap
);
}
void
odf_drawing_context
::
set_textarea_font
(
std
::
wstring
&
latin
,
std
::
wstring
&
cs
,
std
::
wstring
&
ea
)
...
...
@@ -1935,10 +1935,10 @@ void odf_drawing_context::set_textarea_padding(_CP_OPT(double) & left, _CP_OPT(d
{
if
(
!
impl_
->
current_graphic_properties
)
return
;
if
(
left
)
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_padding_attlist_
.
fo_padding_left_
=
length
(
*
left
,
length
::
cm
);
if
(
top
)
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_padding_attlist_
.
fo_padding_top_
=
length
(
*
top
,
length
::
cm
);
if
(
right
)
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_padding_attlist_
.
fo_padding_right_
=
length
(
*
right
,
length
::
cm
);
if
(
bottom
)
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_padding_attlist_
.
fo_padding_bottom_
=
length
(
*
bottom
,
length
::
cm
);
if
(
left
)
impl_
->
current_graphic_properties
->
common_padding_attlist_
.
fo_padding_left_
=
length
(
*
left
,
length
::
cm
);
if
(
top
)
impl_
->
current_graphic_properties
->
common_padding_attlist_
.
fo_padding_top_
=
length
(
*
top
,
length
::
cm
);
if
(
right
)
impl_
->
current_graphic_properties
->
common_padding_attlist_
.
fo_padding_right_
=
length
(
*
right
,
length
::
cm
);
if
(
bottom
)
impl_
->
current_graphic_properties
->
common_padding_attlist_
.
fo_padding_bottom_
=
length
(
*
bottom
,
length
::
cm
);
}
...
...
@@ -2104,45 +2104,45 @@ void odf_drawing_context::end_text_box()
end_element
();
if
(
impl_
->
current_graphic_properties
->
content_
.
svg_stroke_width_
||
(
impl_
->
current_graphic_properties
->
content_
.
draw_stroke_
&&
impl_
->
current_graphic_properties
->
content_
.
draw_stroke_
->
get_type
()
!=
line_style
::
None
))
if
(
impl_
->
current_graphic_properties
->
svg_stroke_width_
||
(
impl_
->
current_graphic_properties
->
draw_stroke_
&&
impl_
->
current_graphic_properties
->
draw_stroke_
->
get_type
()
!=
line_style
::
None
))
{
std
::
wstringstream
ss
;
ss
<<
impl_
->
current_graphic_properties
->
content_
.
svg_stroke_width_
->
get_length
();
ss
<<
impl_
->
current_graphic_properties
->
svg_stroke_width_
->
get_length
();
if
(
impl_
->
current_graphic_properties
->
content_
.
draw_stroke_
)
ss
<<
L" "
<<
*
impl_
->
current_graphic_properties
->
content_
.
draw_stroke_
;
if
(
impl_
->
current_graphic_properties
->
draw_stroke_
)
ss
<<
L" "
<<
*
impl_
->
current_graphic_properties
->
draw_stroke_
;
else
ss
<<
L" solid"
;
if
(
impl_
->
current_graphic_properties
->
content_
.
svg_stroke_color_
)
ss
<<
L" "
<<
*
impl_
->
current_graphic_properties
->
content_
.
svg_stroke_color_
;
if
(
impl_
->
current_graphic_properties
->
svg_stroke_color_
)
ss
<<
L" "
<<
*
impl_
->
current_graphic_properties
->
svg_stroke_color_
;
else
ss
<<
L" #000000"
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_border_attlist_
.
fo_border_
=
ss
.
str
();
impl_
->
current_graphic_properties
->
common_border_attlist_
.
fo_border_
=
ss
.
str
();
}
if
(
impl_
->
current_graphic_properties
->
content_
.
draw_shadow_
)
if
(
impl_
->
current_graphic_properties
->
draw_shadow_
)
{
std
::
wstringstream
shadow_style
;
if
(
impl_
->
current_graphic_properties
->
content_
.
draw_shadow_color_
)
shadow_style
<<
*
impl_
->
current_graphic_properties
->
content_
.
draw_shadow_color_
;
if
(
impl_
->
current_graphic_properties
->
draw_shadow_color_
)
shadow_style
<<
*
impl_
->
current_graphic_properties
->
draw_shadow_color_
;
else
shadow_style
<<
L"#000000"
;
shadow_style
<<
L" "
;
shadow_style
<<
*
impl_
->
current_graphic_properties
->
content_
.
draw_shadow_offset_x_
;
shadow_style
<<
*
impl_
->
current_graphic_properties
->
draw_shadow_offset_x_
;
shadow_style
<<
L" "
;
shadow_style
<<
*
impl_
->
current_graphic_properties
->
content_
.
draw_shadow_offset_y_
;
shadow_style
<<
*
impl_
->
current_graphic_properties
->
draw_shadow_offset_y_
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_shadow_attlist_
.
style_shadow_
=
shadow_style
.
str
();
impl_
->
current_graphic_properties
->
common_shadow_attlist_
.
style_shadow_
=
shadow_style
.
str
();
impl_
->
current_graphic_properties
->
content_
.
draw_shadow_offset_x_
=
boost
::
none
;
impl_
->
current_graphic_properties
->
content_
.
draw_shadow_offset_y_
=
boost
::
none
;
impl_
->
current_graphic_properties
->
content_
.
draw_shadow_color_
=
boost
::
none
;
impl_
->
current_graphic_properties
->
content_
.
draw_shadow_
=
boost
::
none
;
impl_
->
current_graphic_properties
->
draw_shadow_offset_x_
=
boost
::
none
;
impl_
->
current_graphic_properties
->
draw_shadow_offset_y_
=
boost
::
none
;
impl_
->
current_graphic_properties
->
draw_shadow_color_
=
boost
::
none
;
impl_
->
current_graphic_properties
->
draw_shadow_
=
boost
::
none
;
if
(
!
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_border_attlist_
.
fo_border_
)
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_border_attlist_
.
fo_border_
=
std
::
wstring
(
L"#000000 solid 0.06pt"
);
if
(
!
impl_
->
current_graphic_properties
->
common_border_attlist_
.
fo_border_
)
impl_
->
current_graphic_properties
->
common_border_attlist_
.
fo_border_
=
std
::
wstring
(
L"#000000 solid 0.06pt"
);
}
end_frame
();
...
...
@@ -2188,9 +2188,9 @@ void odf_drawing_context::set_text(odf_text_context* text_context)
if
(
impl_
->
current_graphic_properties
)
{
//автоувеличение при добавлении текста
impl_
->
current_graphic_properties
->
content_
.
draw_auto_grow_height_
=
false
;
impl_
->
current_graphic_properties
->
content_
.
draw_auto_grow_width_
=
false
;
//impl_->current_graphic_properties->
content_.
draw_fit_to_size_ = false;//???
impl_
->
current_graphic_properties
->
draw_auto_grow_height_
=
false
;
impl_
->
current_graphic_properties
->
draw_auto_grow_width_
=
false
;
//impl_->current_graphic_properties->draw_fit_to_size_ = false;//???
}
...
...
@@ -2202,22 +2202,22 @@ void odf_drawing_context::set_text(odf_text_context* text_context)
if
(
text_properties_
)
{
color
color_
=
text_properties_
->
content_
.
fo_color_
.
get_value_or
(
color
(
L"#000000"
));
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_color_
=
color_
;
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_color_
=
color_
;
if
(
text_properties_
->
content_
.
style_text_outline_
)
{
//line
impl_
->
current_graphic_properties
->
content_
.
svg_stroke_color_
=
color_
;
if
(
!
impl_
->
current_graphic_properties
->
content_
.
draw_stroke_
)
impl_
->
current_graphic_properties
->
content_
.
draw_stroke_
=
line_style
(
line_style
::
Solid
);
if
(
!
impl_
->
current_graphic_properties
->
content_
.
svg_stroke_width_
)
impl_
->
current_graphic_properties
->
content_
.
svg_stroke_width_
=
length
(
1
,
length
::
pt
);
impl_
->
current_graphic_properties
->
svg_stroke_color_
=
color_
;
if
(
!
impl_
->
current_graphic_properties
->
draw_stroke_
)
impl_
->
current_graphic_properties
->
draw_stroke_
=
line_style
(
line_style
::
Solid
);
if
(
!
impl_
->
current_graphic_properties
->
svg_stroke_width_
)
impl_
->
current_graphic_properties
->
svg_stroke_width_
=
length
(
1
,
length
::
pt
);
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_
=
draw_fill
(
draw_fill
::
none
);
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_
=
draw_fill
(
draw_fill
::
none
);
}
else
{
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_
=
draw_fill
(
draw_fill
::
solid
);
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_
=
draw_fill
(
draw_fill
::
solid
);
}
}
//text_context->text_elements_list_[0].style_elm.get()
...
...
@@ -2246,12 +2246,12 @@ void odf_drawing_context::start_gradient_style()
gradient
->
draw_name_
=
impl_
->
styles_context_
->
find_free_name
(
style_family
::
Gradient
);
gradient
->
draw_display_name_
=
std
::
wstring
(
L"User"
)
+
gradient
->
draw_name_
.
get
()
;
gradient
->
draw_start_color_
=
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_color_
;
gradient
->
draw_start_color_
=
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_color_
;
if
(
gradient
->
draw_start_color_
)
gradient
->
draw_start_intensity_
=
100.
;
gradient
->
draw_border_
=
0
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_gradient_name_
=
gradient
->
draw_name_
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_
=
draw_fill
(
draw_fill
::
gradient
);
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_gradient_name_
=
gradient
->
draw_name_
;
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_
=
draw_fill
(
draw_fill
::
gradient
);
}
...
...
@@ -2332,7 +2332,7 @@ void odf_drawing_context::start_opacity_style()
opacity
->
draw_name_
=
impl_
->
styles_context_
->
find_free_name
(
style_family
::
Opacity
);
opacity
->
draw_display_name_
=
std
::
wstring
(
L"User"
)
+
opacity
->
draw_name_
.
get
()
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_opacity_name_
=
opacity
->
draw_name_
;
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_opacity_name_
=
opacity
->
draw_name_
;
}
void
odf_drawing_context
::
set_opacity_start
(
double
val
)
{
...
...
@@ -2389,15 +2389,15 @@ void odf_drawing_context::start_hatch_style()
hatch
->
draw_name_
=
impl_
->
styles_context_
->
find_free_name
(
style_family
::
Hatch
);
hatch
->
draw_display_name_
=
std
::
wstring
(
L"User"
)
+
hatch
->
draw_name_
.
get
()
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_hatch_name_
=
hatch
->
draw_name_
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_
=
draw_fill
(
draw_fill
::
hatch
);
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_hatch_name_
=
hatch
->
draw_name_
;
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_
=
draw_fill
(
draw_fill
::
hatch
);
}
void
odf_drawing_context
::
set_hatch_line_color
(
std
::
wstring
hexColor
)
{
if
(
!
impl_
->
current_graphic_properties
)
return
;
//impl_->current_graphic_properties->
content_.
svg_stroke_color_ = color(std::wstring(L"#") + hexColor);
//impl_->current_graphic_properties->
content_.
draw_stroke_=line_style(line_style::Solid);//default
//impl_->current_graphic_properties->svg_stroke_color_ = color(std::wstring(L"#") + hexColor);
//impl_->current_graphic_properties->draw_stroke_=line_style(line_style::Solid);//default
draw_hatch
*
hatch
=
dynamic_cast
<
draw_hatch
*>
(
impl_
->
styles_context_
->
last_state
()
->
get_office_element
().
get
());
if
(
!
hatch
)
return
;
...
...
@@ -2414,8 +2414,8 @@ void odf_drawing_context::set_hatch_area_color(std::wstring hexColor)
int
res
=
0
;
if
((
res
=
hexColor
.
find
(
L"#"
))
<
0
)
hexColor
=
std
::
wstring
(
L"#"
)
+
hexColor
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_color_
=
hexColor
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_hatch_solid_
=
true
;
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_color_
=
hexColor
;
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_hatch_solid_
=
true
;
}
void
odf_drawing_context
::
set_hatch_type
(
int
type
)
{
...
...
@@ -2720,8 +2720,8 @@ void odf_drawing_context::start_bitmap_style()
fill_image
->
xlink_attlist_
.
show_
=
xlink_show
::
Embed
;
fill_image
->
xlink_attlist_
.
actuate_
=
xlink_actuate
::
OnLoad
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_image_name_
=
fill_image
->
draw_name_
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_
=
draw_fill
(
draw_fill
::
bitmap
);
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_image_name_
=
fill_image
->
draw_name_
;
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_
=
draw_fill
(
draw_fill
::
bitmap
);
set_image_style_repeat
(
0
);
...
...
@@ -2735,23 +2735,23 @@ void odf_drawing_context::set_bitmap_tile_align(int align)
switch
(
align
)
{
case
0
:
// rectalignmentB = 0,
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_image_ref_point_
=
fill_image_ref_point
(
fill_image_ref_point
::
bottom
);
break
;
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_image_ref_point_
=
fill_image_ref_point
(
fill_image_ref_point
::
bottom
);
break
;
case
1
:
// rectalignmentBL = 1,
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_image_ref_point_
=
fill_image_ref_point
(
fill_image_ref_point
::
bottom_left
);
break
;
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_image_ref_point_
=
fill_image_ref_point
(
fill_image_ref_point
::
bottom_left
);
break
;
case
2
:
// rectalignmentBR = 2,
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_image_ref_point_
=
fill_image_ref_point
(
fill_image_ref_point
::
bottom_right
);
break
;
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_image_ref_point_
=
fill_image_ref_point
(
fill_image_ref_point
::
bottom_right
);
break
;
case
3
:
// rectalignmentCtr = 3,
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_image_ref_point_
=
fill_image_ref_point
(
fill_image_ref_point
::
center
);
break
;
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_image_ref_point_
=
fill_image_ref_point
(
fill_image_ref_point
::
center
);
break
;
case
4
:
// rectalignmentL = 4,
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_image_ref_point_
=
fill_image_ref_point
(
fill_image_ref_point
::
left
);
break
;
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_image_ref_point_
=
fill_image_ref_point
(
fill_image_ref_point
::
left
);
break
;
case
5
:
// rectalignmentR = 5,
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_image_ref_point_
=
fill_image_ref_point
(
fill_image_ref_point
::
right
);
break
;
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_image_ref_point_
=
fill_image_ref_point
(
fill_image_ref_point
::
right
);
break
;
case
6
:
// rectalignmentT = 6,
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_image_ref_point_
=
fill_image_ref_point
(
fill_image_ref_point
::
top
);
break
;
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_image_ref_point_
=
fill_image_ref_point
(
fill_image_ref_point
::
top
);
break
;
case
7
:
// rectalignmentTL = 7,
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_image_ref_point_
=
fill_image_ref_point
(
fill_image_ref_point
::
top_left
);
break
;
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_image_ref_point_
=
fill_image_ref_point
(
fill_image_ref_point
::
top_left
);
break
;
case
8
:
// rectalignmentTR = 8,
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_image_ref_point_
=
fill_image_ref_point
(
fill_image_ref_point
::
top_right
);
break
;
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_image_ref_point_
=
fill_image_ref_point
(
fill_image_ref_point
::
top_right
);
break
;
}
}
void
odf_drawing_context
::
set_image_style_repeat
(
int
style
)
...
...
@@ -2759,11 +2759,11 @@ void odf_drawing_context::set_image_style_repeat(int style)
if
(
!
impl_
->
current_graphic_properties
)
return
;
if
(
style
==
1
)
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
style_repeat_
=
style_repeat
(
style_repeat
::
Stretch
);
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
style_repeat_
=
style_repeat
(
style_repeat
::
Stretch
);
else
if
(
style
==
2
)
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
style_repeat_
=
style_repeat
(
style_repeat
::
Repeat
);
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
style_repeat_
=
style_repeat
(
style_repeat
::
Repeat
);
else
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
style_repeat_
=
style_repeat
(
style_repeat
::
NoRepeat
);
//default
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
style_repeat_
=
style_repeat
(
style_repeat
::
NoRepeat
);
//default
}
void
odf_drawing_context
::
set_image_client_rect_pt
(
double
l
,
double
t
,
double
r
,
double
b
)
{
...
...
@@ -2777,7 +2777,7 @@ void odf_drawing_context::set_image_client_rect_pt(double l, double t, double r,
<<
length
(
length
(
b
,
length
::
pt
).
get_value_unit
(
length
::
cm
),
length
::
cm
)
<<
std
::
wstring
(
L","
)
<<
length
(
length
(
l
,
length
::
pt
).
get_value_unit
(
length
::
cm
),
length
::
cm
)
<<
std
::
wstring
(
L")"
);
impl_
->
current_graphic_properties
->
content_
.
fo_clip_
=
str_stream
.
str
();
impl_
->
current_graphic_properties
->
fo_clip_
=
str_stream
.
str
();
}
void
odf_drawing_context
::
set_image_client_rect_inch
(
double
l
,
double
t
,
double
r
,
double
b
)
...
...
@@ -2792,7 +2792,7 @@ void odf_drawing_context::set_image_client_rect_inch(double l, double t, double
<<
b
<<
std
::
wstring
(
L"in, "
)
<<
l
<<
std
::
wstring
(
L"in)"
);
impl_
->
current_graphic_properties
->
content_
.
fo_clip_
=
str_stream
.
str
();
impl_
->
current_graphic_properties
->
fo_clip_
=
str_stream
.
str
();
}
void
odf_drawing_context
::
set_bitmap_link
(
std
::
wstring
file_path
)
...
...
@@ -2821,7 +2821,7 @@ void odf_drawing_context::set_bitmap_tile_scale_x(double scale_x)
{
if
(
!
impl_
->
current_graphic_properties
)
return
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_image_width_
=
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_image_width_
=
length
(
length
(
scale_x
,
length
::
pt
).
get_value_unit
(
length
::
cm
),
length
::
cm
);
}
...
...
@@ -2829,20 +2829,20 @@ void odf_drawing_context::set_bitmap_tile_scale_y(double scale_y)
{
if
(
!
impl_
->
current_graphic_properties
)
return
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_image_height_
=
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_image_height_
=
length
(
length
(
scale_y
,
length
::
pt
).
get_value_unit
(
length
::
cm
),
length
::
cm
);
}
void
odf_drawing_context
::
set_bitmap_tile_translate_y
(
double
y
)
{
if
(
!
impl_
->
current_graphic_properties
)
return
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_image_ref_point_y_
=
percent
(
y
);
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_image_ref_point_y_
=
percent
(
y
);
}
void
odf_drawing_context
::
set_bitmap_tile_translate_x
(
double
x
)
{
if
(
!
impl_
->
current_graphic_properties
)
return
;
impl_
->
current_graphic_properties
->
co
ntent_
.
co
mmon_draw_fill_attlist_
.
draw_fill_image_ref_point_x_
=
percent
(
x
);
impl_
->
current_graphic_properties
->
common_draw_fill_attlist_
.
draw_fill_image_ref_point_x_
=
percent
(
x
);
}
office_element_ptr
&
odf_drawing_context
::
get_root_element
()
...
...
ASCOfficeOdfFileW/source/OdfFormat/odf_drawing_context.h
View file @
19960fa3
...
...
@@ -121,6 +121,9 @@ public:
void
start_shape
(
int
type
);
void
end_shape
();
void
start_frame
();
void
end_frame
();
bool
change_text_box_2_wordart
();
void
start_image
(
std
::
wstring
file_path
);
...
...
@@ -249,9 +252,6 @@ public:
private:
void
start_frame
();
void
end_frame
();
class
Impl
;
_CP_PTR
(
Impl
)
impl_
;
...
...
ASCOfficeOdfFileW/source/OdfFormat/odf_style_context.cpp
View file @
19960fa3
...
...
@@ -102,9 +102,9 @@ void odf_style_context::create_style(std::wstring oox_name, style_family::type f
style_state_list_
.
push_back
(
state
);
///////////////////////////////////////
style_state_list_
.
back
()
->
set_name
(
odf_name
);
style_state_list_
.
back
()
->
set_automatic
(
automatic
);
style_state_list_
.
back
()
->
set_root
(
root
);
style_state_list_
.
back
()
->
set_name
(
odf_name
);
style_state_list_
.
back
()
->
set_automatic
(
automatic
);
style_state_list_
.
back
()
->
set_root
(
root
);
style_state_list_
.
back
()
->
style_oox_id_
=
oox_id
;
...
...
ASCOfficeOdfFileW/source/OdfFormat/odf_style_state.cpp
View file @
19960fa3
...
...
@@ -60,12 +60,14 @@ namespace odf_writer {
if
(
style_
)
{
style_
->
style_family_
=
style_family
(
style_family_
);
style_
->
content_
.
style_family_
=
style_family_
;
}
default_style
*
default_style_
=
dynamic_cast
<
default_style
*>
(
elm
.
get
());
if
(
default_style_
)
{
default_style_
->
style_family_
=
style_family
(
style_family_
);
default_style_
->
content_
.
style_family_
=
style_family_
;
}
list_style_exist
=
false
;
...
...
@@ -112,6 +114,12 @@ style_family::type odf_style_state::get_family_type()
{
return
style_family_
;
}
void
odf_style_state
::
set_family_type
(
odf_types
::
style_family
::
type
type
)
{
style_family_
=
type
;
}
void
odf_style_state
::
set_parent_style_name
(
std
::
wstring
name
)
{
if
(
name
.
length
()
<
1
)
return
;
...
...
@@ -229,16 +237,17 @@ style_paragraph_properties * odf_style_state::get_paragraph_properties()
return
NULL
;
}
style_graphic
_properties
*
odf_style_state
::
get_graphic_properties
()
graphic_format
_properties
*
odf_style_state
::
get_graphic_properties
()
{
style
*
style_
=
dynamic_cast
<
style
*>
(
odf_style_
.
get
());
if
(
style_
)
return
style_
->
content_
.
get_
style_
graphic_properties
();
if
(
style_
)
return
style_
->
content_
.
get_graphic_properties
();
default_style
*
default_style_
=
dynamic_cast
<
default_style
*>
(
odf_style_
.
get
());
if
(
default_style_
)
return
default_style_
->
content_
.
get_
style_
graphic_properties
();
if
(
default_style_
)
return
default_style_
->
content_
.
get_graphic_properties
();
return
NULL
;
}
style_table_properties
*
odf_style_state
::
get_table_properties
()
{
style
*
style_
=
dynamic_cast
<
style
*>
(
odf_style_
.
get
());
...
...
@@ -304,13 +313,14 @@ style_chart_properties * odf_style_state::get_chart_properties()
return
NULL
;
}
//style_drawing_page_properties * odf_style_state::get_drawing_page_properties()
//{
// style* style_ = dynamic_cast<style*>(odf_style_.get());
// if (!style_)return NULL;
//
// return style_->content_.get_style_drawing_page_properties();
//}
style_drawing_page_properties
*
odf_style_state
::
get_drawing_page_properties
()
{
style
*
style_
=
dynamic_cast
<
style
*>
(
odf_style_
.
get
());
if
(
!
style_
)
return
NULL
;
return
style_
->
content_
.
get_style_drawing_page_properties
();
}
///////////////////////
...
...
ASCOfficeOdfFileW/source/OdfFormat/odf_style_state.h
View file @
19960fa3
...
...
@@ -45,16 +45,17 @@ class style;
class
odf_conversion_context
;
class
odf_style_context
;
class
graphic_format_properties
;
class
style_text_properties
;
class
style_paragraph_properties
;
class
style_graphic_properties
;
class
style_table_properties
;
class
style_section_properties
;
class
style_table_cell_properties
;
class
style_table_row_properties
;
class
style_table_column_properties
;
class
style_chart_properties
;
//
class style_drawing_page_properties;
class
style_drawing_page_properties
;
class
odf_style_state
;
typedef
shared_ptr
<
odf_style_state
>::
Type
odf_style_state_ptr
;
...
...
@@ -80,7 +81,8 @@ public:
void
set_name
(
std
::
wstring
name
);
std
::
wstring
get_name
();
odf_types
::
style_family
::
type
get_family_type
();
odf_types
::
style_family
::
type
get_family_type
();
void
set_family_type
(
odf_types
::
style_family
::
type
type
);
void
set_number_format
(
int
id
)
{
num_fmt_id_
=
id
;}
int
get_number_format
()
{
return
num_fmt_id_
;}
...
...
@@ -91,16 +93,17 @@ public:
void
set_display_name
(
std
::
wstring
name
);
//////////////////////////////////////////////////////////////////////////////////////////
graphic_format_properties
*
get_graphic_properties
()
;
style_text_properties
*
get_text_properties
();
style_paragraph_properties
*
get_paragraph_properties
()
;
style_graphic_properties
*
get_graphic_properties
()
;
style_table_properties
*
get_table_properties
();
style_section_properties
*
get_section_properties
();
style_table_cell_properties
*
get_table_cell_properties
();
style_table_row_properties
*
get_table_row_properties
()
;
style_table_column_properties
*
get_table_column_properties
()
;
style_chart_properties
*
get_chart_properties
()
;
//
style_drawing_page_properties* get_drawing_page_properties();
style_drawing_page_properties
*
get_drawing_page_properties
();
bool
get_list_style_exist
();
int
get_list_style_level
();
...
...
ASCOfficeOdfFileW/source/OdfFormat/odf_table_context.cpp
View file @
19960fa3
...
...
@@ -44,10 +44,10 @@
#include "table.h"
#include "style_table_properties.h"
#include "style_graphic_properties.h"
#include "style_text_properties.h"
//#include "style_text_properties.h"
//#include "style_paragraph_properties.h"
//#include "style_graphic_properties.h"
namespace
cpdoccore
...
...
@@ -151,7 +151,9 @@ void odf_table_context::start_table(office_element_ptr &elm, bool styled)
if
(
!
table
)
return
;
odf_table_state
state
;
state
.
table
.
elm
=
elm
;
state
.
default_cell_properties
=
impl_
->
default_cell_properties
;
//write in row default cell props
if
(
styled
)
{
...
...
@@ -160,14 +162,12 @@ void odf_table_context::start_table(office_element_ptr &elm, bool styled)
{
state
.
table
.
style_elm
=
style_state
->
get_office_element
();
state
.
table
.
style_name
=
style_state
->
get_name
();
table
->
table_table_attlist_
.
table_style_name_
=
state
.
table
.
style_name
;
}
}
state
.
default_cell_properties
=
impl_
->
default_cell_properties
;
impl_
->
default_cell_properties
=
L""
;
impl_
->
start_table
(
state
);
}
void
odf_table_context
::
end_table
()
{
...
...
@@ -196,12 +196,13 @@ void odf_table_context::start_row(office_element_ptr &elm, bool styled)
{
if
(
impl_
->
empty
())
return
;
table_table_row
*
row
=
dynamic_cast
<
table_table_row
*>
(
elm
.
get
());
;
table_table_row
*
row
=
dynamic_cast
<
table_table_row
*>
(
elm
.
get
());
if
(
!
row
)
return
;
odf_element_state
state
;
state
.
elm
=
elm
;
if
(
styled
)
{
odf_style_state_ptr
style_state
=
impl_
->
styles_context
()
->
last_state
(
style_family
::
TableRow
);
...
...
@@ -209,14 +210,17 @@ void odf_table_context::start_row(office_element_ptr &elm, bool styled)
{
state
.
style_elm
=
style_state
->
get_office_element
();
state
.
style_name
=
style_state
->
get_name
();
row
->
table_table_row_attlist_
.
table_style_name_
=
state
.
style_name
;
}
}
if
(
!
impl_
->
current_table
().
default_cell_properties
.
empty
())
row
->
table_table_row_attlist_
.
table_default_cell_style_name_
=
impl_
->
current_table
().
default_cell_properties
;
impl_
->
current_table
().
rows
.
push_back
(
state
);
impl_
->
current_table
().
current_column
=
0
;
impl_
->
current_table
().
current_column
=
0
;
impl_
->
current_table
().
current_row
++
;
}
...
...
@@ -411,8 +415,9 @@ void odf_table_context::start_cell(office_element_ptr &elm, bool styled)
{
if
(
impl_
->
empty
())
return
;
table_table_cell
*
cell
=
dynamic_cast
<
table_table_cell
*>
(
elm
.
get
());;
table_covered_table_cell
*
covered_cell
=
dynamic_cast
<
table_covered_table_cell
*>
(
elm
.
get
());
table_table_cell
*
cell
=
dynamic_cast
<
table_table_cell
*>
(
elm
.
get
());;
table_covered_table_cell
*
covered_cell
=
dynamic_cast
<
table_covered_table_cell
*>
(
elm
.
get
());
if
(
!
cell
&&
!
covered_cell
)
return
;
odf_element_state
state
;
...
...
@@ -425,8 +430,30 @@ void odf_table_context::start_cell(office_element_ptr &elm, bool styled)
{
state
.
style_elm
=
style_state
->
get_office_element
();
state
.
style_name
=
style_state
->
get_name
();
cell
->
table_table_cell_attlist_
.
table_style_name_
=
state
.
style_name
;
}
if
(
!
impl_
->
current_table
().
default_cell_properties
.
empty
())
{
odf_style_state_ptr
default_style_state
;
impl_
->
styles_context
()
->
find_odf_style_state
(
impl_
->
current_table
().
default_cell_properties
,
style_family
::
TableCell
,
default_style_state
);
if
(
default_style_state
&&
style_state
)
{
graphic_format_properties
*
g
=
style_state
->
get_graphic_properties
()
;
style_text_properties
*
t
=
style_state
->
get_text_properties
();
style_table_cell_properties
*
c
=
style_state
->
get_table_cell_properties
();
graphic_format_properties
*
d_g
=
default_style_state
->
get_graphic_properties
()
;
style_text_properties
*
d_t
=
default_style_state
->
get_text_properties
();
style_table_cell_properties
*
d_c
=
default_style_state
->
get_table_cell_properties
();
if
(
g
&&
d_g
)
g
->
apply_from
(
*
d_g
);
if
(
t
&&
d_t
)
t
->
apply_from
(
d_t
);
if
(
c
&&
d_c
)
c
->
apply_from
(
d_c
);
}
}
}
//if (cell)
//{
...
...
@@ -438,6 +465,7 @@ void odf_table_context::start_cell(office_element_ptr &elm, bool styled)
impl_
->
current_table
().
current_column
++
;
}
void
odf_table_context
::
set_cell_column_span
(
int
spanned
)
{
if
(
impl_
->
empty
())
return
;
...
...
@@ -449,16 +477,24 @@ void odf_table_context::set_cell_column_span(int spanned)
cell
->
table_table_cell_attlist_extra_
.
table_number_columns_spanned_
=
spanned
;
//impl_->current_table().current_column += spanned-1;
//impl_->current_table().current_column += spanned - 1;
}
void
odf_table_context
::
set_cell_row_span
()
void
odf_table_context
::
set_cell_row_span
(
int
spanned
)
{
int
col
=
impl_
->
current_table
().
current_column
-
1
;
if
(
spanned
>
0
)
{
table_table_cell
*
cell
=
dynamic_cast
<
table_table_cell
*>
(
impl_
->
current_table
().
cells
.
back
().
elm
.
get
());
if
(
cell
)
cell
->
table_table_cell_attlist_extra_
.
table_number_rows_spanned_
=
spanned
;
}
else
{
int
col
=
impl_
->
current_table
().
current_column
-
1
;
odf_column_state
&
state
=
impl_
->
current_table
().
columns
[
col
];
state
.
spanned_row_cell
.
push_back
(
impl_
->
current_table
().
cells
.
back
().
elm
);
}
}
void
odf_table_context
::
set_cell_row_span_restart
()
...
...
ASCOfficeOdfFileW/source/OdfFormat/odf_table_context.h
View file @
19960fa3
...
...
@@ -85,7 +85,7 @@ public:
void
start_cell
(
office_element_ptr
&
elm
,
bool
styled
=
false
);
void
set_cell_column_span
(
int
spanned
);
void
set_cell_row_span
();
void
set_cell_row_span
(
int
spanned
=
0
);
void
set_cell_row_span_restart
();
void
end_cell
();
...
...
ASCOfficeOdfFileW/source/OdfFormat/odp_conversion_context.cpp
View file @
19960fa3
...
...
@@ -53,8 +53,7 @@ namespace odf_writer {
odp_conversion_context
::
odp_conversion_context
(
package
::
odf_document
*
outputDocument
)
:
odf_conversion_context
(
PresentationDocument
,
outputDocument
),
slide_context_
(
*
this
)
//, current_text_context_(NULL)
:
odf_conversion_context
(
PresentationDocument
,
outputDocument
),
slide_context_
(
*
this
),
text_context_
(
NULL
)
{
}
...
...
@@ -102,14 +101,14 @@ void odp_conversion_context::end_slide()
void
odp_conversion_context
::
start_text_context
()
{
current_
text_context_
=
new
odf_text_context
(
this
);
text_context_
=
new
odf_text_context
(
this
);
}
void
odp_conversion_context
::
end_text_context
()
{
if
(
current_
text_context_
)
delete
current_
text_context_
;
current_
text_context_
=
NULL
;
if
(
text_context_
)
delete
text_context_
;
text_context_
=
NULL
;
}
void
odp_conversion_context
::
start_drawings
()
...
...
ASCOfficeOdfFileW/source/OdfFormat/odp_conversion_context.h
View file @
19960fa3
...
...
@@ -55,14 +55,15 @@ public:
void
start_master_slide
(
std
::
wstring
name
);
void
end_master_slide
();
///////////////////////////////////////////////////////
odp_page_state
&
current_slide
()
{
return
slide_context_
.
state
();}
/////////////////////////////////////////////////////
virtual
void
start_text_context
();
virtual
void
end_text_context
();
virtual
odf_drawing_context
*
drawing_context
()
{
return
current_slide
().
drawing_context
();}
virtual
odf_text_context
*
text_context
()
{
return
current_text_context_
;}
virtual
odf_text_context
*
text_context
()
{
return
text_context_
;
}
odp_slide_context
*
slide_context
()
{
return
&
slide_context_
;}
void
start_drawings
();
void
end_drawings
();
...
...
@@ -72,7 +73,7 @@ public:
private:
odp_slide_context
slide_context_
;
odf_text_context
*
current_
text_context_
;
odf_text_context
*
text_context_
;
office_presentation
*
root_presentation_
;
};
...
...
ASCOfficeOdfFileW/source/OdfFormat/odp_slide_context.cpp
View file @
19960fa3
...
...
@@ -29,12 +29,11 @@
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "odp_slide_context.h"
#include "logging.h"
#include "odp_conversion_context.h"
#include "logging.h"
#include "odp_slide_context.h"
#include "odf_text_context.h"
#include <iostream>
...
...
@@ -45,7 +44,7 @@ namespace cpdoccore {
namespace
odf_writer
{
odp_slide_context
::
odp_slide_context
(
odp_conversion_context
&
Context
)
:
context_
(
Context
)
odp_slide_context
::
odp_slide_context
(
odp_conversion_context
&
Context
)
:
context_
(
Context
)
,
table_context_
(
&
Context
),
comment_context_
(
&
Context
)
{
styles_context_
=
Context
.
styles_context
();
}
...
...
@@ -81,5 +80,172 @@ void odp_slide_context::end_page()
state
().
drawing_context
()
->
finalize
(
state
().
page_elm_
);
}
odf_table_context
*
odp_slide_context
::
table_context
()
{
return
&
table_context_
;
}
void
odp_slide_context
::
start_table
()
{
state
().
drawing_context
()
->
start_frame
();
office_element_ptr
elm
,
style_elm
,
default_cell
;
create_element
(
L"table"
,
L"table"
,
elm
,
&
context_
);
//--------------------------------------------------------------------
odf_style_state_ptr
style_state
;
//общие свойства ячеек
styles_context_
->
create_style
(
L""
,
odf_types
::
style_family
::
TableCell
,
true
,
false
,
-
1
);
//ради нормального задания дефолтовых свойств на cells
style_state
=
styles_context_
->
last_state
(
style_family
::
TableCell
);
if
(
style_state
)
{
default_cell
=
style_state
->
get_office_element
();
table_context
()
->
set_default_cell_properties
(
style_state
->
get_name
());
}
//стиль создаем всегда
styles_context_
->
create_style
(
L""
,
odf_types
::
style_family
::
Table
,
true
,
false
,
-
1
);
style_state
=
styles_context_
->
last_state
(
style_family
::
Table
);
if
(
style_state
)
style_elm
=
style_state
->
get_office_element
();
//--------------------------------------------------------------------
table_context
()
->
start_table
(
elm
,
true
);
state
().
drawing_context
()
->
start_element
(
elm
,
default_cell
);
}
void
odp_slide_context
::
start_table_columns
()
{
office_element_ptr
elm
;
create_element
(
L"table"
,
L"table-columns"
,
elm
,
&
context_
);
state
().
drawing_context
()
->
start_element
(
elm
);
}
void
odp_slide_context
::
add_table_column
(
double
width
)
{
office_element_ptr
elm
;
create_element
(
L"table"
,
L"table-column"
,
elm
,
&
context_
);
styles_context_
->
create_style
(
L""
,
style_family
::
TableColumn
,
true
,
false
,
-
1
);
//не срабатывает ..
//std::wstring parent_name = table_context()->get_default_cell_properties();
//if (parent_name.length() > 0)
//{
// odf_writer::style_table_cell_properties * props = styles_context()->last_state().get_table_cell_properties();
// style * style_ = NULL;
//
// if (styles_context()->find_odf_style(parent_name,style_family::TableCell,style_))
// {
// style_table_cell_properties * parent = style_->content_.get_style_table_cell_properties();
// props->apply_from(parent);
// }
//}
table_context
()
->
add_column
(
elm
,
true
);
table_context
()
->
set_column_width
(
width
);
state
().
drawing_context
()
->
start_element
(
elm
);
// для связи элментов
state
().
drawing_context
()
->
end_element
();
}
void
odp_slide_context
::
end_table_columns
()
{
state
().
drawing_context
()
->
end_element
();
}
void
odp_slide_context
::
start_table_header_rows
()
{
office_element_ptr
elm
;
create_element
(
L"table"
,
L"table-header-rows"
,
elm
,
&
context_
);
state
().
drawing_context
()
->
start_element
(
elm
);
}
void
odp_slide_context
::
end_table_header_rows
()
{
state
().
drawing_context
()
->
end_element
();
}
void
odp_slide_context
::
start_table_row
(
bool
styled
)
{
office_element_ptr
elm
,
style_elm
;
create_element
(
L"table"
,
L"table-row"
,
elm
,
&
context_
);
if
(
styled
)
{
styles_context_
->
create_style
(
L""
,
odf_types
::
style_family
::
TableRow
,
true
,
false
,
-
1
);
odf_style_state_ptr
style_state
=
styles_context_
->
last_state
(
style_family
::
TableRow
);
if
(
style_state
)
style_elm
=
style_state
->
get_office_element
();
}
state
().
drawing_context
()
->
start_element
(
elm
,
style_elm
);
table_context
()
->
start_row
(
elm
,
styled
);
}
void
odp_slide_context
::
start_table_cell
(
int
col
,
bool
covered
,
bool
styled
)
{
for
(
int
i
=
table_context
()
->
current_column
()
;
i
<
col
;
i
++
)
{
add_default_cell
();
}
//-------------------------------------------------------
office_element_ptr
elm
,
style_elm
;
if
(
covered
)
create_element
(
L"table"
,
L"covered-table-cell"
,
elm
,
&
context_
);
else
create_element
(
L"table"
,
L"table-cell"
,
elm
,
&
context_
);
if
(
styled
)
{
styles_context_
->
create_style
(
L""
,
odf_types
::
style_family
::
TableCell
,
true
,
false
,
-
1
);
odf_style_state_ptr
style_state
=
styles_context_
->
last_state
(
style_family
::
TableCell
);
if
(
style_state
)
style_elm
=
style_state
->
get_office_element
();
}
table_context
()
->
start_cell
(
elm
,
style_elm
?
true
:
false
);
state
().
drawing_context
()
->
start_element
(
elm
,
style_elm
);
}
void
odp_slide_context
::
end_table_cell
()
{
table_context
()
->
end_cell
();
state
().
drawing_context
()
->
end_element
();
}
void
odp_slide_context
::
end_table_row
()
{
for
(
int
i
=
table_context
()
->
current_column
()
;
i
<
table_context
()
->
count_columns
();
i
++
)
{
add_default_cell
();
}
//---------------------------------------------
table_context
()
->
end_row
();
state
().
drawing_context
()
->
end_element
();
}
void
odp_slide_context
::
add_default_cell
()
{
office_element_ptr
elm
;
create_element
(
L"table"
,
L"covered-table-cell"
,
elm
,
&
context_
);
table_context
()
->
start_cell
(
elm
,
false
);
state
().
drawing_context
()
->
start_element
(
elm
);
table_context
()
->
end_cell
();
state
().
drawing_context
()
->
end_element
();
}
void
odp_slide_context
::
end_table
()
{
table_context
()
->
end_table
();
state
().
drawing_context
()
->
end_element
();
state
().
drawing_context
()
->
end_frame
();
}
}
}
ASCOfficeOdfFileW/source/OdfFormat/odp_slide_context.h
View file @
19960fa3
...
...
@@ -31,9 +31,11 @@
*/
#pragma once
#include <string>
#include "odp_page_state.h"
#include "odf_table_context.h"
#include "odf_comment_context.h"
namespace
cpdoccore
{
namespace
odf_writer
{
...
...
@@ -55,11 +57,29 @@ public:
odp_page_state
&
state
();
odf_comment_context
*
comment_context
();
odf_table_context
*
table_context
();
void
start_table
();
void
start_table_columns
();
void
add_table_column
(
double
width
=
-
1
);
void
end_table_columns
();
void
start_table_header_rows
();
void
end_table_header_rows
();
void
start_table_row
(
bool
styled
=
false
);
void
add_default_cell
();
void
start_table_cell
(
int
col
,
bool
covered
,
bool
styled
=
true
);
void
end_table_cell
();
void
end_table_row
();
void
end_table
();
private:
odp_conversion_context
&
context_
;
odf_style_context
*
styles_context_
;
odf_table_context
table_context_
;
odf_comment_context
comment_context_
;
std
::
list
<
odp_page_state
>
page_state_list_
;
friend
class
odp_conversion_context
;
...
...
ASCOfficeOdfFileW/source/OdfFormat/ods_table_context.cpp
View file @
19960fa3
...
...
@@ -231,7 +231,6 @@ void ods_table_context::start_table(office_element_ptr & elm)
office_element_ptr
&
style
=
context_
.
styles_context
()
->
add_or_find
(
style_name_new
,
style_family
::
Table
,
true
);
style
->
create_child_element
(
L"style"
,
L"table-properties"
);
state
().
set_table_style
(
style
);
state
().
set_table_hidden
(
false
);
...
...
ASCOfficeOdfFileW/source/OdfFormat/odt_conversion_context.h
View file @
19960fa3
ASCOfficeOdfFileW/source/OdfFormat/style_graphic_properties.cpp
View file @
19960fa3
...
...
@@ -49,6 +49,65 @@ graphic_format_properties::graphic_format_properties()
//style_mirror_ = L"none";
//common_draw_fill_attlist_.draw_fill_ = draw_fill::none;
}
void
graphic_format_properties
::
apply_from
(
const
graphic_format_properties
&
Other
)
{
_CP_APPLY_PROP2
(
draw_stroke_
);
_CP_APPLY_PROP2
(
draw_stroke_dash_
);
_CP_APPLY_PROP2
(
draw_marker_start_
);
_CP_APPLY_PROP2
(
draw_marker_end_
);
_CP_APPLY_PROP2
(
draw_textarea_horizontal_align_
);
_CP_APPLY_PROP2
(
draw_textarea_vertical_align_
);
_CP_APPLY_PROP2
(
draw_auto_grow_height_
);
_CP_APPLY_PROP2
(
draw_auto_grow_width_
);
_CP_APPLY_PROP2
(
draw_fit_to_size_
);
_CP_APPLY_PROP2
(
draw_fit_to_contour_
);
_CP_APPLY_PROP2
(
svg_stroke_color_
);
_CP_APPLY_PROP2
(
svg_stroke_width_
);
_CP_APPLY_PROP2
(
svg_stroke_opacity_
);
_CP_APPLY_PROP2
(
fo_min_width_
);
_CP_APPLY_PROP2
(
fo_min_height_
);
_CP_APPLY_PROP2
(
fo_max_width_
);
_CP_APPLY_PROP2
(
fo_max_height_
);
_CP_APPLY_PROP2
(
fo_wrap_option_
);
_CP_APPLY_PROP2
(
style_print_content_
);
_CP_APPLY_PROP2
(
style_protect_
);
_CP_APPLY_PROP2
(
style_editable_
);
_CP_APPLY_PROP2
(
style_wrap_
);
_CP_APPLY_PROP2
(
style_wrap_dynamic_treshold_
);
_CP_APPLY_PROP2
(
style_number_wrapped_paragraphs_
);
_CP_APPLY_PROP2
(
style_wrap_contour_
);
_CP_APPLY_PROP2
(
style_wrap_contour_mode_
);
_CP_APPLY_PROP2
(
style_run_through_
);
_CP_APPLY_PROP2
(
style_flow_with_text_
);
_CP_APPLY_PROP2
(
style_overflow_behavior_
);
_CP_APPLY_PROP2
(
style_mirror_
);
_CP_APPLY_PROP2
(
fo_clip_
);
_CP_APPLY_PROP2
(
draw_wrap_influence_on_position_
);
common_draw_fill_attlist_
.
apply_from
(
Other
.
common_draw_fill_attlist_
);
common_draw_rel_size_attlist_
.
apply_from
(
Other
.
common_draw_rel_size_attlist_
);
common_horizontal_margin_attlist_
.
apply_from
(
Other
.
common_horizontal_margin_attlist_
);
common_vertical_margin_attlist_
.
apply_from
(
Other
.
common_vertical_margin_attlist_
);
common_margin_attlist_
.
apply_from
(
Other
.
common_margin_attlist_
);
common_horizontal_pos_attlist_
.
apply_from
(
Other
.
common_horizontal_pos_attlist_
);
common_horizontal_rel_attlist_
.
apply_from
(
Other
.
common_horizontal_rel_attlist_
);
common_vertical_pos_attlist_
.
apply_from
(
Other
.
common_vertical_pos_attlist_
);
common_vertical_rel_attlist_
.
apply_from
(
Other
.
common_vertical_rel_attlist_
);
common_text_anchor_attlist_
.
apply_from
(
Other
.
common_text_anchor_attlist_
);
common_border_attlist_
.
apply_from
(
Other
.
common_border_attlist_
);
common_border_line_width_attlist_
.
apply_from
(
Other
.
common_border_line_width_attlist_
);
common_padding_attlist_
.
apply_from
(
Other
.
common_padding_attlist_
);
common_shadow_attlist_
.
apply_from
(
Other
.
common_shadow_attlist_
);
common_background_color_attlist_
.
apply_from
(
Other
.
common_background_color_attlist_
);
_CP_APPLY_PROP
(
style_background_image_
,
Other
.
style_background_image_
);
}
void
graphic_format_properties
::
serialize
(
std
::
wostream
&
_Wostream
,
const
wchar_t
*
ns
,
const
wchar_t
*
name
)
{
CP_XML_WRITER
(
_Wostream
)
...
...
@@ -121,8 +180,7 @@ void graphic_format_properties::serialize(std::wostream & _Wostream ,const wchar
}
}
// style:graphic-properties
//////////////////////////////////////////////////////////////////////////////////////////////////
//------------------------------------
const
wchar_t
*
style_graphic_properties
::
ns
=
L"style"
;
const
wchar_t
*
style_graphic_properties
::
name
=
L"graphic-properties"
;
...
...
@@ -131,6 +189,14 @@ void style_graphic_properties::serialize(std::wostream & strm)
content_
.
serialize
(
strm
,
ns
,
name
);
}
//------------------------------------
const
wchar_t
*
loext_graphic_properties
::
ns
=
L"loext"
;
const
wchar_t
*
loext_graphic_properties
::
name
=
L"graphic-properties"
;
void
loext_graphic_properties
::
serialize
(
std
::
wostream
&
strm
)
{
content_
.
serialize
(
strm
,
ns
,
name
);
}
}
}
ASCOfficeOdfFileW/source/OdfFormat/style_graphic_properties.h
View file @
19960fa3
...
...
@@ -147,8 +147,7 @@ public:
office_element_ptr
style_background_image_
;
};
/// \class style_graphic_properties
/// style:graphic-properties
class
style_graphic_properties
:
public
office_element_impl
<
style_graphic_properties
>
{
public:
...
...
@@ -170,7 +169,26 @@ public:
CP_REGISTER_OFFICE_ELEMENT2
(
style_graphic_properties
);
class
loext_graphic_properties
:
public
office_element_impl
<
loext_graphic_properties
>
{
public:
static
const
wchar_t
*
ns
;
static
const
wchar_t
*
name
;
static
const
xml
::
NodeType
xml_type
=
xml
::
typeElement
;
static
const
ElementType
type
=
typeStyleGraphicPropertis
;
CPDOCCORE_DEFINE_VISITABLE
()
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
){}
virtual
void
add_child_element
(
const
office_element_ptr
&
child
){}
virtual
void
serialize
(
std
::
wostream
&
strm
);
graphic_format_properties
content_
;
};
CP_REGISTER_OFFICE_ELEMENT2
(
loext_graphic_properties
);
}
}
ASCOfficeOdfFileW/source/OdfFormat/styles.cpp
View file @
19960fa3
...
...
@@ -75,17 +75,33 @@ style_paragraph_properties * style_content::get_style_paragraph_properties()
return
dynamic_cast
<
style_paragraph_properties
*>
(
style_paragraph_properties_
.
get
());
}
style_graphic_properties
*
style_content
::
get_style
_graphic_properties
()
graphic_format_properties
*
style_content
::
get
_graphic_properties
()
{
if
(
!
style_graphic_properties_
)
create_element
(
L"style"
,
L"graphic-properties"
,
style_graphic_properties_
,
Context
);
{
if
(
style_family_
==
odf_types
::
style_family
::
TableCell
)
create_element
(
L"loext"
,
L"graphic-properties"
,
style_graphic_properties_
,
Context
);
else
create_element
(
L"style"
,
L"graphic-properties"
,
style_graphic_properties_
,
Context
);
}
style_graphic_properties
*
style_gr
=
dynamic_cast
<
style_graphic_properties
*>
(
style_graphic_properties_
.
get
());
loext_graphic_properties
*
loext_gr
=
dynamic_cast
<
loext_graphic_properties
*>
(
style_graphic_properties_
.
get
());
if
(
style_gr
)
{
return
&
style_gr
->
content_
;
}
else
if
(
loext_gr
)
{
return
&
loext_gr
->
content_
;
}
return
NULL
;
return
dynamic_cast
<
style_graphic_properties
*>
(
style_graphic_properties_
.
get
());
}
style_table_properties
*
style_content
::
get_style_table_properties
()
{
if
(
!
style_table_properties_
)
create_element
(
L"style"
,
L"table-properties"
,
style_table_properties_
,
Context
);
create_element
(
L"style"
,
L"table-properties"
,
style_table_properties_
,
Context
);
return
dynamic_cast
<
style_table_properties
*>
(
style_table_properties_
.
get
());
}
...
...
ASCOfficeOdfFileW/source/OdfFormat/styles.h
View file @
19960fa3
...
...
@@ -72,9 +72,10 @@
namespace
cpdoccore
{
namespace
odf_writer
{
class
graphic_format_properties
;
class
style_text_properties
;
class
style_paragraph_properties
;
class
style_graphic_properties
;
class
style_section_properties
;
class
style_table_cell_properties
;
class
style_table_row_properties
;
...
...
@@ -88,13 +89,14 @@ class style_content : noncopyable
public:
style_content
(
odf_conversion_context
*
_context
){
Context
=
_context
;}
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
);
void
add_child_element
(
const
office_element_ptr
&
child
);
void
serialize
(
std
::
wostream
&
strm
);
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
);
void
add_child_element
(
const
office_element_ptr
&
child
);
void
serialize
(
std
::
wostream
&
strm
);
graphic_format_properties
*
get_graphic_properties
()
;
style_text_properties
*
get_style_text_properties
();
style_paragraph_properties
*
get_style_paragraph_properties
()
;
style_graphic_properties
*
get_style_graphic_properties
()
;
style_table_properties
*
get_style_table_properties
();
style_section_properties
*
get_style_section_properties
();
style_table_cell_properties
*
get_style_table_cell_properties
();
...
...
@@ -103,9 +105,9 @@ public:
style_chart_properties
*
get_style_chart_properties
()
;
style_drawing_page_properties
*
get_style_drawing_page_properties
();
odf_types
::
style_family
style_family_
;
private:
odf_conversion_context
*
Context
;
odf_types
::
style_family
style_family_
;
office_element_ptr
style_text_properties_
;
office_element_ptr
style_paragraph_properties_
;
...
...
@@ -349,7 +351,6 @@ public:
virtual
void
serialize
(
std
::
wostream
&
strm
);
// attr
std
::
wstring
style_name_
;
_CP_OPT
(
std
::
wstring
)
style_display_name_
;
odf_types
::
style_family
style_family_
;
...
...
@@ -363,7 +364,6 @@ public:
_CP_OPT
(
std
::
wstring
)
style_class_
;
_CP_OPT
(
std
::
wstring
)
style_default_outline_level_
;
style_content
content_
;
office_element_ptr_array
style_map_
;
...
...
ASCOfficeOdfFileW/source/OdfFormat/table.h
View file @
19960fa3
...
...
@@ -70,19 +70,20 @@ public:
_CP_OPT
(
std
::
wstring
)
table_print_ranges_
;
_CP_OPT
(
odf_types
::
Bool
)
table_protected_
;
// default false
bool
table_print_
;
// default true
bool
table_use_first_row_styles_
;
// default false;
bool
table_use_banding_rows_styles_
;
//
defualt false;
bool
table_use_first_column_styles_
;
//
defualt false;
bool
table_use_banding_columns_styles_
;
//defualt false;
bool
table_use_banding_rows_styles_
;
//
defualt false;
bool
table_use_first_column_styles_
;
//
defualt false;
bool
table_use_banding_columns_styles_
;
//
defualt false;
void
serialize
(
CP_ATTR_NODE
);
friend
class
table_table
;
};
//
table-table-row-attlist
//
-----------------------------------------------------------------------------------------------------
class
table_table_row_attlist
{
public:
...
...
@@ -97,7 +98,7 @@ public:
void
serialize
(
CP_ATTR_NODE
);
};
//
table-table-cell-attlist
//
-----------------------------------------------------------------------------------------------------
class
table_table_cell_attlist
{
public:
...
...
@@ -115,7 +116,7 @@ public:
void
serialize
(
CP_ATTR_NODE
);
};
//
table-table-cell-attlist-extra
//
-----------------------------------------------------------------------------------------------------
class
table_table_cell_attlist_extra
{
public:
...
...
@@ -152,9 +153,7 @@ public:
void
serialize
(
CP_ATTR_NODE
);
};
/// \class table_table_source
/// \brief table:table-source
/// table-table-source
//-----------------------------------------------------------------------------------------------------
class
table_table_source
:
public
office_element_impl
<
table_table_source
>
{
public:
...
...
@@ -177,7 +176,7 @@ public:
CP_REGISTER_OFFICE_ELEMENT2
(
table_table_source
);
//
table-columns
//
-----------------------------------------------------------------------------------------------------
class
table_columns
{
public:
...
...
@@ -192,7 +191,7 @@ public:
};
//
table-columns-no-group
//
-----------------------------------------------------------------------------------------------------
class
table_columns_no_group
:
public
office_element
{
public:
...
...
@@ -226,7 +225,7 @@ private:
};
//
table-columns-and-groups
//
-----------------------------------------------------------------------------------------------------
class
table_columns_and_groups
{
public:
...
...
@@ -244,7 +243,7 @@ public:
};
//
table-table-column-attlist
//
-----------------------------------------------------------------------------------------------------
class
table_table_column_attlist
{
public:
...
...
@@ -258,9 +257,7 @@ public:
void
serialize
(
CP_ATTR_NODE
);
};
// \class table_table_column
// table:table-column
// table-table-column
//-----------------------------------------------------------------------------------------------------
class
table_table_column
:
public
office_element_impl
<
table_table_column
>
{
public:
...
...
@@ -283,9 +280,7 @@ public:
CP_REGISTER_OFFICE_ELEMENT2
(
table_table_column
);
// \class table_table_columns
// table:table-columns
// table-table-columns
//-----------------------------------------------------------------------------------------------------
class
table_table_columns
:
public
office_element_impl
<
table_table_columns
>
{
public:
...
...
@@ -307,9 +302,7 @@ public:
CP_REGISTER_OFFICE_ELEMENT2
(
table_table_columns
);
// \class table_table_header_columns
// table:table-header-columns
// table-table-header-columns
//-----------------------------------------------------------------------------------------------------
class
table_table_header_columns
:
public
office_element_impl
<
table_table_header_columns
>
{
public:
...
...
@@ -369,9 +362,7 @@ public:
CP_REGISTER_OFFICE_ELEMENT2
(
table_table_column_group
);
/// \class table_table_row
/// \brief table:table-row
/// table-table-row
//-----------------------------------------------------------------------------------------------------
class
table_table_row
:
public
office_element_impl
<
table_table_row
>
{
public:
...
...
@@ -394,8 +385,7 @@ public:
CP_REGISTER_OFFICE_ELEMENT2
(
table_table_row
);
// \class table_table_cell_content
// table-table-cell-content
//-----------------------------------------------------------------------------------------------------
class
table_table_cell_content
{
public:
...
...
@@ -410,9 +400,7 @@ private:
office_element_ptr_array
text_content_
;
// text-content
};
// \class table_table_cell
// table-table-cell
// table:table-cell
//-----------------------------------------------------------------------------------------------------
class
table_table_cell
:
public
office_element_impl
<
table_table_cell
>
{
public:
...
...
@@ -438,9 +426,7 @@ public:
CP_REGISTER_OFFICE_ELEMENT2
(
table_table_cell
);
// \class table_covered_table_cell
// table-covered-table-cell
// table:covered-table-cell
//-----------------------------------------------------------------------------------------------------
class
table_covered_table_cell
:
public
office_element_impl
<
table_covered_table_cell
>
{
public:
...
...
@@ -466,9 +452,7 @@ public:
CP_REGISTER_OFFICE_ELEMENT2
(
table_covered_table_cell
);
// \class table_table_rows
// table-table-rows
// table:table-rows
//-----------------------------------------------------------------------------------------------------
class
table_table_rows
:
public
office_element_impl
<
table_table_rows
>
{
public:
...
...
@@ -494,9 +478,7 @@ public:
CP_REGISTER_OFFICE_ELEMENT2
(
table_table_rows
);
// \class table_table_header_rows
// table-table-header-rows
// table:table-header-rows
//-----------------------------------------------------------------------------------------------------
class
table_table_header_rows
:
public
office_element_impl
<
table_table_header_rows
>
{
public:
...
...
@@ -517,9 +499,7 @@ public:
};
CP_REGISTER_OFFICE_ELEMENT2
(
table_table_header_rows
);
// \class table_rows
// table-rows
//-----------------------------------------------------------------------------------------------------
class
table_rows
{
public:
...
...
@@ -533,7 +513,7 @@ public:
};
//
table-rows-no-group
//
-----------------------------------------------------------------------------------------------------
class
table_rows_no_group
:
public
office_element
{
public:
...
...
@@ -567,7 +547,7 @@ private:
};
//
table-rows-and-groups
//
-----------------------------------------------------------------------------------------------------
class
table_rows_and_groups
{
public:
...
...
@@ -587,15 +567,14 @@ public:
};
//
table-table-row-group-attlist
//
-----------------------------------------------------------------------------------------------------
class
table_table_row_group_attlist
{
public:
table_table_row_group_attlist
()
:
table_display_
(
true
)
{}
bool
table_display_
;
// default true
};
// table:table-row-group
//-----------------------------------------------------------------------------------------------------
class
table_table_row_group
:
public
office_element_impl
<
table_table_row_group
>
{
public:
...
...
@@ -621,9 +600,7 @@ public:
CP_REGISTER_OFFICE_ELEMENT2
(
table_table_row_group
);
/// \class table_table
/// \brief table:table
/// table-table
//-----------------------------------------------------------------------------------------------------
class
table_table
:
public
office_element_impl
<
table_table
>
{
public:
...
...
@@ -654,9 +631,7 @@ public:
CP_REGISTER_OFFICE_ELEMENT2
(
table_table
);
/// \class table_shapes
/// \brief table:shapes
/// table-shapes
//-----------------------------------------------------------------------------------------------------
class
table_shapes
:
public
office_element_impl
<
table_shapes
>
{
public:
...
...
ASCOfficeOdfFileW/source/Oox2OdfConverter/ConvertDrawing.cpp
View file @
19960fa3
...
...
@@ -29,7 +29,7 @@
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "Converter.h"
#include "
Pptx
Converter.h"
#include "../utils.h"
#include "../../../Common/DocxFormat/Source/DocxFormat/Diagram/DiagramDrawing.h"
...
...
@@ -41,6 +41,7 @@
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Pic.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/CxnSp.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/SpTree.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Table/Table.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Colors/SrgbClr.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Colors/PrstClr.h"
...
...
@@ -98,7 +99,9 @@ void OoxConverter::convert(PPTX::Logic::GraphicFrame *oox_graphic_frame)
}
else
if
(
oox_graphic_frame
->
table
.
IsInit
())
{
OoxConverter
::
convert
(
oox_graphic_frame
->
table
.
GetPointer
());
PptxConverter
*
pptx_converter
=
dynamic_cast
<
PptxConverter
*>
(
this
);
if
(
pptx_converter
)
pptx_converter
->
convert
(
oox_graphic_frame
->
table
.
GetPointer
());
}
else
if
(
oox_graphic_frame
->
element
.
IsInit
())
{
...
...
@@ -111,15 +114,7 @@ void OoxConverter::convert(PPTX::Logic::NvGraphicFramePr *oox_framePr)
if
(
oox_framePr
==
NULL
)
return
;
}
void
OoxConverter
::
convert
(
PPTX
::
Logic
::
Table
*
oox_table
)
{
if
(
oox_table
==
NULL
)
return
;
odf_context
()
->
drawing_context
()
->
start_shape
(
0
);
//frame
odf_context
()
->
drawing_context
()
->
end_shape
();
}
void
OoxConverter
::
convert
(
PPTX
::
Logic
::
Xfrm
*
oox_xfrm
)
{
if
(
oox_xfrm
==
NULL
)
return
;
//CTransform2D
...
...
@@ -280,7 +275,21 @@ void OoxConverter::convert(PPTX::Logic::SpTree *oox_shape_tree)
convert
(
oox_shape_tree
->
SpTreeElems
[
i
].
GetElem
().
operator
->
());
}
}
void
OoxConverter
::
convert
(
PPTX
::
Logic
::
CxnSp
*
oox_connect
)
{
if
(
oox_connect
==
NULL
)
return
;
odf_context
()
->
drawing_context
()
->
start_drawing
();
odf_context
()
->
drawing_context
()
->
start_shape
(
SimpleTypes
::
shapetypeLine
);
convert
(
&
oox_connect
->
spPr
,
oox_connect
->
style
.
GetPointer
());
convert
(
&
oox_connect
->
nvCxnSpPr
);
odf_context
()
->
drawing_context
()
->
end_shape
();
odf_context
()
->
drawing_context
()
->
end_drawing
();
}
void
OoxConverter
::
convert
(
PPTX
::
Logic
::
Shape
*
oox_shape
)
{
if
(
oox_shape
==
NULL
)
return
;
...
...
@@ -334,6 +343,10 @@ void OoxConverter::convert(PPTX::Logic::SpPr *oox_spPr, PPTX::Logic::ShapeStyle*
convert
(
prstGeom
);
convert
(
custGeom
);
bool
bLine
=
prstGeom
?
(
prstGeom
->
prst
.
get
()
==
L"line"
)
:
false
;
if
(
!
bLine
)
{
odf_context
()
->
drawing_context
()
->
start_area_properties
();
{
if
(
oox_spPr
->
Fill
.
is_init
())
...
...
@@ -342,6 +355,7 @@ void OoxConverter::convert(PPTX::Logic::SpPr *oox_spPr, PPTX::Logic::ShapeStyle*
convert
(
&
oox_sp_style
->
fillRef
,
1
);
}
odf_context
()
->
drawing_context
()
->
end_area_properties
();
}
odf_context
()
->
drawing_context
()
->
start_line_properties
();
{
...
...
@@ -506,7 +520,7 @@ void OoxConverter::convert(PPTX::Logic::BlipFill *oox_bitmap_fill)
// convert(oox_bitmap_fill->blip->m_arrEffects[i]);
//}
}
if
(
oox_bitmap_fill
->
srcRect
.
IsInit
()
&&
Width
>
0
&&
Height
>
0
)
//часть изображения
if
(
oox_bitmap_fill
->
srcRect
.
IsInit
()
&&
Width
>
0
&&
Height
>
0
)
//часть изображения
{
odf_context
()
->
drawing_context
()
->
set_image_client_rect_inch
(
(
oox_bitmap_fill
->
srcRect
->
l
.
IsInit
()
?
XmlUtils
::
GetInteger
(
oox_bitmap_fill
->
srcRect
->
l
.
get
())
:
0
)
/
100.
*
Width
/
currentSystemDPI
,
...
...
@@ -523,21 +537,21 @@ void OoxConverter::convert(PPTX::Logic::BlipFill *oox_bitmap_fill)
if
(
oox_bitmap_fill
->
tile
->
flip
.
IsInit
())
{}
if
(
oox_bitmap_fill
->
tile
->
sx
.
IsInit
()
&&
Width
>
0
)
if
(
oox_bitmap_fill
->
tile
->
sx
.
IsInit
()
&&
Width
>
0
)
{
odf_context
()
->
drawing_context
()
->
set_bitmap_tile_scale_x
(
*
oox_bitmap_fill
->
tile
->
sx
/
100.
*
Width
);
odf_context
()
->
drawing_context
()
->
set_bitmap_tile_scale_x
(
*
oox_bitmap_fill
->
tile
->
sx
/
100
000
.
*
Width
);
}
if
(
oox_bitmap_fill
->
tile
->
sy
.
IsInit
()
&&
Height
>
0
)
if
(
oox_bitmap_fill
->
tile
->
sy
.
IsInit
()
&&
Height
>
0
)
{
odf_context
()
->
drawing_context
()
->
set_bitmap_tile_scale_y
(
*
oox_bitmap_fill
->
tile
->
sy
/
100.
*
Height
);
odf_context
()
->
drawing_context
()
->
set_bitmap_tile_scale_y
(
*
oox_bitmap_fill
->
tile
->
sy
/
100
000
.
*
Height
);
}
if
(
oox_bitmap_fill
->
tile
->
tx
.
IsInit
()
&&
Width
>
0
)
if
(
oox_bitmap_fill
->
tile
->
tx
.
IsInit
()
&&
Width
>
0
)
{
odf_context
()
->
drawing_context
()
->
set_bitmap_tile_translate_x
(
*
oox_bitmap_fill
->
tile
->
tx
*
100.
/
Width
);
odf_context
()
->
drawing_context
()
->
set_bitmap_tile_translate_x
(
*
oox_bitmap_fill
->
tile
->
tx
*
100
000
.
/
Width
);
}
if
(
oox_bitmap_fill
->
tile
->
ty
.
IsInit
()
&&
Height
>
0
)
if
(
oox_bitmap_fill
->
tile
->
ty
.
IsInit
()
&&
Height
>
0
)
{
odf_context
()
->
drawing_context
()
->
set_bitmap_tile_translate_y
(
*
oox_bitmap_fill
->
tile
->
ty
*
100.
/
Height
);
odf_context
()
->
drawing_context
()
->
set_bitmap_tile_translate_y
(
*
oox_bitmap_fill
->
tile
->
ty
*
100
000
.
/
Height
);
}
}
if
(
oox_bitmap_fill
->
stretch
.
IsInit
())
...
...
@@ -667,11 +681,11 @@ void OoxConverter::convert(PPTX::Logic::EffectLst *oox_effect_lst)
{
if
(
!
oox_effect_lst
)
return
;
}
void
OoxConverter
::
convert
(
PPTX
::
Logic
::
Ln
*
oox_line_prop
)
void
OoxConverter
::
convert
(
PPTX
::
Logic
::
Ln
*
oox_line_prop
,
DWORD
ARGB
)
{
if
(
!
oox_line_prop
)
return
;
convert
(
&
oox_line_prop
->
Fill
);
convert
(
&
oox_line_prop
->
Fill
,
ARGB
);
if
(
oox_line_prop
->
w
.
IsInit
())
{
...
...
@@ -801,6 +815,20 @@ void OoxConverter::convert(PPTX::Logic::CNvSpPr *oox_cnvSpPr)
if
(
!
oox_cnvSpPr
)
return
;
}
void
OoxConverter
::
convert
(
PPTX
::
Logic
::
CNvCxnSpPr
*
oox_cnvSpPr
)
{
if
(
!
oox_cnvSpPr
)
return
;
}
void
OoxConverter
::
convert
(
PPTX
::
Logic
::
NvCxnSpPr
*
oox_nvSpPr
)
{
if
(
!
oox_nvSpPr
)
return
;
convert
(
&
oox_nvSpPr
->
cNvPr
);
convert
(
&
oox_nvSpPr
->
cNvCxnSpPr
);
convert
(
&
oox_nvSpPr
->
nvPr
);
}
void
OoxConverter
::
convert
(
PPTX
::
Logic
::
NvPr
*
oox_nvPr
)
{
if
(
!
oox_nvPr
)
return
;
...
...
@@ -942,7 +970,9 @@ void OoxConverter::convert(PPTX::Logic::RunProperties *oox_run_pr, odf_writer::s
_CP_OPT
(
double
)
opacity
;
convert
(
&
solidFill
->
Color
,
hexColor
,
opacity
);
text_properties
->
content_
.
fo_color_
=
odf_types
::
color
(
std
::
wstring
(
L"#"
)
+
hexColor
);
int
res
=
0
;
if
((
res
=
hexColor
.
find
(
L"#"
))
<
0
)
hexColor
=
std
::
wstring
(
L"#"
)
+
hexColor
;
text_properties
->
content_
.
fo_color_
=
odf_types
::
color
(
hexColor
);
}
if
(
oox_run_pr
->
i
.
IsInit
())
{
...
...
@@ -1159,22 +1189,25 @@ void OoxConverter::convert(PPTX::Logic::StyleRef *style_ref, int type)
{
if
(
!
style_ref
)
return
;
if
(
style_ref
->
idx
.
IsInit
()
==
false
)
{
std
::
wstring
hexColor
;
_CP_OPT
(
double
)
opacity
;
convert
(
&
style_ref
->
Color
,
hexColor
,
opacity
);
if
(
type
==
1
)
if
(
type
!=
3
)
//?? todooo
{
odf_context
()
->
drawing_context
()
->
set_solid_fill
(
hexColor
);
if
(
opacity
)
odf_context
()
->
drawing_context
()
->
set_opacity
(
*
opacity
);
}
return
;
}
if
(
style_ref
->
idx
.
IsInit
()
==
false
)
return
;
size_t
index
=
*
style_ref
->
idx
;
int
index
=
*
style_ref
->
idx
;
PPTX
::
Theme
*
theme
=
oox_theme
();
if
(
!
theme
)
return
;
...
...
@@ -1206,14 +1239,15 @@ void OoxConverter::convert(PPTX::Logic::StyleRef *style_ref, int type)
}
else
if
(
type
==
2
)
{
//
index -= 1;
index
-=
1
;
if
((
index
>=
0
)
||
(
index
<
theme
->
themeElements
.
fmtScheme
.
lnStyleLst
.
size
()))
{
convert
(
&
theme
->
themeElements
.
fmtScheme
.
lnStyleLst
[
index
]);
convert
(
&
theme
->
themeElements
.
fmtScheme
.
lnStyleLst
[
index
]
,
style_ref
->
Color
.
GetARGB
()
);
}
}
else
if
(
type
==
3
)
{
index
-=
1
;
if
((
index
>=
0
)
||
(
index
<
theme
->
themeElements
.
fmtScheme
.
effectStyleLst
.
size
()))
{
convert
(
&
theme
->
themeElements
.
fmtScheme
.
effectStyleLst
[
index
]);
...
...
@@ -1249,4 +1283,5 @@ void OoxConverter::convert(PPTX::Logic::FontRef *style_font_ref)
odf_context
()
->
drawing_context
()
->
set_textarea_font
(
style_font
->
latin
.
typeface
,
style_font
->
ea
.
typeface
,
style_font
->
cs
.
typeface
);
}
}
}
ASCOfficeOdfFileW/source/Oox2OdfConverter/Converter.cpp
View file @
19960fa3
...
...
@@ -58,6 +58,7 @@
#include "../../../Common/DocxFormat/Source/DocxFormat/Diagram/DiagramData.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Shape.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/CxnSp.h"
#define PROGRESSEVENT_ID 0
...
...
@@ -160,15 +161,17 @@ void OoxConverter::convert(OOX::WritingElement *oox_unknown)
case
OOX
:
:
et_dsp_Shape
:
case
OOX
:
:
et_w_Shape
:
{
PPTX
::
Logic
::
Shape
*
pShape
=
dynamic_cast
<
PPTX
::
Logic
::
Shape
*>
(
oox_unknown
);
convert
(
pShape
);
convert
(
dynamic_cast
<
PPTX
::
Logic
::
Shape
*>
(
oox_unknown
));
}
break
;
case
OOX
:
:
et_p_ShapeTree
:
case
OOX
:
:
et_a_GroupShape
:
case
OOX
:
:
et_w_GroupShape
:
{
PPTX
::
Logic
::
SpTree
*
spTree
=
dynamic_cast
<
PPTX
::
Logic
::
SpTree
*>
(
oox_unknown
);
convert
(
spTree
);
convert
(
dynamic_cast
<
PPTX
::
Logic
::
SpTree
*>
(
oox_unknown
));
}
break
;
case
OOX
:
:
et_cxnSp
:
{
convert
(
dynamic_cast
<
PPTX
::
Logic
::
CxnSp
*>
(
oox_unknown
));
}
break
;
case
OOX
:
:
et_a_prstGeom
:
{
...
...
@@ -311,118 +314,6 @@ void OoxConverter::convert(OOX::WritingElement *oox_unknown)
}
}
//void OoxConverter::convert(OOX::Drawing::CShape *oox_shape)
//{
// if (oox_shape == NULL)return;
// if (!oox_shape->m_oSpPr.IsInit()) return;
//
// odf_context()->drawing_context()->start_drawing();
//
// int type = -1;
// if (oox_shape->m_oSpPr->m_oCustGeom.IsInit())
// {
// type = 1000;//6???
// }
// if (oox_shape->m_oSpPr->m_oPrstGeom.IsInit())
// {
// OOX::Drawing::CPresetGeometry2D * geometry = oox_shape->m_oSpPr->m_oPrstGeom.GetPointer();
// type =(geometry->m_oPrst.GetValue());
// }
// if (oox_shape->m_oNvSpPr.IsInit() && oox_shape->m_oNvSpPr->m_oCNvSpPr.IsInit() &&
// oox_shape->m_oNvSpPr->m_oCNvSpPr->m_otxBox.GetValue() == 1) type = 2000; //textBox
//
// if (type == SimpleTypes::shapetypeRect && oox_shape->m_oTxSp.IsInit() && oox_shape->m_oTxSp->m_oTxBody.IsInit()) type = 2000;
//
// if ((type == 2000 || type == SimpleTypes::shapetypeRect ) && oox_shape->m_oTxSp->m_oTxBody->m_oBodyPr.IsInit()
// /*&& oox_shape->m_oTxSp->m_oTxBody->m_oBodyPr->m_oPrstTxWrap.IsInit()*/)
// {
// if (oox_shape->m_oTxSp->m_oTxBody->m_oBodyPr->m_oFromWordArt.ToBool())
// {
// int wordart_type = convert(oox_shape->m_oTxSp->m_oTxBody->m_oBodyPr->m_oPrstTxWrap.GetPointer());
//
// if (wordart_type >0)type = wordart_type;
// }else type = 2000;
// }
//
// if (type < 0)return;
// /////////////////////////////////////////////////////////////////////////////////
// odf_context()->drawing_context()->start_shape(type);
//
// convert(oox_shape->m_oSpPr.GetPointer(), oox_shape->m_oShapeStyle.GetPointer());
// //имя, описалово, номер ...
// if (oox_shape->m_oNvSpPr.IsInit())
// convert(oox_shape->m_oNvSpPr->m_oCNvPr.GetPointer());
//
// if (oox_shape->m_oTxSp.IsInit() && oox_shape->m_oTxSp->m_oTxBody.IsInit())
// {
// odf_context()->start_text_context();
//
// convert(oox_shape->m_oTxSp->m_oTxBody->m_oBodyPr.GetPointer());
// for (size_t i=0 ; i < oox_shape->m_oTxSp->m_oTxBody->m_arrItems.size();i++)
// {
// convert(oox_shape->m_oTxSp->m_oTxBody->m_arrItems[i]);
// }
// odf_context()->drawing_context()->set_text( odf_context()->text_context());
// odf_context()->end_text_context();
// }
//
// odf_context()->drawing_context()->end_shape();
//
// odf_context()->drawing_context()->end_drawing();
//}
//
//void OoxConverter::convert(OOX::Drawing::CDiagrammParts *oox_diagramm)
//{
// if (oox_diagramm == NULL)return;
// if (oox_diagramm->.IsInit() == false) return;
//
// smart_ptr<OOX::File> oFile = find_file_by_id(oox_diagramm->m_oRId_Data->GetValue());
//
// NSCommon::nullable<std::wstring> id_drawing;
//
// if (oFile.IsInit())
// {
// OOX::CDiagramData* pDiagData = dynamic_cast<OOX::CDiagramData*>(oFile.operator->());
//
// if ((pDiagData) && (pDiagData->m_oExtLst.IsInit()))
// {
// for (size_t i = 0 ; i < pDiagData->m_oExtLst->m_arrExt.size(); i++)
// {
// if ( pDiagData->m_oExtLst->m_arrExt[i]->m_oDataModelExt.IsInit())
// {
// id_drawing = pDiagData->m_oExtLst->m_arrExt[i]->m_oDataModelExt->m_oRelId;
// break;
// }
// }
// }
// }
// if (id_drawing.is_init() == false) return;
//
// oFile = find_file_by_id( *id_drawing );
//
// if (oFile.is_init() && OOX::FileTypes::DiagDrawing == oFile->type())
// {
// _CP_OPT(double) x, y, width, height, cx, cy;
//
// odf_context()->drawing_context()->get_size (width, height);
// odf_context()->drawing_context()->get_position (x, y);
//
// OOX::CDiagramDrawing * diag_drawing = dynamic_cast<OOX::CDiagramDrawing*>(oFile.operator->());
//
// oox_current_child_document = diag_drawing;
//
// odf_context()->drawing_context()->start_group();
//
// odf_context()->drawing_context()->set_group_size (width, height, width, height);
// odf_context()->drawing_context()->set_group_position (x, y, cx, cy);
//
// convert(diag_drawing->m_oShapeTree.GetPointer());
//
// odf_context()->drawing_context()->end_group();
// oox_current_child_document = NULL;
// }
//}
//void OoxConverter::convert(OOX::Drawing::CLockedCanvas *oox_canvas)
//{
// if (oox_canvas == NULL)return;
...
...
@@ -444,163 +335,6 @@ void OoxConverter::convert(OOX::WritingElement *oox_unknown)
// }
// odf_context()->drawing_context()->end_group();
//}
//void OoxConverter::convert(OOX::Drawing::CGroupShapeProperties * oox_group_spPr)
//{
// if (!oox_group_spPr) return;
//
// if (oox_group_spPr->m_oXfrm.IsInit()) //CTransform2D
// {
// if (oox_group_spPr->m_oXfrm->m_oFlipH.GetValue() == SimpleTypes::onoffTrue)
// odf_context()->drawing_context()->set_group_flip_H(true);
//
// if (oox_group_spPr->m_oXfrm->m_oFlipV.GetValue() == SimpleTypes::onoffTrue)
// odf_context()->drawing_context()->set_group_flip_V(true);
//
// if (oox_group_spPr->m_oXfrm->m_oChExt.IsInit() && oox_group_spPr->m_oXfrm->m_oExt.IsInit())
// {
// _CP_OPT(double) cx,cy,ch_cx, ch_cy;
//
// cx = oox_group_spPr->m_oXfrm->m_oExt->m_oCx.ToPoints();
// cy = oox_group_spPr->m_oXfrm->m_oExt->m_oCy.ToPoints();
//
// ch_cx = oox_group_spPr->m_oXfrm->m_oChExt->m_oCx.ToPoints();
// ch_cy = oox_group_spPr->m_oXfrm->m_oChExt->m_oCy.ToPoints();
//
// odf_context()->drawing_context()->set_group_size(cx, cy, ch_cx, ch_cy);
// }
// if (
// oox_group_spPr->m_oXfrm->m_oOff.IsInit() && oox_group_spPr->m_oXfrm->m_oChOff.IsInit())
// {
// _CP_OPT(double) x,y, ch_x, ch_y;
//
// x = oox_group_spPr->m_oXfrm->m_oOff->m_oX.ToPoints();
// y = oox_group_spPr->m_oXfrm->m_oOff->m_oY.ToPoints();
//
// ch_x = oox_group_spPr->m_oXfrm->m_oChOff->m_oX.ToPoints();
// ch_y = oox_group_spPr->m_oXfrm->m_oChOff->m_oY.ToPoints();
//
// odf_context()->drawing_context()->set_group_position( x, y, ch_x, ch_y);
// }
//
// if (oox_group_spPr->m_oXfrm->m_oRot.GetValue() > 0)
// odf_context()->drawing_context()->set_group_rotate(oox_group_spPr->m_oXfrm->m_oRot.GetValue());
// }
//}
//void OoxConverter::convert(OOX::Drawing::CNonVisualDrawingProps * oox_cnvPr)
//{
// if (!oox_cnvPr) return;
//
// if (oox_cnvPr->m_sName.IsInit())
// {
// std::wstring name = oox_cnvPr->m_sName.get();
// odf_context()->drawing_context()->set_name(name);
// }
//
// //nullable<std::wstring> m_sDescr;
// //nullable<SimpleTypes::COnOff<>> m_oHidden;
// //nullable<std::wstring> m_sTitle;
//}
//
//void OoxConverter::convert(OOX::Drawing::CCustomGeometry2D *oox_cust_geom)
//{
// if (!oox_cust_geom)return;
//
// for (size_t i = 0; i < oox_cust_geom->m_oPthLst.m_arrPath.size(); i++)
// {
// convert(oox_cust_geom->m_oPthLst.m_arrPath[i]);
// }
//}
//void OoxConverter::convert(OOX::Drawing::CLineProperties *oox_line_prop, std::wstring *change_sheme_color )
//{
// if (!oox_line_prop)return;
//
// switch (oox_line_prop->m_eFillType)
// {
// case OOX::Drawing::filltypeGradient: convert(oox_line_prop->m_oGradFill.GetPointer(), change_sheme_color);break;
// case OOX::Drawing::filltypePattern: convert(oox_line_prop->m_oPattFill.GetPointer(), change_sheme_color);break;
// case OOX::Drawing::filltypeSolid: convert(oox_line_prop->m_oSolidFill.GetPointer(), change_sheme_color);break;
// case OOX::Drawing::filltypeGroup:
// case OOX::Drawing::filltypeNo: odf_context()->drawing_context()->set_no_fill();
// break;
// }
// if (oox_line_prop->m_oW.IsInit())
// {
// odf_context()->drawing_context()->set_line_width(oox_line_prop->m_oW->ToPoints());
// }
// if (oox_line_prop->m_oHeadEnd.IsInit())
// {
// if (oox_line_prop->m_oHeadEnd->m_oLen.IsInit() || oox_line_prop->m_oHeadEnd->m_oType.IsInit() || oox_line_prop->m_oHeadEnd->m_oW.IsInit())
// {
// int type = 0, w=1, len =1;//medium arrow
// if (oox_line_prop->m_oHeadEnd->m_oLen.IsInit()) len = oox_line_prop->m_oHeadEnd->m_oLen->GetValue();
// if (oox_line_prop->m_oHeadEnd->m_oType.IsInit()) type = oox_line_prop->m_oHeadEnd->m_oType->GetValue();
// if (oox_line_prop->m_oHeadEnd->m_oW.IsInit()) w = oox_line_prop->m_oHeadEnd->m_oW->GetValue();
//
// odf_context()->drawing_context()->set_line_head(type, len, w);
// }
// }
// if (oox_line_prop->m_oTailEnd.IsInit())
// {
// if (oox_line_prop->m_oTailEnd->m_oLen.IsInit() || oox_line_prop->m_oTailEnd->m_oType.IsInit() || oox_line_prop->m_oTailEnd->m_oW.IsInit())
// {
// int type =0, w=1, len =1;//medium arrow
// if (oox_line_prop->m_oTailEnd->m_oLen.IsInit()) len = oox_line_prop->m_oTailEnd->m_oLen->GetValue();
// if (oox_line_prop->m_oTailEnd->m_oType.IsInit()) type = oox_line_prop->m_oTailEnd->m_oType->GetValue();
// if (oox_line_prop->m_oTailEnd->m_oW.IsInit()) w = oox_line_prop->m_oTailEnd->m_oW->GetValue();
//
// odf_context()->drawing_context()->set_line_tail(type, len, w);
// }
// }
//
// if (oox_line_prop->m_oCustDash.IsInit())
// {
// //через задание стиля и описание геометрии
// }
// if (oox_line_prop->m_oPrstDash.IsInit() && oox_line_prop->m_oPrstDash->m_oVal.IsInit())
// {
// odf_context()->drawing_context()->set_line_dash_preset(oox_line_prop->m_oPrstDash->m_oVal->GetValue());
// }
// //nullable<SimpleTypes::CPenAlignment<>> m_oAlgn;
// //nullable<SimpleTypes::CLineCap<>> m_oCap;
// //nullable<SimpleTypes::CCompoundLine<>> m_oCmpd;
//
//
// //ELineJoinType m_eJoinType; // Тип соединения линий
// //nullable<OOX::Drawing::CLineJoinBevel> m_oBevel;
// //nullable<OOX::Drawing::CLineJoinMiterProperties> m_oMiter;
// //nullable<OOX::Drawing::CLineJoinRound> m_oRound;
//
//}
//
//void OoxConverter::convert(OOX::Drawing::CPresetGeometry2D *oox_prst_geom)
//{
// if (!oox_prst_geom)return;
//
// if (oox_prst_geom->m_oAvLst.IsInit())
// {
// for (size_t i = 0; i < oox_prst_geom->m_oAvLst->m_arrGd.size(); i++)
// {
// if (oox_prst_geom->m_oAvLst->m_arrGd[i] == NULL) continue;
// odf_context()->drawing_context()->add_modifier(oox_prst_geom->m_oAvLst->m_arrGd[i]->m_oFmla.GetValue());
// }
// }
//}
//void OoxConverter::convert(OOX::Drawing::CPath2D *oox_geom_path)
//{
// if (!oox_geom_path) return;
//
// odf_context()->drawing_context()->set_viewBox(oox_geom_path->m_oW.GetValue(), oox_geom_path->m_oH.GetValue());
//
// for (size_t i = 0 ; i < oox_geom_path->m_arrItems.size(); i++)
// {
// convert(oox_geom_path->m_arrItems[i]);
// }
//
// odf_context()->drawing_context()->add_path_element(std::wstring(L"N"), L"");
//
//}
////-----------------------------------------------------------------------------------------------------------------
//void OoxConverter::convert(OOX::Drawing::CEffectList *oox_effect_list, std::wstring *change_sheme_color)
//{
...
...
@@ -681,158 +415,6 @@ void OoxConverter::convert(OOX::WritingElement *oox_unknown)
// odf_context()->drawing_context()->set_shadow(2, hexColor, opacity, oox_shadow->m_oDist.ToPoints());
//
//}
//-----------------------------------------------------------------------------------------------------------------
//void OoxConverter::convert(OOX::Drawing::CBlipFillProperties *oox_bitmap_fill, std::wstring *change_sheme_color)
//{
// if (oox_bitmap_fill == NULL)return;
//
// odf_context()->drawing_context()->start_bitmap_style();
// {
// double Width=0, Height = 0;
// if (oox_bitmap_fill->m_oBlip.IsInit())
// {
// std::wstring sID = oox_bitmap_fill->m_oBlip->m_oEmbed.GetValue();
// std::wstring pathImage = find_link_by_id(sID,1);
//
// if (pathImage.length() > 0)
// {
// odf_context()->drawing_context()->set_bitmap_link(pathImage);
// _graphics_utils_::GetResolution(pathImage.c_str(), Width, Height);
// }
// else
// {
// sID = oox_bitmap_fill->m_oBlip->m_oLink.GetValue();
// //...
// }
// for (size_t i = 0 ; i < oox_bitmap_fill->m_oBlip->m_arrEffects.size(); i++)
// convert(oox_bitmap_fill->m_oBlip->m_arrEffects[i]);
// }
// if (oox_bitmap_fill->m_oSrcRect.IsInit() && Width > 0 && Height > 0)//часть изображения
// {
// odf_context()->drawing_context()->set_image_client_rect_inch(
// oox_bitmap_fill->m_oSrcRect->m_oL.GetValue() /100. * Width / currentSystemDPI,
// oox_bitmap_fill->m_oSrcRect->m_oT.GetValue() /100. * Height/ currentSystemDPI,
// oox_bitmap_fill->m_oSrcRect->m_oR.GetValue() /100. * Width / currentSystemDPI,
// oox_bitmap_fill->m_oSrcRect->m_oB.GetValue() /100. * Height/ currentSystemDPI);
// }
// if (oox_bitmap_fill->m_oTile.IsInit())
// {
// odf_context()->drawing_context()->set_image_style_repeat(2);
//
// if (oox_bitmap_fill->m_oTile->m_oAlgn.IsInit())
// odf_context()->drawing_context()->set_bitmap_tile_align(oox_bitmap_fill->m_oTile->m_oAlgn->GetValue());
//
// if (oox_bitmap_fill->m_oTile->m_oFlip.IsInit()) {}
//
// if (oox_bitmap_fill->m_oTile->m_oSx.IsInit() && Width >0)
// {
// odf_context()->drawing_context()->set_bitmap_tile_scale_x(oox_bitmap_fill->m_oTile->m_oSx->GetValue() / 100. * Width);
// }
// if (oox_bitmap_fill->m_oTile->m_oSy.IsInit()&& Height >0)
// {
// odf_context()->drawing_context()->set_bitmap_tile_scale_y(oox_bitmap_fill->m_oTile->m_oSy->GetValue() / 100. * Height);
// }
// if (oox_bitmap_fill->m_oTile->m_oTx.IsInit() && Width >0)
// {
// odf_context()->drawing_context()->set_bitmap_tile_translate_x(oox_bitmap_fill->m_oTile->m_oTx->GetValue()*100. / Width );
// }
// if (oox_bitmap_fill->m_oTile->m_oTy.IsInit() && Height >0)
// {
// odf_context()->drawing_context()->set_bitmap_tile_translate_y(oox_bitmap_fill->m_oTile->m_oTy->GetValue()*100. / Height );
// }
// }
// if (oox_bitmap_fill->m_oStretch.IsInit())
// {
// odf_context()->drawing_context()->set_image_style_repeat(1);
// if (oox_bitmap_fill->m_oStretch->m_oFillRect.IsInit()){} //заполнение неполного объема
// }
// }
// odf_context()->drawing_context()->end_bitmap_style();
//}
//
//void OoxConverter::convert(OOX::Drawing::CGradientFillProperties *oox_grad_fill, std::wstring *change_sheme_color)
//{
// if (!oox_grad_fill)return;
//
// odf_context()->drawing_context()->start_gradient_style();
// {
// odf_types::gradient_style::type grad_style = odf_types::gradient_style::linear;
//
// if (oox_grad_fill->m_eGradType == OOX::Drawing::gradfilltypeLinear && oox_grad_fill->m_oLin->m_oAng.IsInit())
// {
// odf_context()->drawing_context()->set_gradient_angle(oox_grad_fill->m_oLin->m_oAng->GetAngle());
// }
// if (oox_grad_fill->m_eGradType == OOX::Drawing::gradfilltypePath && oox_grad_fill->m_oPath->m_oPath.IsInit())
// {
// switch(oox_grad_fill->m_oPath->m_oPath->GetValue())
// {
// case SimpleTypes::pathshadetypeCircle: grad_style = odf_types::gradient_style::radial; break;
// case SimpleTypes::pathshadetypeRect: grad_style = odf_types::gradient_style::rectangular; break;
// case SimpleTypes::pathshadetypeShape: grad_style = odf_types::gradient_style::square; break;
// }
// if (oox_grad_fill->m_oPath->m_oFillToRect.IsInit())
// {
// odf_context()->drawing_context()->set_gradient_rect( oox_grad_fill->m_oPath->m_oFillToRect->m_oL.GetValue(),
// oox_grad_fill->m_oPath->m_oFillToRect->m_oT.GetValue(),
// oox_grad_fill->m_oPath->m_oFillToRect->m_oR.GetValue(),
// oox_grad_fill->m_oPath->m_oFillToRect->m_oB.GetValue());
// }
// }
// odf_context()->drawing_context()->set_gradient_type(grad_style);
//
// if (oox_grad_fill->m_oGsLst.IsInit() && oox_grad_fill->m_oGsLst->m_arrGs.size()>1 && oox_grad_fill->m_oGsLst->m_arrGs[0])
// {
// std::wstring hexColorStart, hexColorEnd;
// _CP_OPT(double) opacityStart, opacityEnd;
//
// if (change_sheme_color && oox_grad_fill->m_oGsLst->m_arrGs[0]->m_eType == OOX::Drawing::colorSheme)
// {
// oox_grad_fill->m_oGsLst->m_arrGs[0]->m_oShemeClr.m_oVal.FromString(*change_sheme_color);
//
// if (oox_grad_fill->m_oGsLst->m_arrGs[oox_grad_fill->m_oGsLst->m_arrGs.size()-1])
// oox_grad_fill->m_oGsLst->m_arrGs[oox_grad_fill->m_oGsLst->m_arrGs.size()-1]->m_oShemeClr.m_oVal.FromString(*change_sheme_color);
// }
// convert((OOX::Drawing::CColor*)(oox_grad_fill->m_oGsLst->m_arrGs[oox_grad_fill->m_oGsLst->m_arrGs.size()-1]),hexColorStart, opacityStart);
//
// convert((OOX::Drawing::CColor*)(oox_grad_fill->m_oGsLst->m_arrGs[0]),hexColorEnd, opacityEnd);
//
// odf_context()->drawing_context()->set_gradient_start(hexColorStart, opacityStart);
// odf_context()->drawing_context()->set_gradient_end (hexColorEnd, opacityEnd);
//
// if (opacityStart || opacityEnd)
// {
// if (!opacityStart) opacityStart = 100;
// if (!opacityEnd) opacityEnd = 100;
//
// if (*opacityStart == *opacityEnd)
// {
// odf_context()->drawing_context()->set_opacity(*opacityStart);
// }
// else
// {
// odf_context()->drawing_context()->start_opacity_style();
// odf_context()->drawing_context()->set_opacity_type (grad_style);
// odf_context()->drawing_context()->set_opacity_start (*opacityStart);
// odf_context()->drawing_context()->set_opacity_end (*opacityEnd);
//
// if (oox_grad_fill->m_eGradType == OOX::Drawing::gradfilltypeLinear && oox_grad_fill->m_oLin->m_oAng.IsInit())
// {
// odf_context()->drawing_context()->set_opacity_angle(oox_grad_fill->m_oLin->m_oAng->GetAngle());
// }
// if (oox_grad_fill->m_eGradType == OOX::Drawing::gradfilltypePath && oox_grad_fill->m_oPath->m_oFillToRect.IsInit())
// {
// odf_context()->drawing_context()->set_opacity_rect (oox_grad_fill->m_oPath->m_oFillToRect->m_oL.GetValue(),
// oox_grad_fill->m_oPath->m_oFillToRect->m_oT.GetValue(),
// oox_grad_fill->m_oPath->m_oFillToRect->m_oR.GetValue(),
// oox_grad_fill->m_oPath->m_oFillToRect->m_oB.GetValue());
// }
// odf_context()->drawing_context()->end_opacity_style();
// }
// }
// }
// }
// odf_context()->drawing_context()->end_gradient_style();
//}
//void OoxConverter::convert(OOX::Drawing::CPatternFillProperties *oox_pattern_fill, std::wstring *change_sheme_color)
//{
// if (!oox_pattern_fill)return;
...
...
@@ -866,46 +448,7 @@ void OoxConverter::convert(OOX::WritingElement *oox_unknown)
// odf_context()->drawing_context()->end_hatch_style();
//
//}
//void OoxConverter::convert(OOX::Drawing::CSolidColorFillProperties *oox_solid_fill, std::wstring & hexColor , _CP_OPT(double) &opacity)
//{
// switch( oox_solid_fill->m_eType )
// {
// case OOX::Drawing::colorSheme: convert(&oox_solid_fill->m_oShemeClr, hexColor, opacity); break;
// case OOX::Drawing::colorHsl: convert(&oox_solid_fill->m_oHslClr, hexColor, opacity); break;
// case OOX::Drawing::colorPrst: convert(&oox_solid_fill->m_oPrstClr, hexColor, opacity); break;
// case OOX::Drawing::colorScRgb: convert(&oox_solid_fill->m_oScrgbClr, hexColor, opacity); break;
// case OOX::Drawing::colorSRgb: convert(&oox_solid_fill->m_oSrgbClr, hexColor, opacity); break;
// case OOX::Drawing::colorSys: convert(&oox_solid_fill->m_oSysClr, hexColor, opacity); break;
// }
//}
//void OoxConverter::convert(OOX::Drawing::CColor *oox_color, std::wstring & hexColor , _CP_OPT(double) &opacity)
//{
// switch( oox_color->m_eType )
// {
// case OOX::Drawing::colorSheme: convert(&oox_color->m_oShemeClr, hexColor, opacity); break;
// case OOX::Drawing::colorHsl: convert(&oox_color->m_oHslClr, hexColor, opacity); break;
// case OOX::Drawing::colorPrst: convert(&oox_color->m_oPrstClr, hexColor, opacity); break;
// case OOX::Drawing::colorScRgb: convert(&oox_color->m_oScrgbClr, hexColor, opacity); break;
// case OOX::Drawing::colorSRgb: convert(&oox_color->m_oSrgbClr, hexColor, opacity); break;
// case OOX::Drawing::colorSys: convert(&oox_color->m_oSysClr, hexColor, opacity); break;
// }
//}
//void OoxConverter::convert(OOX::Drawing::Colors::CColorTransform *oox_Clr, std::wstring & hexString, _CP_OPT(double) &opacity)
//{
// if (!oox_Clr)return;
// BYTE ucA=0, ucG=0, ucB=0, ucR =0;
// oox_Clr->GetRGBA(ucR,ucG,ucB,ucA);
//
// SimpleTypes::CHexColor<SimpleTypes::hexcolorRGB> *oRgbColor = new SimpleTypes::CHexColor<SimpleTypes::hexcolorRGB>(ucR,ucG,ucB);
// if ((oRgbColor) && (oRgbColor->GetValue() == SimpleTypes::hexcolorRGB ))
// {
// hexString = oRgbColor->ToString().substr(2);//.Right(6);
// delete oRgbColor;
// }
// if (ucA !=255)opacity = (ucA/255.)* 100.;
//}
//
bool
OoxConverter
::
convert
(
std
::
wstring
sSchemeColor
,
DWORD
&
argb
)
{
PPTX
::
Theme
*
theme
=
oox_theme
();
...
...
@@ -923,329 +466,7 @@ bool OoxConverter::convert(std::wstring sSchemeColor, DWORD & argb)
}
return
false
;
}
//void OoxConverter::convert(OOX::Drawing::CSchemeColor *oox_ShemeClr, std::wstring & hexString, _CP_OPT(double) &opacity)
//{
// if (!oox_ShemeClr)return;
//
// int theme_ind = oox_ShemeClr->m_oVal.GetValue();
//
// BYTE ucA = 0, ucG = 0, ucB = 0, ucR = 0;
// bool result = convert(theme_ind, ucA, ucG, ucB, ucR);
//
// if (result == true)
// {
// oox_ShemeClr->SetRGBA(ucR,ucG,ucB,ucA);
// oox_ShemeClr->GetRGBA(ucR,ucG,ucB,ucA);
//
// SimpleTypes::CHexColor<SimpleTypes::hexcolorRGB> *oRgbColor = new SimpleTypes::CHexColor<SimpleTypes::hexcolorRGB>(ucR,ucG,ucB);
// if (oRgbColor)
// {
// hexString = oRgbColor->ToString().substr(2);//.Right(6);
// delete oRgbColor;
// }
// if ( ucA != 0xff )opacity = (ucA / 255.) * 100.;
// }
//}
//void OoxConverter::convert(OOX::Drawing::CTextBodyProperties *oox_bodyPr)
//{
// if (!oox_bodyPr) return;
//
// odf_context()->drawing_context()->set_textarea_writing_mode (oox_bodyPr->m_oVert.GetValue());
// odf_context()->drawing_context()->set_textarea_vertical_align (oox_bodyPr->m_oAnchor.GetValue());
//
// _CP_OPT(double) lIns, tIns, rIns, bIns;
//
// lIns = oox_bodyPr->m_oLIns.ToCm();
// tIns = oox_bodyPr->m_oTIns.ToCm();
// rIns = oox_bodyPr->m_oRIns.ToCm();
// bIns = oox_bodyPr->m_oBIns.ToCm();
//
// odf_context()->drawing_context()->set_textarea_padding (lIns, tIns, rIns, bIns);
//
// odf_context()->drawing_context()->set_textarea_wrap(oox_bodyPr->m_oWrap.GetValue());
//
// if (oox_bodyPr->m_oNumCol.GetValue() > 1)
// {
// //+ style section
// //+element text:section в котором параграфы
// }
// if (oox_bodyPr->m_oSpAutoFit.IsInit())
// {
// //изменяемы размеры
// odf_context()->drawing_context()->set_text_box_min_size(true);//уже выставленые в min
//
// }
// if (oox_bodyPr->m_oFromWordArt.ToBool() && oox_bodyPr->m_oPrstTxWrap.IsInit())
// {
// for (size_t i = 0; i < oox_bodyPr->m_oPrstTxWrap->m_oAvLst->m_arrGd.size(); i++)
// {
// if (oox_bodyPr->m_oPrstTxWrap->m_oAvLst->m_arrGd[i] == NULL) continue;
// odf_context()->drawing_context()->add_modifier(oox_bodyPr->m_oPrstTxWrap->m_oAvLst->m_arrGd[i]->m_oFmla.GetValue());
// }
// }
//}
//
//int OoxConverter::convert(OOX::Drawing::CPresetTextShape *oox_text_preset)
//{
// if (oox_text_preset == NULL) return -1;
// if (oox_text_preset->m_oPrst.GetValue() == SimpleTypes::textshapetypeTextNoShape) return 2000;
//
// return 2001 + oox_text_preset->m_oPrst.GetValue();
//}
//void OoxConverter::convert(OOX::Drawing::CRunProperty * oox_run_pr, odf_writer::style_text_properties * text_properties)
//{
// if (!oox_run_pr) return;
// if (!text_properties) return;
//
// if (oox_run_pr->m_oBold.IsInit())
// {
// if (oox_run_pr->m_oBold->ToBool() == true)
// text_properties->content().fo_font_weight_ = odf_types::font_weight(odf_types::font_weight::WBold);
// else
// text_properties->content().fo_font_weight_ = odf_types::font_weight(odf_types::font_weight::WNormal);
// }
//
// if (oox_run_pr->m_oSolidFill.IsInit())
// {
// std::wstring hexColor;
// _CP_OPT(double) opacity;
// convert(oox_run_pr->m_oSolidFill.GetPointer(),hexColor,opacity);
//
// text_properties->content().fo_color_ = odf_types::color(std::wstring(L"#") + hexColor);
// }
//
// if (oox_run_pr->m_oItalic.IsInit())
// {
// if (oox_run_pr->m_oItalic->ToBool() ==true)
// text_properties->content().fo_font_style_ = odf_types::font_style(odf_types::font_style::Italic);
// else
// text_properties->content().fo_font_style_ = odf_types::font_style(odf_types::font_style::Normal);
// }
// if (oox_run_pr->m_oSz.IsInit())
// {
// convert(oox_run_pr->m_oSz->GetValue()/100., text_properties->content().fo_font_size_);
// convert(oox_run_pr->m_oSz->GetValue()/100., text_properties->content().style_font_size_asian_);
// convert(oox_run_pr->m_oSz->GetValue()/100., text_properties->content().style_font_size_complex_);
// }
// if (oox_run_pr->m_oLatinFont.IsInit())
// {
// if (oox_run_pr->m_oLatinFont->m_oTypeFace.IsInit())
// text_properties->content().fo_font_family_ = oox_run_pr->m_oLatinFont->m_oTypeFace->GetValue();
// else
// {
// text_properties->content().fo_font_family_ = L"Calibri";//default_font; ????
// }
// }
// if (oox_run_pr->m_oAsianFont.IsInit())
// {
// if (oox_run_pr->m_oAsianFont->m_oTypeFace.IsInit())
// text_properties->content().style_font_family_asian_ = oox_run_pr->m_oAsianFont->m_oTypeFace->GetValue();
// else
// {
// }
// }
// if (oox_run_pr->m_oComplexFont.IsInit())
// {
// if (oox_run_pr->m_oComplexFont->m_oTypeFace.IsInit())
// text_properties->content().style_font_family_complex_ = oox_run_pr->m_oComplexFont->m_oTypeFace->GetValue();
// else
// {
// }
// }
// if (oox_run_pr->m_oLanguage.IsInit())
// {
// std::wstring oox_language = oox_run_pr->m_oLanguage->GetValue(), oox_country;
// int res = oox_language.find(L"-");
// if (res >= 0)
// {
// oox_country = oox_language.substr(res);
// oox_language = oox_language.substr(0, res);
// }
//
// text_properties->content().fo_language_ = oox_language;
// if (oox_country.length() > 0)
// text_properties->content().fo_country_ = oox_country;
//
// }
// if (oox_run_pr->m_oSpace.IsInit())
// {
// text_properties->content().fo_letter_spacing_ = odf_types::letter_spacing(odf_types::length(oox_run_pr->m_oSpace->GetValue()/100., odf_types::length::pt));
// }
// if (oox_run_pr->m_oUnderline.IsInit())
// {
// text_properties->content().style_text_underline_style_ = odf_types::line_style(odf_types::line_style::Solid);
// text_properties->content().style_text_underline_type_= odf_types::line_type(odf_types::line_type::Single);
//
// SimpleTypes::EUnderline type = oox_run_pr->m_oUnderline->GetValue();
// switch(type)
// {
// case SimpleTypes::underlineNone :
// text_properties->content().style_text_underline_type_= odf_types::line_type(odf_types::line_type::None);break;
// case SimpleTypes::underlineDash :
// case SimpleTypes::underlineDashedHeavy:
// text_properties->content().style_text_underline_style_ = odf_types::line_style(odf_types::line_style::Dash);break;
// case SimpleTypes::underlineDotDash :
// case SimpleTypes::underlineDashDotHeavy:
// text_properties->content().style_text_underline_style_ = odf_types::line_style(odf_types::line_style::DotDash);break;
// case SimpleTypes::underlineDashLong:
// case SimpleTypes::underlineDashLongHeavy:
// text_properties->content().style_text_underline_style_ = odf_types::line_style(odf_types::line_style::LongDash);break;
// case SimpleTypes::underlineDotDotDash:
// case SimpleTypes::underlineDashDotDotHeavy :
// text_properties->content().style_text_underline_style_ = odf_types::line_style(odf_types::line_style::DotDotDash);break;
// case SimpleTypes::underlineDotted:
// case SimpleTypes::underlineDottedHeavy:
// text_properties->content().style_text_underline_style_ = odf_types::line_style(odf_types::line_style::Dotted);break;
// case SimpleTypes::underlineWave :
// case SimpleTypes::underlineWavyHeavy :
// text_properties->content().style_text_underline_style_ = odf_types::line_style(odf_types::line_style::Wave);break;
// case SimpleTypes::underlineDouble :
// case SimpleTypes::underlineThick :
// text_properties->content().style_text_underline_type_= odf_types::line_type(odf_types::line_type::Double);break;
// case SimpleTypes::underlineWavyDouble :
// text_properties->content().style_text_underline_type_= odf_types::line_type(odf_types::line_type::Double);
// text_properties->content().style_text_underline_style_ = odf_types::line_style(odf_types::line_style::Wave);break;
// }
// }
//}
//void OoxConverter::convert(OOX::Drawing::CRun *oox_run)
//{
// if (!oox_run)return;
//
// bool styled = false;
//
// if (oox_run->m_oRunProperty.IsInit())
// {
// odf_writer::style_text_properties * text_properties = odf_context()->text_context()->get_text_properties();
//
// if (!text_properties)
// {
// odf_context()->styles_context()->create_style(L"",odf_types::style_family::Text, true, false, -1);
// text_properties = odf_context()->styles_context()->last_state()->get_text_properties();
// styled = true;
// }
// convert(oox_run->m_oRunProperty.GetPointer(), text_properties);
// }
//
// odf_context()->text_context()->start_span(styled);
// if (oox_run->m_oText.IsInit())
// {
// odf_context()->text_context()->add_text_content( oox_run->m_oText->m_sText);
// }
// odf_context()->text_context()->end_span();
//}
//
//void OoxConverter::convert(OOX::Drawing::CParagraphProperty * oox_paragraph_pr, cpdoccore::odf_writer::style_paragraph_properties * paragraph_properties)
//{
// if (!oox_paragraph_pr) return;
// if (!paragraph_properties) return;
//
// if (oox_paragraph_pr->m_oLineSpacing.IsInit())
// {
// odf_types::length_or_percent length;
// convert(oox_paragraph_pr->m_oLineSpacing.GetPointer(), length);
// paragraph_properties->content().fo_line_height_ = odf_types::line_width(length);
// }
// if (oox_paragraph_pr->m_oAfterSpacing.IsInit())
// {
// odf_types::length_or_percent length;
// convert(oox_paragraph_pr->m_oAfterSpacing.GetPointer(), length);
// paragraph_properties->content().fo_margin_bottom_ = length;
// }
// if (oox_paragraph_pr->m_oBeforeSpacing.IsInit())
// {
// odf_types::length_or_percent length;
// convert(oox_paragraph_pr->m_oBeforeSpacing.GetPointer(), length);
// paragraph_properties->content().fo_margin_top_ = length;
// }
// if (oox_paragraph_pr->m_oAlgn.IsInit())
// {
// switch(oox_paragraph_pr->m_oAlgn->GetValue())
// {
// case SimpleTypes::textalignmenttypeL : paragraph_properties->content().fo_text_align_ = odf_types::text_align(odf_types::text_align::Left); break;
// case SimpleTypes::textalignmenttypeCtr : paragraph_properties->content().fo_text_align_ = odf_types::text_align(odf_types::text_align::Center); break;
// case SimpleTypes::textalignmenttypeDist : paragraph_properties->content().fo_text_align_ = odf_types::text_align(odf_types::text_align::Justify); break;
// case SimpleTypes::textalignmenttypeJust : paragraph_properties->content().fo_text_align_ = odf_types::text_align(odf_types::text_align::Justify); break;
// case SimpleTypes::textalignmenttypeR : paragraph_properties->content().fo_text_align_ = odf_types::text_align(odf_types::text_align::Right); break;
// }
// }
// if (oox_paragraph_pr->m_oMarL.IsInit())
// {
// paragraph_properties->content().fo_margin_left_ = odf_types::length_or_percent(odf_types::length(oox_paragraph_pr->m_oMarL->ToCm(),odf_types::length::cm));
// }
// if (oox_paragraph_pr->m_oMarR.IsInit())
// {
// paragraph_properties->content().fo_margin_right_ = odf_types::length_or_percent(odf_types::length(oox_paragraph_pr->m_oMarR->ToCm(),odf_types::length::cm));
// }
// if (oox_paragraph_pr->m_oIndent.IsInit())
// {
// paragraph_properties->content().fo_text_indent_ = odf_types::length_or_percent(odf_types::length(oox_paragraph_pr->m_oIndent->ToCm(),odf_types::length::cm));
// }
// if (oox_paragraph_pr->m_oRtl.IsInit())
// {
// }
// //nullable<SimpleTypes::CDecimalNumber<> > m_oLvl;
// //nullable<SimpleTypes::CCoordinate32<> > m_oDefTabSz;
// //nullable<SimpleTypes::CTextFontAlignType<>> m_oFontAlgn;
//
//
//
// if (oox_paragraph_pr->m_oDefRunProperty.IsInit())//может быть пустым !!!
// {
// odf_writer::style_text_properties * text_properties = odf_context()->text_context()->get_text_properties();
// if (text_properties)
// convert(oox_paragraph_pr->m_oDefRunProperty.GetPointer(), text_properties);
//
// //надо подумать как брать последний по family !!!
// //convert(oox_paragraph_pr->m_oDefRunProperty.GetPointer());
// //odf_context()->text_context()->set_parent_span_style(odf_context()->styles_context()->last_state().get_name());
// }
//
//}
//void OoxConverter::convert(OOX::Drawing::CLineSpacing* oox_spacing, odf_types::length_or_percent & length_or_percent)
//{
// if (!oox_spacing)return;
//
// if (oox_spacing->m_oLineSpacingPercent.IsInit() && oox_spacing->m_oLineSpacingPercent->m_oVal.IsInit())
// {
// odf_types::percent percent = odf_types::percent(oox_spacing->m_oLineSpacingPercent->m_oVal->GetValue());
// length_or_percent = odf_types::length_or_percent(percent);
// }
// if (oox_spacing->m_oLineSpacingPoints.IsInit() && oox_spacing->m_oLineSpacingPoints->m_oVal.IsInit())
// {
// odf_types::length length = odf_types::length(oox_spacing->m_oLineSpacingPoints->m_oVal->ToCm()/100.,odf_types::length::cm);
// length_or_percent = odf_types::length_or_percent(length);
// }
//}
//
//void OoxConverter::convert(OOX::Drawing::CParagraph *oox_paragraph)
//{
// if (!oox_paragraph)return;
//
// bool styled = false;
// if (oox_paragraph->m_oParagraphProperty.IsInit())
// {
// odf_writer::style_paragraph_properties * paragraph_properties = odf_context()->text_context()->get_paragraph_properties();
// //свойства могут быть приписаны не только к параграфу, но и к самому объекту
// if (!paragraph_properties)
// {
// odf_context()->styles_context()->create_style(L"",odf_types::style_family::Paragraph, true, false, -1);
// paragraph_properties = odf_context()->styles_context()->last_state()->get_paragraph_properties();
// styled = true;
// }
// convert(oox_paragraph->m_oParagraphProperty.GetPointer(), paragraph_properties);
// }
//
// odf_context()->text_context()->start_paragraph(styled);
//
// for (size_t i=0; i< oox_paragraph->m_arrItems.size();i++)
// {
// convert(oox_paragraph->m_arrItems[i]);
// }
// odf_context()->text_context()->end_paragraph();
//
//}
//
void
OoxConverter
::
convert
(
double
oox_font_size
,
_CP_OPT
(
odf_types
::
font_size
)
&
odf_font_size
)
{
_CP_OPT
(
odf_types
::
length
)
odf_length
;
...
...
ASCOfficeOdfFileW/source/Oox2OdfConverter/Converter.h
View file @
19960fa3
...
...
@@ -268,8 +268,13 @@ namespace PPTX
class
GraphicFrame
;
class
SpTree
;
class
Shape
;
class
CxnSp
;
class
Pic
;
class
Table
;
class
TableProperties
;
class
TableRow
;
class
TableCell
;
class
TableCellProperties
;
class
SmartArt
;
class
ChartRec
;
class
SpPr
;
...
...
@@ -295,6 +300,8 @@ namespace PPTX
class
NvSpPr
;
class
CNvPr
;
class
CNvSpPr
;
class
CNvCxnSpPr
;
class
NvCxnSpPr
;
class
NvPr
;
class
Paragraph
;
class
TxBody
;
...
...
@@ -359,6 +366,7 @@ public:
void
convert
(
PPTX
::
Logic
::
GraphicFrame
*
oox_graphicFrame
);
void
convert
(
PPTX
::
Logic
::
SpTree
*
oox_shape_tree
);
void
convert
(
PPTX
::
Logic
::
Shape
*
oox_shape
);
void
convert
(
PPTX
::
Logic
::
CxnSp
*
oox_connect
);
void
convert
(
PPTX
::
Logic
::
Pic
*
oox_pic
);
void
convert
(
PPTX
::
Logic
::
SpPr
*
oox_spPr
,
PPTX
::
Logic
::
ShapeStyle
*
oox_sp_style
=
NULL
);
void
convert
(
PPTX
::
Logic
::
TextSpacing
*
oox_spacing
,
cpdoccore
::
odf_types
::
length_or_percent
&
length_or_percent
);
...
...
@@ -371,7 +379,7 @@ public:
void
convert
(
PPTX
::
Logic
::
SolidFill
*
oox_fill
,
DWORD
ARGB
=
0
);
void
convert
(
PPTX
::
Logic
::
PattFill
*
oox_fill
,
DWORD
ARGB
=
0
);
void
convert
(
PPTX
::
Logic
::
EffectLst
*
oox_effect_lst
);
void
convert
(
PPTX
::
Logic
::
Ln
*
oox_line
);
void
convert
(
PPTX
::
Logic
::
Ln
*
oox_line
,
DWORD
ARGB
=
0
);
void
convert
(
PPTX
::
Logic
::
FontRef
*
oox_fontRef
);
void
convert
(
PPTX
::
Logic
::
StyleRef
*
oox_styleRef
,
int
type
);
void
convert
(
PPTX
::
Logic
::
Path2D
*
oox_path2D
);
...
...
@@ -381,7 +389,9 @@ public:
void
convert
(
PPTX
::
Logic
::
UniColor
*
color
,
std
::
wstring
&
hexString
,
_CP_OPT
(
double
)
&
opacity
,
DWORD
ARGB
=
0
);
void
convert
(
PPTX
::
Logic
::
NvSpPr
*
oox_nvSpPr
);
void
convert
(
PPTX
::
Logic
::
CNvPr
*
oox_cnvPr
);
void
convert
(
PPTX
::
Logic
::
CNvCxnSpPr
*
oox_cnvPr
);
void
convert
(
PPTX
::
Logic
::
CNvSpPr
*
oox_cnvSpPr
);
void
convert
(
PPTX
::
Logic
::
NvCxnSpPr
*
oox_nvSpPr
);
void
convert
(
PPTX
::
Logic
::
NvPr
*
oox_nvPr
);
void
convert
(
PPTX
::
Logic
::
Paragraph
*
oox_para
);
void
convert
(
PPTX
::
Logic
::
TextParagraphPr
*
oox_para_props
,
cpdoccore
::
odf_writer
::
style_paragraph_properties
*
paragraph_properties
);
...
...
@@ -394,13 +404,13 @@ public:
void
convert
(
PPTX
::
Logic
::
NvGraphicFramePr
*
oox_framePr
);
void
convert
(
PPTX
::
Logic
::
ChartRec
*
oox_chart
);
void
convert
(
PPTX
::
Logic
::
SmartArt
*
oox_smart_art
);
void
convert
(
PPTX
::
Logic
::
Table
*
oox_table
);
void
convert
(
PPTX
::
Logic
::
LineTo
*
oox_geom_path
);
void
convert
(
PPTX
::
Logic
::
MoveTo
*
oox_geom_path
);
void
convert
(
PPTX
::
Logic
::
ArcTo
*
oox_geom_path
);
void
convert
(
PPTX
::
Logic
::
QuadBezTo
*
oox_geom_path
);
void
convert
(
PPTX
::
Logic
::
CubicBezTo
*
oox_geom_path
);
void
convert
(
PPTX
::
Logic
::
Close
*
oox_geom_path
);
//.chart............................................................................................................................
void
convert
(
OOX
::
Spreadsheet
::
CT_ChartSpace
*
oox_chart
);
void
convert
(
OOX
::
Spreadsheet
::
CT_Title
*
ct_title
);
...
...
ASCOfficeOdfFileW/source/Oox2OdfConverter/DocxConverter.cpp
View file @
19960fa3
...
...
@@ -3011,8 +3011,8 @@ void DocxConverter::convert(OOX::CDocDefaults *def_style)
/////////////////////////////////////////////////////////////////////////////////////////////////
//зачемто ?! для OpenOffice для врезок/фреймов нужен базовый стиль - без него другой тип геометрии oO !!!
odt_context
->
styles_context
()
->
create_style
(
L"Frame"
,
odf_types
::
style_family
::
Graphic
,
false
,
true
);
odf_writer
::
style_graphic
_properties
*
graphic_properties
=
odt_context
->
styles_context
()
->
last_state
()
->
get_graphic_properties
();
odt_context
->
styles_context
()
->
create_style
(
L"Frame"
,
odf_types
::
style_family
::
Graphic
,
false
,
true
);
odf_writer
::
graphic_format
_properties
*
graphic_properties
=
odt_context
->
styles_context
()
->
last_state
()
->
get_graphic_properties
();
//if (graphic_properties)graphic_properties->content_.common_background_color_attlist_.fo_background_color_ = odf_types::background_color(odf_types::background_color::Transparent);
}
...
...
@@ -3876,7 +3876,7 @@ void DocxConverter::convert(OOX::Logic::CTc *oox_table_cell)
}
}
odt_context
->
start_table_cell
(
oox_table_cell
->
m_nNumCol
,
covered
,
convert
(
oox_table_cell
->
m_oTableCellProperties
,
oox_table_cell
->
m_nNumCol
+
1
));
odt_context
->
start_table_cell
(
oox_table_cell
->
m_nNumCol
,
covered
,
convert
(
oox_table_cell
->
m_oTableCellProperties
,
oox_table_cell
->
m_nNumCol
+
1
));
if
(
oox_table_cell
->
m_oTableCellProperties
)
{
...
...
ASCOfficeOdfFileW/source/Oox2OdfConverter/PptxConverter.cpp
View file @
19960fa3
...
...
@@ -35,6 +35,7 @@
#include "../../../ASCOfficePPTXFile/PPTXFormat/Folder.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Presentation.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Slide.h"
#include "../../../ASCOfficePPTXFile/PPTXFormat/Logic/Table/Table.h"
#include <boost/lexical_cast.hpp>
...
...
@@ -83,6 +84,7 @@ PptxConverter::PptxConverter(const std::wstring & path, const ProgressCallback*
current_clrMap
=
NULL
;
current_slide
=
NULL
;
current_theme
=
NULL
;
current_tableStyles
=
NULL
;
pCallBack
=
CallBack
;
...
...
@@ -90,6 +92,7 @@ PptxConverter::PptxConverter(const std::wstring & path, const ProgressCallback*
}
PptxConverter
::~
PptxConverter
()
{
current_tableStyles
=
NULL
;
current_clrMap
=
NULL
;
current_slide
=
NULL
;
current_theme
=
NULL
;
...
...
@@ -230,8 +233,6 @@ void PptxConverter::convert_slides()
if
(
slide
->
Master
.
IsInit
())
{
current_clrMap
=
&
slide
->
Master
->
clrMap
;
// Master & Layout
std
::
wstring
master_layout
=
slide
->
Master
->
m_sOutputFilename
+
slide
->
Layout
->
m_sOutputFilename
;
...
...
@@ -250,9 +251,12 @@ void PptxConverter::convert_slides()
master_style_name
+=
std
::
to_wstring
(
m_mapMasters
.
size
());
odp_context
->
start_master_slide
(
master_style_name
);
current_clrMap
=
&
slide
->
Master
->
clrMap
;
current_slide
=
slide
->
Master
.
operator
->
();
convert
(
&
slide
->
Master
->
cSld
,
false
);
//slide->Layout->showMasterSp.IsInit() ? *slide->Layout->showMasterSp : true);
if
(
slide
->
Layout
->
clrMapOvr
.
IsInit
())
current_clrMap
=
slide
->
Layout
->
clrMapOvr
->
overrideClrMapping
.
GetPointer
();
current_slide
=
slide
->
Layout
.
operator
->
();
convert
(
&
slide
->
Layout
->
cSld
,
false
);
odp_context
->
end_master_slide
();
...
...
@@ -266,7 +270,9 @@ void PptxConverter::convert_slides()
if
(
slide
->
clrMapOvr
.
IsInit
())
current_clrMap
=
slide
->
clrMapOvr
->
overrideClrMapping
.
GetPointer
();
current_tableStyles
=
slide
->
tableStyles_
.
operator
->
();
current_slide
=
slide
.
operator
->
();
odp_context
->
start_slide
();
odp_context
->
current_slide
().
set_master_page
(
master_style_name
);
...
...
@@ -305,6 +311,401 @@ void PptxConverter::convert(OOX::WritingElement *oox_unknown)
}
}
void
PptxConverter
::
convert
(
PPTX
::
Logic
::
TableProperties
*
oox_table_pr
)
{
if
(
!
oox_table_pr
)
return
;
odp_context
->
drawing_context
()
->
start_area_properties
();
odp_context
->
drawing_context
()
->
set_no_fill
();
odp_context
->
drawing_context
()
->
end_area_properties
();
if
(
oox_table_pr
->
TableStyleId
.
IsInit
()
&&
current_tableStyles
)
{
std
::
map
<
std
::
wstring
,
PPTX
::
Logic
::
TableStyle
>::
iterator
pFind
;
pFind
=
current_tableStyles
->
Styles
.
find
(
oox_table_pr
->
TableStyleId
.
get
());
if
(
pFind
!=
current_tableStyles
->
Styles
.
end
())
{
PPTX
::
Logic
::
TableStyle
&
table_style
=
pFind
->
second
;
if
(
table_style
.
tblBg
.
IsInit
())
{
}
convert
(
table_style
.
wholeTbl
.
GetPointer
());
}
}
if
(
oox_table_pr
->
Fill
.
is_init
())
{
odp_context
->
drawing_context
()
->
start_area_properties
();
OoxConverter
::
convert
(
&
oox_table_pr
->
Fill
);
odp_context
->
drawing_context
()
->
end_area_properties
();
}
//EffectProperties Effects;
//nullable_bool Rtl;
//nullable_bool FirstRow;
//nullable_bool FirstCol;
//nullable_bool LastRow;
//nullable_bool LastCol;
//nullable_bool BandRow;
//nullable_bool BandCol;
}
void
PptxConverter
::
convert
(
PPTX
::
Logic
::
TablePartStyle
*
oox_table_part_style
)
{
if
(
!
oox_table_part_style
)
return
;
if
(
oox_table_part_style
->
tcStyle
.
IsInit
())
{
odp_context
->
drawing_context
()
->
start_area_properties
();
if
(
oox_table_part_style
->
tcStyle
->
fill
.
IsInit
())
OoxConverter
::
convert
(
&
oox_table_part_style
->
tcStyle
->
fill
->
Fill
);
else
OoxConverter
::
convert
(
oox_table_part_style
->
tcStyle
->
fillRef
.
GetPointer
());
odp_context
->
drawing_context
()
->
end_area_properties
();
odp_context
->
drawing_context
()
->
start_line_properties
();
convert
(
oox_table_part_style
->
tcStyle
->
tcBdr
.
GetPointer
());
odp_context
->
drawing_context
()
->
end_line_properties
();
}
if
(
oox_table_part_style
->
tcTxStyle
.
IsInit
())
{
}
}
void
PptxConverter
::
convert
(
PPTX
::
Logic
::
Table
*
oox_table
)
{
if
(
!
oox_table
)
return
;
odp_context
->
slide_context
()
->
start_table
();
convert
(
oox_table
->
tableProperties
.
GetPointer
());
odp_context
->
slide_context
()
->
start_table_columns
();
for
(
size_t
i
=
0
;
i
<
oox_table
->
TableCols
.
size
();
i
++
)
{
double
width
=
-
1
;
if
(
oox_table
->
TableCols
[
i
].
Width
.
IsInit
())
width
=
oox_table
->
TableCols
[
i
].
Width
.
get
()
/
127000.
;
odp_context
->
slide_context
()
->
add_table_column
(
width
);
}
odp_context
->
slide_context
()
->
end_table_columns
();
for
(
size_t
i
=
0
;
i
<
oox_table
->
TableRows
.
size
();
i
++
)
{
convert
(
&
oox_table
->
TableRows
[
i
]);
}
odp_context
->
slide_context
()
->
end_table
();
}
void
PptxConverter
::
convert
(
PPTX
::
Logic
::
TableRow
*
oox_table_row
)
{
odp_context
->
slide_context
()
->
start_table_row
(
oox_table_row
->
Height
.
IsInit
());
if
(
!
oox_table_row
)
return
;
if
(
oox_table_row
->
Height
.
IsInit
())
{
odf_writer
::
style_table_row_properties
*
table_row_properties
=
odp_context
->
styles_context
()
->
last_state
()
->
get_table_row_properties
();
table_row_properties
->
style_table_row_properties_attlist_
.
style_row_height_
=
odf_types
::
length
(
oox_table_row
->
Height
.
get
()
/
127000.
,
odf_types
::
length
::
pt
);
// table_row_properties->style_table_row_properties_attlist_.style_min_row_height_
}
for
(
size_t
i
=
0
;
i
<
oox_table_row
->
Cells
.
size
();
i
++
)
{
convert
(
&
oox_table_row
->
Cells
[
i
],
i
);
}
odp_context
->
slide_context
()
->
end_table_row
();
}
void
PptxConverter
::
convert
(
PPTX
::
Logic
::
TableCell
*
oox_table_cell
,
int
numCol
)
{
if
(
!
oox_table_cell
)
return
;
bool
covered
=
false
,
styled
=
false
;
if
(
oox_table_cell
->
VMerge
.
IsInit
()
||
oox_table_cell
->
HMerge
.
IsInit
())
covered
=
true
;
if
(
oox_table_cell
->
CellProperties
.
IsInit
())
styled
=
(
oox_table_cell
->
CellProperties
->
is_empty
==
false
);
odp_context
->
slide_context
()
->
start_table_cell
(
numCol
,
covered
,
styled
);
if
(
oox_table_cell
->
RowSpan
.
IsInit
())
odp_context
->
slide_context
()
->
table_context
()
->
set_cell_row_span
(
oox_table_cell
->
RowSpan
.
get
());
if
(
oox_table_cell
->
GridSpan
.
IsInit
())
odp_context
->
slide_context
()
->
table_context
()
->
set_cell_column_span
(
oox_table_cell
->
GridSpan
.
get
());
convert
(
oox_table_cell
->
CellProperties
.
GetPointer
(),
numCol
+
1
);
OoxConverter
::
convert
(
oox_table_cell
->
txBody
.
GetPointer
());
//nullable_string Id;
odp_context
->
slide_context
()
->
end_table_cell
();
}
bool
PptxConverter
::
convert
(
PPTX
::
Logic
::
TableCellProperties
*
oox_table_cell_pr
,
int
col
)
{
if
(
!
oox_table_cell_pr
)
return
false
;
if
(
oox_table_cell_pr
->
is_empty
)
return
false
;
bool
is_base_styled
=
odp_context
->
slide_context
()
->
table_context
()
->
is_styled
();
if
(
col
<
0
)
col
=
odp_context
->
slide_context
()
->
table_context
()
->
current_column
()
+
1
;
int
row
=
odp_context
->
slide_context
()
->
table_context
()
->
current_row
();
odf_writer
::
style_table_cell_properties
*
parent_cell_properties
=
NULL
;
std
::
wstring
parent_name
=
odp_context
->
slide_context
()
->
table_context
()
->
get_default_cell_properties
();
if
(
!
parent_name
.
empty
())
{
odf_writer
::
style
*
style_
=
NULL
;
if
(
odp_context
->
styles_context
()
->
find_odf_style
(
parent_name
,
odf_types
::
style_family
::
TableCell
,
style_
))
{
parent_cell_properties
=
style_
->
content_
.
get_style_table_cell_properties
();
}
}
if
(
oox_table_cell_pr
==
NULL
&&
is_base_styled
==
false
&&
parent_cell_properties
==
NULL
)
return
false
;
odf_writer
::
style_table_cell_properties
*
cell_properties
=
odp_context
->
styles_context
()
->
last_state
()
->
get_table_cell_properties
();
if
(
cell_properties
==
NULL
)
return
false
;
//if (is_base_styled)
//{
// odf_writer::style_text_properties * text_properties = odp_context->styles_context()->last_state()->get_text_properties();
// odf_writer::style_paragraph_properties * paragraph_properties = odp_context->styles_context()->last_state()->get_paragraph_properties();
// odf_writer::style_graphic_properties * graphic_properties = odp_context->styles_context()->last_state()->get_graphic_properties();
//
// if (col < 0)
// col = odp_context->slide_context()->table_context()->current_column() + 1;
// int row = odp_context->slide_context()->table_context()->current_row();
//
// odp_context->styles_context()->table_styles().get_table_cell_properties (col, row, cell_properties);
// odp_context->styles_context()->table_styles().get_text_properties (col, row, text_properties);
// odp_context->styles_context()->table_styles().get_paragraph_properties (col, row, paragraph_properties);
// odp_context->styles_context()->table_styles().get_graphic_properties (col, row, graphic_properties);
//}
cell_properties
->
apply_from
(
parent_cell_properties
);
//check for inside cell or not
_CP_OPT
(
std
::
wstring
)
border_inside_v
=
odp_context
->
slide_context
()
->
table_context
()
->
get_table_inside_v
();
_CP_OPT
(
std
::
wstring
)
border_inside_h
=
odp_context
->
slide_context
()
->
table_context
()
->
get_table_inside_h
();
if
((
border_inside_v
||
border_inside_h
))
{
if
(
cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_
)
//раскидаем по сторонам
{
if
(
cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_
->
is_none
()
==
false
)
{
cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_left_
=
cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_right_
=
cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_bottom_
=
cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_top_
=
cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_
;
}
cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_
=
boost
::
none
;
}
//если нет убрать, если да - добавить
if
(
border_inside_h
)
{
int
del_border
=
border_inside_h
->
find
(
L"none"
);
if
(
row
!=
1
)
{
if
(
cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_top_
&&
del_border
>=
0
)
cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_top_
=
boost
::
none
;
else
if
(
border_inside_h
&&
del_border
<
0
)
cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_top_
=
*
border_inside_h
;
}
if
(
row
!=
odp_context
->
slide_context
()
->
table_context
()
->
count_rows
())
{
if
(
cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_bottom_
&&
del_border
>=
0
)
cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_bottom_
=
boost
::
none
;
else
if
(
border_inside_h
&&
del_border
<
0
)
cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_bottom_
=
*
border_inside_h
;
}
}
if
(
border_inside_v
)
{
int
del_border
=
border_inside_v
->
find
(
L"none"
);
if
(
col
!=
1
)
{
if
(
cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_left_
&&
del_border
>=
0
)
cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_left_
=
boost
::
none
;
else
if
(
border_inside_h
&&
del_border
<
0
)
cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_left_
=
*
border_inside_h
;
}
if
(
col
!=
odp_context
->
slide_context
()
->
table_context
()
->
count_columns
())
{
if
(
cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_right_
&&
del_border
>=
0
)
cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_right_
=
boost
::
none
;
else
if
(
border_inside_h
&&
del_border
<
0
)
cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_right_
=
*
border_inside_h
;
}
}
}
bool
res
=
convert
(
oox_table_cell_pr
);
//last state
return
true
;
}
void
PptxConverter
::
convert
(
PPTX
::
Logic
::
Ln
*
oox_border
,
std
::
wstring
&
odf_border_prop
)
{
odf_border_prop
=
L""
;
if
(
!
oox_border
)
return
;
odp_context
->
drawing_context
()
->
start_line_properties
();
std
::
wstringstream
border_style
;
std
::
wstring
border_color
;
odf_types
::
length
length
;
length
=
odf_types
::
length
(
oox_border
->
w
.
IsInit
()
?
oox_border
->
w
.
get
()
/
127000.
:
1
,
odf_types
::
length
::
pt
);
length
=
odf_types
::
length
(
length
.
get_value_unit
(
odf_types
::
length
::
cm
),
odf_types
::
length
::
cm
);
border_style
<<
length
;
if
(
oox_border
->
prstDash
.
IsInit
()
&&
oox_border
->
prstDash
->
val
.
IsInit
())
{
switch
(
oox_border
->
prstDash
->
val
->
GetBYTECode
())
{
case
0
:
border_style
<<
L" dashed"
;
break
;
case
1
:
border_style
<<
L" dashed"
;
break
;
case
2
:
border_style
<<
L" dotted"
;
break
;
default:
border_style
<<
L" solid"
;
}
}
else
border_style
<<
L" solid"
;
///////////////////////////////////////////////////////////////////
_CP_OPT
(
odf_types
::
color
)
color
;
if
(
oox_border
->
Fill
.
is_init
())
{
OoxConverter
::
convert
(
&
oox_border
->
Fill
);
}
odp_context
->
drawing_context
()
->
end_line_properties
();
border_color
=
L"000000"
;
odf_border_prop
=
border_style
.
str
()
+
L" #"
+
border_color
;
}
bool
PptxConverter
::
convert
(
PPTX
::
Logic
::
TableCellProperties
*
oox_table_cell_pr
)
{
odf_writer
::
style_table_cell_properties
*
odf_cell_properties
=
odp_context
->
styles_context
()
->
last_state
()
->
get_table_cell_properties
();
if
(
!
oox_table_cell_pr
)
return
false
;
if
(
!
odf_cell_properties
)
return
false
;
if
(
oox_table_cell_pr
->
Fill
.
is_init
())
{
odp_context
->
drawing_context
()
->
start_area_properties
();
OoxConverter
::
convert
(
&
oox_table_cell_pr
->
Fill
);
odp_context
->
drawing_context
()
->
end_area_properties
();
}
if
(
oox_table_cell_pr
->
Vert
.
IsInit
())
{
switch
(
oox_table_cell_pr
->
Vert
->
GetBYTECode
())
{
case
1
:
odf_cell_properties
->
style_table_cell_properties_attlist_
.
style_direction_
=
odf_types
::
direction
(
odf_types
::
direction
::
Ltr
);
break
;
case
6
:
//rtl vert
break
;
default:
odf_cell_properties
->
style_table_cell_properties_attlist_
.
style_direction_
=
odf_types
::
direction
(
odf_types
::
direction
::
Ttb
);
break
;
}
}
if
(
oox_table_cell_pr
->
MarL
.
IsInit
())
{
odf_types
::
length
length
=
oox_table_cell_pr
->
MarL
.
get
()
/
127000.
;
odf_cell_properties
->
style_table_cell_properties_attlist_
.
common_padding_attlist_
.
fo_padding_left_
=
odf_types
::
length
(
length
.
get_value_unit
(
odf_types
::
length
::
cm
),
odf_types
::
length
::
cm
);
}
if
(
oox_table_cell_pr
->
MarR
.
IsInit
())
{
odf_types
::
length
length
=
oox_table_cell_pr
->
MarR
.
get
()
/
127000.
;
odf_cell_properties
->
style_table_cell_properties_attlist_
.
common_padding_attlist_
.
fo_padding_right_
=
odf_types
::
length
(
length
.
get_value_unit
(
odf_types
::
length
::
cm
),
odf_types
::
length
::
cm
);
}
if
(
oox_table_cell_pr
->
MarT
.
IsInit
())
{
odf_types
::
length
length
=
oox_table_cell_pr
->
MarT
.
get
()
/
127000.
;
odf_cell_properties
->
style_table_cell_properties_attlist_
.
common_padding_attlist_
.
fo_padding_top_
=
odf_types
::
length
(
length
.
get_value_unit
(
odf_types
::
length
::
cm
),
odf_types
::
length
::
cm
);
}
if
(
oox_table_cell_pr
->
MarB
.
IsInit
())
{
odf_types
::
length
length
=
oox_table_cell_pr
->
MarB
.
get
()
/
127000.
;
odf_cell_properties
->
style_table_cell_properties_attlist_
.
common_padding_attlist_
.
fo_padding_bottom_
=
odf_types
::
length
(
length
.
get_value_unit
(
odf_types
::
length
::
cm
),
odf_types
::
length
::
cm
);
}
if
(
oox_table_cell_pr
->
Vert
.
IsInit
())
{
switch
(
oox_table_cell_pr
->
Vert
->
GetBYTECode
())
{
//case SimpleTypes::verticaljcBoth : //??????
// odf_cell_properties->style_table_cell_properties_attlist_.style_vertical_align_ = odf_types::vertical_align(odf_types::vertical_align::Justify); break;
//case SimpleTypes::verticaljcBottom :
// odf_cell_properties->style_table_cell_properties_attlist_.style_vertical_align_ = odf_types::vertical_align(odf_types::vertical_align::Bottom); break;
//case SimpleTypes::verticaljcCenter :
// odf_cell_properties->style_table_cell_properties_attlist_.style_vertical_align_ = odf_types::vertical_align(odf_types::vertical_align::Middle); break;
//case SimpleTypes::verticaljcTop :
// odf_cell_properties->style_table_cell_properties_attlist_.style_vertical_align_ = odf_types::vertical_align(odf_types::vertical_align::Top); break;
}
}
//borders
std
::
wstring
left
,
right
,
top
,
bottom
,
other
;
convert
(
oox_table_cell_pr
->
LnB
.
GetPointer
(),
bottom
);
convert
(
oox_table_cell_pr
->
LnT
.
GetPointer
(),
top
);
convert
(
oox_table_cell_pr
->
LnL
.
GetPointer
(),
left
);
convert
(
oox_table_cell_pr
->
LnR
.
GetPointer
(),
right
);
if
(
bottom
==
top
&&
top
==
left
&&
left
==
right
&&
bottom
.
length
()
>
0
)
{
odf_cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_
=
left
;
odf_cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_bottom_
=
odf_cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_top_
=
odf_cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_left_
=
odf_cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_right_
=
boost
::
none
;
}
else
{
if
(
odf_cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_
)
{
odf_cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_bottom_
=
odf_cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_top_
=
odf_cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_left_
=
odf_cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_right_
=
odf_cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_
;
}
odf_cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_
=
boost
::
none
;
if
(
!
bottom
.
empty
()
)
odf_cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_bottom_
=
bottom
;
if
(
!
top
.
empty
()
)
odf_cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_top_
=
top
;
if
(
!
left
.
empty
()
)
odf_cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_left_
=
left
;
if
(
!
right
.
empty
()
)
odf_cell_properties
->
style_table_cell_properties_attlist_
.
common_border_attlist_
.
fo_border_right_
=
right
;
}
//convert(oox_border->m_oTL2BR.GetPointer() , other);
//if (other.length() >0 ) odf_cell_properties->style_table_cell_properties_attlist_.style_diagonal_tl_br_ = other;
//
//convert(oox_border->m_oTR2BL.GetPointer() , other);
//if (other.length() >0 )
//{
// odf_cell_properties->style_table_cell_properties_attlist_.style_diagonal_bl_tr_ = other;
//}
return
true
;
}
void
PptxConverter
::
convert
(
PPTX
::
Logic
::
Bg
*
oox_background
)
{
if
(
!
oox_background
)
return
;
...
...
@@ -334,6 +735,10 @@ void PptxConverter::convert(PPTX::Logic::CSld *oox_slide, bool placeholders)
{
if
(
oox_slide
==
NULL
)
return
;
if
(
current_theme
&&
current_clrMap
)
current_theme
->
SetColorMap
(
*
current_clrMap
);
if
(
oox_slide
->
attrName
.
IsInit
())
odp_context
->
current_slide
().
set_page_name
(
oox_slide
->
attrName
.
get
());
...
...
ASCOfficeOdfFileW/source/Oox2OdfConverter/PptxConverter.h
View file @
19960fa3
...
...
@@ -46,6 +46,7 @@ namespace OOX
}
namespace
PPTX
{
class
TableStyles
;
class
Presentation
;
class
Folder
;
...
...
@@ -55,6 +56,7 @@ namespace PPTX
class
Bg
;
class
Transition
;
class
Timing
;
class
TablePartStyle
;
}
}
...
...
@@ -97,12 +99,27 @@ namespace Oox2Odf
void
convert
(
PPTX
::
Logic
::
CSld
*
oox_slide
,
bool
placeholders
=
true
);
void
convert
(
PPTX
::
Logic
::
Bg
*
oox_background
);
private:
void
convert
(
PPTX
::
Logic
::
Table
*
oox_table
);
void
convert
(
PPTX
::
Logic
::
TableRow
*
oox_table_row
);
void
convert
(
PPTX
::
Logic
::
TableCell
*
oox_table_cell
,
int
numCol
);
void
convert
(
PPTX
::
Logic
::
TablePartStyle
*
oox_table_part_style
);
bool
convert
(
PPTX
::
Logic
::
TableCellProperties
*
oox_table_cell_pr
,
int
col
);
bool
convert
(
PPTX
::
Logic
::
TableCellProperties
*
oox_table_cell_pr
);
void
convert
(
PPTX
::
Logic
::
TableProperties
*
oox_table_pr
);
bool
convert
(
PPTX
::
Logic
::
TableProperties
*
oox_table_pr
,
odf_writer
::
style_table_properties
*
table_properties
);
void
convert
(
PPTX
::
Logic
::
TableProperties
*
oox_table_pr
,
odf_writer
::
style_table_cell_properties
*
table_cell_properties
);
void
convert
(
PPTX
::
Logic
::
Ln
*
oox_ln_boreder
,
std
::
wstring
&
odf_border
);
private:
PPTX
::
Folder
*
pptx_document
;
PPTX
::
Presentation
*
presentation
;
cpdoccore
::
odf_writer
::
package
::
odf_document
*
output_document
;
PPTX
::
Theme
*
current_theme
;
PPTX
::
TableStyles
*
current_tableStyles
;
OOX
::
IFileContainer
*
current_slide
;
PPTX
::
Logic
::
ClrMap
*
current_clrMap
;
...
...
ASCOfficePPTXFile/PPTXFormat/Logic/Table/TableCellProperties.h
View file @
19960fa3
...
...
@@ -52,6 +52,7 @@ namespace PPTX
TableCellProperties
()
{
is_empty
=
true
;
}
TableCellProperties
&
operator
=
(
const
TableCellProperties
&
oSrc
)
...
...
@@ -76,6 +77,9 @@ namespace PPTX
Anchor
=
oSrc
.
Anchor
;
AnchorCtr
=
oSrc
.
AnchorCtr
;
HorzOverflow
=
oSrc
.
HorzOverflow
;
is_empty
=
oSrc
.
is_empty
;
return
*
this
;
}
virtual
void
fromXML
(
XmlUtils
::
CXmlLiteReader
&
oReader
)
...
...
@@ -107,9 +111,13 @@ namespace PPTX
else
Fill
.
fromXML
(
oReader
);
}
FillParentPointersForChilds
();
}
void
ReadAttributes
(
XmlUtils
::
CXmlLiteReader
&
oReader
)
{
is_empty
=
(
oReader
.
GetAttributesCount
()
==
0
);
WritingElement_ReadAttributes_Start
(
oReader
)
WritingElement_ReadAttributes_Read_if
(
oReader
,
_T
(
"marL"
),
MarL
)
WritingElement_ReadAttributes_Read_else_if
(
oReader
,
_T
(
"marR"
),
MarR
)
...
...
@@ -123,6 +131,8 @@ namespace PPTX
}
virtual
void
fromXML
(
XmlUtils
::
CXmlNode
&
node
)
{
is_empty
=
(
node
.
GetAttributesCount
()
==
0
);
LnL
=
node
.
ReadNode
(
_T
(
"a:lnL"
));
LnR
=
node
.
ReadNode
(
_T
(
"a:lnR"
));
LnT
=
node
.
ReadNode
(
_T
(
"a:lnT"
));
...
...
@@ -324,7 +334,6 @@ namespace PPTX
pReader
->
Seek
(
_end_rec
);
}
public:
nullable
<
Ln
>
LnL
;
nullable
<
Ln
>
LnR
;
nullable
<
Ln
>
LnT
;
...
...
@@ -335,17 +344,22 @@ namespace PPTX
UniFill
Fill
;
// <xsd:element name="headers" type="CT_Headers" minOccurs="0"/>
nullable_int
MarL
;
//default="91440"
nullable_int
MarR
;
//default="91440"
nullable_int
MarT
;
//default="45720"
nullable_int
MarB
;
//default="45720"
nullable_limit
<
Limit
::
TextVerticalType
>
Vert
;
//default="horz"
nullable_limit
<
Limit
::
TextAnchor
>
Anchor
;
//default="t"
nullable_bool
AnchorCtr
;
//default="false"
nullable_limit
<
Limit
::
HorzOverflow
>
HorzOverflow
;
//default="clip"
nullable_int
MarL
;
//default="91440"
nullable_int
MarR
;
//default="91440"
nullable_int
MarT
;
//default="45720"
nullable_int
MarB
;
//default="45720"
nullable_limit
<
Limit
::
TextVerticalType
>
Vert
;
//default="horz"
nullable_limit
<
Limit
::
TextAnchor
>
Anchor
;
//default="t"
nullable_bool
AnchorCtr
;
//default="false"
nullable_limit
<
Limit
::
HorzOverflow
>
HorzOverflow
;
//default="clip"
bool
is_empty
;
protected:
virtual
void
FillParentPointersForChilds
()
{
is_empty
=
is_empty
&
!
(
LnL
.
IsInit
()
||
LnR
.
IsInit
()
||
LnT
.
IsInit
()
||
LnB
.
IsInit
()
||
LnTlToBr
.
IsInit
()
||
LnBlToTr
.
IsInit
()
||
cell3D
.
IsInit
()
||
Fill
.
is_init
());
if
(
LnL
.
IsInit
())
LnL
->
SetParentPointer
(
this
);
if
(
LnR
.
IsInit
())
...
...
Common/DocxFormat/Source/DocxFormat/Logic/Table.h
View file @
19960fa3
...
...
@@ -618,7 +618,7 @@ namespace OOX
CTableCellProperties
*
GetProperties
()
{
for
(
size_t
nIndex
=
m_arrItems
.
size
()
-
1
;
nIndex
>=
0
;
nIndex
--
)
for
(
int
nIndex
=
(
int
)
m_arrItems
.
size
()
-
1
;
nIndex
>=
0
;
nIndex
--
)
{
if
(
m_arrItems
[
nIndex
]
&&
OOX
::
et_w_tcPr
==
m_arrItems
[
nIndex
]
->
getType
()
)
{
...
...
DesktopEditor/xml/include/xmlutils.h
View file @
19960fa3
...
...
@@ -209,6 +209,8 @@ namespace XmlUtils
std
::
wstring
ReadAttributeBase
(
const
wchar_t
*
bstrName
);
std
::
wstring
ReadAttribute
(
const
std
::
wstring
&
strAttibuteName
);
int
GetAttributesCount
();
std
::
string
GetAttributeA
(
const
std
::
string
&
sName
,
const
std
::
string
&
_default
=
""
);
std
::
string
GetAttributeA
(
const
std
::
wstring
&
sName
,
const
std
::
string
&
_default
=
""
);
...
...
DesktopEditor/xml/src/xmldom.cpp
View file @
19960fa3
...
...
@@ -434,6 +434,15 @@ namespace XmlUtils
{
return
GetAttribute
(
std
::
wstring
(
strAttributeName
),
strDefaultValue
);
}
int
CXmlNode
::
GetAttributesCount
()
{
if
(
IsValid
())
{
return
m_pBase
->
m_attributes
.
size
();
}
else
return
0
;
}
bool
CXmlNode
::
GetAttributeIfExist
(
const
std
::
wstring
&
sName
,
std
::
wstring
&
sOutput
)
{
bool
bRes
=
false
;
...
...
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