Subject: [calligra/filters-karbon-cdr] filters/karbon/cdr: Added: some more info about CdrStyle240ArgumentData
Git commit 1a8003ee6b957655c68605902b44b03e2de9910b by Friedrich W. H. Kossebau.
Committed on 21/02/2012 at 18:34.
Pushed by kossebau into branch 'filters-karbon-cdr'.

Added: some more info about CdrStyle240ArgumentData

M +18 -3 filters/karbon/cdr/cdr4structs.format
M +7 -3 filters/karbon/cdr/cdrparser.cpp

http://commits.kde.org/calligra/1a8003ee6b957655c68605902b44b03e2de9910b

diff --git a/filters/karbon/cdr/cdr4structs.format
b/filters/karbon/cdr/cdr4structs.format
index f02d6fb..002a11a 100644
--- a/filters/karbon/cdr/cdr4structs.format
+++ b/filters/karbon/cdr/cdr4structs.format
@@ -342,10 +342,25 @@ size |count|aps | ap1 |apl |?????|
<field start="8" end="9" name="_unknown4" type="sint16" />
<field start="10" end="11" name="_unknown5" type="sint16" />
</record>
- <!-- 258 bytes (all 00) -->
- <record name="CdrStyle240ArgumentData" size="258">
- <array start="0" end="257" name="_unknown" type="char" length="258"/>
+
+ <record name="CdrStyle240Data" size="4">
+ <!-- seen 0, perhaps alignment type? -->
+ <field start="0" end="1" name="_unknown0" type="sint16" />
+<!--
+seen 12 values of 500 increasing by 500 till 6000
+seen 32 values of 894 increasing by 500 till 16394
+(500 cdr units are 36 pt)
+-->
+ <field start="2" end="3" name="_unknown1" type="sint16" />
+ </record>
+ <!-- always 258 bytes, seems only partially used (all 00, or with values),
tab stops? -->
+ <record name="CdrStyle240ArgumentData" size="2" sizeExtended="true">
+ <!-- number seen was 0, 12, 32 -->
+ <field start="0" end="1" name="someDataSize" type="uint16" />
+ <dynarray start="2" name="someData" type="CdrStyle240Data"
length="someDataSize" minLength="0" maxLength="64"/>
+ <!-- rest bytes seem garbage data, TODO: mark with a union or do padding
by formula? -->
</record>
+
<!-- 8 bytes (all 0, 250 0 250 250, 500 0 250 250, 750 0 250 250, 0 625 0
0) -->
<record name="CdrStyle245ArgumentData" size="8">
<field start="0" end="1" name="_unknown0" type="sint16" />
diff --git a/filters/karbon/cdr/cdrparser.cpp b/filters/karbon/cdr/cdrparser.cpp
index 3332768..0254910 100644
--- a/filters/karbon/cdr/cdrparser.cpp
+++ b/filters/karbon/cdr/cdrparser.cpp
@@ -556,9 +556,13 @@ qDebug() << "Reading Styles...";
case CdrStyle240ArgumentId:
{
const CdrStyle240ArgumentData& data =
styleArgs.argRef<CdrStyle240ArgumentData>( i );
- argTypeAsString = QLatin1String("some 258 bytes");
- const QByteArray hex =
QByteArray::fromRawData(data._unknownPtr(), data._unknownCount()).toHex();
- argAsString = QString::fromLatin1(hex.constData(),
hex.count());
+ argTypeAsString = QLatin1String("some max 258 bytes");
+ argAsString = QLatin1String("count:") +
QString::number(data.someDataSize());
+ if( data.someDataSize() > 0 )
+ argAsString = argAsString + QLatin1String(", from ") +
+
QString::number(data.someData(0)._unknown1()) +
+ QLatin1String(" to ") +
+
QString::number(data.someData(data.someDataSize()-1)._unknown1());
break;
}
case CdrStyle235ArgumentId:

(C)2011 mailinglist-archive.com