You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@corinthia.apache.org by pm...@apache.org on 2015/01/10 21:56:42 UTC
[5/8] incubator-corinthia git commit: Word: Conversion functions -
simpler organisation
Word: Conversion functions - simpler organisation
Instead of having WordPackageGet and WordPackagePut (which simply
created a WordConverter object and then called through to the relevant
get or put method), do this directly in the WordGet/WordPut functions.
Also move some functionality into the WordConverter get/put functions
that really belongs there, rather than outside.
Users of WordConverter no longer have to create an instance of the class
first; they simply call WordConverterGet or WordConverterPut. These
functions create an instance internally, simplifying their use. The
parameter both of these functions take are what was previosuly passed to
WordConverterNew.
Project: http://git-wip-us.apache.org/repos/asf/incubator-corinthia/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-corinthia/commit/ce0e3d58
Tree: http://git-wip-us.apache.org/repos/asf/incubator-corinthia/tree/ce0e3d58
Diff: http://git-wip-us.apache.org/repos/asf/incubator-corinthia/diff/ce0e3d58
Branch: refs/heads/stable
Commit: ce0e3d58d5602f2d63a9c8d325451180108fd980
Parents: 474eb4c
Author: Peter Kelly <pe...@uxproductivity.com>
Authored: Sun Jan 11 03:41:27 2015 +0700
Committer: Peter Kelly <pe...@uxproductivity.com>
Committed: Sun Jan 11 03:41:27 2015 +0700
----------------------------------------------------------------------
DocFormats/filters/ooxml/src/word/Word.c | 25 ++--------
.../filters/ooxml/src/word/WordConverter.c | 48 +++++++++++++++++---
.../filters/ooxml/src/word/WordConverter.h | 13 +++---
DocFormats/filters/ooxml/src/word/WordPackage.c | 26 -----------
DocFormats/filters/ooxml/src/word/WordPackage.h | 4 --
5 files changed, 52 insertions(+), 64 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-corinthia/blob/ce0e3d58/DocFormats/filters/ooxml/src/word/Word.c
----------------------------------------------------------------------
diff --git a/DocFormats/filters/ooxml/src/word/Word.c b/DocFormats/filters/ooxml/src/word/Word.c
index 5e977e7..a94deaa 100644
--- a/DocFormats/filters/ooxml/src/word/Word.c
+++ b/DocFormats/filters/ooxml/src/word/Word.c
@@ -34,17 +34,10 @@ DFDocument *WordGet(DFStorage *concreteStorage, DFStorage *abstractStorage, DFEr
if (wordPackage == NULL)
goto end;
- htmlDoc = WordPackageGet(wordPackage,abstractStorage,"word",error,warnings);
- if (htmlDoc == NULL)
+ htmlDoc = DFDocumentNew();
+ if (!WordConverterGet(htmlDoc,abstractStorage,"word",wordPackage,warnings,error))
goto end;
- if (warnings->len > 0) {
- DFErrorFormat(error,"%s",warnings->data);
- goto end;
- }
-
- HTML_safeIndent(htmlDoc->docNode,0);
-
ok = 1;
end:
@@ -71,13 +64,8 @@ int WordPut(DFStorage *concreteStorage, DFStorage *abstractStorage, DFDocument *
if (wordPackage == NULL)
goto end;
- if (!WordPackagePut(wordPackage,htmlDoc,abstractStorage,idPrefix,error,warnings))
- goto end;
-
- if (warnings->len > 0) {
- DFErrorFormat(error,"%s",warnings->data);
+ if (!WordConverterPut(htmlDoc,abstractStorage,idPrefix,wordPackage,warnings,error))
goto end;
- }
if (!WordPackageSave(wordPackage,error))
goto end;
@@ -108,14 +96,9 @@ int WordCreate(DFStorage *concreteStorage, DFStorage *abstractStorage, DFDocumen
// a new word or odf file from it.
HTMLBreakBDTRefs(htmlDoc->docNode,idPrefix);
- if (!WordPackagePut(wordPackage,htmlDoc,abstractStorage,idPrefix,error,warnings))
+ if (!WordConverterPut(htmlDoc,abstractStorage,idPrefix,wordPackage,warnings,error))
goto end;
- if (warnings->len > 0) {
- DFErrorFormat(error,"%s",warnings->data);
- goto end;
- }
-
if (!WordPackageSave(wordPackage,error))
goto end;
http://git-wip-us.apache.org/repos/asf/incubator-corinthia/blob/ce0e3d58/DocFormats/filters/ooxml/src/word/WordConverter.c
----------------------------------------------------------------------
diff --git a/DocFormats/filters/ooxml/src/word/WordConverter.c b/DocFormats/filters/ooxml/src/word/WordConverter.c
index b0cfd09..ee00253 100644
--- a/DocFormats/filters/ooxml/src/word/WordConverter.c
+++ b/DocFormats/filters/ooxml/src/word/WordConverter.c
@@ -32,6 +32,7 @@
#include "OPC.h"
#include "DFDOM.h"
#include "DFHTML.h"
+#include "DFHTMLNormalization.h"
#include "DFBDT.h"
#include "CSS.h"
#include "CSSProperties.h"
@@ -556,9 +557,9 @@ static void Word_postProcessHTMLDoc(WordConverter *conv)
// //
////////////////////////////////////////////////////////////////////////////////////////////////////
-WordConverter *WordConverterNew(DFDocument *html, DFStorage *abstractStorage,
- const char *idPrefix, WordPackage *package,
- DFBuffer *warnings)
+static WordConverter *WordConverterNew(DFDocument *html, DFStorage *abstractStorage,
+ const char *idPrefix, WordPackage *package,
+ DFBuffer *warnings)
{
WordConverter *converter = (WordConverter *)calloc(1,sizeof(WordConverter));
converter->html = DFDocumentRetain(html);
@@ -585,7 +586,7 @@ WordConverter *WordConverterNew(DFDocument *html, DFStorage *abstractStorage,
return converter;
}
-void WordConverterFree(WordConverter *converter)
+static void WordConverterFree(WordConverter *converter)
{
DFDocumentRelease(converter->html);
DFStorageRelease(converter->abstractStorage);
@@ -674,7 +675,7 @@ DFNode *WordConverterGetConcrete(WordPutData *put, DFNode *abstract)
return node;
}
-int WordConverterGet(WordConverter *converter, DFError **error)
+static int WordConverterGet2(WordConverter *converter, DFError **error)
{
converter->haveFields = Word_simplifyFields(converter->package);
Word_mergeRuns(converter->package);
@@ -709,9 +710,26 @@ int WordConverterGet(WordConverter *converter, DFError **error)
HTMLAddInternalStyleSheet(converter->html,cssText);
free(cssText);
+ HTML_safeIndent(converter->html->docNode,0);
+
+ if (converter->warnings->len > 0) {
+ DFErrorFormat(error,"%s",converter->warnings->data);
+ return 0;
+ }
+
return 1;
}
+int WordConverterGet(DFDocument *html, DFStorage *abstractStorage,
+ const char *idPrefix, WordPackage *package,
+ DFBuffer *warnings, DFError **error)
+{
+ WordConverter *converter = WordConverterNew(html,abstractStorage,idPrefix,package,warnings);
+ int ok = WordConverterGet2(converter,error);
+ WordConverterFree(converter);
+ return ok;
+}
+
static void buildListMapFromHTML(WordPutData *put, DFNode *node)
{
if (node->tag == HTML_P) {
@@ -796,8 +814,11 @@ static void addMissingDefaultStyles(WordConverter *converter)
}
}
-int WordConverterPut(WordConverter *converter, DFError **error)
+static int WordConverterPut2(WordConverter *converter, DFError **error)
{
+ HTML_normalizeDocument(converter->html);
+ HTML_pushDownInlineProperties(converter->html->docNode);
+
if (converter->package->document == NULL) {
DFErrorFormat(error,"document.xml not found");
return 0;
@@ -886,9 +907,24 @@ int WordConverterPut(WordConverter *converter, DFError **error)
DFHashTableRelease(put.numIdByHtmlId);
DFHashTableRelease(put.htmlIdByNumId);
+ if (converter->warnings->len > 0) {
+ DFErrorFormat(error,"%s",converter->warnings->data);
+ return 0;
+ }
+
return 1;
}
+int WordConverterPut(DFDocument *html, DFStorage *abstractStorage,
+ const char *idPrefix, WordPackage *package,
+ DFBuffer *warnings, DFError **error)
+{
+ WordConverter *converter = WordConverterNew(html,abstractStorage,idPrefix,package,warnings);
+ int ok = WordConverterPut2(converter,error);
+ WordConverterFree(converter);
+ return ok;
+}
+
void WordConverterWarning(WordConverter *converter, const char *format, ...)
{
va_list ap;
http://git-wip-us.apache.org/repos/asf/incubator-corinthia/blob/ce0e3d58/DocFormats/filters/ooxml/src/word/WordConverter.h
----------------------------------------------------------------------
diff --git a/DocFormats/filters/ooxml/src/word/WordConverter.h b/DocFormats/filters/ooxml/src/word/WordConverter.h
index b4accad..eeed849 100644
--- a/DocFormats/filters/ooxml/src/word/WordConverter.h
+++ b/DocFormats/filters/ooxml/src/word/WordConverter.h
@@ -98,13 +98,12 @@ struct WordConverter {
CSSSheet *styleSheet;
};
-WordConverter *WordConverterNew(DFDocument *html, DFStorage *abstractStorage,
- const char *idPrefix, WordPackage *package,
- DFBuffer *warnings);
-void WordConverterFree(WordConverter *converter);
-
-int WordConverterGet(WordConverter *converter, DFError **error);
-int WordConverterPut(WordConverter *converter, DFError **error);
+int WordConverterGet(DFDocument *html, DFStorage *abstractStorage,
+ const char *idPrefix, WordPackage *package,
+ DFBuffer *warnings, DFError **error);
+int WordConverterPut(DFDocument *html, DFStorage *abstractStorage,
+ const char *idPrefix, WordPackage *package,
+ DFBuffer *warnings, DFError **error);
void WordConverterWarning(WordConverter *converter, const char *format, ...) ATTRIBUTE_FORMAT(printf,2,3);
char *WordStyleIdForStyle(CSSStyle *style);
http://git-wip-us.apache.org/repos/asf/incubator-corinthia/blob/ce0e3d58/DocFormats/filters/ooxml/src/word/WordPackage.c
----------------------------------------------------------------------
diff --git a/DocFormats/filters/ooxml/src/word/WordPackage.c b/DocFormats/filters/ooxml/src/word/WordPackage.c
index 994eca5..f6159fa 100644
--- a/DocFormats/filters/ooxml/src/word/WordPackage.c
+++ b/DocFormats/filters/ooxml/src/word/WordPackage.c
@@ -21,7 +21,6 @@
#include "DFXML.h"
#include "OPC.h"
#include "DFHTML.h"
-#include "DFHTMLNormalization.h"
#include "WordField.h"
#include "WordBookmark.h"
#include "DFCommon.h"
@@ -383,31 +382,6 @@ int WordPackageSave(WordPackage *package, DFError **error)
return 1;
}
-DFDocument *WordPackageGet(WordPackage *package, DFStorage *abstractStorage, const char *idPrefix,
- DFError **error, DFBuffer *warnings)
-{
- DFDocument *html = DFDocumentNew();
- WordConverter *converter = WordConverterNew(html,abstractStorage,idPrefix,package,warnings);
- int ok = WordConverterGet(converter,error);
- WordConverterFree(converter);
- if (!ok)
- return 0;
- return html;
-}
-
-int WordPackagePut(WordPackage *package, DFDocument *input, DFStorage *abstractStorage,
- const char *idPrefix, DFError **error, DFBuffer *warnings)
-{
- HTML_normalizeDocument(input);
- HTML_pushDownInlineProperties(input->docNode);
- WordConverter *converter = WordConverterNew(input,abstractStorage,idPrefix,package,warnings);
- int ok = WordConverterPut(converter,error);
- WordConverterFree(converter);
- if (!ok)
- return 0;
- return 1;
-}
-
static DFDocument *parsePart(WordPackage *package, OPCPart *part, DFError **error)
{
DFBuffer *content = OPCPackageReadPart(package->opc,part,error);
http://git-wip-us.apache.org/repos/asf/incubator-corinthia/blob/ce0e3d58/DocFormats/filters/ooxml/src/word/WordPackage.h
----------------------------------------------------------------------
diff --git a/DocFormats/filters/ooxml/src/word/WordPackage.h b/DocFormats/filters/ooxml/src/word/WordPackage.h
index 31f8457..eaef4d0 100644
--- a/DocFormats/filters/ooxml/src/word/WordPackage.h
+++ b/DocFormats/filters/ooxml/src/word/WordPackage.h
@@ -58,9 +58,5 @@ void WordPackageExpandBookmarks(WordPackage *package);
WordPackage *WordPackageOpenNew(DFStorage *storage, DFError **error);
WordPackage *WordPackageOpenFrom(DFStorage *storage, DFError **error);
int WordPackageSave(WordPackage *package, DFError **error);
-DFDocument *WordPackageGet(WordPackage *package, DFStorage *abstractStorage, const char *idPrefix,
- DFError **error, DFBuffer *warnings);
-int WordPackagePut(WordPackage *package, DFDocument *input, DFStorage *abstractStorage,
- const char *idPrefix, DFError **error, DFBuffer *warnings);
#endif