summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFridrich Štrba <fridrich.strba@bluewin.ch>2021-03-26 08:25:33 +0100
committerFridrich Štrba <fridrich.strba@bluewin.ch>2021-03-26 08:25:33 +0100
commit628c79ed597f720706b6a09a0426697ea1544687 (patch)
tree047306a94852be68c46eef2de0bd61f5d5843647
parentd9e6f53fad91ef2a8a2f7a6dd1776c2b779f34af (diff)
Fixes for text-on-path in txsm6
Change-Id: Iae442c48ea153436a9e588313d109b2f91acc06c
-rw-r--r--src/lib/CDRParser.cpp20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/lib/CDRParser.cpp b/src/lib/CDRParser.cpp
index 5b11d75..66ae391 100644
--- a/src/lib/CDRParser.cpp
+++ b/src/lib/CDRParser.cpp
@@ -2748,14 +2748,30 @@ void libcdr::CDRParser::readTxsm16(librevenge::RVNGInputStream *input)
void libcdr::CDRParser::readTxsm6(librevenge::RVNGInputStream *input)
{
- input->seek(0x20, librevenge::RVNG_SEEK_CUR);
+ unsigned frameFlag = readU32(input);
+ input->seek(0x18, librevenge::RVNG_SEEK_CUR);
+ unsigned textOnPath = readU32(input);
+
+ if (textOnPath == 1)
+ {
+ input->seek(4, librevenge::RVNG_SEEK_CUR); // var1
+ input->seek(4, librevenge::RVNG_SEEK_CUR); // var3
+ input->seek(4, librevenge::RVNG_SEEK_CUR); // Offset
+ input->seek(4, librevenge::RVNG_SEEK_CUR); // var4
+ input->seek(4, librevenge::RVNG_SEEK_CUR); // Distance
+ input->seek(4, librevenge::RVNG_SEEK_CUR); // var5
+ input->seek(4, librevenge::RVNG_SEEK_CUR); // var6
+ input->seek(4, librevenge::RVNG_SEEK_CUR); // var7
+ }
+
unsigned numFrames = readU32(input);
unsigned textId = 0;
for (unsigned j=0; j<numFrames; ++j)
{
textId = readU32(input); // Frame Id
input->seek(48, librevenge::RVNG_SEEK_CUR); // Trafo 6*8 bytes
- input->seek(8, librevenge::RVNG_SEEK_CUR); // Maybe flags
+ if (!frameFlag)
+ input->seek(8, librevenge::RVNG_SEEK_CUR); // Maybe flags
}
unsigned numPara = readU32(input);
for (unsigned j=0; j<numPara; ++j)