Subject: [calligra/filters-karbon-cdr] filters/karbon/cdr: Added: more comments about seen style arguments
Git commit c10ed324d45444f51b1f31832b7ebdcbcf55acea by Friedrich W. H. Kossebau.
Committed on 22/02/2012 at 12:34.
Pushed by kossebau into branch 'filters-karbon-cdr'.

Added: more comments about seen style arguments

M +44 -15 filters/karbon/cdr/cdr4structs.format
M +21 -12 filters/karbon/cdr/cdrparser.cpp

http://commits.kde.org/calligra/c10ed324d45444f51b1f31832b7ebdcbcf55acea

diff --git a/filters/karbon/cdr/cdr4structs.format
b/filters/karbon/cdr/cdr4structs.format
index 002a11a..53844bb 100644
--- a/filters/karbon/cdr/cdr4structs.format
+++ b/filters/karbon/cdr/cdr4structs.format
@@ -142,9 +142,7 @@ const T& argRef( int i ) const
<enums>
<enum name="CdrStyleArgumentType">
<item name="CdrStyleTitleArgumentId" value="200" />
- <!-- 32bit 02 00 00 00 -->
<item name="CdrStyle205ArgumentId" value="205" />
- <!-- 32bit 02 00 00 00 -->
<item name="CdrStyle210ArgumentId" value="210" />
<item name="CdrStyleFontArgumentId" value="220" />
<item name="CdrStyleTextAlignmentArgumentId" value="225" />
@@ -296,11 +294,11 @@ size |count|aps | ap1 |apl |?????|
<field start="5" end="5" name="_unknown2" type="uint8" />
</record>

- <!-- 32bit 02 00 00 00 -->
+ <!-- 32bit seen 1,2, with 200 and 210 only argument in Default Graphic -->
<record name="CdrStyle205ArgumentData" size="4">
<field start="0" end="3" name="_unknown" type="sint32" />
</record>
- <!-- 32bit 02 00 00 00 -->
+ <!-- 32bit seen 1,2,3, with 200 and 205 only argument in Default Graphic
-->
<record name="CdrStyle210ArgumentData" size="4">
<field start="0" end="3" name="_unknown" type="sint32" />
</record>
@@ -308,14 +306,23 @@ size |count|aps | ap1 |apl |?????|

<enums>
<enum name="CdrStyleTextAlignmentType">
- <!-- ? -->
- <item name="CdrStyleText0Alignment" value="0" />
- <!-- ? -->
- <item name="CdrStyleText1Alignment" value="1" />
- <item name="CdrStyleTextCenterAlignment" value="2" />
- <item name="CdrStyleTextRightAlignment" value="3" />
- <!-- ? -->
- <item name="CdrStyleText4Alignment" value="4" />
+ <!-- Seen with Bullet*, Default Artistic Text, Default Paragraph Text -->
+ <item name="CdrStyleTextUnknown0Alignment" value="0">
+ <description>.</description>
+ </item>
+ <!-- Seen with Default Artistic Text, Default Paragraph Text,
Ãberschrift -->
+ <item name="CdrStyleTextUnknown1Alignment" value="1">
+ <description>Text is left aligned?</description>
+ </item>
+ <item name="CdrStyleTextCenterAlignment" value="2">
+ <description>Text is aligned in the middle.</description>
+ </item>
+ <item name="CdrStyleTextRightAlignment" value="3">
+ <description>Text is right aligned.</description>
+ </item>
+ <item name="CdrStyleTextUnknown4Alignment" value="4">
+ <description>Block alignment? Seen with Text.</description>
+ </item>
</enum>
</enums>

@@ -324,16 +331,28 @@ size |count|aps | ap1 |apl |?????|
<record name="CdrStyleTextAlignmentArgumentData" size="2">
<field start="0" end="1" name="type" type="uint16"
value="CdrStyleTextAlignmentType" />
</record>
- <!-- 20 bytes (all 00) -->
+<!-- 20 bytes
+(all 00)
+1 49 194 1 33 00000000000000000000
+0 58 333 1 31 00000000000000000000
+-->
<record name="CdrStyle230ArgumentData" size="20">
<field start="0" end="1" name="_unknown0" type="sint16" />
<field start="2" end="3" name="_unknown1" type="sint16" />
+ <!-- seen 194 (~14pt), 333 (~18pt), could be some font size -->
<field start="4" end="5" name="_unknown2" type="sint16" />
<field start="6" end="7" name="_unknown3" type="sint16" />
<field start="8" end="9" name="_unknown4" type="sint16" />
<array start="10" end="19" name="_unknown" type="char" length="10" />
</record>
- <!-- 12 bytes (00 00 64 00 64 00 64 00 00 00 00 00) -->
+<!--
+in Default Artistic Text, not Default Graphic
+12 bytes (00 00 64 00 64 00 64 00 00 00 00 00)
+seen 0, 100, 100, 100, 0, 0
+third last 188 for Text and Ãberschrift, if not 100
+second last 76 for Text and Ãberschrift
+last 13751 for "Das Schulmagazin" text style
+-->
<record name="CdrStyle235ArgumentData" size="12">
<field start="0" end="1" name="_unknown0" type="sint16" />
<field start="2" end="3" name="_unknown1" type="sint16" />
@@ -361,11 +380,19 @@ seen 32 values of 894 increasing by 500 till 16394
<!-- 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) -->
+<!--
+8 bytes (all 0, 250 0 250 250, 500 0 250 250, 750 0 250 250, 0 625 0 0)
margins?
+not seen for Default Artistic Text, Default Graphic
+-->
<record name="CdrStyle245ArgumentData" size="8">
+ <description>margins possibly?</description>
+ <!-- left margin, at least increases by 250 for default bullet point
styles -->
<field start="0" end="1" name="_unknown0" type="sint16" />
+ <!-- upper margin? only for default paragraph text and title 625, 0 for
others. or first line left margin? -->
<field start="2" end="3" name="_unknown1" type="sint16" />
+ <!-- right margin? 0 for default text/Ãberschrift, 250 for bullet points
-->
<field start="4" end="5" name="_unknown2" type="sint16" />
+ <!-- margin after text? 0 for default text/Ãberschrift, 250 for bullet
points -->
<field start="6" end="7" name="_unknown3" type="sint16" />
</record>
<!-- 32bit (0 0, 0 500) -->
@@ -1103,6 +1130,8 @@ garbage data? undo data?
</record>

<!--
+sample: 61 00 01 00 00 00 00 00 00 00 00 00 00 00 02 00 15 01 00 00
+02 is block text id, 277 id of block text object
sample: 61 00 01 00 00 00 00 00 00 00 00 00 00 00 04 00 C2 00 98 1F
sample: 61 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 1E 00 00 00
sample: 61 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 4A 00 00 00
diff --git a/filters/karbon/cdr/cdrparser.cpp b/filters/karbon/cdr/cdrparser.cpp
index 0254910..a9d6810 100644
--- a/filters/karbon/cdr/cdrparser.cpp
+++ b/filters/karbon/cdr/cdrparser.cpp
@@ -504,18 +504,27 @@ qDebug() << "Reading Styles...";
break;
case CdrStyleTextAlignmentArgumentId :
{
- const CdrStyleTextAlignmentArgumentData& data =
styleArgs.argRef<CdrStyleTextAlignmentArgumentData>( i );
+ static const struct { const char* name; CdrTextAlignment id;}
alignData[5] =
+ {
+ {" left?", CdrTextAlignmentUnknown},
+ {" other left?", CdrTextAlignmentUnknown},
+ {" center", CdrTextAlignCenter},
+ {" right", CdrTextAlignRight},
+ {" block?", CdrTextAlignmentUnknown}
+ };

- const bool isAlignmentTypeKnown = ( (data.type() ==
CdrStyleTextCenterAlignment) ||
- (data.type() ==
CdrStyleTextRightAlignment) );
+ const CdrStyleTextAlignmentArgumentData& data =
styleArgs.argRef<CdrStyleTextAlignmentArgumentData>( i );
+ const bool isAlignmentTypeKnown = (
(CdrStyleTextUnknown0Alignment <= data.type()) &&
+ (data.type() <=
CdrStyleTextUnknown4Alignment) );
if( isAlignmentTypeKnown )
- style->setTextAlignment(
(data.type()==CdrStyleTextCenterAlignment) ?
- CdrTextAlignCenter :
CdrTextAlignRight );
+ style->setTextAlignment( alignData[data.type()].id );

argTypeAsString = QLatin1String("text alignment");
argAsString = QString::number( data.type() );
- if( ! isAlignmentTypeKnown )
- argAsString.append( QLatin1String("UNKNOWN") );
+ if( isAlignmentTypeKnown )
+ argAsString.append(
QLatin1String(alignData[data.type()].name) );
+ else
+ argAsString.append( QLatin1String(" UNKNOWN") );
break;
}
case CdrStyleTitleArgumentId :
@@ -534,10 +543,10 @@ qDebug() << "Reading Styles...";
style->setFontSize( fontData.fontSize() );

argTypeAsString = QLatin1String("font");
- argAsString = QLatin1String("id:") + QString::number(
fontData.fontIndex() ) + QLatin1Char(' ') +
- QString::number( fontData.fontSize()) +
QLatin1Char(' ') +
- QString::number( fontData._unknown1()) +
QLatin1Char(' ') +
- QString::number( fontData._unknown2());
+ argAsString = QLatin1String("id:") + QString::number(
fontData.fontIndex() ) +
+ QLatin1String(" size:") + QString::number(
fontData.fontSize()) +
+ QLatin1Char(' ') + QString::number(
fontData._unknown1()) +
+ QLatin1Char(' ') + QString::number(
fontData._unknown2());
break;
}
case CdrStyle230ArgumentId:
@@ -1160,7 +1169,7 @@ switch(argType)
{
const CdrObject100ArgumentData data =
argsData.arg<CdrObject100ArgumentData>( i );
argAsString =
QString::number(data._unknown0())+QLatin1Char(',')+QString::number(data._unknown1());
- argTypeAsString = QLatin1String("some 32-bit");
+ argTypeAsString = QLatin1String("z-index?");
break;
}
case CdrObjectStyleIndexArgumentId :

(C)2011 mailinglist-archive.com