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 : |