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
95899e23
Commit
95899e23
authored
Apr 25, 2017
by
ElenaSubbotina
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
OdfFormat - fix after testing
parent
234e19d6
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
197 additions
and
99 deletions
+197
-99
ASCOfficeOdfFile/OdfFileTest/OdfFileTest.cpp
ASCOfficeOdfFile/OdfFileTest/OdfFileTest.cpp
+1
-1
ASCOfficeOdfFile/src/odf/draw_shapes.cpp
ASCOfficeOdfFile/src/odf/draw_shapes.cpp
+16
-11
ASCOfficeOdfFile/src/odf/draw_shapes.h
ASCOfficeOdfFile/src/odf/draw_shapes.h
+3
-0
ASCOfficeOdfFile/src/odf/draw_shapes_docx.cpp
ASCOfficeOdfFile/src/odf/draw_shapes_docx.cpp
+10
-5
ASCOfficeOdfFileW/source/OdfFormat/odf_drawing_context.cpp
ASCOfficeOdfFileW/source/OdfFormat/odf_drawing_context.cpp
+41
-20
ASCOfficeOdfFileW/source/OdfFormat/odt_conversion_context.cpp
...fficeOdfFileW/source/OdfFormat/odt_conversion_context.cpp
+5
-2
ASCOfficeOdfFileW/source/OdfFormat/text_elements.cpp
ASCOfficeOdfFileW/source/OdfFormat/text_elements.cpp
+2
-0
ASCOfficeOdfFileW/source/Oox2OdfConverter/ConvertDrawing.cpp
ASCOfficeOdfFileW/source/Oox2OdfConverter/ConvertDrawing.cpp
+42
-11
ASCOfficeOdfFileW/source/Oox2OdfConverter/ConvertVml.cpp
ASCOfficeOdfFileW/source/Oox2OdfConverter/ConvertVml.cpp
+23
-10
ASCOfficeOdfFileW/source/Oox2OdfConverter/Converter.cpp
ASCOfficeOdfFileW/source/Oox2OdfConverter/Converter.cpp
+10
-12
ASCOfficeOdfFileW/source/Oox2OdfConverter/Converter.h
ASCOfficeOdfFileW/source/Oox2OdfConverter/Converter.h
+2
-0
ASCOfficeOdfFileW/source/Oox2OdfConverter/DocxConverter.cpp
ASCOfficeOdfFileW/source/Oox2OdfConverter/DocxConverter.cpp
+37
-24
ASCOfficeOdfFileW/source/Oox2OdfConverter/DocxConverter.h
ASCOfficeOdfFileW/source/Oox2OdfConverter/DocxConverter.h
+4
-2
X2tConverter/build/Qt/X2tConverter.pri
X2tConverter/build/Qt/X2tConverter.pri
+1
-1
No files found.
ASCOfficeOdfFile/OdfFileTest/OdfFileTest.cpp
View file @
95899e23
...
...
@@ -54,7 +54,7 @@ int _tmain(int argc, _TCHAR* argv[])
HRESULT
hr
=
S_OK
;
//////////////////////////////////////////////////////////////////////////
std
::
wstring
srcFileName
=
argv
[
1
];
std
::
wstring
dstPath
=
argc
>
2
?
argv
[
2
]
:
srcFileName
+
L"-my.
ppt
x"
;
//xlsx pptx docx
std
::
wstring
dstPath
=
argc
>
2
?
argv
[
2
]
:
srcFileName
+
L"-my.
doc
x"
;
//xlsx pptx docx
std
::
wstring
outputDir
=
NSDirectory
::
GetFolderPath
(
dstPath
);
...
...
ASCOfficeOdfFile/src/odf/draw_shapes.cpp
View file @
95899e23
...
...
@@ -453,6 +453,7 @@ void draw_enhanced_geometry_attlist::add_attributes( const xml::attributes_wc_pt
CP_APPLY_ATTR
(
L"draw:modifiers"
,
draw_modifiers_
);
CP_APPLY_ATTR
(
L"draw:text-path"
,
draw_text_path_
);
CP_APPLY_ATTR
(
L"draw:enhanced-path"
,
draw_enhanced_path_
);
CP_APPLY_ATTR
(
L"drawooo:enhanced-path"
,
drawooo_enhanced_path_
);
CP_APPLY_ATTR
(
L"drawooo:sub-view-size"
,
drawooo_sub_view_size_
);
}
// draw:enhanced_geometry
...
...
@@ -485,6 +486,9 @@ void draw_enhanced_geometry::add_child_element( xml::sax * Reader, const std::ws
}
void
draw_enhanced_geometry
::
find_draw_type_oox
()
{
word_art_
=
false
;
bOoxType_
=
false
;
if
(
draw_enhanced_geometry_attlist_
.
draw_text_path_
&&
*
draw_enhanced_geometry_attlist_
.
draw_text_path_
==
true
)
{
...
...
@@ -501,7 +505,7 @@ void draw_enhanced_geometry::find_draw_type_oox()
{
int
count
=
sizeof
(
_OO_OOX_wordart
)
/
sizeof
(
_shape_converter
);
for
(
long
i
=
0
;
i
<
count
;
i
++
)
for
(
int
i
=
0
;
i
<
count
;
i
++
)
{
if
(
_OO_OOX_wordart
[
i
].
odf_reader
==
odf_type
)
{
...
...
@@ -518,7 +522,7 @@ void draw_enhanced_geometry::find_draw_type_oox()
if
(
pos
<
0
)
{
for
(
long
i
=
0
;
i
<
count
;
i
++
)
for
(
long
i
=
0
;
i
<
count
;
i
++
)
{
if
(
_OO_OOX_custom_shapes
[
i
].
odf_reader
==
odf_type
)
{
...
...
@@ -529,8 +533,9 @@ void draw_enhanced_geometry::find_draw_type_oox()
}
else
{
bOoxType_
=
true
;
std
::
wstring
oox_type
=
odf_type
.
substr
(
pos
+
6
);
for
(
long
i
=
0
;
i
<
count
;
i
++
)
for
(
long
i
=
0
;
i
<
count
;
i
++
)
{
if
(
_OO_OOX_custom_shapes
[
i
].
oox
==
oox_type
)
{
...
...
@@ -547,18 +552,18 @@ void draw_enhanced_geometry::find_draw_type_oox()
}
std
::
wstringstream
str
;
BOOST_FOREACH
(
const
office_element_ptr
&
parElement
,
draw_handle_
)
for
(
size_t
i
=
0
;
i
<
draw_handle_
.
size
();
i
++
)
{
draw_handle
*
handle
=
dynamic_cast
<
draw_handle
*>
(
parElement
.
get
());
int
min
=
-
1
;
int
max
=
-
1
;
draw_handle
*
handle
=
dynamic_cast
<
draw_handle
*>
(
draw_handle_
[
i
].
get
());
if
(
!
handle
)
continue
;
int
m
in
=
-
1
,
m
ax
=
-
1
;
try
{
min
=
parsing
(
handle
->
draw_handle_attlist_
.
draw_handle_range_y_minimum_
);
//пока статик .. и выдается только цыфровое значение
if
(
min
<
0
)
min
=
parsing
(
handle
->
draw_handle_attlist_
.
draw_handle_range_x_minimum_
);
if
(
min
<
0
)
min
=
parsing
(
handle
->
draw_handle_attlist_
.
draw_handle_radius_range_minimum_
);
if
(
min
<
0
)
min
=
parsing
(
handle
->
draw_handle_attlist_
.
draw_handle_range_x_minimum_
);
if
(
min
<
0
)
min
=
parsing
(
handle
->
draw_handle_attlist_
.
draw_handle_radius_range_minimum_
);
}
catch
(...)
{
...
...
@@ -574,7 +579,7 @@ void draw_enhanced_geometry::find_draw_type_oox()
catch
(...)
{
}
draw_handle_geometry
elm
=
{
min
,
max
};
draw_handle_geometry
elm
=
{
min
,
max
};
draw_handle_geometry_
.
push_back
(
elm
);
}
}
...
...
ASCOfficeOdfFile/src/odf/draw_shapes.h
View file @
95899e23
...
...
@@ -437,6 +437,7 @@ public:
_CP_OPT
(
std
::
wstring
)
draw_modifiers_
;
_CP_OPT
(
bool
)
draw_text_path_
;
_CP_OPT
(
std
::
wstring
)
draw_enhanced_path_
;
_CP_OPT
(
std
::
wstring
)
drawooo_enhanced_path_
;
_CP_OPT
(
std
::
wstring
)
drawooo_sub_view_size_
;
};
/////////////////////////////////////////////////////////////////////////
...
...
@@ -464,7 +465,9 @@ public:
_CP_OPT
(
int
)
sub_type_
;
_CP_OPT
(
int
)
draw_type_oox_index_
;
_CP_OPT
(
std
::
wstring
)
svg_viewbox_
;
bool
word_art_
;
bool
bOoxType_
;
typedef
std
::
pair
<
std
::
wstring
,
std
::
wstring
>
pair_string_value
;
...
...
ASCOfficeOdfFile/src/odf/draw_shapes_docx.cpp
View file @
95899e23
...
...
@@ -253,13 +253,19 @@ void draw_enhanced_geometry::docx_convert(oox::docx_conversion_context & Context
set_shape
=
true
;
}
if
(
sub_type_
)
{
shape
->
sub_type_
=
sub_type_
.
get
();
set_shape
=
true
;
}
std
::
wstring
odf_path
;
if
(
draw_enhanced_geometry_attlist_
.
drawooo_enhanced_path_
)
odf_path
=
draw_enhanced_geometry_attlist_
.
drawooo_enhanced_path_
.
get
();
else
if
(
draw_enhanced_geometry_attlist_
.
draw_enhanced_path_
)
odf_path
=
draw_enhanced_geometry_attlist_
.
draw_enhanced_path_
.
get
();
if
(
draw_enhanced_geometry_attlist_
.
draw_enhanced_path_
)
if
(
!
odf_path
.
empty
()
)
{
std
::
vector
<::
svg_path
::
_polyline
>
o_Polyline
;
...
...
@@ -267,7 +273,7 @@ void draw_enhanced_geometry::docx_convert(oox::docx_conversion_context & Context
try
{
res
=
::
svg_path
::
parseSvgD
(
o_Polyline
,
draw_enhanced_geometry_attlist_
.
draw_enhanced_path_
.
get
()
,
true
);
res
=
::
svg_path
::
parseSvgD
(
o_Polyline
,
odf_path
,
true
);
}
catch
(...)
{
...
...
@@ -316,8 +322,8 @@ void draw_enhanced_geometry::docx_convert(oox::docx_conversion_context & Context
{
if
(
draw_handle_geometry_
[
0
].
min
<
draw_handle_geometry_
[
0
].
max
)
{
shape
->
additional_
.
push_back
(
_property
(
L"draw-modifiers-min"
,
draw_handle_geometry_
[
0
].
min
));
shape
->
additional_
.
push_back
(
_property
(
L"draw-modifiers-max"
,
draw_handle_geometry_
[
0
].
max
));
shape
->
additional_
.
push_back
(
_property
(
L"draw-modifiers-min"
,
draw_handle_geometry_
[
0
].
min
));
shape
->
additional_
.
push_back
(
_property
(
L"draw-modifiers-max"
,
draw_handle_geometry_
[
0
].
max
));
}
}
}
...
...
@@ -326,7 +332,6 @@ void draw_enhanced_geometry::docx_convert(oox::docx_conversion_context & Context
{
shape
->
bad_shape_
=
true
;
}
}
}
}
\ No newline at end of file
ASCOfficeOdfFileW/source/OdfFormat/odf_drawing_context.cpp
View file @
95899e23
...
...
@@ -1260,7 +1260,8 @@ _CP_OPT(odf_types::color) odf_drawing_context::get_line_color()
}
void
odf_drawing_context
::
set_solid_fill
(
std
::
wstring
hexColor
)
{
if
(
!
impl_
->
current_graphic_properties
)
return
;
if
(
!
impl_
->
current_graphic_properties
)
return
;
if
(
hexColor
.
empty
())
return
;
int
res
=
0
;
if
((
res
=
hexColor
.
find
(
L"#"
))
<
0
)
hexColor
=
std
::
wstring
(
L"#"
)
+
hexColor
;
...
...
@@ -2177,27 +2178,47 @@ void odf_drawing_context::set_textarea_writing_mode(int mode)
paragraph_properties
=
style_
->
content_
.
get_style_paragraph_properties
();
}
}
if
(
paragraph_properties
==
NULL
&&
impl_
->
current_paragraph_properties
==
NULL
)
return
;
switch
(
mode
)
if
(
paragraph_properties
)
{
case
5
:
//textverticaltypeWordArtVert:
case
6
:
//textverticaltypeWordArtVertRtl:
case
4
:
//SimpleTypes::textverticaltypeVert270: //нужно отзеркалить по горизонтали текст
case
3
:
//SimpleTypes::textverticaltypeVert:
case
2
:
//SimpleTypes::textverticaltypeMongolianVert:
paragraph_properties
->
content_
.
style_writing_mode_
=
odf_types
::
writing_mode
(
odf_types
::
writing_mode
::
TbRl
);
impl_
->
current_paragraph_properties
->
content_
.
style_writing_mode_
=
odf_types
::
writing_mode
(
odf_types
::
writing_mode
::
TbRl
);
break
;
case
0
:
//SimpleTypes::textverticaltypeEaVert:
paragraph_properties
->
content_
.
style_writing_mode_
=
odf_types
::
writing_mode
(
odf_types
::
writing_mode
::
TbRl
);
impl_
->
current_paragraph_properties
->
content_
.
style_writing_mode_
=
odf_types
::
writing_mode
(
odf_types
::
writing_mode
::
TbRl
);
break
;
case
1
:
//SimpleTypes::textverticaltypeHorz:
default:
paragraph_properties
->
content_
.
style_writing_mode_
=
odf_types
::
writing_mode
(
odf_types
::
writing_mode
::
LrTb
);
impl_
->
current_paragraph_properties
->
content_
.
style_writing_mode_
=
odf_types
::
writing_mode
(
odf_types
::
writing_mode
::
LrTb
);
break
;
switch
(
mode
)
{
case
5
:
//textverticaltypeWordArtVert:
case
6
:
//textverticaltypeWordArtVertRtl:
case
4
:
//SimpleTypes::textverticaltypeVert270: //нужно отзеркалить по горизонтали текст
case
3
:
//SimpleTypes::textverticaltypeVert:
case
2
:
//SimpleTypes::textverticaltypeMongolianVert:
paragraph_properties
->
content_
.
style_writing_mode_
=
odf_types
::
writing_mode
(
odf_types
::
writing_mode
::
TbRl
);
break
;
case
0
:
//SimpleTypes::textverticaltypeEaVert:
paragraph_properties
->
content_
.
style_writing_mode_
=
odf_types
::
writing_mode
(
odf_types
::
writing_mode
::
TbRl
);
break
;
case
1
:
//SimpleTypes::textverticaltypeHorz:
default:
paragraph_properties
->
content_
.
style_writing_mode_
=
odf_types
::
writing_mode
(
odf_types
::
writing_mode
::
LrTb
);
break
;
}
}
if
(
impl_
->
current_paragraph_properties
)
{
switch
(
mode
)
{
case
5
:
//textverticaltypeWordArtVert:
case
6
:
//textverticaltypeWordArtVertRtl:
case
4
:
//SimpleTypes::textverticaltypeVert270: //нужно отзеркалить по горизонтали текст
case
3
:
//SimpleTypes::textverticaltypeVert:
case
2
:
//SimpleTypes::textverticaltypeMongolianVert:
impl_
->
current_paragraph_properties
->
content_
.
style_writing_mode_
=
odf_types
::
writing_mode
(
odf_types
::
writing_mode
::
TbRl
);
break
;
case
0
:
//SimpleTypes::textverticaltypeEaVert:
impl_
->
current_paragraph_properties
->
content_
.
style_writing_mode_
=
odf_types
::
writing_mode
(
odf_types
::
writing_mode
::
TbRl
);
break
;
case
1
:
//SimpleTypes::textverticaltypeHorz:
default:
impl_
->
current_paragraph_properties
->
content_
.
style_writing_mode_
=
odf_types
::
writing_mode
(
odf_types
::
writing_mode
::
LrTb
);
break
;
}
}
}
void
odf_drawing_context
::
set_paragraph_properties
(
style_paragraph_properties
*
paragraph_properties
)
...
...
ASCOfficeOdfFileW/source/OdfFormat/odt_conversion_context.cpp
View file @
95899e23
...
...
@@ -266,8 +266,11 @@ void odt_conversion_context::end_drawings()
}
else
{
text_context
()
->
start_element
(
elm
);
text_context
()
->
end_element
();
if
(
elm
)
{
text_context
()
->
start_element
(
elm
);
text_context
()
->
end_element
();
}
drawing_context
()
->
clear
();
drawing_context_
.
pop_back
();
...
...
ASCOfficeOdfFileW/source/OdfFormat/text_elements.cpp
View file @
95899e23
...
...
@@ -207,6 +207,8 @@ void text_list::create_child_element(const std::wstring & Ns, const std::wstring
}
void
text_list
::
add_child_element
(
const
office_element_ptr
&
child_element
)
{
if
(
!
child_element
)
return
;
ElementType
type
=
child_element
->
get_type
();
if
(
type
==
typeTextListHeader
)
...
...
ASCOfficeOdfFileW/source/Oox2OdfConverter/ConvertDrawing.cpp
View file @
95899e23
...
...
@@ -30,6 +30,8 @@
*
*/
#include "PptxConverter.h"
#include "DocxConverter.h"
#include "../utils.h"
#include "../../../Common/DocxFormat/Source/DocxFormat/Diagram/DiagramDrawing.h"
...
...
@@ -450,15 +452,20 @@ void OoxConverter::convert(PPTX::Logic::Shape *oox_shape)
type
=
preset
.
GetValue
();
}
if
(
type
==
SimpleTypes
::
shapetypeRect
&&
oox_shape
->
txBody
.
IsInit
(
))
if
(
type
==
SimpleTypes
::
shapetypeRect
&&
(
oox_shape
->
txBody
.
IsInit
()
||
oox_shape
->
oTextBoxShape
.
IsInit
()
))
type
=
2000
;
if
(
type
==
2000
&&
oox_shape
->
txBody
->
bodyPr
.
IsInit
()
&&
oox_shape
->
txBody
->
bodyPr
->
fromWordArt
.
get_value_or
(
false
))
if
(
type
==
2000
)
{
int
wordart_type
=
convert
(
oox_shape
->
txBody
->
bodyPr
->
prstTxWarp
.
GetPointer
());
if
(
wordart_type
>
0
)
type
=
wordart_type
;
PPTX
::
Logic
::
BodyPr
*
bodyPr
=
NULL
;
if
(
oox_shape
->
txBody
.
IsInit
())
bodyPr
=
oox_shape
->
txBody
->
bodyPr
.
GetPointer
();
else
bodyPr
=
oox_shape
->
oTextBoxBodyPr
.
GetPointer
();
if
(
bodyPr
&&
bodyPr
->
fromWordArt
.
get_value_or
(
false
))
{
int
wordart_type
=
convert
(
bodyPr
->
prstTxWarp
.
GetPointer
());
if
(
wordart_type
>
0
)
type
=
wordart_type
;
}
}
}
else
if
(
oox_shape
->
nvSpPr
.
nvPr
.
ph
.
is_init
())
...
...
@@ -476,7 +483,24 @@ void OoxConverter::convert(PPTX::Logic::Shape *oox_shape)
if
(
oox_shape
->
txXfrm
.
IsInit
()
==
false
)
{
convert
(
oox_shape
->
txBody
.
GetPointer
(),
oox_shape
->
style
.
GetPointer
());
if
(
oox_shape
->
oTextBoxShape
.
IsInit
())
//docx sdt
{
DocxConverter
*
docx_converter
=
dynamic_cast
<
DocxConverter
*>
(
this
);
if
(
docx_converter
)
{
odf_context
()
->
start_text_context
();
docx_converter
->
convert
(
oox_shape
->
oTextBoxShape
.
GetPointer
());
odf_context
()
->
drawing_context
()
->
set_text
(
odf_context
()
->
text_context
());
convert
(
oox_shape
->
oTextBoxBodyPr
.
GetPointer
());
if
(
oox_shape
->
style
.
IsInit
())
convert
(
&
oox_shape
->
style
->
fontRef
);
odf_context
()
->
end_text_context
();
}
}
else
convert
(
oox_shape
->
txBody
.
GetPointer
(),
oox_shape
->
style
.
GetPointer
());
}
odf_context
()
->
drawing_context
()
->
end_shape
();
...
...
@@ -887,12 +911,19 @@ void OoxConverter::convert(PPTX::Logic::UniColor * color, std::wstring & hexStri
if
(
!
color
)
return
;
convert
(
color
,
nARGB
);
hexString
=
XmlUtils
::
IntToString
(
nARGB
&
0x00FFFFFF
,
L"#%06X"
);
if
((
nARGB
>>
24
)
!=
0xff
)
if
(
nARGB
!=
0
)
{
hexString
=
XmlUtils
::
IntToString
(
nARGB
&
0x00FFFFFF
,
L"#%06X"
);
if
((
nARGB
>>
24
)
!=
0xff
)
{
opacity
=
((
nARGB
>>
24
)
/
255.
)
*
100.
;
}
}
else
{
opacity
=
((
nARGB
>>
24
)
/
255.
)
*
100.
;
//not found in theme
}
}
...
...
ASCOfficeOdfFileW/source/Oox2OdfConverter/ConvertVml.cpp
View file @
95899e23
...
...
@@ -70,7 +70,7 @@ void OoxConverter::convert(OOX::Vml::CShapeType *vml_shape_type)
}
//m_oPreferRelative//типо можно менять размер
for
(
unsigned
int
i
=
0
;
i
<
vml_shape_type
->
m_arrItems
.
size
();
i
++
)
for
(
size_t
i
=
0
;
i
<
vml_shape_type
->
m_arrItems
.
size
();
i
++
)
{
convert
(
vml_shape_type
->
m_arrItems
[
i
]);
}
...
...
@@ -86,6 +86,18 @@ void OoxConverter::convert(OOX::Vml::CShapeType *vml_shape_type)
//m_arrItems
//CVmlCommonElements
}
void
OoxConverter
::
convert
(
OOX
::
Vml
::
CFormulas
*
vml_formulas
)
{
if
(
vml_formulas
==
NULL
)
return
;
for
(
size_t
i
=
0
;
i
<
vml_formulas
->
m_arrItems
.
size
();
i
++
)
{
OOX
::
Vml
::
CF
*
cf
=
dynamic_cast
<
OOX
::
Vml
::
CF
*>
(
vml_formulas
->
m_arrItems
[
i
]);
if
(
cf
==
NULL
)
continue
;
//odf_context()->drawing_context()->add_formula(L"", cf->m_sEqn);
}
}
void
OoxConverter
::
convert
(
SimpleTypes
::
Vml
::
CCssStyle
*
vml_style
,
bool
group
)
{
...
...
@@ -95,7 +107,7 @@ void OoxConverter::convert(SimpleTypes::Vml::CCssStyle *vml_style, bool group)
_CP_OPT
(
int
)
anchor_type_x
,
anchor_type_y
;
for
(
unsigned
int
i
=
0
;
i
<
vml_style
->
m_arrProperties
.
size
();
i
++
)
for
(
size_t
i
=
0
;
i
<
vml_style
->
m_arrProperties
.
size
();
i
++
)
{
if
(
vml_style
->
m_arrProperties
[
i
]
==
NULL
)
continue
;
...
...
@@ -693,17 +705,18 @@ void OoxConverter::convert(OOX::Vml::CTextbox *vml_textbox)
odf_context
()
->
drawing_context
()
->
set_textarea_wrap
(
true
);
DocxConverter
*
docx_converter
=
dynamic_cast
<
DocxConverter
*>
(
this
);
odf_context
()
->
start_text_context
();
if
(
docx_converter
)
{
for
(
unsigned
int
i
=
0
;
i
<
vml_textbox
->
m_oTxtbxContent
->
m_arrItems
.
size
();
i
++
)
odf_context
()
->
start_text_context
();
{
if
(
docx_converter
)
for
(
size_t
i
=
0
;
i
<
vml_textbox
->
m_oTxtbxContent
->
m_arrItems
.
size
();
i
++
)
{
docx_converter
->
convert
(
vml_textbox
->
m_oTxtbxContent
->
m_arrItems
[
i
]);
}
odf_context
()
->
drawing_context
()
->
set_text
(
odf_context
()
->
text_context
());
}
odf_context
()
->
drawing_context
()
->
set_text
(
odf_context
()
->
text_context
());
odf_context
()
->
end_text_context
();
}
odf_context
()
->
end_text_context
();
}
void
OoxConverter
::
convert
(
OOX
::
Vml
::
CTextPath
*
vml_textpath
)
...
...
@@ -869,7 +882,7 @@ void OoxConverter::convert(OOX::Vml::CVmlCommonElements *vml_common)
delete
oRgbColor
;
}
}
for
(
unsigned
int
i
=
0
;
i
<
vml_common
->
m_arrItems
.
size
();
i
++
)
for
(
size_t
i
=
0
;
i
<
vml_common
->
m_arrItems
.
size
();
i
++
)
{
convert
(
vml_common
->
m_arrItems
[
i
]);
}
...
...
@@ -899,7 +912,7 @@ void OoxConverter::convert(OOX::Vml::CGroup *vml_group)
odf_context
()
->
drawing_context
()
->
set_group_shift
(
vml_group
->
m_oCoordOrigin
->
GetX
(),
vml_group
->
m_oCoordOrigin
->
GetY
());
}
for
(
unsigned
int
i
=
0
;
i
<
vml_group
->
m_arrItems
.
size
();
i
++
)
for
(
size_t
i
=
0
;
i
<
vml_group
->
m_arrItems
.
size
();
i
++
)
{
if
(
vml_group
->
m_arrItems
[
i
]
==
NULL
)
continue
;
...
...
ASCOfficeOdfFileW/source/Oox2OdfConverter/Converter.cpp
View file @
95899e23
...
...
@@ -145,18 +145,15 @@ void OoxConverter::convert(OOX::WritingElement *oox_unknown)
{
case
OOX
:
:
et_graphicFrame
:
{
PPTX
::
Logic
::
GraphicFrame
*
pGraphicFrame
=
dynamic_cast
<
PPTX
::
Logic
::
GraphicFrame
*>
(
oox_unknown
);
convert
(
pGraphicFrame
);
convert
(
dynamic_cast
<
PPTX
::
Logic
::
GraphicFrame
*>
(
oox_unknown
));
}
break
;
case
OOX
:
:
et_pic
:
{
PPTX
::
Logic
::
Pic
*
pPic
=
dynamic_cast
<
PPTX
::
Logic
::
Pic
*>
(
oox_unknown
);
convert
(
pPic
);
convert
(
dynamic_cast
<
PPTX
::
Logic
::
Pic
*>
(
oox_unknown
));
}
break
;
case
OOX
:
:
et_dgm_DiagrammParts
:
{
PPTX
::
Logic
::
SmartArt
*
pDiagrammParts
=
dynamic_cast
<
PPTX
::
Logic
::
SmartArt
*>
(
oox_unknown
);
convert
(
pDiagrammParts
);
convert
(
dynamic_cast
<
PPTX
::
Logic
::
SmartArt
*>
(
oox_unknown
));
}
break
;
case
OOX
:
:
et_a_Shape
:
case
OOX
:
:
et_p_Shape
:
...
...
@@ -268,18 +265,19 @@ void OoxConverter::convert(OOX::WritingElement *oox_unknown)
}
break
;
case
OOX
:
:
et_v_fill
:
{
OOX
::
Vml
::
CFill
*
vml
=
dynamic_cast
<
OOX
::
Vml
::
CFill
*>
(
oox_unknown
);
convert
(
vml
);
convert
(
dynamic_cast
<
OOX
::
Vml
::
CFill
*>
(
oox_unknown
));
}
break
;
case
OOX
:
:
et_v_stroke
:
{
OOX
::
Vml
::
CStroke
*
vml
=
dynamic_cast
<
OOX
::
Vml
::
CStroke
*>
(
oox_unknown
);
convert
(
vml
);
convert
(
dynamic_cast
<
OOX
::
Vml
::
CStroke
*>
(
oox_unknown
));
}
break
;
case
OOX
:
:
et_v_formulas
:
{
convert
(
dynamic_cast
<
OOX
::
Vml
::
CFormulas
*>
(
oox_unknown
));
}
break
;
case
OOX
:
:
et_v_shadow
:
{
OOX
::
Vml
::
CShadow
*
vml
=
dynamic_cast
<
OOX
::
Vml
::
CShadow
*>
(
oox_unknown
);
convert
(
vml
);
convert
(
dynamic_cast
<
OOX
::
Vml
::
CShadow
*>
(
oox_unknown
));
}
break
;
case
OOX
:
:
et_v_image
:
{
...
...
ASCOfficeOdfFileW/source/Oox2OdfConverter/Converter.h
View file @
95899e23
...
...
@@ -245,6 +245,7 @@ namespace OOX
class
CTextPath
;
class
CGroup
;
class
CVmlCommonElements
;
class
CFormulas
;
}
namespace
VmlWord
{
...
...
@@ -510,6 +511,7 @@ public:
void
convert
(
OOX
::
VmlWord
::
CWrap
*
vml_wrap
);
void
convert
(
OOX
::
Vml
::
CGroup
*
vml_group
);
void
convert
(
OOX
::
Vml
::
CVmlCommonElements
*
vml_attr
);
void
convert
(
OOX
::
Vml
::
CFormulas
*
vml_formulas
);
};
}
// namespace Oox2Odf
ASCOfficeOdfFileW/source/Oox2OdfConverter/DocxConverter.cpp
View file @
95899e23
...
...
@@ -317,16 +317,16 @@ void DocxConverter::convert(OOX::WritingElement *oox_unknown)
// OOX::Logic::CShape* pShape = dynamic_cast<OOX::Logic::CShape*>(oox_unknown);
// convert(pShape);
//}break;
//
case OOX::et_w_pict:
//
{
//
OOX::Logic::CPicture* pPic = dynamic_cast<OOX::Logic::CPicture*>(oox_unknown);
//
convert(pPic);
//
}break;
//
case OOX::et_w_object:
//
{
//
OOX::Logic::CObject* pObj = dynamic_cast<OOX::Logic::CObject*>(oox_unknown);
//
convert(pObj);
//
}break;
case
OOX
:
:
et_w_pict
:
{
OOX
::
Logic
::
CPicture
*
pPic
=
dynamic_cast
<
OOX
::
Logic
::
CPicture
*>
(
oox_unknown
);
convert
(
pPic
);
}
break
;
case
OOX
:
:
et_w_object
:
{
OOX
::
Logic
::
CObject
*
pObj
=
dynamic_cast
<
OOX
::
Logic
::
CObject
*>
(
oox_unknown
);
convert
(
pObj
);
}
break
;
case
OOX
:
:
et_pic_pic
:
case
OOX
:
:
et_pic
:
case
OOX
:
:
et_p_pic
:
...
...
@@ -353,23 +353,27 @@ void DocxConverter::convert(OOX::WritingElement *oox_unknown)
}
break
;
case
OOX
:
:
et_w_commentReference
:
{
OOX
::
Logic
::
CCommentReference
*
pCommRef
=
dynamic_cast
<
OOX
::
Logic
::
CCommentReference
*>
(
oox_unknown
);
convert
(
pCommRef
);
//если нет Start - означает начало с предыдущего Run
convert
(
dynamic_cast
<
OOX
::
Logic
::
CCommentReference
*>
(
oox_unknown
));
//если нет Start - означает начало с предыдущего Run
}
break
;
case
OOX
:
:
et_w_footnoteReference
:
{
OOX
::
Logic
::
CFootnoteReference
*
pRef
=
dynamic_cast
<
OOX
::
Logic
::
CFootnoteReference
*>
(
oox_unknown
);
convert
(
pRef
);
convert
(
dynamic_cast
<
OOX
::
Logic
::
CFootnoteReference
*>
(
oox_unknown
));
}
break
;
case
OOX
:
:
et_w_endnoteReference
:
{
OOX
::
Logic
::
CEndnoteReference
*
pRef
=
dynamic_cast
<
OOX
::
Logic
::
CEndnoteReference
*>
(
oox_unknown
);
convert
(
pRef
);
convert
(
dynamic_cast
<
OOX
::
Logic
::
CEndnoteReference
*>
(
oox_unknown
));
}
break
;
case
OOX
:
:
et_w_endnoteRef
:
{
//add ref ??? todoooo
}
break
;
case
OOX
:
:
et_w_footnoteRef
:
{
//add ref
}
break
;
case
OOX
:
:
et_w_tbl
:
{
OOX
::
Logic
::
CTbl
*
pTable
=
dynamic_cast
<
OOX
::
Logic
::
CTbl
*>
(
oox_unknown
);
convert
(
pTable
);
convert
(
dynamic_cast
<
OOX
::
Logic
::
CTbl
*>
(
oox_unknown
));
}
break
;
case
OOX
:
:
et_w_tr
:
{
...
...
@@ -381,6 +385,12 @@ void DocxConverter::convert(OOX::WritingElement *oox_unknown)
OOX
::
Logic
::
CTc
*
pCell
=
dynamic_cast
<
OOX
::
Logic
::
CTc
*>
(
oox_unknown
);
convert
(
pCell
);
}
break
;
case
OOX
:
:
et_w_bookmarkStart
:
{
}
break
;
case
OOX
:
:
et_w_bookmarkEnd
:
{
}
break
;
default:
{
OoxConverter
::
convert
(
oox_unknown
);
...
...
@@ -394,12 +404,15 @@ void DocxConverter::convert(OOX::Logic::CSdt *oox_sdt)
//nullable<OOX::Logic::CSdtEndPr > m_oSdtEndPr;
//nullable<OOX::Logic::CSdtPr > m_oSdtPr;
if
(
oox_sdt
->
m_oSdtContent
.
IsInit
())
convert
(
oox_sdt
->
m_oSdtContent
.
GetPointer
());
}
void
DocxConverter
::
convert
(
OOX
::
Logic
::
CSdtContent
*
oox_sdt
)
{
if
(
oox_sdt
==
NULL
)
return
;
for
(
size_t
i
=
0
;
i
<
oox_sdt
->
m_arrItems
.
size
();
i
++
)
{
for
(
unsigned
int
i
=
0
;
i
<
oox_sdt
->
m_oSdtContent
->
m_arrItems
.
size
();
i
++
)
{
convert
(
oox_sdt
->
m_oSdtContent
->
m_arrItems
[
i
]);
}
convert
(
oox_sdt
->
m_arrItems
[
i
]);
}
}
void
DocxConverter
::
convert
(
OOX
::
Logic
::
CParagraph
*
oox_paragraph
)
...
...
@@ -3017,7 +3030,7 @@ void DocxConverter::convert(OOX::Numbering::CAbstractNum* oox_num_style)
if
(
oox_num_style
->
m_oAbstractNumId
.
IsInit
()
==
false
)
return
;
odt_context
->
styles_context
()
->
lists_styles
().
start_style
(
fals
e
,
oox_num_style
->
m_oAbstractNumId
->
GetValue
());
odt_context
->
styles_context
()
->
lists_styles
().
start_style
(
tru
e
,
oox_num_style
->
m_oAbstractNumId
->
GetValue
());
//// Childs
//std::vector<OOX::Numbering::CLvl > m_arrLvl;
//nullable<ComplexTypes::Word::CMultiLevelType > m_oMultiLevelType;
...
...
ASCOfficeOdfFileW/source/Oox2OdfConverter/DocxConverter.h
View file @
95899e23
...
...
@@ -95,6 +95,7 @@ namespace OOX
class
CTcBorders
;
class
CTblBorders
;
class
CSdt
;
class
CSdtContent
;
class
CBackground
;
class
CLockedCanvas
;
...
...
@@ -151,7 +152,8 @@ namespace Oox2Odf
virtual
std
::
wstring
find_link_by_id
(
std
::
wstring
sId
,
int
t
);
virtual
NSCommon
::
smart_ptr
<
OOX
::
File
>
find_file_by_id
(
std
::
wstring
sId
);
void
convert
(
OOX
::
WritingElement
*
oox_unknown
);
void
convert
(
OOX
::
WritingElement
*
oox_unknown
);
void
convert
(
OOX
::
Logic
::
CSdtContent
*
oox_sdt
);
private:
struct
_section
{
...
...
@@ -220,7 +222,7 @@ namespace Oox2Odf
void
convert
(
OOX
::
Drawing
::
CAnchor
*
oox_anchor
);
void
convert
(
OOX
::
Drawing
::
CInline
*
oox_inline
);
void
convert
(
SimpleTypes
::
CTheme
<>
*
oox_font_theme
,
_CP_OPT
(
std
::
wstring
)
&
odf_font_name
);
void
convert
(
ComplexTypes
::
Word
::
CColor
*
color
,
_CP_OPT
(
odf_types
::
color
)
&
odf_color
);
void
convert
(
SimpleTypes
::
CUniversalMeasure
*
oox_size
,
_CP_OPT
(
odf_types
::
length
)
&
odf_size
);
...
...
X2tConverter/build/Qt/X2tConverter.pri
View file @
95899e23
...
...
@@ -7,7 +7,7 @@
QT -= core
QT -= gui
VERSION = 2.4.45
0
.0
VERSION = 2.4.45
1
.0
DEFINES += INTVER=$$VERSION
TARGET = x2t
...
...
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