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
9e96fb6e
Commit
9e96fb6e
authored
Sep 29, 2016
by
ElenaSubbotina
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
OdfFormatWrites - footnotes & endnotes
parent
dc4f7e64
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
660 additions
and
122 deletions
+660
-122
ASCOfficeOdfFileW/ASCOfficeOdfFileWTest/ASCOfficeOdfFileWTest.vcproj
...fFileW/ASCOfficeOdfFileWTest/ASCOfficeOdfFileWTest.vcproj
+24
-0
ASCOfficeOdfFileW/linux/OdfFileWriterLib.pro
ASCOfficeOdfFileW/linux/OdfFileWriterLib.pro
+2
-0
ASCOfficeOdfFileW/source/OdfFormat/list.cpp
ASCOfficeOdfFileW/source/OdfFormat/list.cpp
+5
-5
ASCOfficeOdfFileW/source/OdfFormat/odf_comment_context.h
ASCOfficeOdfFileW/source/OdfFormat/odf_comment_context.h
+6
-6
ASCOfficeOdfFileW/source/OdfFormat/odf_notes_context.cpp
ASCOfficeOdfFileW/source/OdfFormat/odf_notes_context.cpp
+176
-0
ASCOfficeOdfFileW/source/OdfFormat/odf_notes_context.h
ASCOfficeOdfFileW/source/OdfFormat/odf_notes_context.h
+79
-0
ASCOfficeOdfFileW/source/OdfFormat/odt_conversion_context.cpp
...fficeOdfFileW/source/OdfFormat/odt_conversion_context.cpp
+46
-3
ASCOfficeOdfFileW/source/OdfFormat/odt_conversion_context.h
ASCOfficeOdfFileW/source/OdfFormat/odt_conversion_context.h
+10
-4
ASCOfficeOdfFileW/source/OdfFormat/paragraph_elements.cpp
ASCOfficeOdfFileW/source/OdfFormat/paragraph_elements.cpp
+81
-18
ASCOfficeOdfFileW/source/OdfFormat/paragraph_elements.h
ASCOfficeOdfFileW/source/OdfFormat/paragraph_elements.h
+101
-51
ASCOfficeOdfFileW/source/OdfFormat/text_elements.cpp
ASCOfficeOdfFileW/source/OdfFormat/text_elements.cpp
+13
-13
ASCOfficeOdfFileW/source/Oox2OdfConverter/DocxConverter.cpp
ASCOfficeOdfFileW/source/Oox2OdfConverter/DocxConverter.cpp
+93
-13
ASCOfficeOdfFileW/source/Oox2OdfConverter/DocxConverter.h
ASCOfficeOdfFileW/source/Oox2OdfConverter/DocxConverter.h
+13
-6
ASCOfficeOdfFileW/source/win32/OdfFormat.vcproj
ASCOfficeOdfFileW/source/win32/OdfFormat.vcproj
+8
-0
Common/DocxFormat/Source/DocxFormat/Footnote.h
Common/DocxFormat/Source/DocxFormat/Footnote.h
+3
-3
No files found.
ASCOfficeOdfFileW/ASCOfficeOdfFileWTest/ASCOfficeOdfFileWTest.vcproj
View file @
9e96fb6e
...
...
@@ -349,6 +349,30 @@
/>
</FileConfiguration>
</File>
<File
RelativePath=
"..\..\Common\FileDownloader\FileDownloader_win.cpp"
>
<FileConfiguration
Name=
"Debug|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
UsePrecompiledHeader=
"0"
/>
</FileConfiguration>
</File>
<File
RelativePath=
"..\..\Common\3dParty\pole\pole.cpp"
>
<FileConfiguration
Name=
"Debug|Win32"
>
<Tool
Name=
"VCCLCompilerTool"
UsePrecompiledHeader=
"0"
/>
</FileConfiguration>
</File>
</Filter>
</Files>
<Globals>
...
...
ASCOfficeOdfFileW/linux/OdfFileWriterLib.pro
View file @
9e96fb6e
...
...
@@ -53,6 +53,7 @@ SOURCES += \
..
/
source
/
OdfFormat
/
object_package
.
cpp
\
..
/
source
/
OdfFormat
/
odf_chart_context
.
cpp
\
..
/
source
/
OdfFormat
/
odf_comment_context
.
cpp
\
..
/
source
/
OdfFormat
/
odf_notes_context
.
cpp
\
..
/
source
/
OdfFormat
/
odf_conversion_context
.
cpp
\
..
/
source
/
OdfFormat
/
odf_drawing_context
.
cpp
\
..
/
source
/
OdfFormat
/
odf_lists_styles_context
.
cpp
\
...
...
@@ -116,6 +117,7 @@ HEADERS += \
..
/
source
/
OdfFormat
/
object_package
.
h
\
..
/
source
/
OdfFormat
/
odf_chart_context
.
h
\
..
/
source
/
OdfFormat
/
odf_comment_context
.
h
\
..
/
source
/
OdfFormat
/
odf_notes_context
.
h
\
..
/
source
/
OdfFormat
/
odf_conversion_context
.
h
\
..
/
source
/
OdfFormat
/
odf_drawing_context
.
h
\
..
/
source
/
OdfFormat
/
odf_lists_styles_context
.
h
\
...
...
ASCOfficeOdfFileW/source/OdfFormat/list.cpp
View file @
9e96fb6e
...
...
@@ -51,7 +51,7 @@ using xml::xml_char_wc;
const
wchar_t
*
text_number
::
ns
=
L"text"
;
const
wchar_t
*
text_number
::
name
=
L"number"
;
void
text_number
::
serialize
(
::
std
::
wostream
&
_Wostream
)
void
text_number
::
serialize
(
std
::
wostream
&
_Wostream
)
{
CP_XML_WRITER
(
_Wostream
)
{
...
...
@@ -72,7 +72,7 @@ void text_number::add_text(const std::wstring & Text)
const
wchar_t
*
text_list_item
::
ns
=
L"text"
;
const
wchar_t
*
text_list_item
::
name
=
L"list-item"
;
void
text_list_item
::
serialize
(
::
std
::
wostream
&
_Wostream
)
void
text_list_item
::
serialize
(
std
::
wostream
&
_Wostream
)
{
CP_XML_WRITER
(
_Wostream
)
{
...
...
@@ -89,7 +89,7 @@ void text_list_item::serialize(::std::wostream & _Wostream)
}
void
text_list_item
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_list_item
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
if
CP_CHECK_NAME
(
L"text"
,
L"number"
)
{
...
...
@@ -119,7 +119,7 @@ const wchar_t * text_list_header::ns = L"text";
const
wchar_t
*
text_list_header
::
name
=
L"list-header"
;
void
text_list_header
::
serialize
(
::
std
::
wostream
&
_Wostream
)
void
text_list_header
::
serialize
(
std
::
wostream
&
_Wostream
)
{
CP_XML_WRITER
(
_Wostream
)
{
...
...
@@ -135,7 +135,7 @@ void text_list_header::serialize(::std::wostream & _Wostream)
}
}
void
text_list_header
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_list_header
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
if
CP_CHECK_NAME
(
L"text"
,
L"number"
)
{
...
...
ASCOfficeOdfFileW/source/OdfFormat/odf_comment_context.h
View file @
9e96fb6e
...
...
@@ -60,14 +60,14 @@ public:
bool
is_started
();
// for content
void
start_comment
(
office_element_ptr
&
elm
,
int
oox_id
);
void
end_comment
(
office_element_ptr
&
elm
,
int
oox_id
);
void
start_comment
(
office_element_ptr
&
elm
,
int
oox_id
);
void
end_comment
(
office_element_ptr
&
elm
,
int
oox_id
);
void
start_comment_content
();
void
end_comment_content
();
void
start_comment_content
();
void
end_comment_content
();
void
set_author
(
std
::
wstring
author
);
void
set_date
(
std
::
wstring
author
);
void
set_author
(
std
::
wstring
author
);
void
set_date
(
std
::
wstring
author
);
private:
std
::
wstring
find_name_by_id
(
int
oox_id
);
...
...
ASCOfficeOdfFileW/source/OdfFormat/odf_notes_context.cpp
0 → 100644
View file @
9e96fb6e
/*
* (c) Copyright Ascensio System SIA 2010-2016
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#include "logging.h"
#include <boost/foreach.hpp>
#include <boost/lexical_cast.hpp>
#include <iostream>
#include "odf_conversion_context.h"
#include "odf_notes_context.h"
#include "styles.h"
#include "paragraph_elements.h"
namespace
cpdoccore
{
using
namespace
odf_types
;
namespace
odf_writer
{
struct
odf_note_state
{
office_element_ptr
element
;
int
oox_id
;
std
::
wstring
odf_name
;
int
type
;
bool
is_started
;
int
state
;
};
class
odf_notes_context
::
Impl
{
public:
Impl
(
odf_conversion_context
*
odf_context
)
:
odf_context_
(
odf_context
)
{
//styles_context_ = odf_context_->styles_context();
}
std
::
vector
<
odf_note_state
>
notes_
;
odf_conversion_context
*
odf_context_
;
};
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
odf_notes_context
::
odf_notes_context
(
odf_conversion_context
*
odf_context
)
:
impl_
(
new
odf_notes_context
::
Impl
(
odf_context
))
{
}
odf_notes_context
::~
odf_notes_context
()
{
}
void
odf_notes_context
::
start_note
(
office_element_ptr
&
elm
,
int
oox_id
,
int
type
)
{
odf_note_state
state
;
impl_
->
notes_
.
push_back
(
state
);
impl_
->
notes_
.
back
().
element
=
elm
;
impl_
->
notes_
.
back
().
oox_id
=
oox_id
;
impl_
->
notes_
.
back
().
odf_name
=
L"note_"
+
boost
::
lexical_cast
<
std
::
wstring
>
(
oox_id
);
impl_
->
notes_
.
back
().
is_started
=
false
;
impl_
->
notes_
.
back
().
state
=
1
;
impl_
->
notes_
.
back
().
type
=
type
;
text_note
*
note
=
dynamic_cast
<
text_note
*>
(
elm
.
get
());
if
(
!
note
)
return
;
if
(
type
==
1
)
note
->
text_note_class_
=
odf_types
::
noteclass
::
Footnote
;
if
(
type
==
2
)
note
->
text_note_class_
=
odf_types
::
noteclass
::
Endnote
;
note
->
text_id_
=
impl_
->
notes_
.
back
().
odf_name
;
note
->
create_child_element
(
L"text"
,
L"note-citation"
);
text_note_citation
*
note_citation
=
dynamic_cast
<
text_note_citation
*>
(
note
->
text_note_citation_
.
get
());
if
(
note_citation
)
note_citation
->
add_text
(
boost
::
lexical_cast
<
std
::
wstring
>
(
oox_id
));
}
void
odf_notes_context
::
end_note
()
{
impl_
->
notes_
.
back
().
state
=
2
;
//stoped
}
void
odf_notes_context
::
start_note_content
()
{
impl_
->
notes_
.
back
().
is_started
=
true
;
impl_
->
notes_
.
back
().
element
->
create_child_element
(
L"text"
,
L"note-body"
);
}
office_element_ptr
odf_notes_context
::
get_note_content
()
{
text_note
*
note
=
dynamic_cast
<
text_note
*>
(
impl_
->
notes_
.
back
().
element
.
get
());
if
(
!
note
)
return
office_element_ptr
();
return
note
->
text_note_body_
;
}
void
odf_notes_context
::
end_note_content
()
{
impl_
->
notes_
.
back
().
is_started
=
false
;
}
int
odf_notes_context
::
find_by_id
(
int
oox_id
,
int
type
)
{
for
(
int
i
=
0
;
i
<
impl_
->
notes_
.
size
();
i
++
)
{
if
(
impl_
->
notes_
[
i
].
oox_id
==
oox_id
&&
impl_
->
notes_
[
i
].
type
==
type
)
{
return
impl_
->
notes_
[
i
].
state
;
}
}
return
0
;
}
std
::
wstring
odf_notes_context
::
find_name_by_id
(
int
oox_id
,
int
type
)
{
for
(
int
i
=
0
;
i
<
impl_
->
notes_
.
size
();
i
++
)
{
if
(
impl_
->
notes_
[
i
].
oox_id
==
oox_id
&&
impl_
->
notes_
[
i
].
type
==
type
)
{
return
impl_
->
notes_
[
i
].
odf_name
;
}
}
return
L""
;
}
bool
odf_notes_context
::
is_started
()
{
if
(
impl_
->
notes_
.
size
()
>
0
)
return
impl_
->
notes_
.
back
().
is_started
;
else
return
false
;
}
}
}
\ No newline at end of file
ASCOfficeOdfFileW/source/OdfFormat/odf_notes_context.h
0 → 100644
View file @
9e96fb6e
/*
* (c) Copyright Ascensio System SIA 2010-2016
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once
#include <string>
#include <vector>
#include <cpdoccore/CPOptional.h>
#include "office_elements_create.h"
namespace
cpdoccore
{
using
namespace
odf_types
;
namespace
odf_writer
{
class
odf_conversion_context
;
class
odf_style_context
;
class
odf_notes_context
{
public:
odf_notes_context
(
odf_conversion_context
*
odf_context
);
~
odf_notes_context
();
void
set_styles_context
(
odf_style_context
*
styles_context
);
int
find_by_id
(
int
oox_id
,
int
type
);
bool
is_started
();
// for content
void
start_note
(
office_element_ptr
&
elm
,
int
oox_id
,
int
type
);
void
end_note
();
void
start_note_content
();
office_element_ptr
get_note_content
();
void
end_note_content
();
private:
std
::
wstring
find_name_by_id
(
int
oox_id
,
int
type
);
class
Impl
;
_CP_PTR
(
Impl
)
impl_
;
};
}
}
\ No newline at end of file
ASCOfficeOdfFileW/source/OdfFormat/odt_conversion_context.cpp
View file @
9e96fb6e
...
...
@@ -73,7 +73,7 @@ double calculate_size_font_symbols(std::wstring str_test, std::wstring font_name
}
odt_conversion_context
::
odt_conversion_context
(
package
::
odf_document
*
outputDocument
)
:
odf_conversion_context
(
TextDocument
,
outputDocument
),
comment_context_
(
this
),
main_text_context_
(
NULL
),
table_context_
(
this
)
comment_context_
(
this
),
notes_context_
(
this
),
main_text_context_
(
NULL
),
table_context_
(
this
)
{
current_field_
.
enabled
=
false
;
current_field_
.
started
=
false
;
...
...
@@ -677,6 +677,7 @@ void odt_conversion_context::end_run()
current_field_
.
started
=
true
;
}
}
//--------------------------------------------------------------------------------------------------------
bool
odt_conversion_context
::
start_comment
(
int
oox_comm_id
)
{
int
comm_state
=
comment_context_
.
find_by_id
(
oox_comm_id
);
...
...
@@ -684,7 +685,7 @@ bool odt_conversion_context::start_comment(int oox_comm_id)
if
(
comm_state
==
0
)
{
office_element_ptr
comm_elm
;
create_element
(
L"office"
,
L"annotation"
,
comm_elm
,
this
);
create_element
(
L"office"
,
L"annotation"
,
comm_elm
,
this
);
comment_context_
.
start_comment
(
comm_elm
,
oox_comm_id
);
...
...
@@ -725,7 +726,7 @@ void odt_conversion_context::end_comment(int oox_comm_id)
if
(
added
==
true
)
{
office_element_ptr
comm_elm
;
create_element
(
L"office"
,
L"annotation-end"
,
comm_elm
,
this
);
create_element
(
L"office"
,
L"annotation-end"
,
comm_elm
,
this
);
comment_context_
.
end_comment
(
comm_elm
,
oox_comm_id
);
...
...
@@ -733,6 +734,48 @@ void odt_conversion_context::end_comment(int oox_comm_id)
text_context
()
->
current_level_
.
back
().
elm
->
add_child_element
(
comm_elm
);
}
}
//--------------------------------------------------------------------------------------------------------
void
odt_conversion_context
::
start_note
(
int
oox_ref_id
,
int
type
)
{
office_element_ptr
note_elm
;
create_element
(
L"text"
,
L"note"
,
note_elm
,
this
);
notes_context_
.
start_note
(
note_elm
,
oox_ref_id
,
type
);
if
(
text_context
()
->
current_level_
.
size
()
>
0
)
text_context
()
->
current_level_
.
back
().
elm
->
add_child_element
(
note_elm
);
odf_element_state
state
=
{
note_elm
,
L""
,
office_element_ptr
(),
(
int
)
text_context
()
->
current_level_
.
size
()};
text_context
()
->
current_level_
.
push_back
(
state
);
}
void
odt_conversion_context
::
start_note_content
()
{
notes_context_
.
start_note_content
();
office_element_ptr
&
note_content_element
=
notes_context_
.
get_note_content
();
odf_element_state
state
=
{
note_content_element
,
L""
,
office_element_ptr
(),
(
int
)
text_context
()
->
current_level_
.
size
()};
text_context
()
->
current_level_
.
push_back
(
state
);
start_text_context
();
text_context
()
->
start_element
(
note_content_element
);
}
void
odt_conversion_context
::
end_note_content
()
{
notes_context_
.
end_note_content
();
text_context
()
->
end_element
();
end_text_context
();
text_context
()
->
current_level_
.
pop_back
();
}
void
odt_conversion_context
::
end_note
()
{
notes_context_
.
end_note
();
text_context
()
->
current_level_
.
pop_back
();
}
//--------------------------------------------------------------------------------------------------------
void
odt_conversion_context
::
start_image
(
const
std
::
wstring
&
image_file_name
)
{
std
::
wstring
odf_ref_name
;
...
...
ASCOfficeOdfFileW/source/OdfFormat/odt_conversion_context.h
View file @
9e96fb6e
...
...
@@ -34,6 +34,7 @@
#include "odf_conversion_context.h"
#include "odf_comment_context.h"
#include "odf_notes_context.h"
#include "odf_table_context.h"
namespace
cpdoccore
{
...
...
@@ -112,11 +113,15 @@ public:
void
set_drop_cap_margin
(
bool
val
);
void
end_drop_cap
();
bool
start_comment
(
int
oox_comment_id
);
void
end_comment
(
int
oox_comment_id
);
bool
start_comment
(
int
oox_comment_id
);
void
end_comment
(
int
oox_comment_id
);
void
start_comment_content
();
void
end_comment_content
();
void
start_comment_content
();
void
end_comment_content
();
void
start_note
(
int
oox_ref_id
,
int
type
);
void
start_note_content
();
void
end_note_content
();
void
end_note
();
void
start_table
(
bool
styled
=
false
);
void
start_table_columns
();
...
...
@@ -154,6 +159,7 @@ private:
odf_table_context
table_context_
;
odf_comment_context
comment_context_
;
odf_notes_context
notes_context_
;
bool
is_header_
;
bool
is_footer_
;
...
...
ASCOfficeOdfFileW/source/OdfFormat/paragraph_elements.cpp
View file @
9e96fb6e
...
...
@@ -258,7 +258,7 @@ void text_span::serialize(std::wostream & _Wostream)
}
}
void
text_span
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_span
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
CP_CREATE_ELEMENT
(
paragraph_content_
);
}
...
...
@@ -306,16 +306,15 @@ void text_a::serialize(std::wostream & _Wostream)
CP_XML_ATTR_OPT
(
L"text:style-name"
,
text_style_name_
);
CP_XML_ATTR_OPT
(
L"text:visited-style-name"
,
text_visited_style_name_
);
BOOST_FOREACH
(
const
office_element_ptr
&
element
,
paragraph_content_
)
for
(
int
i
=
0
;
i
<
paragraph_content_
.
size
();
i
++
)
{
element
->
serialize
(
CP_XML_STREAM
());
paragraph_content_
[
i
]
->
serialize
(
CP_XML_STREAM
());
}
}
}
}
}
void
text_a
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_a
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
CP_CREATE_ELEMENT
(
paragraph_content_
);
}
...
...
@@ -330,10 +329,74 @@ void text_a::add_text(const std::wstring & Text)
office_element_ptr
elm
=
text_text
::
create
(
Text
)
;
paragraph_content_
.
push_back
(
elm
);
}
// text:note-citation
//////////////////////////////////////////////////////////////////////////////////////////////////
const
wchar_t
*
text_note_citation
::
ns
=
L"text"
;
const
wchar_t
*
text_note_citation
::
name
=
L"note-citation"
;
void
text_note_citation
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
CP_CREATE_ELEMENT
(
content_
);
}
void
text_note_citation
::
add_child_element
(
const
office_element_ptr
&
child_element
)
{
content_
.
push_back
(
child_element
);
}
void
text_note_citation
::
add_text
(
const
std
::
wstring
&
Text
)
{
office_element_ptr
elm
=
text_text
::
create
(
Text
)
;
content_
.
push_back
(
elm
);
}
void
text_note_citation
::
serialize
(
std
::
wostream
&
_Wostream
)
{
CP_XML_WRITER
(
_Wostream
)
{
CP_XML_NODE_SIMPLE
()
{
CP_XML_ATTR_OPT
(
L"text:label"
,
text_label_
);
for
(
int
i
=
0
;
i
<
content_
.
size
();
i
++
)
{
content_
[
i
]
->
serialize
(
CP_XML_STREAM
());
}
}
}
}
// text:note-body
//////////////////////////////////////////////////////////////////////////////////////////////////
const
wchar_t
*
text_note_body
::
ns
=
L"text"
;
const
wchar_t
*
text_note_body
::
name
=
L"note-body"
;
void
text_note_body
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
CP_CREATE_ELEMENT
(
content_
);
}
void
text_note_body
::
add_child_element
(
const
office_element_ptr
&
child_element
)
{
content_
.
push_back
(
child_element
);
}
void
text_note_body
::
serialize
(
std
::
wostream
&
_Wostream
)
{
CP_XML_WRITER
(
_Wostream
)
{
CP_XML_NODE_SIMPLE
()
{
for
(
int
i
=
0
;
i
<
content_
.
size
();
i
++
)
{
content_
[
i
]
->
serialize
(
CP_XML_STREAM
());
}
}
}
}
// text:note
//////////////////////////////////////////////////////////////////////////////////////////////////
const
wchar_t
*
text_note
::
ns
=
L"text"
;
const
wchar_t
*
text_note
::
ns
=
L"text"
;
const
wchar_t
*
text_note
::
name
=
L"note"
;
text_note
::
text_note
()
...
...
@@ -357,7 +420,7 @@ void text_note::serialize(std::wostream & _Wostream)
}
}
void
text_note
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_note
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
if
CP_CHECK_NAME
(
L"text"
,
L"note-citation"
)
{
...
...
@@ -409,7 +472,7 @@ void text_ruby::serialize(std::wostream & _Wostream)
}
}
void
text_ruby
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_ruby
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
if
CP_CHECK_NAME
(
L"text"
,
L"ruby-base"
)
{
...
...
@@ -454,7 +517,7 @@ void text_title::serialize(std::wostream & _Wostream)
}
void
text_title
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_title
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
}
...
...
@@ -488,7 +551,7 @@ void text_placeholder::serialize(std::wostream & _Wostream)
}
}
void
text_placeholder
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_placeholder
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
}
...
...
@@ -529,7 +592,7 @@ void text_page_number::serialize(std::wostream & _Wostream)
}
}
void
text_page_number
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_page_number
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
CP_CREATE_ELEMENT
(
text_
);
}
...
...
@@ -565,7 +628,7 @@ void text_page_count::serialize(std::wostream & _Wostream)
}
}
}
void
text_page_count
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_page_count
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
CP_CREATE_ELEMENT
(
text_
);
}
...
...
@@ -602,7 +665,7 @@ void text_date::serialize(std::wostream & _Wostream)
}
}
}
void
text_date
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_date
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
CP_CREATE_ELEMENT
(
text_
);
}
...
...
@@ -643,7 +706,7 @@ void text_time::serialize(std::wostream & _Wostream)
}
void
text_time
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_time
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
CP_CREATE_ELEMENT
(
text_
);
}
...
...
@@ -682,7 +745,7 @@ void text_file_name::serialize(std::wostream & _Wostream)
}
void
text_file_name
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_file_name
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
CP_CREATE_ELEMENT
(
text_
);
}
...
...
@@ -717,7 +780,7 @@ void text_sequence::serialize(std::wostream & _Wostream)
}
}
void
text_sequence
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_sequence
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
CP_CREATE_ELEMENT
(
text_
);
}
...
...
@@ -737,7 +800,7 @@ void text_sequence::add_text(const std::wstring & Text)
const
wchar_t
*
text_sheet_name
::
ns
=
L"text"
;
const
wchar_t
*
text_sheet_name
::
name
=
L"sheet-name"
;
void
text_sheet_name
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_sheet_name
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
CP_NOT_APPLICABLE_ELM
();
}
...
...
ASCOfficeOdfFileW/source/OdfFormat/paragraph_elements.h
View file @
9e96fb6e
...
...
@@ -62,19 +62,19 @@ public:
static
const
ElementType
type
=
typeTextText
;
CPDOCCORE_DEFINE_VISITABLE
();
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
){}
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
){}
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
){}
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
text_text
(
const
::
std
::
wstring
&
Text
)
:
text_
(
Text
)
{};
text_text
(
const
std
::
wstring
&
Text
)
:
text_
(
Text
)
{};
text_text
()
{};
std
::
wstring
&
attr_text
()
{
return
text_
;
};
virtual
void
add_text
(
const
std
::
wstring
&
Text
);
::
std
::
wstring
text_
;
std
::
wstring
text_
;
};
...
...
@@ -89,7 +89,7 @@ public:
static
const
ElementType
type
=
typeTextS
;
CPDOCCORE_DEFINE_VISITABLE
();
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
){}
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
){}
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
){}
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
...
...
@@ -113,7 +113,7 @@ public:
static
const
ElementType
type
=
typeTextTab
;
CPDOCCORE_DEFINE_VISITABLE
();
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
){}
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
){}
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
){}
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
...
...
@@ -139,7 +139,7 @@ public:
static
const
ElementType
type
=
typeTextLineBreak
;
CPDOCCORE_DEFINE_VISITABLE
();
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
){}
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
){}
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
){}
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
...
...
@@ -164,14 +164,14 @@ public:
public:
text_bookmark
()
{}
text_bookmark
(
const
::
std
::
wstring
&
Name
)
:
text_name_
(
Name
){};
text_bookmark
(
const
std
::
wstring
&
Name
)
:
text_name_
(
Name
){};
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
){}
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
){}
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
){}
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
::
std
::
wstring
text_name_
;
std
::
wstring
text_name_
;
};
CP_REGISTER_OFFICE_ELEMENT2
(
text_bookmark
);
...
...
@@ -189,14 +189,14 @@ public:
public:
text_bookmark_start
()
{}
text_bookmark_start
(
const
::
std
::
wstring
&
Name
)
:
text_name_
(
Name
){};
text_bookmark_start
(
const
std
::
wstring
&
Name
)
:
text_name_
(
Name
){};
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
){}
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
){}
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
){}
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
::
std
::
wstring
text_name_
;
std
::
wstring
text_name_
;
};
CP_REGISTER_OFFICE_ELEMENT2
(
text_bookmark_start
);
...
...
@@ -214,14 +214,14 @@ public:
public:
text_bookmark_end
()
{}
;
text_bookmark_end
(
const
::
std
::
wstring
&
Name
)
:
text_name_
(
Name
){};
text_bookmark_end
(
const
std
::
wstring
&
Name
)
:
text_name_
(
Name
){};
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
){}
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
){}
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
){}
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
::
std
::
wstring
text_name_
;
std
::
wstring
text_name_
;
};
CP_REGISTER_OFFICE_ELEMENT2
(
text_bookmark_end
);
...
...
@@ -239,14 +239,14 @@ public:
public:
text_reference_mark
()
{};
text_reference_mark
(
const
::
std
::
wstring
&
Name
)
:
text_name_
(
Name
){};
text_reference_mark
(
const
std
::
wstring
&
Name
)
:
text_name_
(
Name
){};
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
){}
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
){}
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
){}
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
::
std
::
wstring
text_name_
;
std
::
wstring
text_name_
;
};
CP_REGISTER_OFFICE_ELEMENT2
(
text_reference_mark
);
...
...
@@ -264,14 +264,14 @@ public:
public:
text_reference_mark_start
()
{}
text_reference_mark_start
(
const
::
std
::
wstring
&
Name
)
:
text_name_
(
Name
){};
text_reference_mark_start
(
const
std
::
wstring
&
Name
)
:
text_name_
(
Name
){};
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
){}
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
){}
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
){}
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
::
std
::
wstring
text_name_
;
std
::
wstring
text_name_
;
};
CP_REGISTER_OFFICE_ELEMENT2
(
text_reference_mark_start
);
...
...
@@ -289,14 +289,14 @@ public:
public:
text_reference_mark_end
()
{};
text_reference_mark_end
(
const
::
std
::
wstring
&
Name
)
:
text_name_
(
Name
){};
text_reference_mark_end
(
const
std
::
wstring
&
Name
)
:
text_name_
(
Name
){};
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
){}
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
){}
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
){}
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
::
std
::
wstring
text_name_
;
std
::
wstring
text_name_
;
};
CP_REGISTER_OFFICE_ELEMENT2
(
text_reference_mark_end
);
...
...
@@ -313,7 +313,7 @@ public:
static
const
ElementType
type
=
typeTextSpan
;
CPDOCCORE_DEFINE_VISITABLE
();
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
);
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
);
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
);
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
...
...
@@ -343,7 +343,7 @@ public:
CPDOCCORE_DEFINE_VISITABLE
();
public:
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
);
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
);
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
);
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
...
...
@@ -354,17 +354,68 @@ public:
odf_types
::
common_xlink_attlist
common_xlink_attlist_
;
_CP_OPT
(
std
::
wstring
)
office_name_
;
_CP_OPT
(
odf_types
::
target_frame_name
)
office_target_frame_name_
;
_CP_OPT
(
std
::
wstring
)
office_name_
;
_CP_OPT
(
odf_types
::
target_frame_name
)
office_target_frame_name_
;
_CP_OPT
(
odf_types
::
style_ref
)
text_style_name_
;
_CP_OPT
(
odf_types
::
style_ref
)
text_visited_style_name_
;
_CP_OPT
(
odf_types
::
style_ref
)
text_style_name_
;
_CP_OPT
(
odf_types
::
style_ref
)
text_visited_style_name_
;
office_element_ptr_array
paragraph_content_
;
office_element_ptr_array
paragraph_content_
;
};
CP_REGISTER_OFFICE_ELEMENT2
(
text_a
);
// text:note-citation
//////////////////////////////////////////////////////////////////////////////////////////////////
class
text_note_citation
:
public
office_element_impl
<
text_note_citation
>
{
public:
static
const
wchar_t
*
ns
;
static
const
wchar_t
*
name
;
static
const
xml
::
NodeType
xml_type
=
xml
::
typeElement
;
static
const
ElementType
type
=
typeTextNoteCitation
;
CPDOCCORE_DEFINE_VISITABLE
();
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
);
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
);
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
virtual
void
add_text
(
const
std
::
wstring
&
Text
);
text_note_citation
()
{}
_CP_OPT
(
std
::
wstring
)
text_label_
;
office_element_ptr_array
content_
;
};
CP_REGISTER_OFFICE_ELEMENT2
(
text_note_citation
);
// text:note-body
//////////////////////////////////////////////////////////////////////////////////////////////////
class
text_note_body
:
public
office_element_impl
<
text_note_body
>
{
public:
static
const
wchar_t
*
ns
;
static
const
wchar_t
*
name
;
static
const
xml
::
NodeType
xml_type
=
xml
::
typeElement
;
static
const
ElementType
type
=
typeTextNoteBody
;
CPDOCCORE_DEFINE_VISITABLE
();
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
);
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
);
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
virtual
void
add_text
(
const
std
::
wstring
&
Text
){}
text_note_body
()
{}
office_element_ptr_array
content_
;
};
CP_REGISTER_OFFICE_ELEMENT2
(
text_note_body
);
// text:note
//////////////////////////////////////////////////////////////////////////////////////////////////
...
...
@@ -378,21 +429,20 @@ public:
static
const
ElementType
type
=
typeTextNote
;
CPDOCCORE_DEFINE_VISITABLE
();
public:
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
);
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
);
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
);
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
text_note
();
virtual
void
add_text
(
const
std
::
wstring
&
Text
);
std
::
wstring
text_id_
;
odf_types
::
noteclass
text_note_class_
;
text_note
();
std
::
wstring
text_id_
;
odf_types
::
noteclass
text_note_class_
;
office_element_ptr
text_note_citation_
;
office_element_ptr
text_note_body_
;
office_element_ptr
text_note_citation_
;
office_element_ptr
text_note_body_
;
};
...
...
@@ -410,7 +460,7 @@ public:
static
const
ElementType
type
=
typeTextRuby
;
CPDOCCORE_DEFINE_VISITABLE
();
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
);
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
);
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
);
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
...
...
@@ -448,7 +498,7 @@ public:
static
const
ElementType
type
=
typeTextTitle
;
CPDOCCORE_DEFINE_VISITABLE
();
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
);
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
);
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
);
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
...
...
@@ -474,7 +524,7 @@ public:
static
const
ElementType
type
=
typeTextPlaceholder
;
CPDOCCORE_DEFINE_VISITABLE
();
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
);
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
);
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
);
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
...
...
@@ -497,7 +547,7 @@ public:
static
const
ElementType
type
=
typeTextPageNumber
;
CPDOCCORE_DEFINE_VISITABLE
();
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
);
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
);
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
);
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
...
...
@@ -527,7 +577,7 @@ public:
static
const
ElementType
type
=
typeTextPageCount
;
CPDOCCORE_DEFINE_VISITABLE
();
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
);
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
);
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
);
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
...
...
@@ -553,7 +603,7 @@ public:
static
const
ElementType
type
=
typeTextDate
;
CPDOCCORE_DEFINE_VISITABLE
();
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
);
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
);
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
);
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
...
...
@@ -582,7 +632,7 @@ public:
static
const
ElementType
type
=
typeTextTime
;
CPDOCCORE_DEFINE_VISITABLE
();
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
);
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
);
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
);
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
...
...
@@ -611,7 +661,7 @@ public:
static
const
ElementType
type
=
typeTextFileName
;
CPDOCCORE_DEFINE_VISITABLE
();
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
);
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
);
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
);
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
...
...
@@ -639,7 +689,7 @@ public:
static
const
ElementType
type
=
typeTextSequence
;
CPDOCCORE_DEFINE_VISITABLE
();
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
);
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
);
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
);
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
...
...
@@ -664,7 +714,7 @@ public:
static
const
ElementType
type
=
typeTextSheetName
;
CPDOCCORE_DEFINE_VISITABLE
();
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
);
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
);
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
);
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
...
...
@@ -689,7 +739,7 @@ public:
static
const
ElementType
type
=
typePresentationFooter
;
CPDOCCORE_DEFINE_VISITABLE
();
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
){}
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
){}
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
){}
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
...
...
@@ -709,7 +759,7 @@ public:
static
const
ElementType
type
=
typePresentationDateTime
;
CPDOCCORE_DEFINE_VISITABLE
();
virtual
void
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
){}
virtual
void
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
){}
virtual
void
add_child_element
(
const
office_element_ptr
&
child_element
){}
virtual
void
serialize
(
std
::
wostream
&
_Wostream
);
...
...
ASCOfficeOdfFileW/source/OdfFormat/text_elements.cpp
View file @
9e96fb6e
...
...
@@ -61,7 +61,7 @@ using xml::xml_char_wc;
const
wchar_t
*
text_h
::
ns
=
L"text"
;
const
wchar_t
*
text_h
::
name
=
L"h"
;
void
paragraph
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
,
odf_conversion_context
*
Context
)
void
paragraph
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
,
odf_conversion_context
*
Context
)
{
CP_CREATE_ELEMENT_SIMPLE
(
paragraph_content_
);
}
...
...
@@ -126,7 +126,7 @@ void text_h::serialize(std::wostream & _Wostream)
}
}
//
void
text_h
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_h
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
paragraph_
.
create_child_element
(
Ns
,
Name
,
getContext
());
}
...
...
@@ -144,7 +144,7 @@ void text_h::add_child_element( const office_element_ptr & child_element)
const
wchar_t
*
text_p
::
ns
=
L"text"
;
const
wchar_t
*
text_p
::
name
=
L"p"
;
void
text_p
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_p
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
paragraph_
.
create_child_element
(
Ns
,
Name
,
getContext
());
}
...
...
@@ -194,7 +194,7 @@ void text_list::serialize(std::wostream & _Wostream)
}
}
void
text_list
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_list
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
if
CP_CHECK_NAME
(
L"text"
,
L"list-header"
)
{
...
...
@@ -219,7 +219,7 @@ void text_list::add_child_element( const office_element_ptr & child_element)
const
wchar_t
*
text_soft_page_break
::
ns
=
L"text"
;
const
wchar_t
*
text_soft_page_break
::
name
=
L"soft-page-break"
;
void
text_soft_page_break
::
serialize
(
::
std
::
wostream
&
_Wostream
)
void
text_soft_page_break
::
serialize
(
std
::
wostream
&
_Wostream
)
{
CP_XML_WRITER
(
_Wostream
)
{
...
...
@@ -245,7 +245,7 @@ void text_section_attr::serialize(CP_ATTR_NODE)
const
wchar_t
*
text_section
::
ns
=
L"text"
;
const
wchar_t
*
text_section
::
name
=
L"section"
;
void
text_section
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_section
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
if
(
L"text"
==
Ns
&&
L"section-source"
==
Name
)
{
...
...
@@ -301,7 +301,7 @@ void text_section_source_attr::serialize(CP_ATTR_NODE)
const
wchar_t
*
text_section_source
::
ns
=
L"text"
;
const
wchar_t
*
text_section_source
::
name
=
L"section-source"
;
void
text_section_source
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_section_source
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
CP_NOT_APPLICABLE_ELM
();
}
...
...
@@ -320,7 +320,7 @@ void text_section_source::serialize(std::wostream & _Wostream)
const
wchar_t
*
text_index_body
::
ns
=
L"text"
;
const
wchar_t
*
text_index_body
::
name
=
L"index-body"
;
void
text_index_body
::
serialize
(
::
std
::
wostream
&
_Wostream
)
void
text_index_body
::
serialize
(
std
::
wostream
&
_Wostream
)
{
CP_XML_WRITER
(
_Wostream
)
{
...
...
@@ -334,7 +334,7 @@ void text_index_body::serialize(::std::wostream & _Wostream)
}
}
void
text_index_body
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_index_body
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
CP_CREATE_ELEMENT
(
index_content_main_
);
}
...
...
@@ -349,7 +349,7 @@ void text_index_body::add_child_element( const office_element_ptr & child_elemen
const
wchar_t
*
text_index_title
::
ns
=
L"text"
;
const
wchar_t
*
text_index_title
::
name
=
L"index-title"
;
void
text_index_title
::
serialize
(
::
std
::
wostream
&
_Wostream
)
void
text_index_title
::
serialize
(
std
::
wostream
&
_Wostream
)
{
CP_XML_WRITER
(
_Wostream
)
{
...
...
@@ -362,7 +362,7 @@ void text_index_title::serialize(::std::wostream & _Wostream)
}
}
}
void
text_index_title
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_index_title
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
CP_CREATE_ELEMENT
(
index_content_main_
);
}
...
...
@@ -376,7 +376,7 @@ void text_index_title::add_child_element( const office_element_ptr & child_eleme
const
wchar_t
*
text_table_of_content
::
ns
=
L"text"
;
const
wchar_t
*
text_table_of_content
::
name
=
L"table-of-content"
;
void
text_table_of_content
::
serialize
(
::
std
::
wostream
&
_Wostream
)
void
text_table_of_content
::
serialize
(
std
::
wostream
&
_Wostream
)
{
CP_XML_WRITER
(
_Wostream
)
{
...
...
@@ -388,7 +388,7 @@ void text_table_of_content::serialize(::std::wostream & _Wostream)
}
}
}
void
text_table_of_content
::
create_child_element
(
const
::
std
::
wstring
&
Ns
,
const
::
std
::
wstring
&
Name
)
void
text_table_of_content
::
create_child_element
(
const
std
::
wstring
&
Ns
,
const
std
::
wstring
&
Name
)
{
if
CP_CHECK_NAME
(
L"text"
,
L"index-body"
)
{
...
...
ASCOfficeOdfFileW/source/Oox2OdfConverter/DocxConverter.cpp
View file @
9e96fb6e
...
...
@@ -323,6 +323,16 @@ void DocxConverter::convert(OOX::WritingElement *oox_unknown)
OOX
::
Logic
::
CCommentReference
*
pCommRef
=
static_cast
<
OOX
::
Logic
::
CCommentReference
*>
(
oox_unknown
);
convert
(
pCommRef
);
//если нет Start - означает начало с предыдущего Run
}
break
;
case
OOX
:
:
et_w_footnoteReference
:
{
OOX
::
Logic
::
CFootnoteReference
*
pRef
=
static_cast
<
OOX
::
Logic
::
CFootnoteReference
*>
(
oox_unknown
);
convert
(
pRef
);
}
break
;
case
OOX
:
:
et_w_endnoteReference
:
{
OOX
::
Logic
::
CEndnoteReference
*
pRef
=
static_cast
<
OOX
::
Logic
::
CEndnoteReference
*>
(
oox_unknown
);
convert
(
pRef
);
}
break
;
case
OOX
:
:
et_w_tbl
:
{
OOX
::
Logic
::
CTbl
*
pTable
=
static_cast
<
OOX
::
Logic
::
CTbl
*>
(
oox_unknown
);
...
...
@@ -563,11 +573,7 @@ void DocxConverter::convert(OOX::Logic::CRun *oox_run)//wordprocessing 22.1.2.87
}
break
;
//annotationRef
//endnoteRef
//endnoteReference
//footnoteRef
//footnoteReference
//commentReference
//separator
//contentPart
//cr
//dayLong, dayShort, monthLong, monthShort, yearLong, yearShort
...
...
@@ -3266,8 +3272,8 @@ void DocxConverter::convert(OOX::Logic::CCommentRangeEnd* oox_comm_end)
}
void
DocxConverter
::
convert
(
OOX
::
Logic
::
CCommentReference
*
oox_comm_ref
)
{
if
(
oox_comm_ref
==
NULL
)
return
;
if
(
oox_comm_ref
->
m_oId
.
IsInit
()
==
false
)
return
;
if
(
oox_comm_ref
==
NULL
)
return
;
if
(
oox_comm_ref
->
m_oId
.
IsInit
()
==
false
)
return
;
int
oox_comm_id
=
oox_comm_ref
->
m_oId
->
GetValue
();
...
...
@@ -3278,28 +3284,46 @@ void DocxConverter::convert(OOX::Logic::CCommentReference* oox_comm_ref)
//значит старт тута а не по RangeStart
convert_comment
(
oox_comm_id
);
}
}
void
DocxConverter
::
convert
(
OOX
::
Logic
::
CFootnoteReference
*
oox_ref
)
{
if
(
oox_ref
==
NULL
)
return
;
if
(
oox_ref
->
m_oId
.
IsInit
()
==
false
)
return
;
int
oox_ref_id
=
oox_ref
->
m_oId
->
GetValue
();
convert_footnote
(
oox_ref_id
);
}
void
DocxConverter
::
convert
(
OOX
::
Logic
::
CEndnoteReference
*
oox_ref
)
{
if
(
oox_ref
==
NULL
)
return
;
if
(
oox_ref
->
m_oId
.
IsInit
()
==
false
)
return
;
int
oox_ref_id
=
oox_ref
->
m_oId
->
GetValue
();
convert_endnote
(
oox_ref_id
);
}
void
DocxConverter
::
convert_comment
(
int
oox_comm_id
)
{
OOX
::
CComments
*
docx_comments
=
docx_document
->
GetComments
();
if
(
!
docx_comments
)
return
;
for
(
unsigned
int
comm
=
0
;
comm
<
docx_comments
->
m_arrComments
.
size
();
comm
++
)
for
(
unsigned
int
comm
=
0
;
comm
<
docx_comments
->
m_arrComments
.
size
();
comm
++
)
{
OOX
::
CComment
*
oox_comment
=
docx_comments
->
m_arrComments
[
comm
];
if
(
oox_comment
==
NULL
)
continue
;
if
(
oox_comment
->
m_oId
.
IsInit
()
==
false
)
continue
;
if
(
oox_comment
==
NULL
)
continue
;
if
(
oox_comment
->
m_oId
.
IsInit
()
==
false
)
continue
;
if
(
oox_comment
->
m_oId
->
GetValue
()
==
oox_comm_id
)
{
odt_context
->
start_comment_content
();
{
if
(
oox_comment
->
m_oAuthor
.
IsInit
())
odt_context
->
comment_context
()
->
set_author
(
string2std_string
(
*
oox_comment
->
m_oAuthor
));
if
(
oox_comment
->
m_oDate
.
IsInit
())
odt_context
->
comment_context
()
->
set_date
(
string2std_string
(
oox_comment
->
m_oDate
->
GetValue
()));
if
(
oox_comment
->
m_oInitials
.
IsInit
()){}
if
(
oox_comment
->
m_oAuthor
.
IsInit
())
odt_context
->
comment_context
()
->
set_author
(
string2std_string
(
*
oox_comment
->
m_oAuthor
));
if
(
oox_comment
->
m_oDate
.
IsInit
())
odt_context
->
comment_context
()
->
set_date
(
string2std_string
(
oox_comment
->
m_oDate
->
GetValue
()));
if
(
oox_comment
->
m_oInitials
.
IsInit
())
{}
for
(
unsigned
int
i
=
0
;
i
<
oox_comment
->
m_arrItems
.
size
();
i
++
)
for
(
unsigned
int
i
=
0
;
i
<
oox_comment
->
m_arrItems
.
size
();
i
++
)
{
convert
(
oox_comment
->
m_arrItems
[
i
]);
}
...
...
@@ -3308,6 +3332,62 @@ void DocxConverter::convert_comment(int oox_comm_id)
}
}
}
void
DocxConverter
::
convert_footnote
(
int
oox_ref_id
)
{
OOX
::
CFootnotes
*
footnotes
=
docx_document
->
GetFootnotes
();
if
(
!
footnotes
)
return
;
odt_context
->
start_note
(
oox_ref_id
,
1
);
for
(
unsigned
int
n
=
0
;
n
<
footnotes
->
m_arrFootnote
.
size
();
n
++
)
{
OOX
::
CFtnEdn
*
oox_note
=
footnotes
->
m_arrFootnote
[
n
];
if
(
oox_note
==
NULL
)
continue
;
if
(
oox_note
->
m_oId
.
IsInit
()
==
false
)
continue
;
if
(
oox_note
->
m_oId
->
GetValue
()
==
oox_ref_id
)
{
odt_context
->
start_note_content
();
{
for
(
unsigned
int
i
=
0
;
i
<
oox_note
->
m_arrItems
.
size
();
i
++
)
{
convert
(
oox_note
->
m_arrItems
[
i
]);
}
}
odt_context
->
end_note_content
();
}
}
odt_context
->
end_note
();
}
void
DocxConverter
::
convert_endnote
(
int
oox_ref_id
)
{
OOX
::
CEndnotes
*
endnotes
=
docx_document
->
GetEndnotes
();
if
(
!
endnotes
)
return
;
odt_context
->
start_note
(
oox_ref_id
,
2
);
for
(
unsigned
int
n
=
0
;
n
<
endnotes
->
m_arrEndnote
.
size
();
n
++
)
{
OOX
::
CFtnEdn
*
oox_note
=
endnotes
->
m_arrEndnote
[
n
];
if
(
oox_note
==
NULL
)
continue
;
if
(
oox_note
->
m_oId
.
IsInit
()
==
false
)
continue
;
if
(
oox_note
->
m_oId
->
GetValue
()
==
oox_ref_id
)
{
odt_context
->
start_note_content
();
{
for
(
unsigned
int
i
=
0
;
i
<
oox_note
->
m_arrItems
.
size
();
i
++
)
{
convert
(
oox_note
->
m_arrItems
[
i
]);
}
}
odt_context
->
end_note_content
();
}
}
odt_context
->
end_note
();
}
void
DocxConverter
::
convert_hdr_ftr
(
CString
sId
)
{
OOX
::
CHdrFtr
*
oox_hdr_ftr
=
docx_document
->
GetHeaderOrFooter
(
sId
);
...
...
ASCOfficeOdfFileW/source/Oox2OdfConverter/DocxConverter.h
View file @
9e96fb6e
...
...
@@ -71,6 +71,8 @@ namespace OOX
class
CCommentRangeStart
;
class
CCommentRangeEnd
;
class
CCommentReference
;
class
CFootnoteReference
;
class
CEndnoteReference
;
class
CTbl
;
class
CTblGrid
;
class
CTr
;
...
...
@@ -146,13 +148,15 @@ namespace Oox2Odf
void
apply_from
(
OOX
::
Logic
::
CSectionProperty
*
props
,
OOX
::
Logic
::
CSectionProperty
*
other
);
void
convert_document
();
void
convert_styles
();
void
convert_lists_styles
();
void
convert_settings
();
void
convert_document
();
void
convert_styles
();
void
convert_lists_styles
();
void
convert_settings
();
void
convert_comment
(
int
oox_comm_id
);
void
convert_hdr_ftr
(
CString
sId
);
void
convert_footnote
(
int
oox_ref_id
);
void
convert_endnote
(
int
oox_ref_id
);
void
convert_comment
(
int
oox_comm_id
);
void
convert_hdr_ftr
(
CString
sId
);
void
convert
(
OOX
::
Logic
::
CBackground
*
oox_background
,
int
type
);
void
convert
(
OOX
::
Logic
::
CSdt
*
oox_sdt
);
...
...
@@ -214,6 +218,9 @@ namespace Oox2Odf
void
convert
(
OOX
::
Logic
::
CCommentRangeEnd
*
oox_comm_end
);
void
convert
(
OOX
::
Logic
::
CCommentReference
*
oox_comm_ref
);
void
convert
(
OOX
::
Logic
::
CFootnoteReference
*
oox_note_ref
);
void
convert
(
OOX
::
Logic
::
CEndnoteReference
*
oox_note_ref
);
void
convert
(
OOX
::
Logic
::
CTbl
*
oox_table
);
void
convert
(
OOX
::
Logic
::
CTblGrid
*
oox_table_grid
);
void
convert
(
OOX
::
Logic
::
CTr
*
oox_table_row
);
...
...
ASCOfficeOdfFileW/source/win32/OdfFormat.vcproj
View file @
9e96fb6e
...
...
@@ -733,6 +733,14 @@
RelativePath=
"..\OdfFormat\odf_drawing_context.h"
>
</File>
<File
RelativePath=
"..\OdfFormat\odf_notes_context.cpp"
>
</File>
<File
RelativePath=
"..\OdfFormat\odf_notes_context.h"
>
</File>
<File
RelativePath=
"..\OdfFormat\odf_settings_context.cpp"
>
...
...
Common/DocxFormat/Source/DocxFormat/Footnote.h
View file @
9e96fb6e
...
...
@@ -148,7 +148,7 @@ namespace OOX
return
NULL
;
}
void
Add
(
OOX
::
CFtnEdn
*
pFootnote
)
void
Add
(
OOX
::
CFtnEdn
*
pFootnote
)
{
m_arrFootnote
.
push_back
(
pFootnote
);
}
...
...
@@ -159,8 +159,8 @@ namespace OOX
public:
CPath
m_oReadPath
;
std
::
vector
<
OOX
::
CFtnEdn
*>
m_arrFootnote
;
std
::
vector
<
CString
>
m_arrShapeTypes
;
std
::
vector
<
OOX
::
CFtnEdn
*>
m_arrFootnote
;
std
::
vector
<
CString
>
m_arrShapeTypes
;
};
}
// namespace OOX
...
...
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