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
114b80ff
Commit
114b80ff
authored
May 24, 2016
by
ElenaSubbotina
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
OdfFormatReader - поправлены формулы, ссылки и составная графика Vehicle log book.ods
parent
caa94587
Changes
33
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
920 additions
and
638 deletions
+920
-638
ASCOfficeOdfFile/formulasconvert/formulasconvert_odf.cpp
ASCOfficeOdfFile/formulasconvert/formulasconvert_odf.cpp
+5
-5
ASCOfficeOdfFile/src/docx/drawing_object_description.h
ASCOfficeOdfFile/src/docx/drawing_object_description.h
+23
-19
ASCOfficeOdfFile/src/docx/oox_chart_context.cpp
ASCOfficeOdfFile/src/docx/oox_chart_context.cpp
+2
-1
ASCOfficeOdfFile/src/docx/oox_chart_legend.cpp
ASCOfficeOdfFile/src/docx/oox_chart_legend.cpp
+2
-0
ASCOfficeOdfFile/src/docx/oox_chart_series.cpp
ASCOfficeOdfFile/src/docx/oox_chart_series.cpp
+54
-7
ASCOfficeOdfFile/src/docx/oox_chart_series.h
ASCOfficeOdfFile/src/docx/oox_chart_series.h
+9
-8
ASCOfficeOdfFile/src/docx/oox_chart_shape.h
ASCOfficeOdfFile/src/docx/oox_chart_shape.h
+2
-2
ASCOfficeOdfFile/src/docx/oox_data_labels.cpp
ASCOfficeOdfFile/src/docx/oox_data_labels.cpp
+7
-7
ASCOfficeOdfFile/src/docx/oox_data_labels.h
ASCOfficeOdfFile/src/docx/oox_data_labels.h
+7
-7
ASCOfficeOdfFile/src/docx/oox_drawing.cpp
ASCOfficeOdfFile/src/docx/oox_drawing.cpp
+39
-33
ASCOfficeOdfFile/src/docx/oox_drawing.h
ASCOfficeOdfFile/src/docx/oox_drawing.h
+2
-2
ASCOfficeOdfFile/src/docx/oox_plot_area.cpp
ASCOfficeOdfFile/src/docx/oox_plot_area.cpp
+9
-2
ASCOfficeOdfFile/src/docx/oox_title.cpp
ASCOfficeOdfFile/src/docx/oox_title.cpp
+3
-2
ASCOfficeOdfFile/src/docx/oox_types_chart.h
ASCOfficeOdfFile/src/docx/oox_types_chart.h
+27
-7
ASCOfficeOdfFile/src/docx/pptx_slide_context.cpp
ASCOfficeOdfFile/src/docx/pptx_slide_context.cpp
+43
-43
ASCOfficeOdfFile/src/docx/xlsx_drawing.cpp
ASCOfficeOdfFile/src/docx/xlsx_drawing.cpp
+76
-18
ASCOfficeOdfFile/src/docx/xlsx_drawing.h
ASCOfficeOdfFile/src/docx/xlsx_drawing.h
+9
-2
ASCOfficeOdfFile/src/docx/xlsx_drawing_context.cpp
ASCOfficeOdfFile/src/docx/xlsx_drawing_context.cpp
+333
-249
ASCOfficeOdfFile/src/docx/xlsx_drawing_context.h
ASCOfficeOdfFile/src/docx/xlsx_drawing_context.h
+48
-41
ASCOfficeOdfFile/src/docx/xlsx_drawings.cpp
ASCOfficeOdfFile/src/docx/xlsx_drawings.cpp
+49
-49
ASCOfficeOdfFile/src/docx/xlsx_drawings.h
ASCOfficeOdfFile/src/docx/xlsx_drawings.h
+12
-22
ASCOfficeOdfFile/src/docx/xlsx_package.cpp
ASCOfficeOdfFile/src/docx/xlsx_package.cpp
+2
-1
ASCOfficeOdfFile/src/docx/xlsx_textcontext.cpp
ASCOfficeOdfFile/src/docx/xlsx_textcontext.cpp
+8
-2
ASCOfficeOdfFile/src/docx/xlsxconversioncontext.cpp
ASCOfficeOdfFile/src/docx/xlsxconversioncontext.cpp
+1
-3
ASCOfficeOdfFile/src/odf/chart_build_oox.cpp
ASCOfficeOdfFile/src/odf/chart_build_oox.cpp
+25
-9
ASCOfficeOdfFile/src/odf/chart_build_oox.h
ASCOfficeOdfFile/src/odf/chart_build_oox.h
+1
-1
ASCOfficeOdfFile/src/odf/chart_objects.h
ASCOfficeOdfFile/src/odf/chart_objects.h
+26
-19
ASCOfficeOdfFile/src/odf/datatypes/common_attlists.h
ASCOfficeOdfFile/src/odf/datatypes/common_attlists.h
+7
-7
ASCOfficeOdfFile/src/odf/draw_frame_xlsx.cpp
ASCOfficeOdfFile/src/odf/draw_frame_xlsx.cpp
+52
-36
ASCOfficeOdfFile/src/odf/draw_shapes_xlsx.cpp
ASCOfficeOdfFile/src/odf/draw_shapes_xlsx.cpp
+10
-1
ASCOfficeOdfFile/src/odf/table.cpp
ASCOfficeOdfFile/src/odf/table.cpp
+6
-24
ASCOfficeOdfFile/src/odf/table.h
ASCOfficeOdfFile/src/odf/table.h
+11
-9
ASCOfficeOdfFile/src/odf/table_xlsx.cpp
ASCOfficeOdfFile/src/odf/table_xlsx.cpp
+10
-0
No files found.
ASCOfficeOdfFile/formulasconvert/formulasconvert_odf.cpp
View file @
114b80ff
...
...
@@ -118,7 +118,7 @@ namespace formulasconvert {
}
std
::
wstring
replace_named_ref_formater1
(
boost
::
wsmatch
const
&
what
)
{
boost
::
wregex
complexRef
(
L"
\\
$([^
\\
.]+?){0,1}
\\
.(
\\
$[a-zA-Z]+
\\
$
\\
d+)(?::
\\
.(
\\
$[a-zA-Z]+
\\
$
\\
d+)){0,1}"
);
boost
::
wregex
complexRef
(
L"
\\
$([^
\\
.]+?){0,1}
\\
.(
\\
$[a-zA-Z]+
\\
$
{0,1}
\\
d+)(?::
\\
.(
\\
$[a-zA-Z]+
\\
${0,1}
\\
d+)){0,1}"
);
std
::
wstring
expr
=
what
[
1
].
str
();
const
std
::
wstring
res
=
boost
::
regex_replace
(
...
...
@@ -141,8 +141,8 @@ namespace formulasconvert {
void
odf2oox_converter
::
Impl
::
replace_cells_range
(
std
::
wstring
&
expr
)
{
//boost::wregex simpleRef(L"\\[\\.([a-zA-Z]+\\d+)(?::\\.([a-zA-Z]+\\d+)){0,1}\\]");
//boost::wregex complexRef(L"\\[(?:\\$)?([^\\.]+?){0,1}\\.([a-zA-Z\\$]+\\d+)(?::\\.([a-zA-Z]+
\\d+)){0,1}\\]");
boost
::
wregex
complexRef
(
L"
\\
[(.*?)
\\
]"
);
boost
::
wregex
complexRef
(
L"
\\
[(?:
\\
$)?([^
\\
.]+?){0,1}
\\
.(
\\
${0,1}[a-zA-Z]+
\\
${0,1}
\\
d+)(?::
\\
.(
\\
${0,1}[a-zA-Z]+
\\
${0,1}
\\
d+)){0,1}
\\
]"
);
//
boost::wregex complexRef(L"\\[(.*?)\\]");
/*
[ $ Sheet2 . A1 : . B5 ]
...
...
@@ -151,7 +151,7 @@ void odf2oox_converter::Impl::replace_cells_range(std::wstring& expr)
const
std
::
wstring
res
=
boost
::
regex_replace
(
expr
,
complexRef
,
&
replace_named_ref_formater
1
,
&
replace_named_ref_formater
,
boost
::
match_default
|
boost
::
format_all
);
expr
=
res
;
}
...
...
@@ -160,7 +160,7 @@ void odf2oox_converter::Impl::replace_cells_range(std::wstring& expr)
void
odf2oox_converter
::
Impl
::
replace_named_ref
(
std
::
wstring
&
expr
)
{
boost
::
wregex
complexRef
(
L"
\\
$([^
\\
.]+?){0,1}
\\
.(
\\
$[a-zA-Z]+
\\
$
\\
d+)(?::
\\
.(
\\
$[a-zA-Z]+
\\
$
\\
d+)){0,1}"
);
boost
::
wregex
complexRef
(
L"
\\
$([^
\\
.]+?){0,1}
\\
.(
\\
$[a-zA-Z]+
\\
${0,1}
\\
d+)(?::
\\
.(
\\
$[a-zA-Z]+
\\
${0,1}
\\
d+)){0,1}"
);
const
std
::
wstring
res
=
boost
::
regex_replace
(
expr
,
...
...
ASCOfficeOdfFile/src/docx/drawing_object_description.h
View file @
114b80ff
...
...
@@ -7,36 +7,40 @@ namespace oox {
struct
_rect
{
double
width_
;
double
height_
;
double
x_
;
double
y_
;
};
_rect
()
:
x
(
0
),
y
(
0
),
cx
(
0
),
cy
(
0
)
{}
_rect
(
double
cx_
,
double
cy_
,
double
x_
,
double
y_
)
:
x
(
x_
),
y
(
y_
),
cx
(
cx_
),
cy
(
cy_
)
{}
//+ 3-
double
cx
;
double
cy
;
double
x
;
double
y
;
};
struct
drawing_object_description
{
std
::
wstring
draw_name_
;
_CP_OPT
(
_rect
)
svg_rect_
;
oox
::
mediaitems
::
Type
type_
;
std
::
wstring
anchor_
;
double
anchor_x_
;
double
anchor_y_
;
std
::
wstring
name_
;
_CP_OPT
(
_rect
)
svg_rect_
;
std
::
vector
<
_hlink_desc
>
hlinks_
;
std
::
wstring
anchor_
;
double
anchor_x_
;
double
anchor_y_
;
std
::
vector
<
odf_reader
::
_property
>
additional_
;
//for shapes
std
::
vector
<
_hlink_desc
>
hlinks_
;
std
::
vector
<
odf_reader
::
_property
>
additional_
;
//shape properties
std
::
wstring
xlink_href_
;
//
std
::
wstring
clipping_string_
;
std
::
wstring
xlink_href_
;
//
std
::
wstring
clipping_string_
;
_oox_fill
fill_
;
_oox_fill
fill_
;
bool
use_image_replace_
;
bool
in_group_
;
bool
use_image_replace_
;
int
shape_type_
;
//default - frame
int
type_
;
//default - frame
std
::
vector
<
drawing_object_description
>
child_objects_
;
};
}
...
...
ASCOfficeOdfFile/src/docx/oox_chart_context.cpp
View file @
114b80ff
...
...
@@ -84,7 +84,8 @@ void oox_chart_context::write_to(std::wostream & strm)
}
}
oox_chart_shape
shape
;
shape
.
set
(
graphic_properties_
,
fill_
);
shape
.
set
(
graphic_properties_
,
fill_
);
shape
.
set
(
graphic_properties_
,
fill_
);
shape
.
oox_serialize
(
CP_XML_STREAM
());
...
...
ASCOfficeOdfFile/src/docx/oox_chart_legend.cpp
View file @
114b80ff
...
...
@@ -56,6 +56,8 @@ void oox_chart_legend::oox_serialize_default_text(std::wostream & _Wostream)
void
oox_chart_legend
::
oox_serialize
(
std
::
wostream
&
_Wostream
)
{
if
(
content_
.
bEnabled
==
false
)
return
;
oox_chart_shape
shape
;
CP_XML_WRITER
(
_Wostream
)
...
...
ASCOfficeOdfFile/src/docx/oox_chart_series.cpp
View file @
114b80ff
...
...
@@ -76,6 +76,9 @@ void oox_chart_series::setFormula(int ind, std::wstring &value)
}
else
{
long
res
=
value
.
find
(
L"local-table"
);
if
(
res
>=
0
&&
!
bLocalTable_
)
return
;
// xlsx .... table.xml
values_
[
ind
].
numRef_
.
formula
=
converter
.
convert_chart_distance
(
value
);
values_
[
ind
].
numRef_
.
present
=
true
;
values_
[
ind
].
present
=
true
;
...
...
@@ -89,19 +92,41 @@ void oox_chart_series::set_cache_only (bool val)
void
oox_chart_series
::
parse_properties
()
{
_CP_OPT
(
int
)
iSymbolType
;
odf_reader
::
GetProperty
(
content_
.
properties_
,
L"symbol-type"
,
iSymbolType
);
// noneSymbol, autoSymbol, namedSymbol
_CP_OPT
(
int
)
intVal
;
_CP_OPT
(
bool
)
boolVal
;
_CP_OPT
(
std
::
wstring
)
strVal
;
odf_reader
::
GetProperty
(
content_
.
properties_
,
L"symbol-type"
,
intVal
);
// noneSymbol, autoSymbol, namedSymbol
if
(
i
SymbolType
)
if
(
i
ntVal
)
{
iSymbolMarkerType_
=
i
SymbolType
.
get
()
;
iSymbolMarkerType_
=
i
ntVal
.
get
()
;
if
(
iSymbolMarkerType_
==
2
)
{
odf_reader
::
GetProperty
(
content_
.
properties_
,
L"symbol-name"
,
iSymbolType
);
// , ...
if
(
iSymbolType
)
iSymbolMarkerType_
=
iSymbolType
.
get
()
;
else
iSymbolMarkerType_
=
0
;
//
odf_reader
::
GetProperty
(
content_
.
properties_
,
L"symbol-name"
,
intVal
);
// , ...
if
(
intVal
)
iSymbolMarkerType_
=
intVal
.
get
()
;
else
iSymbolMarkerType_
=
0
;
//
}
}
//odf_reader::GetProperty(content_.properties_, L"data-label-symbol", boolVal);
//if (boolVal)
//{
// if (!data_labels) data_labels_ = oox_data_labels();
// //data_labels_->
//}
odf_reader
::
GetProperty
(
content_
.
properties_
,
L"data-label-text"
,
boolVal
);
if
(
boolVal
)
{
if
(
!
data_labels_
)
data_labels_
=
oox_data_labels
();
data_labels_
->
set_showCatName
(
*
boolVal
);
}
odf_reader
::
GetProperty
(
content_
.
properties_
,
L"data-label-number"
,
intVal
);
if
(
intVal
)
{
if
(
!
data_labels_
)
data_labels_
=
oox_data_labels
();
if
(
*
intVal
==
1
)
data_labels_
->
set_showVal
(
true
);
if
(
*
intVal
==
2
)
data_labels_
->
set_showPercent
(
true
);
}
}
void
oox_chart_series
::
setValues
(
int
ind
,
std
::
vector
<
std
::
wstring
>
&
values
)
{
...
...
@@ -328,6 +353,28 @@ void oox_chart_series::oox_serialize_common(std::wostream & _Wostream)
}
}
if
(
data_labels_
)
data_labels_
->
oox_serialize
(
_Wostream
);
int
indPoint
=
0
;
for
(
int
i
=
0
;
i
<
content_
.
points_
.
size
();
i
++
)
{
for
(
int
j
=
0
;
j
<
content_
.
points_
[
i
].
repeated_
;
j
++
)
{
CP_XML_NODE
(
L"c:dPt"
)
{
CP_XML_NODE
(
L"c:idx"
)
{
CP_XML_ATTR
(
L"val"
,
indPoint
++
);
}
if
(
content_
.
points_
[
i
].
graphic_properties_
.
size
()
>
0
&&
content_
.
points_
[
i
].
fill_
.
type
>=
0
)
{
shape
.
set
(
content_
.
points_
[
i
].
graphic_properties_
,
content_
.
points_
[
i
].
fill_
);
shape
.
oox_serialize
(
CP_XML_STREAM
());
}
}
}
}
}
}
//backward (Backward) 21.2.2.12
...
...
ASCOfficeOdfFile/src/docx/oox_chart_series.h
View file @
114b80ff
...
...
@@ -5,7 +5,8 @@
#include "../odf/chart_objects.h"
#include "oox_chart_values.h"
#include "oox_data_labels.h"
namespace
cpdoccore
{
namespace
oox
{
...
...
@@ -21,12 +22,13 @@ public:
void
oox_serialize_common
(
std
::
wostream
&
_Wostream
);
virtual
void
oox_serialize
(
std
::
wostream
&
_Wostream
){}
_oox_chart_values
values_
[
5
];
//cat(labels), common, x, y, bubble,
int
id_
;
std
::
wstring
name_
;
//tx (Series Text) 21.2.2.215
int
iSymbolMarkerType_
;
bool
bLocalTable_
;
_oox_chart_values
values_
[
5
];
//cat(labels), common, x, y, bubble,
int
id_
;
std
::
wstring
name_
;
//tx (Series Text) 21.2.2.215
int
iSymbolMarkerType_
;
bool
bLocalTable_
;
_CP_OPT
(
oox_data_labels
)
data_labels_
;
void
setName
(
std
::
wstring
&
value
);
...
...
@@ -38,7 +40,6 @@ public:
odf_reader
::
chart
::
series
content_
;
//dLbls (Data Labels) 21.2.2.49
//dPt (Data Point) 21.2.2.52
//extLst (Chart Extensibility) 21.2.2.64
//idx (Index) 21.2.2.84
...
...
ASCOfficeOdfFile/src/docx/oox_chart_shape.h
View file @
114b80ff
...
...
@@ -21,8 +21,8 @@ public:
void
oox_serialize
(
std
::
wostream
&
_Wostream
);
private:
std
::
vector
<
odf_reader
::
_property
>
content_
;
_oox_fill
fill_
;
std
::
vector
<
odf_reader
::
_property
>
content_
;
_oox_fill
fill_
;
private:
...
...
ASCOfficeOdfFile/src/docx/oox_data_labels.cpp
View file @
114b80ff
...
...
@@ -12,13 +12,13 @@ namespace oox {
oox_data_labels
::
oox_data_labels
()
//
{
//
showBubbleSize_
=
false
;
showCatName_
=
false
;
showLeaderLines_
=
false
;
showLegendKey_
=
false
;
showPercent_
=
false
;
showSerName_
=
false
;
showVal_
=
false
;
showBubbleSize_
=
false
;
showCatName_
=
false
;
showLeaderLines_
=
false
;
showLegendKey_
=
false
;
showPercent_
=
false
;
showSerName_
=
false
;
showVal_
=
false
;
}
void
oox_data_labels
::
oox_serialize
(
std
::
wostream
&
_Wostream
)
{
...
...
ASCOfficeOdfFile/src/docx/oox_data_labels.h
View file @
114b80ff
...
...
@@ -10,7 +10,7 @@
namespace
cpdoccore
{
namespace
oox
{
class
oox_data_labels
:
boost
::
noncopyable
class
oox_data_labels
{
public:
oox_data_labels
();
...
...
@@ -18,13 +18,13 @@ public:
void
oox_serialize
(
std
::
wostream
&
_Wostream
);
void
set_showBubbleSize
(
bool
Val
){
showBubbleSize_
=
Val
;}
void
set_showCatName
(
bool
Val
){
showCatName_
=
Val
;}
void
set_showBubbleSize
(
bool
Val
){
showBubbleSize_
=
Val
;}
void
set_showCatName
(
bool
Val
){
showCatName_
=
Val
;}
void
set_showLeaderLines
(
bool
Val
){
showLeaderLines_
=
Val
;}
void
set_showLegendKey
(
bool
Val
){
showLegendKey_
=
Val
;}
void
set_showPercent
(
bool
Val
){
showPercent_
=
Val
;}
void
set_showSerName
(
bool
Val
){
showSerName_
=
Val
;}
void
set_showVal
(
bool
Val
){
showVal_
=
Val
;}
void
set_showLegendKey
(
bool
Val
){
showLegendKey_
=
Val
;}
void
set_showPercent
(
bool
Val
){
showPercent_
=
Val
;}
void
set_showSerName
(
bool
Val
){
showSerName_
=
Val
;}
void
set_showVal
(
bool
Val
){
showVal_
=
Val
;}
private:
...
...
ASCOfficeOdfFile/src/docx/oox_drawing.cpp
View file @
114b80ff
...
...
@@ -72,8 +72,6 @@ void oox_serialize_ln(std::wostream & strm, const std::vector<odf_reader::_prope
if
((
!
strStrokeColor
&&
!
iStroke
&&
!
dStrokeWidth
)
&&
!
always_draw
)
return
;
if
((
iStroke
)
&&
(
*
iStroke
==
0
))
return
;
//none
CP_XML_WRITER
(
strm
)
{
CP_XML_NODE
(
L"a:ln"
)
...
...
@@ -88,9 +86,12 @@ void oox_serialize_ln(std::wostream & strm, const std::vector<odf_reader::_prope
else
dash_style
=
_ooxDashStyle
[
iStroke
.
get
()];
}
if
((
dStrokeWidth
)
&&
(
dStrokeWidth
.
get
()
>=
0
))
if
((
dStrokeWidth
)
&&
(
dStrokeWidth
.
get
()
>=
0
)
&&
fill
!=
L"a:noFill"
)
{
CP_XML_ATTR
(
L"w"
,
static_cast
<
size_t
>
(
dStrokeWidth
.
get
()
*
12700
));
//in emu (1 pt = 12700)
int
val
=
dStrokeWidth
.
get
()
*
12700
;
//in emu (1 pt = 12700)
if
(
val
<
10
)
val
=
12700
;
CP_XML_ATTR
(
L"w"
,
val
);
if
(
color
.
length
()
<
1
)
color
=
L"729FCF"
;
}
...
...
@@ -98,31 +99,36 @@ void oox_serialize_ln(std::wostream & strm, const std::vector<odf_reader::_prope
{
if
(
fill
!=
L"a:noFill"
)
{
if
(
color
.
length
()
<
1
&&
always_draw
)
color
=
L"000000"
;
else
if
(
color
.
length
()
<
1
)
color
=
L"ffffff"
;
if
(
color
.
length
()
<
1
&&
always_draw
)
color
=
L"000000"
;
else
if
(
color
.
length
()
<
1
)
color
=
L"ffffff"
;
CP_XML_NODE
(
L"a:srgbClr"
)
{
CP_XML_ATTR
(
L"val"
,
color
);
if
(
strStrokeOpacity
)
CP_XML_NODE
(
L"a:alpha"
){
CP_XML_ATTR
(
L"val"
,
strStrokeOpacity
.
get
());}
}
}
}
_CP_OPT
(
std
::
wstring
)
strVal
;
if
(
dash_style
.
length
()
>
0
&&
dash_style
!=
L"solid"
)
{
CP_XML_NODE
(
L"a:prstDash"
){
CP_XML_ATTR
(
L"val"
,
dash_style
);}
}
odf_reader
::
GetProperty
(
prop
,
L"marker-start"
,
strVal
);
if
(
strVal
)
if
(
fill
!=
L"a:noFill"
)
{
CP_XML_NODE
(
L"a:headEnd"
){
CP_XML_ATTR
(
L"type"
,
strVal
.
get
());}
}
odf_reader
::
GetProperty
(
prop
,
L"marker-end"
,
strVal
);
if
(
strVal
)
{
CP_XML_NODE
(
L"a:tailEnd"
){
CP_XML_ATTR
(
L"type"
,
strVal
.
get
());}
_CP_OPT
(
std
::
wstring
)
strVal
;
if
(
dash_style
.
length
()
>
0
&&
dash_style
!=
L"solid"
)
{
CP_XML_NODE
(
L"a:prstDash"
){
CP_XML_ATTR
(
L"val"
,
dash_style
);}
}
odf_reader
::
GetProperty
(
prop
,
L"marker-start"
,
strVal
);
if
(
strVal
)
{
CP_XML_NODE
(
L"a:headEnd"
){
CP_XML_ATTR
(
L"type"
,
strVal
.
get
());}
}
odf_reader
::
GetProperty
(
prop
,
L"marker-end"
,
strVal
);
if
(
strVal
)
{
CP_XML_NODE
(
L"a:tailEnd"
){
CP_XML_ATTR
(
L"type"
,
strVal
.
get
());}
}
}
}
}
...
...
@@ -425,19 +431,19 @@ void oox_serialize_xfrm(std::wostream & strm, _oox_drawing & val, const std::wst
_CP_LOG
<<
L"[error!!!] not set size object
\n
"
;
}
//
if (val.type == mediaitems::typeGroup)
//
{
//
CP_XML_NODE(L"a:chOff")
//
{
//
CP_XML_ATTR(L"x", 0);
//
CP_XML_ATTR(L"y", 0);
//
}
//
CP_XML_NODE(L"a:chExt")
//
{
//
CP_XML_ATTR(L"cx", val.cx);
//
CP_XML_ATTR(L"cy", val.cy);
//
}
//
}
if
(
val
.
type
==
mediaitems
::
typeGroup
)
{
CP_XML_NODE
(
L"a:chOff"
)
{
CP_XML_ATTR
(
L"x"
,
0
);
CP_XML_ATTR
(
L"y"
,
0
);
}
CP_XML_NODE
(
L"a:chExt"
)
{
CP_XML_ATTR
(
L"cx"
,
val
.
cx
);
CP_XML_ATTR
(
L"cy"
,
val
.
cy
);
}
}
}
}
}
...
...
ASCOfficeOdfFile/src/docx/oox_drawing.h
View file @
114b80ff
...
...
@@ -43,8 +43,8 @@ namespace oox {
}
mediaitems
::
Type
type
;
bool
inGroup
;
size_t
id
;
bool
inGroup
;
size_t
id
;
std
::
wstring
name
;
...
...
ASCOfficeOdfFile/src/docx/oox_plot_area.cpp
View file @
114b80ff
...
...
@@ -97,14 +97,21 @@ void oox_plot_area::oox_serialize(std::wostream & _Wostream)
CP_XML_NODE
(
L"c:plotArea"
)
{
//CP_XML_NODE(L"c:layout"){}
bool
axisPresent
=
true
;
BOOST_FOREACH
(
oox_chart_ptr
const
&
ch
,
charts_
)
{
ch
->
oox_serialize
(
CP_XML_STREAM
());
if
(
ch
->
type_
==
CHART_TYPE_PIE
||
ch
->
type_
==
CHART_TYPE_DOUGHNUT
)
axisPresent
=
false
;
}
BOOST_FOREACH
(
oox_axis_content_ptr
const
&
a
,
axis_
)
if
(
axisPresent
)
{
a
->
oox_serialize
(
CP_XML_STREAM
());
BOOST_FOREACH
(
oox_axis_content_ptr
const
&
a
,
axis_
)
{
a
->
oox_serialize
(
CP_XML_STREAM
());
}
}
shape
.
oox_serialize
(
CP_XML_STREAM
());
}
...
...
ASCOfficeOdfFile/src/docx/oox_title.cpp
View file @
114b80ff
...
...
@@ -11,8 +11,9 @@ namespace oox {
void
oox_title
::
oox_serialize
(
std
::
wostream
&
_Wostream
)
{
if
(
content_
.
content_
.
length
()
<
1
)
return
;
CP_XML_WRITER
(
_Wostream
)
if
(
content_
.
content_
.
length
()
<
1
)
return
;
CP_XML_WRITER
(
_Wostream
)
{
CP_XML_NODE
(
L"c:title"
)
{
...
...
ASCOfficeOdfFile/src/docx/oox_types_chart.h
View file @
114b80ff
...
...
@@ -10,7 +10,16 @@
#include "oox_chart_series.h"
#include "oox_data_labels.h"
#define CHART_TYPE_LINE 1
#define CHART_TYPE_AREA 2
#define CHART_TYPE_PIE 3
#define CHART_TYPE_DOUGHNUT 4
#define CHART_TYPE_SCATTER 5
#define CHART_TYPE_RADAR 6
#define CHART_TYPE_BAR 7
#define CHART_TYPE_STOCK 8
#define CHART_TYPE_BUBBLE 9
namespace
cpdoccore
{
namespace
oox
{
...
...
@@ -25,6 +34,7 @@ public:
{
grouping_
=
L"standard"
;
is3D_
=
false
;
type_
=
0
;
}
~
oox_chart
(){}
...
...
@@ -53,8 +63,9 @@ public:
axisId_
.
push_back
(
id
);
}
oox_data_labels
data_labels_
;
//dLbls (Data Labels) 21.2.2.49
oox_data_labels
data_labels_
;
//dLbls (Data Labels) 21.2.2.49
int
type_
;
bool
is3D_
;
std
::
vector
<
int
>
axisId_
;
//axId (Axis ID) 21.2.2.9
std
::
wstring
grouping_
;
// clustered | percentStacked | stacked | standard
...
...
@@ -75,7 +86,8 @@ class oox_bar_chart: public oox_chart
public:
oox_bar_chart
()
{
grouping_
=
L"clustered"
;
type_
=
CHART_TYPE_BAR
;
grouping_
=
L"clustered"
;
}
~
oox_bar_chart
(){}
...
...
@@ -108,6 +120,7 @@ class oox_line_chart: public oox_chart
public:
oox_line_chart
()
{
type_
=
CHART_TYPE_LINE
;
}
~
oox_line_chart
(){}
...
...
@@ -137,6 +150,7 @@ class oox_area_chart: public oox_chart
public:
oox_area_chart
()
{
type_
=
CHART_TYPE_AREA
;
//grouping_ = L"clustered";
}
~
oox_area_chart
(){}
...
...
@@ -159,7 +173,8 @@ class oox_bubble_chart: public oox_chart
public:
oox_bubble_chart
()
{
grouping_
=
L""
;
type_
=
CHART_TYPE_BUBBLE
;
grouping_
=
L""
;
}
~
oox_bubble_chart
(){}
...
...
@@ -185,6 +200,7 @@ class oox_doughnut_chart: public oox_chart
public:
oox_doughnut_chart
()
{
type_
=
CHART_TYPE_DOUGHNUT
;
}
~
oox_doughnut_chart
(){}
...
...
@@ -208,6 +224,7 @@ class oox_pie_chart: public oox_chart
public:
oox_pie_chart
()
{
type_
=
CHART_TYPE_PIE
;
}
~
oox_pie_chart
(){}
...
...
@@ -229,7 +246,8 @@ class oox_radar_chart: public oox_chart
public:
oox_radar_chart
(
std
::
wstring
style
)
{
grouping_
=
L""
;
type_
=
CHART_TYPE_RADAR
;
grouping_
=
L""
;
radarStyle_
=
style
;
}
~
oox_radar_chart
(){}
...
...
@@ -253,7 +271,8 @@ class oox_scatter_chart: public oox_chart
public:
oox_scatter_chart
()
{
grouping_
=
L""
;
type_
=
CHART_TYPE_SCATTER
;
grouping_
=
L""
;
}
~
oox_scatter_chart
(){}
...
...
@@ -277,7 +296,8 @@ class oox_stock_chart: public oox_chart
public:
oox_stock_chart
()
{
grouping_
=
L""
;
type_
=
CHART_TYPE_STOCK
;
grouping_
=
L""
;
}
~
oox_stock_chart
(){}
...
...
ASCOfficeOdfFile/src/docx/pptx_slide_context.cpp
View file @
114b80ff
...
...
@@ -171,7 +171,7 @@ void pptx_slide_context::default_set()
{
impl_
->
object_description_
.
xlink_href_
=
L""
;
impl_
->
object_description_
.
draw_
name_
=
L""
;
impl_
->
object_description_
.
name_
=
L""
;
impl_
->
object_description_
.
additional_
.
clear
();
impl_
->
object_description_
.
anchor_
=
L""
;
...
...
@@ -203,8 +203,7 @@ void pptx_slide_context::set_placeHolder_idx(int idx)
void
pptx_slide_context
::
set_rect
(
double
width_pt
,
double
height_pt
,
double
x_pt
,
double
y_pt
)
{
_rect
r
=
{
width_pt
,
height_pt
,
x_pt
,
y_pt
};
impl_
->
object_description_
.
svg_rect_
=
r
;
impl_
->
object_description_
.
svg_rect_
=
_rect
(
width_pt
,
height_pt
,
x_pt
,
y_pt
);
}
void
pptx_slide_context
::
set_rotate
(
double
angle
)
...
...
@@ -226,11 +225,10 @@ void pptx_slide_context::set_translate(double x_pt, double y_pt)
{
if
(
impl_
->
object_description_
.
svg_rect_
)
{
_rect
r
=
impl_
->
object_description_
.
svg_rect_
.
get
();
r
.
x_
+=
x_pt
;
r
.
y_
+=
y_pt
;
impl_
->
object_description_
.
svg_rect_
=
r
;
_rect
&
r
=
impl_
->
object_description_
.
svg_rect_
.
get
();
r
.
x
+=
x_pt
;
r
.
y
+=
y_pt
;
}
}
...
...
@@ -238,11 +236,10 @@ void pptx_slide_context::set_scale(double cx_pt, double cy_pt)
{
if
(
impl_
->
object_description_
.
svg_rect_
)
{
_rect
r
=
impl_
->
object_description_
.
svg_rect_
.
get
();
r
.
x_
*=
cx_pt
;
r
.
y_
*=
cy_pt
;
impl_
->
object_description_
.
svg_rect_
=
r
;
_rect
&
r
=
impl_
->
object_description_
.
svg_rect_
.
get
();
r
.
x
*=
cx_pt
;
r
.
y
*=
cy_pt
;
}
}
...
...
@@ -303,24 +300,25 @@ void pptx_slide_context::add_background(_oox_fill & fill)
void
pptx_slide_context
::
set_name
(
std
::
wstring
const
&
name
)
{
impl_
->
object_description_
.
draw_
name_
=
name
;
impl_
->
object_description_
.
name_
=
name
;
}
void
pptx_slide_context
::
start_shape
(
int
type
)
{
impl_
->
object_description_
.
type_
=
type
;
//2,3...
impl_
->
object_description_
.
type_
=
mediaitems
::
typeShape
;
impl_
->
object_description_
.
shape_type_
=
type
;
//2,3...
}
void
pptx_slide_context
::
start_image
(
std
::
wstring
const
&
path
)
{
impl_
->
object_description_
.
xlink_href_
=
path
;
impl_
->
object_description_
.
type_
=
0
;
//frame
impl_
->
object_description_
.
type_
=
mediaitems
::
typeImage
;
impl_
->
object_description_
.
xlink_href_
=
path
;
}
void
pptx_slide_context
::
start_table
()
{
impl_
->
object_description_
.
type_
=
0
;
//frame
impl_
->
object_description_
.
type_
=
mediaitems
::
typeTable
;
}
void
pptx_slide_context
::
set_use_image_replacement
()
...
...
@@ -334,8 +332,8 @@ void pptx_slide_context::start_object_ole()
void
pptx_slide_context
::
start_chart
(
std
::
wstring
const
&
path
)
{
impl_
->
object_description_
.
xlink_href_
=
path
;
impl_
->
object_description_
.
type_
=
0
;
//frame
impl_
->
object_description_
.
type_
=
mediaitems
::
typeChart
;
impl_
->
object_description_
.
xlink_href_
=
path
;
}
void
pptx_slide_context
::
end_object_ole
()
{
...
...
@@ -387,12 +385,16 @@ void pptx_slide_context::process_images()
if
((
pos_replaicement
<
0
&&
pos_preview
<
0
)
||
pic
.
use_image_replace_
)
//, ( )
{
_pptx_drawing
drawing
=
_pptx_drawing
();
_pptx_drawing
drawing
=
_pptx_drawing
();
drawing
.
type
=
pic
.
type_
;
drawing
.
name
=
pic
.
name_
;
drawing
.
id
=
impl_
->
next_rId
();
process_common_properties
(
pic
,
drawing
);
drawing
.
fill
.
bitmap
=
oox_bitmap_fill
::
create
();
drawing
.
fill
.
type
=
2
;
drawing
.
fill
.
bitmap
=
oox_bitmap_fill
::
create
();
drawing
.
fill
.
type
=
2
;
_CP_OPT
(
std
::
wstring
)
sTextContent
;
GetProperty
(
pic
.
additional_
,
L"text-content"
,
sTextContent
);
...
...
@@ -401,11 +403,7 @@ void pptx_slide_context::process_images()
drawing
.
type
=
mediaitems
::
typeShape
;
drawing
.
sub_type
=
2
;
//rect
}
else
drawing
.
type
=
mediaitems
::
typeImage
;
drawing
.
id
=
impl_
->
next_rId
();
drawing
.
name
=
pic
.
draw_name_
;
std
::
wstring
fileName
=
impl_
->
odfPacket_
+
FILE_SEPARATOR_STR
+
pic
.
xlink_href_
;
drawing
.
fill
.
bitmap
->
bCrop
=
odf_reader
::
parse_clipping
(
pic
.
clipping_string_
,
fileName
,
drawing
.
fill
.
bitmap
->
cropRect
);
...
...
@@ -438,12 +436,12 @@ void pptx_slide_context::process_charts()
BOOST_FOREACH
(
drawing_object_description
&
pic
,
impl_
->
charts_
)
{
_pptx_drawing
drawing
=
_pptx_drawing
();
process_common_properties
(
pic
,
drawing
);
drawing
.
type
=
mediaitems
::
typeChart
;
drawing
.
name
=
pic
.
draw_name_
;
drawing
.
id
=
impl_
->
next_rId
();
drawing
.
type
=
pic
.
type_
;
drawing
.
name
=
pic
.
name_
;
drawing
.
id
=
impl_
->
next_rId
();
process_common_properties
(
pic
,
drawing
);
////////////////////////////////////////////////////////////////
std
::
wstring
ref
;
...
...
@@ -459,11 +457,13 @@ void pptx_slide_context::process_tables()
{
_pptx_drawing
drawing
=
_pptx_drawing
();
drawing
.
type
=
pic
.
type_
;
drawing
.
name
=
pic
.
name_
;
drawing
.
id
=
impl_
->
next_rId
();
process_common_properties
(
pic
,
drawing
);
drawing
.
type
=
mediaitems
::
typeTable
;
drawing
.
name
=
pic
.
draw_name_
;
drawing
.
id
=
impl_
->
next_rId
();
////////////////////////////////////////////////////////////////
std
::
wstring
ref
;
...
...
@@ -478,16 +478,16 @@ void pptx_slide_context::process_common_properties(drawing_object_description &
if
(
pic
.
svg_rect_
)
{
//todooo
int
val
=
(
int
)(
0.5
+
odf_types
::
length
(
pic
.
svg_rect_
.
get
().
x_
,
odf_types
::
length
::
pt
).
get_value_unit
(
odf_types
::
length
::
emu
));
int
val
=
(
int
)(
0.5
+
odf_types
::
length
(
pic
.
svg_rect_
->
x
,
odf_types
::
length
::
pt
).
get_value_unit
(
odf_types
::
length
::
emu
));
if
(
val
>=
0
)
drawing
.
x
=
val
;
val
=
(
int
)(
0.5
+
odf_types
::
length
(
pic
.
svg_rect_
.
get
().
y_
,
odf_types
::
length
::
pt
).
get_value_unit
(
odf_types
::
length
::
emu
));
val
=
(
int
)(
0.5
+
odf_types
::
length
(
pic
.
svg_rect_
->
y
,
odf_types
::
length
::
pt
).
get_value_unit
(
odf_types
::
length
::
emu
));
if
(
val
>=
0
)
drawing
.
y
=
val
;
val
=
(
int
)(
0.5
+
odf_types
::
length
(
pic
.
svg_rect_
.
get
().
width_
,
odf_types
::
length
::
pt
).
get_value_unit
(
odf_types
::
length
::
emu
));
val
=
(
int
)(
0.5
+
odf_types
::
length
(
pic
.
svg_rect_
->
cx
,
odf_types
::
length
::
pt
).
get_value_unit
(
odf_types
::
length
::
emu
));
if
(
val
>=
0
)
drawing
.
cx
=
val
;
val
=
(
int
)(
0.5
+
odf_types
::
length
(
pic
.
svg_rect_
.
get
().
height_
,
odf_types
::
length
::
pt
).
get_value_unit
(
odf_types
::
length
::
emu
));
val
=
(
int
)(
0.5
+
odf_types
::
length
(
pic
.
svg_rect_
->
cy
,
odf_types
::
length
::
pt
).
get_value_unit
(
odf_types
::
length
::
emu
));
if
(
val
>=
0
)
drawing
.
cy
=
val
;
}
...
...
@@ -505,14 +505,14 @@ void pptx_slide_context::process_shapes()
{
_pptx_drawing
drawing
=
_pptx_drawing
();
drawing
.
type
=
pic
.
type_
;
drawing
.
name
=
pic
.
name_
;
drawing
.
id
=
impl_
->
next_rId
();
process_common_properties
(
pic
,
drawing
);
std
::
wstring
ref
;
bool
isMediaInternal
=
true
;
drawing
.
type
=
mediaitems
::
typeShape
;
drawing
.
name
=
pic
.
draw_name_
;
drawing
.
id
=
impl_
->
next_rId
();
if
(
drawing
.
fill
.
bitmap
)
{
...
...
ASCOfficeOdfFile/src/docx/xlsx_drawing.cpp
View file @
114b80ff
...
...
@@ -157,6 +157,30 @@ void xlsx_serialize_shape(std::wostream & strm, _xlsx_drawing & val)
}
}
// CP_XML_WRITER
}
void
xlsx_serialize_group
(
std
::
wostream
&
strm
,
_xlsx_drawing
&
val
)
{
CP_XML_WRITER
(
strm
)
{
CP_XML_NODE
(
L"xdr:grpSp"
)
{
CP_XML_NODE
(
L"xdr:nvGrpSpPr"
)
{
CP_XML_NODE
(
L"xdr:cNvPr"
)
{
CP_XML_ATTR
(
L"id"
,
val
.
id
);
CP_XML_ATTR
(
L"name"
,
val
.
name
);
}
CP_XML_NODE
(
L"xdr:cNvGrpSpPr"
);
}
CP_XML_NODE
(
L"xdr:grpSpPr"
)
{
oox_serialize_xfrm
(
CP_XML_STREAM
(),
val
);
}
CP_XML_STREAM
()
<<
val
.
content_group_
;
}
}
}
void
xlsx_serialize_chart
(
std
::
wostream
&
strm
,
_xlsx_drawing
&
val
)
{
...
...
@@ -194,31 +218,65 @@ void xlsx_serialize_chart(std::wostream & strm, _xlsx_drawing & val)
}
// xdr:graphicFrame
}
// CP_XML_WRITER
}
void
xlsx_serialize_object
(
std
::
wostream
&
strm
,
_xlsx_drawing
&
val
)
{
if
(
val
.
type
==
mediaitems
::
typeShape
)
{
xlsx_serialize_shape
(
strm
,
val
);
}
else
if
(
val
.
type
==
mediaitems
::
typeImage
)
{
xlsx_serialize_image
(
strm
,
val
);
}
else
if
(
val
.
type
==
mediaitems
::
typeChart
)
{
xlsx_serialize_chart
(
strm
,
val
);
}
else
if
(
val
.
type
==
mediaitems
::
typeGroup
)
{
xlsx_serialize_group
(
strm
,
val
);
}
}
void
xlsx_serialize
(
std
::
wostream
&
strm
,
_xlsx_drawing
&
val
)
{
CP_XML_WRITER
(
strm
)
if
(
val
.
inGroup
)
return
xlsx_serialize_object
(
strm
,
val
);
CP_XML_WRITER
(
strm
)
{
CP_XML_NODE
(
L"xdr:twoCellAnchor"
)
{
CP_XML_ATTR
(
L"editAs"
,
L"oneCell"
);
//"absolute");
xlsx_serialize
(
CP_XML_STREAM
(),
val
.
from
);
xlsx_serialize
(
CP_XML_STREAM
(),
val
.
to
);
if
(
val
.
type
==
mediaitems
::
typeShape
)
if
(
val
.
type_anchor
==
1
)
{
CP_XML_NODE
(
L"xdr:twoCellAnchor"
)
{
xlsx_serialize_shape
(
CP_XML_STREAM
(),
val
);
}
else
if
(
val
.
type
==
mediaitems
::
typeImage
)
{
xlsx_serialize_image
(
CP_XML_STREAM
(),
val
);
//CP_XML_ATTR(L"editAs", L"absolute");//"absolute");oneCell
xlsx_serialize
(
CP_XML_STREAM
(),
val
.
from_
);
xlsx_serialize
(
CP_XML_STREAM
(),
val
.
to_
);
xlsx_serialize_object
(
CP_XML_STREAM
(),
val
);
CP_XML_NODE
(
L"xdr:clientData"
);
}
else
if
(
val
.
type
==
mediaitems
::
typeChart
)
}
else
{
CP_XML_NODE
(
L"xdr:absoluteAnchor"
)
{
xlsx_serialize_chart
(
CP_XML_STREAM
(),
val
);
CP_XML_NODE
(
L"xdr:pos"
)
{
CP_XML_ATTR
(
L"x"
,
val
.
x
);
CP_XML_ATTR
(
L"y"
,
val
.
y
);
}
CP_XML_NODE
(
L"xdr:ext"
)
{
CP_XML_ATTR
(
L"cx"
,
val
.
cx
);
CP_XML_ATTR
(
L"cy"
,
val
.
cy
);
}
xlsx_serialize_object
(
CP_XML_STREAM
(),
val
);
CP_XML_NODE
(
L"xdr:clientData"
);
}
CP_XML_NODE
(
L"xdr:clientData"
);
}
}
...
...
ASCOfficeOdfFile/src/docx/xlsx_drawing.h
View file @
114b80ff
...
...
@@ -25,8 +25,15 @@ struct xlsx_drawing_position
struct
_xlsx_drawing
:
_oox_drawing
{
xlsx_drawing_position
from
;
xlsx_drawing_position
to
;
_xlsx_drawing
()
:
_oox_drawing
(),
type_anchor
(
1
)
{}
int
type_anchor
;
xlsx_drawing_position
from_
;
xlsx_drawing_position
to_
;
std
::
wstring
content_group_
;
friend
void
xlsx_serialize
(
std
::
wostream
&
_Wostream
,
_xlsx_drawing
&
val
);
};
...
...
ASCOfficeOdfFile/src/docx/xlsx_drawing_context.cpp
View file @
114b80ff
This diff is collapsed.
Click to expand it.
ASCOfficeOdfFile/src/docx/xlsx_drawing_context.h
View file @
114b80ff
...
...
@@ -15,14 +15,14 @@ namespace cpdoccore {
namespace
oox
{
struct
drawing_object_description
;
struct
xlsx_table_position
;
class
xlsx_table_metrics
;
class
mediaitems
;
class
xlsx_drawings
;
struct
_oox_fill
;
struct
drawing_object_description
;
struct
xlsx_table_position
;
class
xlsx_table_metrics
;
class
mediaitems
;
class
xlsx_drawings
;
struct
_oox_fill
;
typedef
_CP_PTR
(
xlsx_drawings
)
xlsx_drawings_ptr
;
typedef
_CP_PTR
(
xlsx_drawings
)
xlsx_drawings_ptr
;
class
xlsx_drawing_context_handle
{
...
...
@@ -30,8 +30,8 @@ public:
xlsx_drawing_context_handle
(
mediaitems
&
items
);
~
xlsx_drawing_context_handle
();
std
::
pair
<
std
::
wstring
,
std
::
wstring
>
add_drawing_xml
(
std
::
wstring
const
&
content
,
xlsx_drawings_ptr
drawings
);
const
std
::
vector
<
drawing_elm
>
&
content
()
const
;
std
::
pair
<
std
::
wstring
,
std
::
wstring
>
add_drawing_xml
(
std
::
wstring
const
&
content
,
xlsx_drawings_ptr
drawings
);
const
std
::
vector
<
drawing_elm
>
&
content
()
const
;
friend
class
xlsx_drawing_context
;
private:
...
...
@@ -39,8 +39,7 @@ private:
_CP_PTR
(
Impl
)
impl_
;
};
//class xlsx_drawings;
//typedef _CP_PTR(xlsx_drawings) xlsx_drawings_ptr;
class
xlsx_drawing_context
{
...
...
@@ -50,25 +49,11 @@ public:
void
set_odf_packet_path
(
std
::
wstring
path
){
odf_packet_path_
=
path
;}
//
void
start_shapes
();
void
start_drawing
(
std
::
wstring
const
&
name
);
void
set_rect
(
double
width_pt
,
double
height_pt
,
double
x_pt
,
double
y_pt
);
void
set_translate
(
double
x_pt
,
double
y_pt
);
void
set_scale
(
double
cx_pt
,
double
cy_pt
);
void
set_rotate
(
double
angle
);
void
set_anchor
(
std
::
wstring
anchor
,
double
x_pt
,
double
y_pt
);
void
set_property
(
odf_reader
::
_property
p
);
std
::
vector
<
odf_reader
::
_property
>
&
get_properties
();
void
set_clipping
(
const
std
::
wstring
&
str
);
void
set_fill
(
_oox_fill
&
fill
);
void
start_drawing
(
std
::
wstring
const
&
name
);
void
end_drawing
();
void
end_shapes
();
std
::
wstring
add_hyperlink
(
std
::
wstring
const
&
ref
,
bool
object
);
void
start_group
(
std
::
wstring
const
&
name
);
void
end_group
(
);
void
start_image
(
std
::
wstring
const
&
path
);
void
end_image
();
...
...
@@ -76,36 +61,58 @@ public:
void
start_chart
(
std
::
wstring
const
&
path
);
void
end_chart
();
void
start_shape
(
int
type
);
void
start_shape
(
int
type
);
//... ...
void
end_shape
();
void
start_object_ole
();
void
end_object_ole
();
void
set_rect
(
double
width_pt
,
double
height_pt
,
double
x_pt
,
double
y_pt
);
void
set_translate
(
double
x_pt
,
double
y_pt
);
void
set_scale
(
double
cx_pt
,
double
cy_pt
);
void
set_rotate
(
double
angle
);
void
set_anchor
(
std
::
wstring
anchor
,
double
x_pt
,
double
y_pt
,
bool
group
=
false
);
void
set_property
(
odf_reader
::
_property
p
);
void
set_clipping
(
const
std
::
wstring
&
str
);
void
set_fill
(
_oox_fill
&
fill
);
std
::
vector
<
odf_reader
::
_property
>
&
get_properties
();
std
::
wstring
add_hyperlink
(
std
::
wstring
const
&
ref
,
bool
object
);
void
set_use_image_replacement
();
bool
empty
()
const
;
void
clear
();
void
write_drawing
(
std
::
wostream
&
strm
);
std
::
wstring
dump_path
(
std
::
vector
<
svg_path
::
_polyline
>
&
path
,
double
w
,
double
h
);
xlsx_drawings_ptr
get_drawings
();
void
process_images
(
xlsx_table_metrics
&
table_metrics
);
void
process_charts
(
xlsx_table_metrics
&
table_metrics
);
void
process_shapes
(
xlsx_table_metrics
&
table_metrics
);
void
process_position_properties
(
drawing_object_description
&
pic
,
xlsx_table_metrics
&
table_metrics
,
xlsx_table_position
&
from
,
xlsx_table_position
&
to
);
void
process_common_properties
(
drawing_object_description
&
pic
,
_xlsx_drawing
&
drawing
,
xlsx_table_metrics
&
table_metrics
);
void
process_objects
(
xlsx_table_metrics
&
table_metrics
);
private:
void
default_set
();
int
hlinks_size_
;
std
::
wstring
odf_packet_path_
;
float
dpi_
;
class
Impl
;
_CP_PTR
(
Impl
)
impl_
;
void
process_objects
(
std
::
vector
<
drawing_object_description
>
objects
,
xlsx_table_metrics
&
table_metrics
,
xlsx_drawings_ptr
xlsx_drawings_
);
void
process_group
(
drawing_object_description
&
obj
,
xlsx_table_metrics
&
table_metrics
,
_xlsx_drawing
&
drawing
,
xlsx_drawings_ptr
xlsx_drawings_
);
void
process_image
(
drawing_object_description
&
obj
,
_xlsx_drawing
&
drawing
,
xlsx_drawings_ptr
xlsx_drawings_
);
void
process_chart
(
drawing_object_description
&
obj
,
_xlsx_drawing
&
drawing
,
xlsx_drawings_ptr
xlsx_drawings_
);
void
process_shape
(
drawing_object_description
&
obj
,
_xlsx_drawing
&
drawing
,
xlsx_drawings_ptr
xlsx_drawings_
);
void
process_common_properties
(
drawing_object_description
&
obj
,
_xlsx_drawing
&
drawing
,
xlsx_table_metrics
&
table_metrics
);
void
process_position_properties
(
drawing_object_description
&
obj
,
xlsx_table_metrics
&
table_metrics
,
xlsx_table_position
&
from
,
xlsx_table_position
&
to
);
int
hlinks_size_
;
std
::
wstring
odf_packet_path_
;
float
dpi_
;
};
...
...
ASCOfficeOdfFile/src/docx/xlsx_drawings.cpp
View file @
114b80ff
...
...
@@ -15,24 +15,20 @@ class xlsx_drawings::Impl
struct
rel_
{
rel_
(
bool
is_internal
,
std
::
wstring
const
&
rid
,
std
::
wstring
const
&
ref
,
mediaitems
::
Type
type
)
:
is_internal_
(
is_internal
),
rid_
(
rid
),
ref_
(
ref
),
type_
(
type
)
{}
bool
is_internal_
;
std
::
wstring
rid_
;
std
::
wstring
ref_
;
mediaitems
::
Type
type_
;
is_internal_
(
is_internal
),
rid_
(
rid
),
ref_
(
ref
),
type_
(
type
)
{}
bool
is_internal_
;
std
::
wstring
rid_
;
std
::
wstring
ref_
;
mediaitems
::
Type
type_
;
};
public:
void
add
(
_xlsx_drawing
const
&
d
,
bool
isInternal
,
std
::
wstring
const
&
rid
,
std
::
wstring
const
&
ref
,
mediaitems
::
Type
type
)
void
add
(
_xlsx_drawing
const
&
d
,
bool
isInternal
,
std
::
wstring
const
&
rid
,
std
::
wstring
const
&
ref
,
mediaitems
::
Type
type
)
{
xlsx_drawings_
.
push_back
(
d
);
...
...
@@ -51,11 +47,7 @@ public:
xlsx_drawing_rels_
.
push_back
(
rel_
(
false
,
h
.
hId
,
h
.
hRef
,
mediaitems
::
typeHyperlink
));
}
}
void
add
(
/**/
bool
isInternal
,
std
::
wstring
const
&
rid
,
std
::
wstring
const
&
ref
,
mediaitems
::
Type
type
)
void
add
(
bool
isInternal
,
std
::
wstring
const
&
rid
,
std
::
wstring
const
&
ref
,
mediaitems
::
Type
type
)
{
bool
present
=
false
;
BOOST_FOREACH
(
rel_
const
&
r
,
xlsx_drawing_rels_
)
...
...
@@ -70,22 +62,33 @@ public:
}
void
serialize
(
std
::
wostream
&
strm
)
{
CP_XML_WRITER
(
strm
)
{
CP_XML_NODE
(
L"xdr:wsDr"
)
{
CP_XML_ATTR
(
L"xmlns:xdr"
,
L"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"
);
CP_XML_ATTR
(
L"xmlns:a"
,
L"http://schemas.openxmlformats.org/drawingml/2006/main"
);
CP_XML_ATTR
(
L"xmlns:r"
,
L"http://schemas.openxmlformats.org/officeDocument/2006/relationships"
);
BOOST_FOREACH
(
_xlsx_drawing
&
d
,
xlsx_drawings_
)
{
xlsx_serialize
(
CP_XML_STREAM
(),
d
);
}
if
(
inGroup
)
{
BOOST_FOREACH
(
_xlsx_drawing
&
d
,
xlsx_drawings_
)
{
xlsx_serialize
(
strm
,
d
);
}
}
}
else
{
CP_XML_WRITER
(
strm
)
{
CP_XML_NODE
(
L"xdr:wsDr"
)
{
CP_XML_ATTR
(
L"xmlns:xdr"
,
L"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"
);
CP_XML_ATTR
(
L"xmlns:a"
,
L"http://schemas.openxmlformats.org/drawingml/2006/main"
);
CP_XML_ATTR
(
L"xmlns:r"
,
L"http://schemas.openxmlformats.org/officeDocument/2006/relationships"
);
BOOST_FOREACH
(
_xlsx_drawing
&
d
,
xlsx_drawings_
)
{
xlsx_serialize
(
CP_XML_STREAM
(),
d
);
}
}
}
}
}
bool
empty
()
const
...
...
@@ -130,37 +133,34 @@ public:
}
}
bool
inGroup
;
private:
std
::
vector
<
_xlsx_drawing
>
xlsx_drawings_
;
std
::
vector
<
rel_
>
xlsx_drawing_rels_
;
std
::
vector
<
_xlsx_drawing
>
xlsx_drawings_
;
std
::
vector
<
rel_
>
xlsx_drawing_rels_
;
};
xlsx_drawings
::
xlsx_drawings
()
:
impl_
(
new
xlsx_drawings
::
Impl
()
)
xlsx_drawings
::
xlsx_drawings
(
bool
inGroup_
)
:
impl_
(
new
xlsx_drawings
::
Impl
()
)
{
impl_
->
inGroup
=
inGroup_
;
}
xlsx_drawings
::~
xlsx_drawings
()
{
}
void
xlsx_drawings
::
add
(
_xlsx_drawing
const
&
d
,
bool
isInternal
,
std
::
wstring
const
&
rid
,
std
::
wstring
const
&
ref
,
mediaitems
::
Type
type
)
void
xlsx_drawings
::
add
(
_xlsx_drawing
const
&
d
,
bool
isInternal
,
std
::
wstring
const
&
rid
,
std
::
wstring
const
&
ref
,
mediaitems
::
Type
type
)
{
impl_
->
add
(
d
,
isInternal
,
rid
,
ref
,
type
);
}
void
xlsx_drawings
::
add
(
/**/
bool
isInternal
,
std
::
wstring
const
&
rid
,
std
::
wstring
const
&
ref
,
mediaitems
::
Type
type
)
void
xlsx_drawings
::
add
(
bool
isInternal
,
std
::
wstring
const
&
rid
,
std
::
wstring
const
&
ref
,
mediaitems
::
Type
type
)
{
impl_
->
add
(
isInternal
,
rid
,
ref
,
type
);
}
void
xlsx_serialize
(
std
::
wostream
&
_Wostream
,
xlsx_drawings
const
&
val
)
{
val
.
impl_
->
serialize
(
_Wostream
);
...
...
@@ -176,9 +176,9 @@ void xlsx_drawings::dump_rels(rels & Rels)
return
impl_
->
dump_rels
(
Rels
);
}
xlsx_drawings_ptr
xlsx_drawings
::
create
()
xlsx_drawings_ptr
xlsx_drawings
::
create
(
bool
inGroup
)
{
return
boost
::
make_shared
<
xlsx_drawings
>
();
return
boost
::
make_shared
<
xlsx_drawings
>
(
inGroup
);
}
}
...
...
ASCOfficeOdfFile/src/docx/xlsx_drawings.h
View file @
114b80ff
...
...
@@ -18,9 +18,9 @@ struct drawing_elm
:
filename
(
_filename
),
content
(
_content
),
drawings
(
_drawings
)
{}
std
::
wstring
filename
;
std
::
wstring
content
;
xlsx_drawings_ptr
drawings
;
std
::
wstring
filename
;
std
::
wstring
content
;
xlsx_drawings_ptr
drawings
;
};
struct
_xlsx_drawing
;
...
...
@@ -29,28 +29,18 @@ class rels;
class
xlsx_drawings
{
public:
xlsx_drawings
(
);
~
xlsx_drawings
();
static
xlsx_drawings_ptr
create
();
xlsx_drawings
(
bool
inGroup_
);
~
xlsx_drawings
();
static
xlsx_drawings_ptr
create
(
bool
inGroup
);
public:
void
add
(
_xlsx_drawing
const
&
d
,
bool
isInternal
,
std
::
wstring
const
&
rid
,
std
::
wstring
const
&
ref
,
mediaitems
::
Type
type
);
void
add
(
/**/
bool
isInternal
,
std
::
wstring
const
&
rid
,
std
::
wstring
const
&
ref
,
mediaitems
::
Type
type
);
bool
empty
()
const
;
void
dump_rels
(
rels
&
Rels
);
friend
void
xlsx_serialize
(
std
::
wostream
&
_Wostream
,
xlsx_drawings
const
&
val
);
void
add
(
_xlsx_drawing
const
&
d
,
bool
isInternal
,
std
::
wstring
const
&
rid
,
std
::
wstring
const
&
ref
,
mediaitems
::
Type
type
);
void
add
(
bool
isInternal
,
std
::
wstring
const
&
rid
,
std
::
wstring
const
&
ref
,
mediaitems
::
Type
type
);
bool
empty
()
const
;
void
dump_rels
(
rels
&
Rels
);
friend
void
xlsx_serialize
(
std
::
wostream
&
_Wostream
,
xlsx_drawings
const
&
val
);
private:
class
Impl
;
_CP_SCOPED_PTR
(
Impl
)
impl_
;
...
...
ASCOfficeOdfFile/src/docx/xlsx_package.cpp
View file @
114b80ff
...
...
@@ -274,7 +274,8 @@ void xl_drawings::write(const std::wstring & RootPath)
rels_files
relFiles
;
rels_file_ptr
r
=
rels_file
::
create
(
e
.
filename
+
L".rels"
);
e
.
drawings
->
dump_rels
(
r
->
get_rels
());
e
.
drawings
->
dump_rels
(
r
->
get_rels
());
relFiles
.
add_rel_file
(
r
);
relFiles
.
write
(
path
);
...
...
ASCOfficeOdfFile/src/docx/xlsx_textcontext.cpp
View file @
114b80ff
...
...
@@ -274,9 +274,15 @@ void xlsx_text_context::Impl::write_rPr(std::wostream & strm)
if
(
dValFontSize
)
{
CP_XML_ATTR
(
L"sz"
,
(
int
)(
dValFontSize
.
get
()
*
100
));}
if
((
iValFontStyle
)
&&
(
iValFontStyle
.
get
()
>
0
))
{
CP_XML_ATTR
(
L"i"
,
"1"
);}
//"true");} Exercícios de Aprendizagem.ods
if
((
iValFontWeight
)
&&
(
iValFontWeight
.
get
()
>
0
))
{
CP_XML_ATTR
(
L"b"
,
"1"
);}
//"true");} Exercícios de Aprendizagem.ods
if
(
sValFontFamily
)
{
CP_XML_ATTR
(
L"typeface"
,
sValFontFamily
.
get
());}
if
(
sValFontColor
)
{
CP_XML_NODE
(
L"a:solidFill"
)
{
CP_XML_NODE
(
L"a:srgbClr"
){
CP_XML_ATTR
(
L"val"
,
sValFontColor
.
get
());}}
}
if
(
sValFontFamily
)
{
CP_XML_NODE
(
L"a:latin"
){
CP_XML_ATTR
(
L"typeface"
,
sValFontFamily
.
get
());}
}
if
(
sValFontColor
){
CP_XML_NODE
(
L"a:solidFill"
)
{
CP_XML_NODE
(
L"a:srgbClr"
){
CP_XML_ATTR
(
L"val"
,
sValFontColor
.
get
());}}}
if
(
hyperlink_hId
.
length
()
>
0
)
{
...
...
ASCOfficeOdfFile/src/docx/xlsxconversioncontext.cpp
View file @
114b80ff
...
...
@@ -293,9 +293,7 @@ void xlsx_conversion_context::end_table()
get_drawing_context
().
set_odf_packet_path
(
root
()
->
get_folder
());
get_drawing_context
().
process_charts
(
get_table_metrics
());
get_drawing_context
().
process_images
(
get_table_metrics
());
get_drawing_context
().
process_shapes
(
get_table_metrics
());
get_drawing_context
().
process_objects
(
get_table_metrics
());
if
(
!
get_drawing_context
().
empty
())
{
...
...
ASCOfficeOdfFile/src/odf/chart_build_oox.cpp
View file @
114b80ff
...
...
@@ -96,7 +96,7 @@ void chart_build::add_grid(std::wstring const & className, std::wstring const &
if
(
!
axises_
.
empty
())
{
axis
::
grid
gr
;
gr
.
type_
=
(
className
==
L"major"
?
axis
::
grid
::
m
inor
:
axis
::
grid
::
maj
or
);
// default: major
gr
.
type_
=
(
className
==
L"major"
?
axis
::
grid
::
m
ajor
:
axis
::
grid
::
min
or
);
// default: major
gr
.
style_name_
=
styleName
;
axises_
.
back
().
grids_
.
push_back
(
gr
);
...
...
@@ -119,11 +119,11 @@ void chart_build::add_series(std::wstring const & cellRangeAddress,
series_
.
push_back
(
series
(
cellRangeAddress
,
labelCell
,
classType
,
attachedAxis
,
styleName
));
}
void
chart_build
::
add_point
(
unsigned
int
rep
,
std
::
wstring
const
&
styleName
)
void
chart_build
::
add_point
(
unsigned
int
rep
)
{
if
(
!
series_
.
empty
())
{
series_
.
back
().
points_
.
push_back
(
series
::
point
(
rep
,
styleName
));
series_
.
back
().
points_
.
push_back
(
series
::
point
(
rep
));
}
else
{
...
...
@@ -259,8 +259,8 @@ void chart_build::oox_convert(oox::oox_chart_context & chart_context)
chart_context
.
set_floor
(
floor_
);
chart_context
.
set_legend
(
legend_
);
chart_context
.
set_plot_area_properties
(
plot_area_
.
properties_
,
plot_area_
.
fill_
);
chart_context
.
set_chart_graphic_properties
(
chart_graphic_properties_
,
chart_fill_
);
chart_context
.
set_plot_area_properties
(
plot_area_
.
properties_
,
plot_area_
.
fill_
);
chart_context
.
set_chart_graphic_properties
(
chart_graphic_properties_
,
chart_fill_
);
//chart_context.set_footer(footer_);
//chart_context.set_chart_properties(chart_graphic_properties_);
...
...
@@ -548,6 +548,7 @@ void process_build_chart::visit(const chart_title& val)
t
.
pos_x
=
val
.
chart_title_attlist_
.
common_draw_position_attlist_
.
svg_x_
->
get_value_unit
(
length
::
pt
);
t
.
pos_y
=
val
.
chart_title_attlist_
.
common_draw_position_attlist_
.
svg_y_
->
get_value_unit
(
length
::
pt
);
}
t
.
bEnabled
=
true
;
if
(
chart_build_
.
in_axis_
)
chart_build_
.
axises_
.
back
().
title_
=
t
;
...
...
@@ -568,11 +569,14 @@ void process_build_chart::visit(const chart_subtitle & val)
t
.
pos_x
=
val
.
chart_title_attlist_
.
common_draw_position_attlist_
.
svg_x_
->
get_value_unit
(
length
::
pt
);
t
.
pos_y
=
val
.
chart_title_attlist_
.
common_draw_position_attlist_
.
svg_y_
->
get_value_unit
(
length
::
pt
);
}
t
.
bEnabled
=
true
;
chart_build_
.
sub_title_
=
t
;
}
void
process_build_chart
::
visit
(
const
chart_footer
&
val
)
{
chart_build_
.
footer_
.
bEnabled
=
true
;
ApplyChartProperties
(
val
.
common_attlist_
.
chart_style_name_
.
get_value_or
(
L""
),
chart_build_
.
footer_
.
properties_
);
ApplyGraphicProperties
(
val
.
common_attlist_
.
chart_style_name_
.
get_value_or
(
L""
),
chart_build_
.
footer_
.
graphic_properties_
,
chart_build_
.
footer_
.
fill_
);
ApplyTextProperties
(
val
.
common_attlist_
.
chart_style_name_
.
get_value_or
(
L""
),
chart_build_
.
footer_
.
text_properties_
);
...
...
@@ -580,6 +584,8 @@ void process_build_chart::visit(const chart_footer& val)
void
process_build_chart
::
visit
(
const
chart_legend
&
val
)
{
chart_build_
.
legend_
.
bEnabled
=
true
;
ApplyChartProperties
(
val
.
chart_legend_attlist_
.
common_attlist_
.
chart_style_name_
.
get_value_or
(
L""
),
chart_build_
.
legend_
.
properties_
);
ApplyGraphicProperties
(
val
.
chart_legend_attlist_
.
common_attlist_
.
chart_style_name_
.
get_value_or
(
L""
),
chart_build_
.
legend_
.
graphic_properties_
,
chart_build_
.
legend_
.
fill_
);
ApplyTextProperties
(
val
.
chart_legend_attlist_
.
common_attlist_
.
chart_style_name_
.
get_value_or
(
L""
),
chart_build_
.
legend_
.
text_properties_
);
...
...
@@ -653,6 +659,8 @@ void process_build_chart::visit(const chart_grid& val)
}
void
process_build_chart
::
visit
(
const
chart_wall
&
val
)
{
chart_build_
.
wall_
.
bEnabled
=
true
;
ApplyChartProperties
(
val
.
chart_wall_attlist_
.
common_attlist_
.
chart_style_name_
.
get_value_or
(
L""
),
chart_build_
.
wall_
.
properties_
);
ApplyGraphicProperties
(
val
.
chart_wall_attlist_
.
common_attlist_
.
chart_style_name_
.
get_value_or
(
L""
),
chart_build_
.
wall_
.
graphic_properties_
,
chart_build_
.
wall_
.
fill_
);
ApplyTextProperties
(
val
.
chart_wall_attlist_
.
common_attlist_
.
chart_style_name_
.
get_value_or
(
L""
),
chart_build_
.
wall_
.
text_properties_
);
...
...
@@ -660,6 +668,8 @@ void process_build_chart::visit(const chart_wall& val)
void
process_build_chart
::
visit
(
const
chart_floor
&
val
)
{
chart_build_
.
floor_
.
bEnabled
=
true
;
ApplyChartProperties
(
val
.
common_attlist_
.
chart_style_name_
.
get_value_or
(
L""
),
chart_build_
.
floor_
.
properties_
);
ApplyGraphicProperties
(
val
.
common_attlist_
.
chart_style_name_
.
get_value_or
(
L""
),
chart_build_
.
floor_
.
graphic_properties_
,
chart_build_
.
floor_
.
fill_
);
ApplyTextProperties
(
val
.
common_attlist_
.
chart_style_name_
.
get_value_or
(
L""
),
chart_build_
.
floor_
.
text_properties_
);
...
...
@@ -667,14 +677,20 @@ void process_build_chart::visit(const chart_floor& val)
void
process_build_chart
::
visit
(
const
chart_data_point
&
val
)
{
chart_build_
.
add_point
(
val
.
chart_data_point_attlist_
.
chart_repeated_
.
get_value_or
(
0
/*1*/
),
val
.
chart_data_point_attlist_
.
common_attlist_
.
chart_style_name_
.
get_value_or
(
L""
)
);
chart_build_
.
add_point
(
val
.
chart_data_point_attlist_
.
chart_repeated_
.
get_value_or
(
1
));
if
(
val
.
chart_data_point_attlist_
.
common_attlist_
.
chart_style_name_
)
{
ApplyGraphicProperties
(
val
.
chart_data_point_attlist_
.
common_attlist_
.
chart_style_name_
.
get_value_or
(
L""
),
chart_build_
.
series_
.
back
().
points_
.
back
().
graphic_properties_
,
chart_build_
.
series_
.
back
().
points_
.
back
().
fill_
);
}
}
void
process_build_chart
::
visit
(
const
chart_mean_value
&
val
)
{
ApplyChartProperties
(
val
.
common_attlist_
.
chart_style_name_
.
get_value_or
(
L""
),
chart_build_
.
series_
.
back
().
mean_value_
.
properties_
);
ApplyGraphicProperties
(
val
.
common_attlist_
.
chart_style_name_
.
get_value_or
(
L""
),
chart_build_
.
series_
.
back
().
mean_value_
.
graphic_properties_
,
chart_build_
.
series_
.
back
().
mean_value_
.
fill_
);
ApplyGraphicProperties
(
val
.
common_attlist_
.
chart_style_name_
.
get_value_or
(
L""
),
chart_build_
.
series_
.
back
().
mean_value_
.
graphic_properties_
,
chart_build_
.
series_
.
back
().
mean_value_
.
fill_
);
}
void
process_build_chart
::
visit
(
const
chart_error_indicator
&
val
)
{
...
...
ASCOfficeOdfFile/src/odf/chart_build_oox.h
View file @
114b80ff
...
...
@@ -109,7 +109,7 @@ public:
std
::
wstring
const
&
attachedAxis
,
std
::
wstring
const
&
styleName
);
void
add_point
(
unsigned
int
rep
,
std
::
wstring
const
&
styleName
);
void
add_point
(
unsigned
int
rep
);
void
calc_cache_series
(
std
::
wstring
adress
,
std
::
vector
<
std
::
wstring
>
&
cash
);
...
...
ASCOfficeOdfFile/src/odf/chart_objects.h
View file @
114b80ff
...
...
@@ -31,26 +31,31 @@ namespace chart {
struct
title
{
std
::
wstring
content_
;
std
::
vector
<
_property
>
text_properties_
;
title
()
:
bEnabled
(
false
),
pos_x
(
0
),
pos_y
(
0
)
{}
bool
bEnabled
;
double
pos_x
;
double
pos_y
;
std
::
wstring
content_
;
std
::
vector
<
_property
>
text_properties_
;
double
pos_x
;
double
pos_y
;
}
;
struct
simple
{
std
::
vector
<
_property
>
properties_
;
std
::
vector
<
_property
>
text_properties_
;
std
::
vector
<
_property
>
graphic_properties_
;
oox
::
_oox_fill
fill_
;
simple
()
:
bEnabled
(
false
)
{}
bool
bEnabled
;
std
::
vector
<
_property
>
properties_
;
std
::
vector
<
_property
>
text_properties_
;
std
::
vector
<
_property
>
graphic_properties_
;
oox
::
_oox_fill
fill_
;
};
struct
treadline
{
bool
bEquation
;
bool
bREquation
;
std
::
vector
<
_property
>
line_properties_
;
simple
equation_properties_
;
bool
bEquation
;
bool
bREquation
;
std
::
vector
<
_property
>
line_properties_
;
simple
equation_properties_
;
treadline
(){
bEquation
=
false
;
bREquation
=
false
;}
...
...
@@ -68,12 +73,13 @@ namespace chart {
{
enum
grid_type
{
major
,
minor
};
grid_type
type_
;
std
::
wstring
style_name_
;
grid_type
type_
;
std
::
wstring
style_name_
;
std
::
vector
<
_property
>
graphic_properties_
;
std
::
vector
<
_property
>
graphic_properties_
;
};
bool
bCategories_
;
title
title_
;
std
::
wstring
dimension_
;
...
...
@@ -87,11 +93,12 @@ namespace chart {
{
struct
point
{
point
(
unsigned
int
rep
,
std
::
wstring
const
&
styleName
)
:
repeated_
(
rep
),
style_name_
(
styleName
)
{}
point
(
unsigned
int
rep
/*, std::wstring const & styleName*/
)
:
repeated_
(
rep
)
/*, style_name_(styleName)*/
{}
unsigned
int
repeated_
;
std
::
vector
<
_property
>
graphic_properties_
;
oox
::
_oox_fill
fill_
;
unsigned
int
repeated_
;
std
::
wstring
style_name_
;
};
std
::
wstring
name_
;
...
...
ASCOfficeOdfFile/src/odf/datatypes/common_attlists.h
View file @
114b80ff
...
...
@@ -235,13 +235,13 @@ public:
void
serialize
(
CP_ATTR_NODE
);
public:
_CP_OPT
(
office_value_type
)
office_value_type_
;
_CP_OPT
(
std
::
wstring
)
office_value_
;
_CP_OPT
(
std
::
wstring
)
office_currency_
;
_CP_OPT
(
std
::
wstring
)
office_date_value_
;
_CP_OPT
(
std
::
wstring
)
office_time_value_
;
_CP_OPT
(
std
::
wstring
)
office_boolean_value_
;
_CP_OPT
(
std
::
wstring
)
office_string_value_
;
_CP_OPT
(
office_value_type
)
office_value_type_
;
_CP_OPT
(
std
::
wstring
)
office_value_
;
_CP_OPT
(
std
::
wstring
)
office_currency_
;
_CP_OPT
(
std
::
wstring
)
office_date_value_
;
_CP_OPT
(
std
::
wstring
)
office_time_value_
;
_CP_OPT
(
std
::
wstring
)
office_boolean_value_
;
_CP_OPT
(
std
::
wstring
)
office_string_value_
;
};
...
...
ASCOfficeOdfFile/src/odf/draw_frame_xlsx.cpp
View file @
114b80ff
...
...
@@ -37,10 +37,50 @@ namespace odf_reader {
void
draw_g
::
xlsx_convert
(
oox
::
xlsx_conversion_context
&
Context
)
{
for
(
int
i
=
0
;
i
<
content_
.
size
();
i
++
)
common_draw_shape_with_styles_attlist
common_draw_attlist_
=
common_draw_attlists_
.
shape_with_text_and_styles_
.
common_draw_shape_with_styles_attlist_
;
const
int
z_index
=
common_draw_attlist_
.
common_draw_z_index_attlist_
.
draw_z_index_
.
get_value_or
(
0
);
const
std
::
wstring
name
=
common_draw_attlist_
.
common_draw_name_attlist_
.
draw_name_
.
get_value_or
(
L""
);
//////////////////////////////////////////////////////////////////////////
Context
.
get_drawing_context
().
start_group
(
name
);
//const _CP_OPT(length) svg_widthVal = common_draw_attlists_.rel_size_.common_draw_size_attlist_.svg_width_;
// const _CP_OPT(length) svg_heightVal = common_draw_attlists_.rel_size_.common_draw_size_attlist_.svg_height_;
//if (svg_widthVal && svg_heightVal)
//{
// const double width_pt = svg_widthVal.get_value_or(length(0)).get_value_unit(length::pt);
// const double height_pt = svg_heightVal.get_value_or(length(0)).get_value_unit(length::pt);
// const double x_pt = common_draw_attlists_.position_.svg_x_.get_value_or(length(0)).get_value_unit(length::pt);
// const double y_pt = common_draw_attlists_.position_.svg_y_.get_value_or(length(0)).get_value_unit(length::pt);
// Context.get_drawing_context().set_rect(width_pt, height_pt, x_pt, y_pt);
//}
////////////////////////////////////////
std
::
wstring
Anchor
;
if
(
common_draw_attlist_
.
common_text_spreadsheet_shape_attlist_
.
table_end_cell_address_
)
{
Anchor
=
common_draw_attlist_
.
common_text_spreadsheet_shape_attlist_
.
table_end_cell_address_
.
get
();
const
double
a_x_pt
=
common_draw_attlist_
.
common_text_spreadsheet_shape_attlist_
.
table_end_x_
.
get_value_or
(
length
(
0
)).
get_value_unit
(
length
::
pt
);
const
double
a_y_pt
=
common_draw_attlist_
.
common_text_spreadsheet_shape_attlist_
.
table_end_y_
.
get_value_or
(
length
(
0
)).
get_value_unit
(
length
::
pt
);
Context
.
get_drawing_context
().
set_anchor
(
Anchor
,
a_x_pt
,
a_y_pt
,
true
);
}
////////////////////////////////////////////////
for
(
int
i
=
0
;
i
<
content_
.
size
();
i
++
)
{
content_
[
i
]
->
xlsx_convert
(
Context
);
office_element_ptr
const
&
elm
=
content_
[
i
];
elm
->
xlsx_convert
(
Context
);
}
Context
.
get_drawing_context
().
end_group
();
Context
.
get_drawing_context
().
clear
();
}
void
draw_frame
::
xlsx_convert
(
oox
::
xlsx_conversion_context
&
Context
)
{
...
...
@@ -83,10 +123,11 @@ void draw_frame::xlsx_convert(oox::xlsx_conversion_context & Context)
if
(
common_draw_attlist_
.
common_text_spreadsheet_shape_attlist_
.
table_end_cell_address_
)
{
Anchor
=
common_draw_attlist_
.
common_text_spreadsheet_shape_attlist_
.
table_end_cell_address_
.
get
();
const
double
a_x_pt
=
common_draw_attlist_
.
common_text_spreadsheet_shape_attlist_
.
table_end_x_
.
get_value_or
(
length
(
0
)).
get_value_unit
(
length
::
pt
);
const
double
a_y_pt
=
common_draw_attlist_
.
common_text_spreadsheet_shape_attlist_
.
table_end_y_
.
get_value_or
(
length
(
0
)).
get_value_unit
(
length
::
pt
);
Context
.
get_drawing_context
().
set_anchor
(
Anchor
,
a_x_pt
,
a_y_pt
);
Context
.
get_drawing_context
().
set_anchor
(
Anchor
,
a_x_pt
,
a_y_pt
);
}
//////////////////////////////////////////////
std
::
vector
<
const
odf_reader
::
style_instance
*>
instances
;
...
...
@@ -120,20 +161,14 @@ void draw_frame::xlsx_convert(oox::xlsx_conversion_context & Context)
Context
.
root
()
->
odf_context
().
drawStyles
()
,
fill
);
Context
.
get_drawing_context
().
set_fill
(
fill
);
////////////////////////////////////////////////
//BOOST_FOREACH(office_element_ptr const & elm, content_)
//{
// elm->xlsx_convert(Context);
//}
int
i
=
0
;
int
size
=
content_
.
size
();
while
(
true
)
for
(
int
i
=
0
;
i
<
content_
.
size
();
i
++
)
{
if
(
i
>=
size
)
break
;
office_element_ptr
const
&
elm
=
content_
[
i
];
elm
->
xlsx_convert
(
Context
);
i
++
;
}
Context
.
get_drawing_context
().
end_drawing
();
Context
.
get_drawing_context
().
clear
();
}
void
draw_image
::
xlsx_convert
(
oox
::
xlsx_conversion_context
&
Context
)
...
...
@@ -143,13 +178,9 @@ void draw_image::xlsx_convert(oox::xlsx_conversion_context & Context)
//////////////////////////////////// ...
Context
.
get_text_context
().
start_drawing_content
();
//... -
int
i
=
0
;
int
size
=
content_
.
size
();
while
(
true
)
for
(
int
i
=
0
;
i
<
content_
.
size
();
i
++
)
{
if
(
i
>=
size
)
break
;
content_
[
i
]
->
xlsx_convert
(
Context
);
i
++
;
}
std
::
wstring
text_content_
=
Context
.
get_text_context
().
end_drawing_content
();
...
...
@@ -165,17 +196,9 @@ void draw_chart::xlsx_convert(oox::xlsx_conversion_context & Context)
const
std
::
wstring
href
=
common_xlink_attlist_
.
href_
.
get_value_or
(
L""
);
Context
.
get_drawing_context
().
start_chart
(
href
);
//BOOST_FOREACH(office_element_ptr const & elm, content_)
//{
// elm->xlsx_convert(Context);
//}
int
i
=
0
;
int
size
=
content_
.
size
();
while
(
true
)
for
(
int
i
=
0
;
i
<
content_
.
size
();
i
++
)
{
if
(
i
>=
size
)
break
;
content_
[
i
]
->
xlsx_convert
(
Context
);
i
++
;
}
Context
.
get_drawing_context
().
end_chart
();
}
...
...
@@ -184,25 +207,18 @@ void draw_text_box::xlsx_convert(oox::xlsx_conversion_context & Context)
Context
.
get_drawing_context
().
start_shape
(
2
);
//rect
Context
.
get_text_context
().
start_drawing_content
();
//BOOST_FOREACH(office_element_ptr const & elm, content_)
//{
// elm->xlsx_convert(Context);
//}
int
i
=
0
;
int
size
=
content_
.
size
();
while
(
true
)
for
(
int
i
=
0
;
i
<
content_
.
size
();
i
++
)
{
if
(
i
>=
size
)
break
;
content_
[
i
]
->
xlsx_convert
(
Context
);
i
++
;
}
std
::
wstring
text_content_
=
Context
.
get_text_context
().
end_drawing_content
();
if
(
text_content_
.
length
()
>
0
)
{
Context
.
get_drawing_context
().
set_property
(
_property
(
L"text-content"
,
text_content_
));
}
Context
.
get_drawing_context
().
end_shape
();
Context
.
get_drawing_context
().
end_shape
();
}
void
draw_object
::
xlsx_convert
(
oox
::
xlsx_conversion_context
&
Context
)
{
...
...
ASCOfficeOdfFile/src/odf/draw_shapes_xlsx.cpp
View file @
114b80ff
...
...
@@ -127,6 +127,7 @@ void draw_rect::xlsx_convert(oox::xlsx_conversion_context & Context)
common_xlsx_convert
(
Context
);
Context
.
get_drawing_context
().
end_shape
();
Context
.
get_drawing_context
().
clear
();
}
void
draw_ellipse
::
xlsx_convert
(
oox
::
xlsx_conversion_context
&
Context
)
{
...
...
@@ -135,6 +136,7 @@ void draw_ellipse::xlsx_convert(oox::xlsx_conversion_context & Context)
common_xlsx_convert
(
Context
);
Context
.
get_drawing_context
().
end_shape
();
Context
.
get_drawing_context
().
clear
();
}
void
draw_circle
::
xlsx_convert
(
oox
::
xlsx_conversion_context
&
Context
)
{
...
...
@@ -143,6 +145,7 @@ void draw_circle::xlsx_convert(oox::xlsx_conversion_context & Context)
common_xlsx_convert
(
Context
);
Context
.
get_drawing_context
().
end_shape
();
Context
.
get_drawing_context
().
clear
();
}
void
draw_line
::
xlsx_convert
(
oox
::
xlsx_conversion_context
&
Context
)
{
...
...
@@ -153,6 +156,7 @@ void draw_line::xlsx_convert(oox::xlsx_conversion_context & Context)
common_xlsx_convert
(
Context
);
Context
.
get_drawing_context
().
end_shape
();
Context
.
get_drawing_context
().
clear
();
}
...
...
@@ -165,6 +169,7 @@ void draw_path::xlsx_convert(oox::xlsx_conversion_context & Context)
common_xlsx_convert
(
Context
);
Context
.
get_drawing_context
().
end_shape
();
Context
.
get_drawing_context
().
clear
();
}
void
draw_connector
::
xlsx_convert
(
oox
::
xlsx_conversion_context
&
Context
)
...
...
@@ -176,6 +181,7 @@ void draw_connector::xlsx_convert(oox::xlsx_conversion_context & Context)
common_xlsx_convert
(
Context
);
Context
.
get_drawing_context
().
end_shape
();
Context
.
get_drawing_context
().
clear
();
}
void
draw_polygon
::
xlsx_convert
(
oox
::
xlsx_conversion_context
&
Context
)
{
...
...
@@ -186,6 +192,7 @@ void draw_polygon::xlsx_convert(oox::xlsx_conversion_context & Context)
common_xlsx_convert
(
Context
);
Context
.
get_drawing_context
().
end_shape
();
Context
.
get_drawing_context
().
clear
();
}
void
draw_polyline
::
xlsx_convert
(
oox
::
xlsx_conversion_context
&
Context
)
{
...
...
@@ -196,6 +203,7 @@ void draw_polyline::xlsx_convert(oox::xlsx_conversion_context & Context)
common_xlsx_convert
(
Context
);
Context
.
get_drawing_context
().
end_shape
();
Context
.
get_drawing_context
().
clear
();
}
void
draw_custom_shape
::
xlsx_convert
(
oox
::
xlsx_conversion_context
&
Context
)
{
...
...
@@ -204,6 +212,7 @@ void draw_custom_shape::xlsx_convert(oox::xlsx_conversion_context & Context)
common_xlsx_convert
(
Context
);
Context
.
get_drawing_context
().
end_shape
();
Context
.
get_drawing_context
().
clear
();
}
void
draw_caption
::
xlsx_convert
(
oox
::
xlsx_conversion_context
&
Context
)
{
...
...
@@ -214,7 +223,7 @@ void draw_caption::xlsx_convert(oox::xlsx_conversion_context & Context)
common_xlsx_convert
(
Context
);
Context
.
get_drawing_context
().
end_shape
();
Context
.
get_drawing_context
().
clear
();
}
void
draw_enhanced_geometry
::
xlsx_convert
(
oox
::
xlsx_conversion_context
&
Context
)
{
...
...
ASCOfficeOdfFile/src/odf/table.cpp
View file @
114b80ff
...
...
@@ -599,43 +599,25 @@ const wchar_t * table_shapes::name = L"shapes";
void
table_shapes
::
docx_convert
(
oox
::
docx_conversion_context
&
Context
)
{
int
i
=
0
;
int
size
=
content_
.
size
();
while
(
true
)
{
if
(
i
>=
size
)
break
;
for
(
int
i
=
0
;
i
<
content_
.
size
();
i
++
)
{
content_
[
i
]
->
docx_convert
(
Context
);
i
++
;
}
}
void
table_shapes
::
pptx_convert
(
oox
::
pptx_conversion_context
&
Context
)
{
int
i
=
0
;
int
size
=
content_
.
size
();
while
(
true
)
{
if
(
i
>=
size
)
break
;
for
(
int
i
=
0
;
i
<
content_
.
size
();
i
++
)
{
content_
[
i
]
->
pptx_convert
(
Context
);
i
++
;
}
}
void
table_shapes
::
xlsx_convert
(
oox
::
xlsx_conversion_context
&
Context
)
{
Context
.
get_drawing_context
().
start_shapes
();
//BOOST_FOREACH(office_element_ptr const & elm, content_)
//{
// elm->xlsx_convert(Context);
//}
int
i
=
0
;
int
size
=
content_
.
size
();
while
(
true
)
{
if
(
i
>=
size
)
break
;
for
(
int
i
=
0
;
i
<
content_
.
size
();
i
++
)
{
content_
[
i
]
->
xlsx_convert
(
Context
);
i
++
;
}
Context
.
get_drawing_context
().
end_shapes
();
}
void
table_shapes
::
add_attributes
(
const
xml
::
attributes_wc_ptr
&
Attributes
)
...
...
ASCOfficeOdfFile/src/odf/table.h
View file @
114b80ff
...
...
@@ -62,12 +62,13 @@ public:
void
add_attributes
(
const
xml
::
attributes_wc_ptr
&
Attributes
);
public:
unsigned
int
table_number_columns_repeated_
;
// default 1
_CP_OPT
(
odf_types
::
style_ref
)
table_style_name_
;
_CP_OPT
(
std
::
wstring
)
table_content_validation_name_
;
_CP_OPT
(
std
::
wstring
)
table_formula_
;
unsigned
int
table_number_columns_repeated_
;
// default 1
_CP_OPT
(
odf_types
::
style_ref
)
table_style_name_
;
_CP_OPT
(
std
::
wstring
)
table_content_validation_name_
;
_CP_OPT
(
std
::
wstring
)
table_formula_
;
odf_types
::
common_value_and_type_attlist
common_value_and_type_attlist_
;
odf_types
::
common_value_and_type_attlist
common_value_and_type_attlist_
;
bool
table_protect_
;
// default false
...
...
@@ -80,10 +81,11 @@ public:
void
add_attributes
(
const
xml
::
attributes_wc_ptr
&
Attributes
);
public:
unsigned
int
table_number_columns_spanned_
;
// default 1
unsigned
int
table_number_rows_spanned_
;
// default 1
_CP_OPT
(
unsigned
int
)
table_number_matrix_columns_spanned_
;
_CP_OPT
(
unsigned
int
)
table_number_matrix_rows_spanned_
;
unsigned
int
table_number_columns_spanned_
;
// default 1
unsigned
int
table_number_rows_spanned_
;
// default 1
_CP_OPT
(
unsigned
int
)
table_number_matrix_columns_spanned_
;
_CP_OPT
(
unsigned
int
)
table_number_matrix_rows_spanned_
;
};
...
...
ASCOfficeOdfFile/src/odf/table_xlsx.cpp
View file @
114b80ff
...
...
@@ -738,6 +738,16 @@ void table_table_cell::xlsx_convert(oox::xlsx_conversion_context & Context)
{
CP_XML_NODE
(
L"f"
)
{
if
(
table_table_cell_attlist_extra_
.
table_number_matrix_columns_spanned_
&&
table_table_cell_attlist_extra_
.
table_number_matrix_rows_spanned_
)
{
std
::
wstring
ref
=
oox
::
getCellAddress
(
Context
.
current_table_column
(),
Context
.
current_table_row
());
ref
+=
L":"
;
ref
+=
oox
::
getCellAddress
(
Context
.
current_table_column
()
+
*
table_table_cell_attlist_extra_
.
table_number_matrix_columns_spanned_
-
1
,
Context
.
current_table_row
()
+
*
table_table_cell_attlist_extra_
.
table_number_matrix_rows_spanned_
-
1
);
CP_XML_ATTR
(
L"ref"
,
ref
);
CP_XML_ATTR
(
L"t"
,
L"array"
);
CP_XML_ATTR
(
L"aca"
,
false
);
}
//CP_XML_CONTENT(xml::utils::replace_lt_gt(xlsxFormula));
CP_XML_CONTENT
(
xlsxFormula
);
}
...
...
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