diff options
author | David Tardon <dtardon@redhat.com> | 2014-09-02 19:58:43 +0200 |
---|---|---|
committer | David Tardon <dtardon@redhat.com> | 2014-09-02 19:58:43 +0200 |
commit | 35854e8b5a823d041e707cfb4949a295c4293beb (patch) | |
tree | 254e4d3bd88091488c240283f2adbb0e9cf3a5ed | |
parent | 3a6a821801774abf5af291a4f0495f8a726833ad (diff) |
step 2: parse paragraphs
-rw-r--r-- | src/lib/SDFParser.cpp | 31 | ||||
-rw-r--r-- | src/lib/SDFParser.h | 4 |
2 files changed, 32 insertions, 3 deletions
diff --git a/src/lib/SDFParser.cpp b/src/lib/SDFParser.cpp index e876c41..a507d7d 100644 --- a/src/lib/SDFParser.cpp +++ b/src/lib/SDFParser.cpp @@ -7,20 +7,20 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#include <string> - #include "SDFParser.h" namespace libsdf { using librevenge::RVNGPropertyList; +using librevenge::RVNG_SEEK_CUR; using std::string; SDFParser::SDFParser(const RVNGInputStreamPtr_t &input, librevenge::RVNGTextInterface *const generator) : m_input(input) , m_generator(generator) + , m_paraJustify() { } @@ -30,7 +30,29 @@ void SDFParser::parse() m_generator->openPageSpan(RVNGPropertyList()); while (!m_input->isEnd()) + { + const unsigned char c = readU8(m_input); + switch (c) + { + case '>' : + m_paraJustify = "end"; + break; + case '<' : + m_paraJustify = "left"; + break; + case '+' : + m_paraJustify = "center"; + break; + case '#' : + m_paraJustify = "justify"; + break; + default : + m_input->seek(-1, RVNG_SEEK_CUR); + break; + } parseLine(); + m_paraJustify.clear(); + } m_generator->closePageSpan(); m_generator->endDocument(); @@ -38,7 +60,10 @@ void SDFParser::parse() void SDFParser::parseLine() { - m_generator->openParagraph(RVNGPropertyList()); + RVNGPropertyList paraPropList; + if (!m_paraJustify.empty()) + paraPropList.insert("fo:text-align", m_paraJustify.c_str()); + m_generator->openParagraph(paraPropList); m_generator->openSpan(RVNGPropertyList()); string text; diff --git a/src/lib/SDFParser.h b/src/lib/SDFParser.h index 19b00ca..827e181 100644 --- a/src/lib/SDFParser.h +++ b/src/lib/SDFParser.h @@ -10,6 +10,8 @@ #ifndef INCLUDED_SDFPARSER_H #define INCLUDED_SDFPARSER_H +#include <string> + #include <librevenge/librevenge.h> #include <librevenge-stream/librevenge-stream.h> @@ -35,6 +37,8 @@ private: private: const RVNGInputStreamPtr_t m_input; librevenge::RVNGTextInterface *m_generator; + + std::string m_paraJustify; }; } // namespace libsdf |