26#include <rtl/tencinfo.h>
49 return dumpDec< sal_Int32 >( rName(
"clipboard-format" ),
"OLE-STD-CLIPBOARD-FORMAT" );
54 sal_Int32 nLen =
mxStrm->readInt32();
60 sal_Int32 nLen =
mxStrm->readInt32();
72 sal_uInt32 nOleColor =
mxStrm->readuInt32();
84 dumpDec< sal_uInt8 >(
"version" );
85 dumpDec< sal_uInt16 >(
"charset",
"CHARSET" );
86 dumpHex< sal_uInt8 >(
"flags",
"STDFONT-FLAGS" );
87 dumpDec< sal_uInt16 >(
"weight",
"FONT-WEIGHT" );
88 dumpDec< sal_uInt32 >(
"height",
"STDFONT-HEIGHT" );
99 dumpHex< sal_uInt32 >(
"identifier",
"STDPIC-ID" );
100 sal_uInt32 nSize = dumpHex< sal_uInt32 >(
"image-size",
"CONV-DEC" );
106 construct( rParent, rxStrm, rSysFileName );
117 dumpDec< sal_uInt32 >(
"version" );
121 if(
mxStrm->getRemaining() >= 4 )
123 sal_Int32 nLen =
mxStrm->readInt32();
124 if( (0 <= nLen) && (nLen <= 40) )
126 dumpCharArray(
"ansi-unused", nLen, RTL_TEXTENCODING_MS_1252 );
127 if( (
mxStrm->getRemaining() >= 4) && (dumpHex< sal_Int32 >(
"unicode-marker" ) == 0x71B239F4) )
142const sal_Int32 OLEPROP_ID_DICTIONARY = 0;
143const sal_Int32 OLEPROP_ID_CODEPAGE = 1;
145const sal_uInt16 OLEPROP_TYPE_INT16 = 2;
146const sal_uInt16 OLEPROP_TYPE_INT32 = 3;
147const sal_uInt16 OLEPROP_TYPE_FLOAT = 4;
148const sal_uInt16 OLEPROP_TYPE_DOUBLE = 5;
149const sal_uInt16 OLEPROP_TYPE_DATE = 7;
150const sal_uInt16 OLEPROP_TYPE_STRING = 8;
151const sal_uInt16 OLEPROP_TYPE_STATUS = 10;
152const sal_uInt16 OLEPROP_TYPE_BOOL = 11;
153const sal_uInt16 OLEPROP_TYPE_VARIANT = 12;
154const sal_uInt16 OLEPROP_TYPE_INT8 = 16;
155const sal_uInt16 OLEPROP_TYPE_UINT8 = 17;
156const sal_uInt16 OLEPROP_TYPE_UINT16 = 18;
157const sal_uInt16 OLEPROP_TYPE_UINT32 = 19;
158const sal_uInt16 OLEPROP_TYPE_INT64 = 20;
159const sal_uInt16 OLEPROP_TYPE_UINT64 = 21;
160const sal_uInt16 OLEPROP_TYPE_STRING8 = 30;
161const sal_uInt16 OLEPROP_TYPE_STRING16 = 31;
162const sal_uInt16 OLEPROP_TYPE_FILETIME = 64;
163const sal_uInt16 OLEPROP_TYPE_BLOB = 65;
164const sal_uInt16 OLEPROP_TYPE_STREAM = 66;
165const sal_uInt16 OLEPROP_TYPE_STORAGE = 67;
166const sal_uInt16 OLEPROP_TYPE_CLIPFMT = 71;
168const sal_uInt16 OLEPROP_TYPE_SIMPLE = 0x0000;
169const sal_uInt16 OLEPROP_TYPE_VECTOR = 0x1000;
170const sal_uInt16 OLEPROP_TYPE_ARRAY = 0x2000;
174const sal_uInt32 AX_STRING_COMPRESSED = 0x80000000;
180 construct( rParent, rxStrm, rSysFileName );
186 ::std::vector< sal_uInt32 > aStartPosVec;
192 dumpHex< sal_uInt16 >(
"byte-order",
"OLEPROP-BYTE-ORDER" );
193 dumpDec< sal_uInt16 >(
"version" );
194 dumpDec< sal_uInt16 >(
"os-minor" );
195 dumpDec< sal_uInt16 >(
"os-type",
"OLEPROP-OSTYPE" );
197 sal_Int32 nSectCount = dumpDec< sal_Int32 >(
"section-count" );
202 mxOut->resetItemIndex();
203 for( sal_Int32 nSectIdx = 0; !
mxStrm->isEof() && (nSectIdx < nSectCount); ++nSectIdx )
207 aGuidVec.push_back(
dumpGuid(
"guid" ) );
208 aStartPosVec.push_back( dumpHex< sal_uInt32 >(
"start-pos",
"CONV-DEC" ) );
215 for(
size_t nSectIdx = 0; !
mxStrm->isEof() && (nSectIdx < aStartPosVec.size()); ++nSectIdx )
216 dumpSection( aGuidVec[ nSectIdx ], aStartPosVec[ nSectIdx ] );
224 if ( aGuidName ==
"GlobalDocProp" )
225 mxPropIds->includeList(
cfg().getNameList(
"OLEPROP-GLOBALIDS" ) );
226 else if ( aGuidName ==
"BuiltinDocProp" )
227 mxPropIds->includeList(
cfg().getNameList(
"OLEPROP-BUILTINIDS" ) );
229 mxPropIds->includeList(
cfg().getNameList(
"OLEPROP-BASEIDS" ) );
232 typedef ::std::map< sal_Int32, sal_uInt32 > PropertyPosMap;
233 PropertyPosMap aPropMap;
243 dumpDec< sal_Int32 >(
"size" );
244 sal_Int32 nPropCount = dumpDec< sal_Int32 >(
"property-count" );
249 mxOut->resetItemIndex();
250 for( sal_Int32 nPropIdx = 0; !
mxStrm->isEof() && (nPropIdx < nPropCount); ++nPropIdx )
254 sal_Int32 nPropId = dumpDec< sal_Int32 >(
"id",
mxPropIds );
255 sal_uInt32 nPropPos = nStartPos + dumpHex< sal_uInt32 >(
"start-pos",
"CONV-DEC" );
256 aPropMap[ nPropId ] = nPropPos;
265 PropertyPosMap::iterator aCodePageIt = aPropMap.find( OLEPROP_ID_CODEPAGE );
266 if( aCodePageIt != aPropMap.end() )
269 aPropMap.erase( aCodePageIt );
273 PropertyPosMap::iterator aDictIt = aPropMap.find( OLEPROP_ID_DICTIONARY );
274 if( aDictIt != aPropMap.end() )
277 aPropMap.erase( aDictIt );
281 for (
auto const& elem : aPropMap)
304 if(
nType == OLEPROP_TYPE_INT16 )
306 sal_uInt16 nCodePage = dumpDec< sal_uInt16 >(
"codepage",
"CODEPAGES" );
307 rtl_TextEncoding eNewTextEnc = rtl_getTextEncodingFromWindowsCodePage( nCodePage );
308 if( eNewTextEnc != RTL_TEXTENCODING_DONTKNOW )
324 sal_Int32
nCount = dumpDec< sal_Int32 >(
"count" );
325 for( sal_Int32 nIdx = 0; !
mxStrm->isEof() && (nIdx <
nCount); ++nIdx )
329 sal_Int32
nId = dumpDec< sal_Int32 >(
"id" );
341 sal_uInt16 nBaseType =
static_cast< sal_uInt16
>(
nType & 0x0FFF );
342 sal_uInt16 nArrayType =
static_cast< sal_uInt16
>(
nType & 0xF000 );
347 case OLEPROP_TYPE_ARRAY: ;
break;
356 case OLEPROP_TYPE_INT16: dumpDec< sal_Int16 >(
"value" );
break;
357 case OLEPROP_TYPE_INT32: dumpDec< sal_Int32 >(
"value" );
break;
358 case OLEPROP_TYPE_FLOAT: dumpDec< float >(
"value" );
break;
359 case OLEPROP_TYPE_DOUBLE: dumpDec< double >(
"value" );
break;
360 case OLEPROP_TYPE_DATE: dumpDec< double >(
"date" );
break;
361 case OLEPROP_TYPE_STRING:
dumpString8(
"value" );
break;
362 case OLEPROP_TYPE_STATUS: dumpHex< sal_Int32 >(
"status" );
break;
363 case OLEPROP_TYPE_BOOL: dumpBool< sal_Int16 >(
"value" );
break;
365 case OLEPROP_TYPE_INT8: dumpDec< sal_Int8 >(
"value" );
break;
366 case OLEPROP_TYPE_UINT8: dumpDec< sal_uInt8 >(
"value" );
break;
367 case OLEPROP_TYPE_UINT16: dumpDec< sal_uInt16 >(
"value" );
break;
368 case OLEPROP_TYPE_UINT32: dumpDec< sal_uInt32 >(
"value" );
break;
369 case OLEPROP_TYPE_INT64: dumpDec< sal_Int64 >(
"value" );
break;
370 case OLEPROP_TYPE_UINT64: dumpDec< sal_uInt64 >(
"value" );
break;
371 case OLEPROP_TYPE_STRING8:
dumpString8(
"value" );
break;
372 case OLEPROP_TYPE_STRING16:
dumpString16(
"value" );
break;
373 case OLEPROP_TYPE_FILETIME:
dumpFileTime(
"file-time" );
break;
374 case OLEPROP_TYPE_BLOB:
dumpBlob( nPropId,
"data" );
break;
375 case OLEPROP_TYPE_STREAM:
dumpString8(
"stream-name" );
break;
376 case OLEPROP_TYPE_STORAGE:
dumpString8(
"storage-name" );
break;
377 case OLEPROP_TYPE_CLIPFMT:
dumpBlob( nPropId,
"clip-data" );
break;
383 sal_Int32 nElemCount = dumpDec< sal_Int32 >(
"element-count" );
384 for( sal_Int32 nElemIdx = 0; !
mxStrm->isEof() && (nElemIdx < nElemCount); ++nElemIdx )
386 mxOut->resetItemIndex( nElemIdx );
395 return static_cast< sal_uInt16
>( dumpHex< sal_Int32 >(
"type",
"OLEPROP-TYPE" ) & 0xFFFF );
400 sal_Int32 nSize = dumpDec< sal_Int32 >(
"data-size" );
413 sal_Int32 nLen = dumpDec< sal_Int32 >(
"string-len" );
419 sal_Int32 nNewLen = getLimitedValue< sal_Int32, sal_Int32 >( nLen, 0, 1024 );
427 sal_Int32 nLen = dumpDec< sal_Int32 >(
"string-len" );
433 sal_Int32 nNewLen = getLimitedValue< sal_Int32, sal_Int32 >( nLen, 0, 1024 );
434 OUString
aData =
mxStrm->readUnicodeArray( nNewLen );
449 sal_Int64 nEndPos =
mxStrm->tell() + nSize;
450 sal_Int32
nCount = dumpDec< sal_Int32 >(
"property-count" );
452 for( sal_Int32 nHlinkIndex = 0, nHlinkCount =
nCount / 6; bValid && !
mxStrm->isEof() && (nHlinkIndex < nHlinkCount); ++nHlinkIndex )
469 mxStrm->seek( nStartPos );
498 if ( rStrmName ==
"\001CompObj" )
500 else if( rStrmName ==
"\005SummaryInformation" || rStrmName ==
"\005DocumentSummaryInformation" )
507 sal_uInt32 nDataId5, sal_uInt32 nDataId6, sal_uInt16 nVersion,
bool bCommonPart,
bool bComplexPart ) :
508 mnDataId5( nDataId5 ),
509 mnDataId6( nDataId6 ),
511 mbCommonPart( bCommonPart ),
512 mbComplexPart( bComplexPart )
519 sal_uInt32 nCommonSize = 0;
534 sal_uInt32
nId = dumpHex< sal_uInt32 >(
"header-id",
"COMCTL-HEADER-IDS" );
536 sal_uInt16 nMinor =
mxStrm->readuInt16();
537 sal_uInt16 nMajor =
mxStrm->readuInt16();
538 mxOut->writeDec( nMajor );
539 mxOut->writeChar(
'.' );
540 mxOut->writeDec( nMinor );
549 dumpDec< sal_Int32 >(
"width",
"CONV-HMM-TO-CM" );
550 dumpDec< sal_Int32 >(
"height",
"CONV-HMM-TO-CM" );
562 ornCommonPartSize = dumpDec< sal_uInt32 >(
"common-part-size" );
571 sal_Int64 nEndPos =
mxStrm->tell() + nPartSize;
576 dumpHex< sal_uInt32 >(
"common-flags",
"COMCTL-COMMON-FLAGS" );
590 sal_uInt32 nFlags = dumpHex< sal_uInt32 >(
"comctl-complex-flags",
"COMCTL-COMPLEX-FLAGS" );
591 if( !
mxStrm->isEof() && (nFlags & 0x01) )
596 if ( aClassName ==
"StdFont" )
599 if( !
mxStrm->isEof() && (nFlags & 0x02) )
604 if ( aClassName ==
"StdPic" )
619 dumpHex< sal_uInt32 >(
"flags",
"COMCTL-SCROLLBAR-FLAGS" );
620 dumpDec< sal_Int32 >(
"large-change" );
621 dumpDec< sal_Int32 >(
"small-change" );
622 dumpDec< sal_Int32 >(
"min" );
623 dumpDec< sal_Int32 >(
"max" );
624 dumpDec< sal_Int32 >(
"value" );
634 dumpDec< float >(
"min" );
635 dumpDec< float >(
"max" );
638 dumpBool< sal_uInt16 >(
"vertical" );
639 dumpBool< sal_uInt16 >(
"smooth-scroll" );
650 dumpBool< sal_Int32 >(
"vertical" );
651 dumpDec< sal_Int32 >(
"large-change" );
652 dumpDec< sal_Int32 >(
"small-change" );
653 dumpDec< sal_Int32 >(
"min" );
654 dumpDec< sal_Int32 >(
"max" );
655 dumpDec< sal_Int16 >(
"select-range",
"COMCTL-SLIDER-SELECTRANGE" );
657 dumpDec< sal_Int32 >(
"select-start" );
658 dumpDec< sal_Int32 >(
"select-length" );
659 dumpDec< sal_Int32 >(
"tick-style",
"COMCTL-SLIDER-TICKSTYLE" );
660 dumpDec< sal_Int32 >(
"tick-frequency" );
661 dumpDec< sal_Int32 >(
"value" );
663 dumpBool< sal_Int32 >(
"tooltip-below" );
674 dumpDec< sal_Int32 >(
"buddy-control" );
676 dumpDec< sal_Int32 >(
"value" );
678 dumpDec< sal_Int32 >(
"increment" );
679 dumpDec< sal_Int32 >(
"max" );
680 dumpDec< sal_Int32 >(
"min" );
681 dumpHex< sal_uInt32 >(
"flags-1",
"COMCTL-UPDOWN-FLAGS1" );
682 dumpHex< sal_uInt32 >(
"flags-2",
"COMCTL-UPDOWN-FLAGS2" );
693 dumpDec< sal_uInt16 >(
"image-width" );
694 dumpDec< sal_uInt16 >(
"image-height" );
696 dumpBool< sal_Int16 >(
"use-mask-color" );
705 sal_Int32 nImageCount = dumpDec< sal_Int32 >(
"image-count" );
706 mxOut->resetItemIndex();
707 for( sal_Int32 nImageIndex = 0; (nImageIndex < nImageCount) && !
mxStrm->isEof(); ++nImageIndex )
711 sal_uInt8 nFlags = dumpHex< sal_uInt8 >(
"text-flags",
"COMCTL-IMAGELIST-TEXTFLAGS" );
719 sal_Int32 nImageCount = dumpDec< sal_Int32 >(
"image-count" );
720 mxOut->resetItemIndex();
721 for( sal_Int32 nImageIndex = 0; (nImageIndex < nImageCount) && !
mxStrm->isEof(); ++nImageIndex )
725 dumpDec< sal_Int32 >(
"index" );
737 dumpHex< sal_uInt32 >(
"flags-1",
"COMCTL-TABSTRIP-FLAGS1" );
738 dumpDec< sal_uInt16 >(
"tab-fixed-width",
"CONV-HMM-TO-CM" );
739 dumpDec< sal_uInt16 >(
"tab-fixed-height",
"CONV-HMM-TO-CM" );
742 dumpHex< sal_uInt32 >(
"flags-2",
"COMCTL-TABSTRIP-FLAGS2" );
743 dumpDec< sal_uInt16 >(
"tab-min-width",
"CONV-HMM-TO-CM" );
745 dumpHex< sal_uInt32 >(
"flags-3",
"COMCTL-TABSTRIP-FLAGS3" );
753 sal_Int32 nTabCount = dumpDec< sal_Int32 >(
"tab-count" );
754 mxOut->resetItemIndex();
755 for( sal_Int32 nTabIndex = 0; (nTabIndex < nTabCount) && !
mxStrm->isEof(); ++nTabIndex )
760 sal_uInt32 nTabFlags = dumpHex< sal_uInt32 >(
"tab-flags",
"COMCTL-TABSTRIP-TABFLAGS" );
765 dumpDec< sal_uInt16 >(
"image-id" );
777 dumpHex< sal_uInt32 >(
"flags",
"COMCTL-TREEVIEW-FLAGS" );
778 dumpDec< sal_Int32 >(
"indentation",
"CONV-HMM-TO-CM" );
780 dumpHex< sal_uInt32 >(
"flags-2",
"COMCTL-TREEVIEW-FLAGS2" );
781 mnStringFlags = dumpHex< sal_uInt32 >(
"string-flags",
"COMCTL-TREEVIEW-STRINGFLAGS" );
801 dumpBool< sal_Int32 >(
"style-simple-text" );
802 dumpBool< sal_Int16 >(
"show-tips" );
810 sal_Int32 nPanelCount = dumpDec< sal_Int32 >(
"panel-count" );
811 mxOut->resetItemIndex();
812 for( sal_Int32 nPanelIndex = 0; (nPanelIndex < nPanelCount) && !
mxStrm->isEof(); ++nPanelIndex )
816 dumpHex< sal_uInt32 >(
"panel-flags",
"COMCTL-STATUSBAR-PANELFLAGS" );
817 dumpDec< sal_Int32 >(
"current-width",
"CONV-HMM-TO-CM" );
818 dumpDec< sal_Int32 >(
"minimal-width",
"CONV-HMM-TO-CM" );
819 sal_uInt32 nTextFlags = dumpHex< sal_uInt32 >(
"text-flags",
"COMCTL-STATUSBAR-TEXTFLAGS" );
830 sal_Int32 nImageCount = dumpDec< sal_Int32 >(
"image-count" );
831 mxOut->resetItemIndex();
832 for( sal_Int32 nImageIndex = 0; (nImageIndex < nImageCount) && !
mxStrm->isEof(); ++nImageIndex )
836 dumpDec< sal_Int32 >(
"panel-index" );
849 const String& rPropNameList,
bool b64BitPropFlags )
866 sal_uInt16 nSize = dumpDec< sal_uInt16 >(
"size" );
922 alignInput< sal_uInt32 >();
932 alignInput< sal_uInt32 >();
942 alignInput< sal_uInt16 >();
976 alignInput< sal_uInt32 >();
977 sal_uInt32 nLen = dumpHex< sal_uInt32 >(
getPropertyName(),
"AX-STRINGLEN" );
986 alignInput< sal_uInt32 >();
987 sal_uInt32 nLen = dumpHex< sal_uInt32 >(
getPropertyName(),
"CONV-DEC" );
996 alignInput< sal_uInt16 >();
1034 mxOut->writeDec( nMajor );
1035 mxOut->writeChar(
'.' );
1036 mxOut->writeDec( nMinor );
1041 bool bCompressed =
getFlag( nSize, AX_STRING_COMPRESSED );
1042 sal_uInt32 nBufSize = extractValue< sal_uInt32 >( nSize, 0, 31 );
1043 OUString aString = bCompressed ?
1044 dumpCharArray( rName, nBufSize, RTL_TEXTENCODING_ISO_8859_1 ) :
1046 alignInput< sal_Int32 >();
1057 alignInput< sal_uInt32 >();
1071 switch( largeProp.mePropType )
1077 dumpDec< sal_Int32 >(
"top",
"CONV-HMM-TO-CM" );
1078 dumpDec< sal_Int32 >(
"left",
"CONV-HMM-TO-CM" );
1085 dumpDec< sal_Int32 >(
"width",
"CONV-HMM-TO-CM" );
1086 dumpDec< sal_Int32 >(
"height",
"CONV-HMM-TO-CM" );
1091 OUString aGuid =
dumpGuid( largeProp.maItemName );
1092 if( largeProp.mpItemValue )
1098 OUString aString =
dumpString( largeProp.maItemName, largeProp.mnDataSize,
false );
1099 if( largeProp.mpItemValue )
1100 *largeProp.mpItemValue = aString;
1107 mxOut->resetItemIndex();
1108 sal_Int64 nEndPos =
mxStrm->tell() + largeProp.mnDataSize;
1109 while(
mxStrm->tell() < nEndPos )
1112 sal_uInt32 nDataSize = dumpHex< sal_uInt32 >(
"#flags",
"AX-ARRAYSTRINGLEN" );
1137 if ( aClassName ==
"StdFont" )
1139 else if ( aClassName ==
"StdPic" )
1141 else if ( aClassName ==
"CFontNew" )
1158 dumpDecProperty< sal_Int32 >( 160 );
1159 dumpDecProperty< sal_Int32 >( 0 );
1161 dumpDecProperty< sal_uInt8 >( 0,
"FONT-PITCHFAMILY" );
1162 dumpDecProperty< sal_uInt8 >( 1,
"AX-CFONTNEW-ALIGNMENT" );
1163 dumpDecProperty< sal_uInt16 >( 400,
"FONT-WEIGHT" );
1173 dumpDecProperty< sal_Int32 >( -1,
"CONV-HMM-TO-CM" );
1211 dumpDecProperty< sal_uInt32 >( 0 );
1212 dumpBorderStyleProperty< sal_uInt8 >( 0 );
1213 dumpDecProperty< sal_uInt8 >( 0,
"AX-MORPH-SCROLLBARS" );
1214 mnCtrlType = dumpDecProperty< sal_uInt8 >( 1,
"AX-MORPH-CONTROLTYPE" );
1218 dumpDecProperty< sal_uInt32 >( 0,
"CONV-HMM-TO-CM" );
1219 dumpDecProperty< sal_uInt16 >( 1,
"AX-MORPH-BOUNDCOLUMN" );
1220 dumpDecProperty< sal_Int16 >( -1,
"AX-MORPH-TEXTCOLUMN" );
1221 dumpDecProperty< sal_Int16 >( 1,
"AX-MORPH-COLUMNCOUNT" );
1222 dumpDecProperty< sal_uInt16 >( 8 );
1224 dumpDecProperty< sal_uInt8 >( 2,
"AX-MORPH-MATCHENTRYTYPE" );
1225 dumpDecProperty< sal_uInt8 >( 0,
"AX-MORPH-LISTSTYLE" );
1226 dumpDecProperty< sal_uInt8 >( 0,
"AX-MORPH-SHOWDROPDOWNMODE" );
1228 dumpDecProperty< sal_uInt8 >( 1,
"AX-MORPH-DROPDOWNSTYLE" );
1229 dumpDecProperty< sal_uInt8 >( 0,
"AX-MORPH-SELECTIONTYPE" );
1234 dumpSpecialEffectProperty< sal_uInt32 >( 2 );
1253 mxOut->resetItemIndex();
1278 dumpBorderStyleProperty< sal_uInt16 >( 0 );
1279 dumpSpecialEffectProperty< sal_uInt16 >( 0 );
1302 dumpBorderStyleProperty< sal_uInt8 >( 1 );
1305 dumpSpecialEffectProperty< sal_uInt8 >( 0 );
1326 dumpDecProperty< sal_Int32 >( 0 );
1327 dumpDecProperty< sal_Int32 >( 32767 );
1328 dumpDecProperty< sal_Int32 >( 0 );
1329 dumpHexProperty< sal_uInt32 >( 0 );
1332 dumpDecProperty< sal_Int32 >( 1 );
1333 dumpDecProperty< sal_Int32 >( 1 );
1335 dumpDecProperty< sal_Int16 >( -1,
"AX-SCROLLBAR-PROPTHUMB" );
1351 dumpHexProperty< sal_uInt32 >( 0 );
1352 dumpDecProperty< sal_Int32 >( 0 );
1353 dumpDecProperty< sal_Int32 >( 100 );
1354 dumpDecProperty< sal_Int32 >( 0 );
1357 dumpDecProperty< sal_Int32 >( 1 );
1371 dumpDecProperty< sal_Int32 >( -1 );
1379 dumpDecProperty< sal_uInt32 >( 0,
"AX-TABSTRIP-ORIENTATION" );
1380 dumpDecProperty< sal_uInt32 >( 0,
"AX-TABSTRIP-TABSTYLE" );
1391 dumpDecProperty< sal_uInt32 >( 0 );
1405 mxOut->resetItemIndex();
1407 dumpHex< sal_uInt32 >(
"#flags",
"AX-TABSTRIP-FLAGS" );
1413 construct( rParent, rxStrm, rSysFileName );
1430 if (
maProgId ==
"Forms.CommandButton.1" )
1432 else if(
maProgId ==
"Forms.TextBox.1" ||
1436 maProgId ==
"Forms.OptionButton.1" ||
1437 maProgId ==
"Forms.ToggleButton.1" ||
1440 else if (
maProgId ==
"Forms.Label.1" )
1442 else if (
maProgId ==
"Forms.Image.1" )
1444 else if (
maProgId ==
"Forms.ScrollBar.1" )
1446 else if (
maProgId ==
"Forms.SpinButton.1" )
1448 else if (
maProgId ==
"Forms.TabStrip.1" )
1450 else if (
maProgId ==
"MSComCtl2.FlatScrollBar.2" )
1452 else if (
maProgId ==
"COMCTL.ProgCtrl.1" )
1454 else if (
maProgId ==
"MSComctlLib.ProgCtrl.2" )
1456 else if (
maProgId ==
"COMCTL.Slider.1" )
1458 else if (
maProgId ==
"MSComctlLib.Slider.2" )
1460 else if (
maProgId ==
"ComCtl2.UpDown.1" )
1462 else if (
maProgId ==
"MSComCtl2.UpDown.2" )
1464 else if (
maProgId ==
"COMCTL.ImageListCtrl.1" )
1466 else if (
maProgId ==
"MSComctlLib.ImageListCtrl.2" )
1468 else if (
maProgId ==
"COMCTL.TabStrip.1" )
1470 else if (
maProgId ==
"MSComctlLib.TabStrip.2" )
1472 else if (
maProgId ==
"COMCTL.TreeCtrl.1" )
1474 else if (
maProgId ==
"MSComctlLib.TreeCtrl.2" )
1476 else if (
maProgId ==
"COMCTL.SBarCtrl.1" )
1492 mrFormData( rFormData )
1505 dumpDecProperty< sal_uInt32 >( 0 );
1506 dumpDecProperty< sal_Int32 >( -1 );
1507 dumpDecProperty< sal_uInt16 >( 0 );
1508 dumpDecProperty< sal_uInt16 >( 0 );
1509 dumpDecProperty< sal_uInt16 >( 0,
"OLEPROP-TYPE" );
1510 dumpDecProperty< sal_uInt16 >( 0 );
1511 dumpDecProperty< sal_uInt16 >( 0 );
1512 dumpDecProperty< sal_uInt16 >( 0,
"OLEPROP-TYPE" );
1513 dumpDecProperty< sal_Int32 >( -1 );
1514 dumpDecProperty< sal_uInt16 >( 0 );
1519const sal_uInt32 VBA_FORMSITE_OBJSTREAM = 0x0010;
1521const sal_uInt16 VBA_FORMSITE_CLASSTABLEINDEX = 0x8000;
1522const sal_uInt16 VBA_FORMSITE_CLASSTABLEMASK = 0x7FFF;
1527 mrFormData( rFormData )
1537 sal_Int32
nId = dumpDecProperty< sal_Int32 >( 0 );
1538 dumpDecProperty< sal_Int32 >( 0 );
1540 sal_uInt32
nLength = dumpDecProperty< sal_uInt32 >( 0 );
1541 dumpDecProperty< sal_Int16 >( -1 );
1542 sal_uInt16 nClassId = dumpHexProperty< sal_uInt16 >( 0x7FFF,
"VBA-FORMSITE-CLASSIDCACHE" );
1544 dumpDecProperty< sal_uInt16 >( 0 );
1551 sal_uInt16
nIndex = nClassId & VBA_FORMSITE_CLASSTABLEMASK;
1552 if(
getFlag( nClassId, VBA_FORMSITE_CLASSTABLEINDEX ) )
1559 if(
cfg().hasName(
"VBA-FORMSITE-CLASSNAMES",
nIndex ) )
1579 dumpDecProperty< sal_Int8 >( 0,
"VBA-FORMDESIGNEXT-CLICKCTRLMODE" );
1580 dumpDecProperty< sal_Int8 >( 0,
"VBA-FORMDESIGNEXT-DBLCLICKCTRLMODE" );
1585const sal_uInt32 AX_FORM_HASDESIGNEXTENDER = 0x00004000;
1586const sal_uInt32 AX_FORM_SKIPCLASSTABLE = 0x00008000;
1588const sal_uInt8 AX_FORM_SITECOUNTTYPE_COUNT = 0x80;
1589const sal_uInt8 AX_FORM_SITECOUNTTYPE_MASK = 0x7F;
1594 mrFormData( rFormData )
1604 dumpDecProperty< sal_uInt32 >( 0 );
1608 dumpBorderStyleProperty< sal_uInt8 >( 0 );
1610 dumpHexProperty< sal_uInt8 >( 0x0C,
"VBA-FORM-SCROLLBARS" );
1614 dumpDecProperty< sal_uInt32 >( 0 );
1617 dumpDecProperty< sal_uInt8 >( 0,
"VBA-FORM-CYCLE" );
1618 dumpSpecialEffectProperty< sal_uInt8 >( 0 );
1623 dumpDecProperty< sal_Int32 >( 100,
"CONV-PERCENT" );
1627 dumpDecProperty< sal_uInt32 >( 0 );
1628 dumpDecProperty< sal_uInt32 >( 0 );
1644 sal_uInt16
nCount = dumpDec< sal_uInt16 >(
"class-info-count" );
1645 mxOut->resetItemIndex();
1657 mxOut->resetItemIndex();
1674 sal_uInt32 nSiteCount = dumpDec< sal_uInt32 >(
"site-count" );
1675 sal_uInt32 nSiteLength = dumpDec< sal_uInt32 >(
"site-data-size" );
1676 sal_Int64 nEndPos =
mxStrm->tell() + nSiteLength;
1680 mxOut->resetItemIndex();
1681 sal_uInt32 nSiteIdx = 0;
1687 dumpDec< sal_uInt8 >(
"depth" );
1688 sal_uInt8 nTypeCount = dumpHex< sal_uInt8 >(
"type-count",
"VBA-FORM-SITE-TYPECOUNT" );
1689 if(
getFlag( nTypeCount, AX_FORM_SITECOUNTTYPE_COUNT ) )
1691 dumpDec< sal_uInt8 >(
"repeated-type" );
1692 nSiteIdx += (nTypeCount & AX_FORM_SITECOUNTTYPE_MASK);
1699 alignInput< sal_uInt32 >();
1717 mrFormData( rFormData )
1728 if( (siteInfo.mbInStream) && (siteInfo.mnLength > 0) )
1749 dumpDecProperty< sal_uInt32 >( 0,
"VBA-PAGE-TRANSITIONEFFECT" );
1750 dumpDecProperty< sal_uInt32 >( 0,
"AX-CONV-MS" );
1762 dumpDecProperty< sal_Int32 >( 0 );
1772 mxOut->resetItemIndex();
1774 dumpDec< sal_Int32 >(
"#id" );
1780 mrFormData( rFormData )
1812 if ( rStrmName ==
"f" )
1814 else if ( rStrmName ==
"o" )
1816 else if ( rStrmName ==
"x" )
1832 if( (rStrgPath.size() >= 3) && (rStrgPath[ 0 ] ==
'i') )
1834 std::u16string_view aId = rStrgPath.substr( 1 );
1835 if( (aId.size() == 2) && (aId[ 0 ] ==
'0') )
1836 aId = aId.substr( 1 );
1838 if( (
nId > 0) && (std::u16string_view(OUString::number(
nId )) == aId) )
1840 if( siteInfo.mnId ==
nId )
1847 meTextEnc( RTL_TEXTENCODING_MS_1252 )
1858 StreamOffsetMap::const_iterator aIt =
maStrmOffsets.find( rStrmName );
1864 mrVbaData( rVbaData )
1888 return !rBaseStrm.
isEof();
1896 mrVbaData.
meTextEnc = rtl_getTextEncodingFromWindowsCodePage( dumpDec< sal_uInt16 >(
"codepage",
"CODEPAGES" ) );
1908 dumpDec< sal_uInt32 >(
"major" );
1909 dumpDec< sal_uInt16 >(
"minor" );
1921 dumpDec< sal_uInt32 >(
"major" );
1922 dumpDec< sal_uInt16 >(
"minor" );
1952 dumpDec< sal_uInt32 >(
"cookie" );
1955 mnCurrOffset = dumpHex< sal_Int32 >(
"stream-offset",
"CONV-DEC" );
2001 const OUString& rSysFileName,
VbaSharedData& rVbaData, sal_Int32 nStrmOffset ) :
2002 mrVbaData( rVbaData ),
2003 mnStrmOffset( nStrmOffset )
2020 mrVbaData( rVbaData )
2027 if( rStrgPath.isEmpty() && rStrmName ==
"dir" )
2037 mrVbaData( rVbaData )
2043 if ( rStrmName ==
"\003VBFrame" )
2057 if( rStrgPath.isEmpty() && rStrmName ==
"PROJECT" )
2065 if ( rStrgPath ==
"VBA" )
bool isEof() const
Returns true, if the stream position is invalid (EOF).
virtual void implDumpBaseStream(const BinaryInputStreamRef &rxStrm, const OUString &rSysFileName) override
ActiveXStorageObject(const ObjectBase &rParent, const StorageRef &rxStrg, const OUString &rSysPath)
virtual void implDumpShortProperties() override
AxCFontNewObject(const InputObjectBase &rParent)
virtual void implDumpShortProperties() override
AxColumnInfoObject(const InputObjectBase &rParent)
AxImageObject(const InputObjectBase &rParent)
virtual void implDumpShortProperties() override
virtual void implDumpShortProperties() override
AxLabelObject(const InputObjectBase &rParent)
virtual void implDumpExtended() override
virtual void implDumpExtended() override
sal_uInt16 mnColInfoCount
AxMorphControlObject(const InputObjectBase &rParent)
virtual void implDumpShortProperties() override
sal_Int64 mnPropertiesEnd
sal_uInt32 dumpFlagsProperty(sal_uInt32 nDefault, const char *pcNameList="AX-FLAGS")
void dumpShortProperties()
void dumpStringArrayProperty()
sal_Int64 mnPropertiesStart
sal_uInt32 dumpColorProperty(sal_uInt32 nDefault)
sal_Int32 dumpHmmProperty()
std::vector< StreamProperty > maStreamProps
void construct(const ObjectBase &rParent, const BinaryInputStreamRef &rxStrm, const OUString &rSysFileName, const String &rPropNameList, bool b64BitPropFlags=false)
LargePropertyVector maLargeProps
void dumpStringProperty(OUString *pValue=nullptr)
OUString dumpString(const String &rName, sal_uInt32 nSize, bool bArray)
void dumpGuidProperty(OUString *pValue=nullptr)
sal_uInt8 dumpImageAlignProperty()
sal_uInt8 dumpMousePtrProperty()
void constructAxPropObj(const String &rPropNameList, bool b64BitPropFlags)
void dumpToPosition(sal_Int64 nPos)
void dumpStreamProperty()
void dumpLargeProperties()
OUString getPropertyName() const
virtual void implDumpShortProperties()
sal_uInt32 dumpEnabledProperty()
bool ensureValid(bool bCondition=true)
void dumpUnknownProperty()
sal_Unicode dumpUnicodeProperty()
sal_uInt8 dumpImageSizeModeProperty()
sal_Int32 dumpOrientationProperty()
virtual bool implIsValid() const override
virtual void implDump() override
sal_uInt32 dumpImagePosProperty()
virtual void implDumpExtended()
sal_Int32 dumpDelayProperty()
AxTabStripObject(const InputObjectBase &rParent)
virtual void implDumpShortProperties() override
virtual void implDumpExtended() override
virtual void implDumpCommonTrailing() override
virtual void implDumpCommonExtra(sal_Int64 nEndPos) override
ComCtlImageListObject(const InputObjectBase &rParent, sal_uInt16 nVersion)
virtual void implDumpProperties() override
virtual void implDump() override
bool dumpComCtlCommon(sal_uInt32 nPartSize)
virtual void implDumpCommonExtra(sal_Int64 nEndPos)
virtual void implDumpCommonTrailing()
bool dumpComCtlHeader(sal_uInt32 nExpId, sal_uInt16 nExpMajor=SAL_MAX_UINT16, sal_uInt16 nExpMinor=SAL_MAX_UINT16)
bool dumpComCtlData(sal_uInt32 &ornCommonPartSize)
virtual void implDumpProperties()=0
ComCtlObjectBase(const InputObjectBase &rParent, sal_uInt32 nDataId5, sal_uInt32 nDataId6, sal_uInt16 nVersion, bool bCommonPart, bool bComplexPart)
virtual void implDumpProperties() override
ComCtlProgressBarObject(const InputObjectBase &rParent, sal_uInt16 nVersion)
virtual void implDumpProperties() override
ComCtlSliderObject(const InputObjectBase &rParent, sal_uInt16 nVersion)
virtual void implDumpProperties() override
ComCtlStatusBarObject(const InputObjectBase &rParent, sal_uInt16 nVersion)
virtual void implDumpCommonExtra(sal_Int64 nEndPos) override
virtual void implDumpCommonTrailing() override
virtual void implDumpProperties() override
ComCtlTabStripObject(const InputObjectBase &rParent, sal_uInt16 nVersion)
virtual void implDumpCommonExtra(sal_Int64 nEndPos) override
ComCtlTreeViewObject(const InputObjectBase &rParent, sal_uInt16 nVersion)
virtual void implDumpCommonExtra(sal_Int64 nEndPos) override
virtual void implDumpProperties() override
virtual void implDumpProperties() override
ComCtlUpDownObject(const InputObjectBase &rParent, sal_uInt16 nVersion)
const OUString & getStringOption(const String &rKey, const OUString &rDefault) const
NameListRef getNameList(const String &rListName) const
void eraseNameList(const String &rListName)
OUString getName(const NameListWrapper &rListWrp, Type nKey) const
Returns the name for the passed key from the passed name list.
std::shared_ptr< ListType > createNameList(const String &rListName)
OleCompObjObject(const ObjectBase &rParent, const BinaryInputStreamRef &rxStrm, const OUString &rSysFileName)
virtual void implDump() override
OUString dumpCharArray8(const String &rName, sal_Int32 nLen)
OlePropertyStreamObject(const ObjectBase &rParent, const BinaryInputStreamRef &rxStrm, const OUString &rSysFileName)
OUString dumpString16(const String &rName)
void dumpProperty(sal_Int32 nPropId, sal_uInt32 nStartPos)
bool startElement(sal_uInt32 nStartPos)
sal_uInt16 dumpPropertyType()
void dumpHlinks(sal_Int32 nSize)
OUString dumpString8(const String &rName)
void dumpDictionaryProperty(sal_uInt32 nStartPos)
void dumpSection(const OUString &rGuid, sal_uInt32 nStartPos)
sal_uInt16 dumpPropertyContents(sal_Int32 nPropId)
void dumpBlob(sal_Int32 nPropId, const String &rName)
virtual void implDump() override
void writePropertyHeader(sal_Int32 nPropId, sal_uInt32 nStartPos)
void dumpPropertyValue(sal_Int32 nPropId, sal_uInt16 nBaseType)
bool dumpTypedProperty(const String &rName, sal_uInt16 nExpectedType)
void dumpPropertyVector(sal_Int32 nPropId, sal_uInt16 nBaseType)
OUString dumpCharArray16(const String &rName, sal_Int32 nLen)
void dumpCodePageProperty(sal_uInt32 nStartPos)
void writeSectionHeader(const OUString &rGuid, sal_uInt32 nStartPos)
rtl_TextEncoding meTextEnc
virtual void implDumpStream(const css::uno::Reference< css::io::XInputStream > &rxStrm, const OUString &rStrgPath, const OUString &rStrmName, const OUString &rSysFileName) override
void construct(const ObjectBase &rParent, const StorageRef &rxStrg, const OUString &rSysPath)
OleStreamObject(const ObjectBase &rParent, const BinaryInputStreamRef &rxStrm, const OUString &rSysFileName)
void writeEmptyItem(const String &rName)
void writeGuidItem(const String &rName, const OUString &rGuid)
void writeDecItem(const String &rName, Type nData, const NameListWrapper &rListWrp=NO_LIST)
void writeStringItem(const String &rName, std::u16string_view rData)
void writeHexItem(const String &rName, Type nData, const NameListWrapper &rListWrp=NO_LIST)
void writeInfoItem(const String &rName, const String &rData)
virtual bool implIsValid() const override
sal_Int64 getRecSize() const
sal_Int64 getRecId() const
void construct(const ObjectBase &rParent, const BinaryInputStreamRef &rxBaseStrm, const OUString &rSysFileName, const String &rRecNames, const String &rSimpleRecs)
StdFontObject(const InputObjectBase &rParent)
virtual void implDump() override
StdPicObject(const InputObjectBase &rParent)
virtual void implDump() override
void addPreferredStorage(const String &rStrgPath)
void addPreferredStream(const String &rStrmName)
virtual void implDumpStorage(const StorageRef &rxStrg, const OUString &rStrgPath, const OUString &rSysPath) override
VbaContainerStorageObject(const ObjectBase &rParent, const StorageRef &rxStrg, const OUString &rSysPath)
bool isFormStorage(std::u16string_view rStrgPath) const
VbaFormSharedData maFormData
virtual void implDumpStream(const css::uno::Reference< css::io::XInputStream > &rxStrm, const OUString &rStrgPath, const OUString &rStrmName, const OUString &rSysFileName) override
virtual bool implIsValid() const override
BinaryInputStreamRef mxInStrm
virtual void implDumpRecordBody() override
OUString dumpByteString(const String &rName)
VbaSharedData & mrVbaData
OUString dumpUniString(const String &rName)
virtual bool implReadRecordHeader(BinaryInputStream &rBaseStrm, sal_Int64 &ornRecId, sal_Int64 &ornRecSize) override
OUString dumpByteStringWithLength(const String &rName)
VbaDirStreamObject(const ObjectBase &rParent, const BinaryInputStreamRef &rxStrm, const OUString &rSysFileName, VbaSharedData &rVbaData)
virtual void implDumpShortProperties() override
void dumpDesignExtender()
VbaFStreamObject(const ObjectBase &rParent, const BinaryInputStreamRef &rxStrm, const OUString &rSysFileName, VbaFormSharedData &rFormData)
VbaFormSharedData & mrFormData
virtual void implDumpExtended() override
void dumpFormSites(sal_uInt32 nCount)
VbaSharedData & mrVbaData
VbaModuleStreamObject(const ObjectBase &rParent, const BinaryInputStreamRef &rxStrm, const OUString &rSysFileName, VbaSharedData &rVbaData, sal_Int32 nStrmOffset)
virtual void implDump() override
VbaMultiPageObject(const InputObjectBase &rParent)
virtual void implDumpExtended() override
virtual void implDumpShortProperties() override
VbaFormSharedData & mrFormData
virtual void implDump() override
VbaOStreamObject(const ObjectBase &rParent, const BinaryInputStreamRef &rxStrm, const OUString &rSysFileName, VbaFormSharedData &rFormData)
VbaPageObject(const InputObjectBase &rParent)
virtual void implDumpShortProperties() override
virtual void implDumpStorage(const StorageRef &rxStrg, const OUString &rStrgPath, const OUString &rSysPath) override
virtual void implDumpStream(const css::uno::Reference< css::io::XInputStream > &rxStrm, const OUString &rStrgPath, const OUString &rStrmName, const OUString &rSysFileName) override
VbaProjectStorageObject(const ObjectBase &rParent, const StorageRef &rxStrg, const OUString &rSysPath)
virtual void implDumpStream(const css::uno::Reference< css::io::XInputStream > &rxStrm, const OUString &rStrgPath, const OUString &rStrmName, const OUString &rSysFileName) override
VbaSharedData & mrVbaData
VbaStorageObject(const ObjectBase &rParent, const StorageRef &rxStrg, const OUString &rSysPath, VbaSharedData &rVbaData)
VbaXStreamObject(const ObjectBase &rParent, const BinaryInputStreamRef &rxStrm, const OUString &rSysFileName, VbaFormSharedData &rFormData)
virtual void implDump() override
VbaFormSharedData & mrFormData
#define OOX_DUMP_ERR_STREAM
#define OOX_DUMP_ERRASCII(ascii)
sal_Int32 toInt32(std::u16string_view str, sal_Int16 radix=10)
::std::vector< OUString > OUStringVector
void setFlag(Type &ornBitField, Type nMask, bool bSet=true)
Sets or clears (according to bSet) all set bits of nMask in ornBitField.
std::shared_ptr< StorageBase > StorageRef
const sal_uInt8 WINDOWS_CHARSET_DEFAULT
bool getFlag(Type nBitField, Type nMask)
Returns true, if at least one of the bits set in nMask is set in nBitField.
const sal_uInt16 CODEPAGE_UNICODE
StreamOffsetMap maStrmOffsets
bool isModuleStream(const OUString &rStrmName) const
sal_Int32 getStreamOffset(const OUString &rStrmName) const
rtl_TextEncoding meTextEnc