[Libreoffice-commits] .: src/lib

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Tue Dec 11 06:57:16 PST 2012


 src/lib/VSD5Parser.cpp |   16 ++++++++++++++++
 src/lib/VSD5Parser.h   |    1 +
 src/lib/VSD6Parser.cpp |    7 +++----
 src/lib/VSD6Parser.h   |    4 ++--
 src/lib/VSDParser.cpp  |    6 +++---
 5 files changed, 25 insertions(+), 9 deletions(-)

New commits:
commit b3ad8caf742e3ae44f36d4145608236d40d69cd5
Author: Fridrich Å trba <fridrich.strba at bluewin.ch>
Date:   Tue Dec 11 15:56:43 2012 +0100

    Trying to support initially Text Fields

diff --git a/src/lib/VSD5Parser.cpp b/src/lib/VSD5Parser.cpp
index c8a28dc..55351b1 100644
--- a/src/lib/VSD5Parser.cpp
+++ b/src/lib/VSD5Parser.cpp
@@ -406,6 +406,22 @@ void libvisio::VSD5Parser::readTextBlock(WPXInputStream *input)
                                       verticalAlign, isBgFilled, c, 0.0, (unsigned char)0));
 }
 
+void libvisio::VSD5Parser::readTextField(WPXInputStream *input)
+{
+  input->seek(3, WPX_SEEK_CUR);
+  if (0xe8 == readU8(input))
+  {
+    int nameId = readS16(input);
+    m_shape.m_fields.addTextField(m_header.id, m_header.level, nameId, 0xffff);
+  }
+  else
+  {
+    double numericValue = readDouble(input);
+    m_shape.m_fields.addNumericField(m_header.id, m_header.level, 0xffff, numericValue, 0xffff);
+  }
+}
+
+
 unsigned libvisio::VSD5Parser::getUInt(WPXInputStream *input)
 {
   int value = readS16(input);
diff --git a/src/lib/VSD5Parser.h b/src/lib/VSD5Parser.h
index 9cf39c2..ceb73d6 100644
--- a/src/lib/VSD5Parser.h
+++ b/src/lib/VSD5Parser.h
@@ -63,6 +63,7 @@ protected:
   virtual void readFillAndShadow(WPXInputStream *input);
   virtual void readTextBlock(WPXInputStream *input);
   virtual void readCharIX(WPXInputStream *input);
+  virtual void readTextField(WPXInputStream *input);
 
   virtual void readShape(WPXInputStream *input);
   virtual void readPage(WPXInputStream *input);
diff --git a/src/lib/VSD6Parser.cpp b/src/lib/VSD6Parser.cpp
index 0a4f83e..335872c 100644
--- a/src/lib/VSD6Parser.cpp
+++ b/src/lib/VSD6Parser.cpp
@@ -269,16 +269,16 @@ void libvisio::VSD6Parser::readTextField(WPXInputStream *input)
   unsigned char tmpCode = readU8(input);
   if (tmpCode == 0xe8)
   {
-    int nameId = (int)readU32(input);
+    int nameId = readS32(input);
     input->seek(6, WPX_SEEK_CUR);
-    int formatStringId = (int)readU32(input);
+    int formatStringId = readS32(input);
     m_shape.m_fields.addTextField(m_header.id, m_header.level, nameId, formatStringId);
   }
   else
   {
     double numericValue = readDouble(input);
     input->seek(2, WPX_SEEK_CUR);
-    int formatStringId = (int)readU32(input);
+    int formatStringId = readS32(input);
 
     unsigned blockIdx = 0;
     unsigned length = 0;
@@ -331,5 +331,4 @@ void libvisio::VSD6Parser::readTextField(WPXInputStream *input)
   }
 }
 
-
 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
diff --git a/src/lib/VSD6Parser.h b/src/lib/VSD6Parser.h
index 219894f..6550324 100644
--- a/src/lib/VSD6Parser.h
+++ b/src/lib/VSD6Parser.h
@@ -53,8 +53,8 @@ private:
   virtual void readCharIX(WPXInputStream *input);
   virtual void readParaIX(WPXInputStream *input);
   virtual void readFillAndShadow(WPXInputStream *input);
-  void readName(WPXInputStream *input);
-  void readTextField(WPXInputStream *input);
+  virtual void readName(WPXInputStream *input);
+  virtual void readTextField(WPXInputStream *input);
 
   VSD6Parser();
   VSD6Parser(const VSDParser &);
diff --git a/src/lib/VSDParser.cpp b/src/lib/VSDParser.cpp
index d56674a..e649c56 100644
--- a/src/lib/VSDParser.cpp
+++ b/src/lib/VSDParser.cpp
@@ -1730,16 +1730,16 @@ void libvisio::VSDParser::readTextField(WPXInputStream *input)
   unsigned char tmpCode = readU8(input);
   if (tmpCode == 0xe8)
   {
-    int nameId = (int)readU32(input);
+    int nameId = readS32(input);
     input->seek(6, WPX_SEEK_CUR);
-    int formatStringId = (int)readU32(input);
+    int formatStringId = readS32(input);
     m_shape.m_fields.addTextField(m_header.id, m_header.level, nameId, formatStringId);
   }
   else
   {
     double numericValue = readDouble(input);
     input->seek(2, WPX_SEEK_CUR);
-    int formatStringId = (int)readU32(input);
+    int formatStringId = readS32(input);
 
     unsigned blockIdx = 0;
     unsigned length = 0;


More information about the Libreoffice-commits mailing list