[Libreoffice-commits] .: 2 commits - writerperfect/source
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Thu Aug 23 05:17:22 PDT 2012
writerperfect/source/filter/DocumentHandler.cxx | 31 ++-------------------
writerperfect/source/filter/OdgGenerator.cxx | 35 ++++++++++++++++++++++--
2 files changed, 37 insertions(+), 29 deletions(-)
New commits:
commit 7afb1fffefb1806205ddcef3cba1d2a559e9b39e
Author: Fridrich Å trba <fridrich.strba at bluewin.ch>
Date: Thu Aug 23 14:13:49 2012 +0200
Iterate the utf8 correctly + handle tabs too
Change-Id: Ie6a4750ebd04e3b1ed8ad0985e141b6ff2e65e98
diff --git a/writerperfect/source/filter/OdgGenerator.cxx b/writerperfect/source/filter/OdgGenerator.cxx
index e8f365b..0d39862 100644
--- a/writerperfect/source/filter/OdgGenerator.cxx
+++ b/writerperfect/source/filter/OdgGenerator.cxx
@@ -1750,12 +1750,11 @@ void OdgGenerator::endTextSpan()
void OdgGenerator::insertText(const WPXString &text)
{
- int length = text.len();
WPXString out;
- for (int curr = 0; curr < length; ++curr)
+ WPXString::Iter i(text);
+ for (i.rewind(); i.next();)
{
- char ch = text.cstr()[curr];
- if (ch == '\n')
+ if ((*i()) == '\n' || (*i()) == '\t')
{
if (out.len() != 0)
{
@@ -1763,12 +1762,20 @@ void OdgGenerator::insertText(const WPXString &text)
mpImpl->mBodyElements.push_back(pText);
out.clear();
}
- mpImpl->mBodyElements.push_back(new TagOpenElement("text:line-break"));
- mpImpl->mBodyElements.push_back(new TagCloseElement("text:line-break"));
+ if ((*i()) == '\n')
+ {
+ mpImpl->mBodyElements.push_back(new TagOpenElement("text:line-break"));
+ mpImpl->mBodyElements.push_back(new TagCloseElement("text:line-break"));
+ }
+ else if ((*i()) == '\t')
+ {
+ mpImpl->mBodyElements.push_back(new TagOpenElement("text:tab"));
+ mpImpl->mBodyElements.push_back(new TagCloseElement("text:tab"));
+ }
}
else
{
- out.append(ch);
+ out.append(i());
}
}
if (out.len() != 0)
commit 8a274f73a28ee9d358059bfe9ce4395e3e284031
Author: Brennan Vincent <brennanv at email.arizona.edu>
Date: Tue Aug 21 10:25:29 2012 -0700
Move writerperfect newline-handling logic to OdgGenerator::insertText
Change-Id: I6d954ac1233f98a3744449555043e8f82a1d2083
diff --git a/writerperfect/source/filter/DocumentHandler.cxx b/writerperfect/source/filter/DocumentHandler.cxx
index e1f58b2..8336c07 100644
--- a/writerperfect/source/filter/DocumentHandler.cxx
+++ b/writerperfect/source/filter/DocumentHandler.cxx
@@ -74,35 +74,12 @@ void DocumentHandler::endElement(const char *psName)
void DocumentHandler::characters(const WPXString &sCharacters)
{
- int lastNewline = -1;
- int length = sCharacters.len();
- for (int curr = 0; curr < length; ++curr)
- {
- if (sCharacters.cstr()[curr] == '\n')
- {
- if (curr > lastNewline + 1)
- {
- OUString sCharU16(sCharacters.cstr() + lastNewline + 1, curr - lastNewline - 1, RTL_TEXTENCODING_UTF8);
-#ifdef DEBUG_XML
- WPXString sEscapedCharacters(sCharacters, true);
- printf("%s", sEscapedCharacters.cstr());
-#endif
- mxHandler->characters(sCharU16);
- }
- startElement("text:line-break", WPXPropertyList());
- endElement("text:line-break");
- lastNewline = curr;
- }
- }
- if (lastNewline + 1 < length)
- {
- OUString sCharU16(sCharacters.cstr() + lastNewline + 1, length - lastNewline - 1, RTL_TEXTENCODING_UTF8);
+ OUString sCharU16(sCharacters.cstr(), strlen(sCharacters.cstr()), RTL_TEXTENCODING_UTF8);
#ifdef DEBUG_XML
- WPXString sEscapedCharacters(sCharacters, true);
- printf("%s", sEscapedCharacters.cstr());
+ WPXString sEscapedCharacters(sCharacters, true);
+ printf("%s", sEscapedCharacters.cstr());
#endif
- mxHandler->characters(sCharU16);
- }
+ mxHandler->characters(sCharU16);
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/writerperfect/source/filter/OdgGenerator.cxx b/writerperfect/source/filter/OdgGenerator.cxx
index f873343..e8f365b 100644
--- a/writerperfect/source/filter/OdgGenerator.cxx
+++ b/writerperfect/source/filter/OdgGenerator.cxx
@@ -1750,8 +1750,32 @@ void OdgGenerator::endTextSpan()
void OdgGenerator::insertText(const WPXString &text)
{
- DocumentElement *pText = new TextElement(text);
- mpImpl->mBodyElements.push_back(pText);
+ int length = text.len();
+ WPXString out;
+ for (int curr = 0; curr < length; ++curr)
+ {
+ char ch = text.cstr()[curr];
+ if (ch == '\n')
+ {
+ if (out.len() != 0)
+ {
+ DocumentElement *pText = new TextElement(out);
+ mpImpl->mBodyElements.push_back(pText);
+ out.clear();
+ }
+ mpImpl->mBodyElements.push_back(new TagOpenElement("text:line-break"));
+ mpImpl->mBodyElements.push_back(new TagCloseElement("text:line-break"));
+ }
+ else
+ {
+ out.append(ch);
+ }
+ }
+ if (out.len() != 0)
+ {
+ DocumentElement *pText = new TextElement(out);
+ mpImpl->mBodyElements.push_back(pText);
+ }
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list