summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDave McKellar <dmckellar@gmail.com>2013-08-29 09:54:09 -0400
committerFridrich Štrba <fridrich.strba@bluewin.ch>2013-08-29 16:04:52 +0200
commitcbebfbaff8b7826bc631bbf51eb9a06ee5121326 (patch)
treeaf8992a6e0cea9aeaad584fb5258610b22312d9b /src
parent0319fb78d19f2c13ad4fb3f90e4dcaedb4976412 (diff)
Added initial support for the "udta" fourcc.
Diffstat (limited to 'src')
-rw-r--r--src/lib/CDRDocumentStructure.h1
-rw-r--r--src/lib/CDRParser.cpp19
-rw-r--r--src/lib/CDRParser.h1
3 files changed, 21 insertions, 0 deletions
diff --git a/src/lib/CDRDocumentStructure.h b/src/lib/CDRDocumentStructure.h
index 70cc373..1d42b33 100644
--- a/src/lib/CDRDocumentStructure.h
+++ b/src/lib/CDRDocumentStructure.h
@@ -126,6 +126,7 @@
#define CDR_FOURCC_txsm 0x6d737874
#define CDR_FOURCC_txtj 0x6a747874
+#define CDR_FOURCC_udta 0x61746475
#define CDR_FOURCC_uidr 0x72646975
#define CDR_FOURCC_uil 0x206c6975
#define CDR_FOURCC_url 0x206c7275
diff --git a/src/lib/CDRParser.cpp b/src/lib/CDRParser.cpp
index ec76a21..79c587f 100644
--- a/src/lib/CDRParser.cpp
+++ b/src/lib/CDRParser.cpp
@@ -761,6 +761,9 @@ void libcdr::CDRParser::readRecord(unsigned fourCC, unsigned length, WPXInputStr
case CDR_FOURCC_txsm:
readTxsm(input, length);
break;
+ case CDR_FOURCC_udta:
+ readUdta(input);
+ break;
case CDR_FOURCC_styd:
readStyd(input);
break;
@@ -3279,6 +3282,22 @@ void libcdr::CDRParser::readTxsm5(WPXInputStream *input)
m_collector->collectText(textId, stlId, textData, charDescriptions, charStyles);
}
+void libcdr::CDRParser::readUdta(WPXInputStream *input)
+{
+ CDR_DEBUG_MSG(("libcdr::CDRParser::readUdta\n"));
+ input->seek(6, WPX_SEEK_CUR); // Not sure what these 6 bytes are for. Font id?
+ std::vector<unsigned char> name;
+ unsigned short c;
+ for (;;)
+ {
+ if ((c = readU16(input)) == 0) break;
+ name.push_back((unsigned char)(c & 0xff));
+ name.push_back((unsigned char)(c >> 8));
+ }
+ WPXString fieldName;
+ appendCharacters(fieldName, name);
+}
+
void libcdr::CDRParser::readStyd(WPXInputStream *input)
{
CDR_DEBUG_MSG(("libcdr::CDRParser::readStyd\n"));
diff --git a/src/lib/CDRParser.h b/src/lib/CDRParser.h
index 7b159f1..10405ef 100644
--- a/src/lib/CDRParser.h
+++ b/src/lib/CDRParser.h
@@ -109,6 +109,7 @@ private:
void readTxsm16(WPXInputStream *input);
void readTxsm6(WPXInputStream *input);
void readTxsm5(WPXInputStream *input);
+ void readUdta(WPXInputStream *input);
void readArtisticText(WPXInputStream *input);
void readParagraphText(WPXInputStream *input);