summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Tardon <dtardon@redhat.com>2014-09-02 19:58:43 +0200
committerDavid Tardon <dtardon@redhat.com>2014-09-02 19:58:43 +0200
commit35854e8b5a823d041e707cfb4949a295c4293beb (patch)
tree254e4d3bd88091488c240283f2adbb0e9cf3a5ed
parent3a6a821801774abf5af291a4f0495f8a726833ad (diff)
step 2: parse paragraphs
-rw-r--r--src/lib/SDFParser.cpp31
-rw-r--r--src/lib/SDFParser.h4
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