1 #include <svx/mstoolbar.hxx>
2 #include <rtl/ustrbuf.hxx>
4 #include <com/sun/star/ui/XUIConfigurationPersistence.hpp>
5 #include <com/sun/star/ui/XImageManager.hpp>
6 #include <com/sun/star/ui/ItemType.hpp>
7 #include <com/sun/star/ui/ItemStyle.hpp>
8 #include <com/sun/star/frame/XLayoutManager.hpp>
10 #include <vcl/graph.hxx>
11 #include <vcl/bitmapex.hxx>
12 #include <vcl/image.hxx>
14 #include <sfx2/objsh.hxx>
15 #include <basic/basmgr.hxx>
16 #include <svtools/filterutils.hxx>
17 #include <boost/scoped_array.hpp>
18 #include <svx/msvbahelper.hxx>
19 #include <svtools/miscopt.hxx>
20 #include <vcl/svapp.hxx>
21 #include <vcl/window.hxx>
23 using namespace com::sun::star
;
25 int TBBase::nIndent
= 0;
27 void CustomToolBarImportHelper::showToolbar( const rtl::OUString
& rName
)
31 uno::Reference
< frame::XController
> xCntrller( mrDocSh
.GetModel()->getCurrentController(), uno::UNO_QUERY_THROW
);
32 uno::Reference
< beans::XPropertySet
> xProps( xCntrller
->getFrame(), uno::UNO_QUERY_THROW
);
33 uno::Reference
< frame::XLayoutManager
> xLayoutMgr( xProps
->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("LayoutManager") ) ), uno::UNO_QUERY_THROW
);
34 xLayoutMgr
->showElement( rName
);
36 catch( uno::Exception
& ) {}
39 void CustomToolBarImportHelper::ScaleImage( uno::Reference
< graphic::XGraphic
>& xGraphic
, long nNewSize
)
41 Graphic
aGraphic( xGraphic
);
42 Size aSize
= aGraphic
.GetSizePixel();
43 if ( aSize
.Height() && ( aSize
.Height() == aSize
.Width() ) )
45 Image
aImage( xGraphic
);
46 if ( aSize
.Height() != nNewSize
)
48 BitmapEx aBitmap
= aImage
.GetBitmapEx();
49 BitmapEx aBitmapex
= BitmapEx::AutoScaleBitmap(aBitmap
, nNewSize
);
50 aImage
= Image( aBitmapex
);
51 xGraphic
= aImage
.GetXGraphic();
56 void CustomToolBarImportHelper::applyIcons()
58 for ( std::vector
< iconcontrolitem
>::iterator it
= iconcommands
.begin(); it
!= iconcommands
.end(); ++it
)
60 uno::Sequence
< rtl::OUString
> commands(1);
61 commands
[ 0 ] = it
->sCommand
;
62 uno::Sequence
< uno::Reference
< graphic::XGraphic
> > images(1);
63 images
[ 0 ] = it
->image
;
65 OSL_TRACE("About to applyIcons for command %s, have image ? %s", rtl::OUStringToOString( commands
[ 0 ], RTL_TEXTENCODING_UTF8
).getStr(), images
[ 0 ].is() ? "yes" : "no" );
66 uno::Reference
< ui::XImageManager
> xImageManager( getCfgManager()->getImageManager(), uno::UNO_QUERY_THROW
);
67 sal_uInt16 nColor
= ui::ImageType::COLOR_NORMAL
;
69 Window
* topwin
= Application::GetActiveTopWindow();
70 if ( topwin
!= NULL
&& topwin
->GetDisplayBackground().GetColor().IsDark() )
71 nColor
= css::ui::ImageType::COLOR_HIGHCONTRAST
;
73 ScaleImage( images
[ 0 ], 16 );
74 xImageManager
->replaceImages( ui::ImageType::SIZE_DEFAULT
| nColor
, commands
, images
);
75 ScaleImage( images
[ 0 ], 26 );
76 xImageManager
->replaceImages( ui::ImageType::SIZE_LARGE
| nColor
, commands
, images
);
80 void CustomToolBarImportHelper::addIcon( const uno::Reference
< graphic::XGraphic
>& xImage
, const rtl::OUString
& sString
)
83 item
.sCommand
= sString
;
85 iconcommands
.push_back( item
);
88 CustomToolBarImportHelper::CustomToolBarImportHelper( SfxObjectShell
& rDocShell
, const css::uno::Reference
< css::ui::XUIConfigurationManager
>& rxAppCfgMgr
) : mrDocSh( rDocShell
)
90 m_xCfgSupp
.set( mrDocSh
.GetModel(), uno::UNO_QUERY_THROW
);
91 m_xAppCfgMgr
.set( rxAppCfgMgr
, uno::UNO_QUERY_THROW
);
94 uno::Reference
< ui::XUIConfigurationManager
>
95 CustomToolBarImportHelper::getCfgManager()
97 return m_xCfgSupp
->getUIConfigurationManager();
100 uno::Reference
< ui::XUIConfigurationManager
>
101 CustomToolBarImportHelper::getAppCfgManager()
107 CustomToolBarImportHelper::createCommandFromMacro( const rtl::OUString
& sCmd
)
109 //"vnd.sun.star.script:Standard.Module1.Main?language=Basic&location=document"
110 static rtl::OUString scheme
= rtl::OUString::createFromAscii( "vnd.sun.star.script:");
111 static rtl::OUString part2
= rtl::OUString::createFromAscii("?language=Basic&location=document");
113 rtl::OUString scriptURL
= scheme
+ sCmd
+ part2
;
114 return uno::makeAny( scriptURL
);
117 rtl::OUString
CustomToolBarImportHelper::MSOCommandToOOCommand( sal_Int16 msoCmd
)
119 rtl::OUString result
;
120 if ( pMSOCmdConvertor
.get() )
121 result
= pMSOCmdConvertor
->MSOCommandToOOCommand( msoCmd
);
125 rtl::OUString
CustomToolBarImportHelper::MSOTCIDToOOCommand( sal_Int16 msoTCID
)
127 rtl::OUString result
;
128 if ( pMSOCmdConvertor
.get() )
129 result
= pMSOCmdConvertor
->MSOTCIDToOOCommand( msoTCID
);
134 TBBase::indent_printf( FILE* fp
, const char* format
, ... )
137 va_start ( ap
, format
);
139 // indent nIndent spaces
140 for ( int i
=0; i
<nIndent
; ++i
)
142 // append the rest of the message
143 vfprintf( fp
, format
, ap
);
147 rtl::OUString
TBBase::readUnicodeString( SvStream
* pS
, sal_Int32 nChars
)
149 sal_Int32 nBufSize
= nChars
* 2;
150 boost::scoped_array
< sal_uInt8
> pArray( new sal_uInt8
[ nBufSize
] );
151 pS
->Read( pArray
.get(), nBufSize
);
152 return svt::BinFilterUtils::CreateOUStringFromUniStringArray( reinterpret_cast< const char* >( pArray
.get() ), nBufSize
);
155 TBCHeader::TBCHeader() : bSignature( 0x3 )
158 ,tct(0x1) // default to Button
165 TBCHeader::~TBCHeader()
169 bool TBCHeader::Read( SvStream
* pS
)
171 OSL_TRACE("TBCHeader::Read() stream pos 0x%x", pS
->Tell() );
172 nOffSet
= pS
->Tell();
173 *pS
>> bSignature
>> bVersion
>> bFlagsTCR
>> tct
>> tcid
>> tbct
>> bPriority
;
174 // bit 4 ( from lsb )
175 if ( bFlagsTCR
& 0x10 )
177 width
.reset( new sal_uInt16
);
178 height
.reset( new sal_uInt16
);
179 *pS
>> *width
>> *height
;
184 void TBCHeader::Print( FILE* fp
)
187 indent_printf(fp
,"[ 0x%x ] TBCHeader -- dump\n", nOffSet
);
188 indent_printf(fp
," bSignature 0x%x\n", bSignature
);
189 indent_printf(fp
," bVersion 0x%x\n", bVersion
);
190 indent_printf(fp
," bFlagsTCR 0x%x\n", bFlagsTCR
);
191 indent_printf(fp
," tct 0x%x\n", tct
);
192 indent_printf(fp
," tcid 0x%x\n", tcid
);
193 indent_printf(fp
," tbct 0x%x\n", static_cast< unsigned int >( tbct
));
194 indent_printf(fp
," bPriority 0x%x\n", bPriority
);
196 indent_printf(fp
," width 0x%d(0x%x)\n", *width
, *width
);
198 indent_printf(fp
," height 0x%d(0x%x)\n", *height
, *height
);
201 TBCData::TBCData( const TBCHeader
& Header
) : rHeader( Header
)
205 bool TBCData::Read(SvStream
*pS
)
207 OSL_TRACE("TBCData::Read() stream pos 0x%x", pS
->Tell() );
208 nOffSet
= pS
->Tell();
209 if ( !controlGeneralInfo
.Read(pS
) /*|| !controlSpecificInfo.Read(pS)*/ )
211 switch ( rHeader
.getTct() )
213 case 0x01: // (Button control)
214 case 0x10: // (ExpandingGrid control)
215 controlSpecificInfo
.reset( new TBCBSpecific() );
217 case 0x0A: // (Popup control)
218 case 0x0C: // (ButtonPopup control)
219 case 0x0D: // (SplitButtonPopup control)
220 case 0x0E: // (SplitButtonMRUPopup control)
221 controlSpecificInfo
.reset( new TBCMenuSpecific() );
223 case 0x02: // (Edit control)
224 case 0x04: // (ComboBox control)
225 case 0x14: // (GraphicCombo control)
226 case 0x03: // (DropDown control)
227 case 0x06: // (SplitDropDown control)
228 case 0x09: // (GraphicDropDown control)
229 controlSpecificInfo
.reset( new TBCComboDropdownSpecific( rHeader
) );
234 if ( controlSpecificInfo
.get() )
235 return controlSpecificInfo
->Read( pS
);
236 //#FIXME I need to be able to handle different controlSpecificInfo types.
240 TBCMenuSpecific
* TBCData::getMenuSpecific()
242 TBCMenuSpecific
* pMenu
= dynamic_cast< TBCMenuSpecific
* >( controlSpecificInfo
.get() );
245 bool TBCData::ImportToolBarControl( CustomToolBarImportHelper
& helper
, std::vector
< css::beans::PropertyValue
>& props
, bool& bBeginGroup
, bool bIsMenuBar
)
247 sal_uInt16 nStyle
= 0;
248 bBeginGroup
= rHeader
.isBeginGroup();
249 controlGeneralInfo
.ImportToolBarControlData( helper
, props
);
250 beans::PropertyValue aProp
;
251 aProp
.Name
= rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Visible") ) ;
252 aProp
.Value
= uno::makeAny( rHeader
.isVisible() ); // where is the visible attribute stored
253 props
.push_back( aProp
);
254 if ( rHeader
.getTct() == 0x01
255 || rHeader
.getTct() == 0x10 )
257 TBCBSpecific
* pSpecificInfo
= dynamic_cast< TBCBSpecific
* >( controlSpecificInfo
.get() );
260 // if we have a icon then lets set it for the command
261 rtl::OUString sCommand
;
262 for ( std::vector
< css::beans::PropertyValue
>::iterator it
= props
.begin(); it
!= props
.end(); ++it
)
264 if ( it
->Name
.equals( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("CommandURL") ) ) )
265 it
->Value
>>= sCommand
;
267 if ( TBCBitMap
* pIcon
= pSpecificInfo
->getIcon() )
269 // Without a command openoffice won't display the icon
270 if ( sCommand
.getLength() )
272 BitmapEx
aBitEx( pIcon
->getBitMap() );
273 if ( pSpecificInfo
->getIconMask() )
274 // according to the spec:
275 // "the iconMask is white in all the areas in which the icon is
276 // displayed as transparent and is black in all other areas."
277 aBitEx
= BitmapEx( aBitEx
.GetBitmap(), pSpecificInfo
->getIconMask()->getBitMap().CreateMask( Color( COL_WHITE
) ) );
279 Graphic
aGraphic( aBitEx
);
280 helper
.addIcon( aGraphic
.GetXGraphic(), sCommand
);
283 else if ( pSpecificInfo
->getBtnFace() )
286 rtl::OUString sBuiltInCmd
= helper
.MSOTCIDToOOCommand( *pSpecificInfo
->getBtnFace() );
287 if ( sBuiltInCmd
.getLength() )
289 uno::Sequence
< rtl::OUString
> sCmds(1);
290 sCmds
[ 0 ] = sBuiltInCmd
;
291 uno::Reference
< ui::XImageManager
> xImageManager( helper
.getAppCfgManager()->getImageManager(), uno::UNO_QUERY_THROW
);
292 // 0 = default image size
293 uno::Sequence
< uno::Reference
< graphic::XGraphic
> > sImages
= xImageManager
->getImages( 0, sCmds
);
294 if ( sImages
.getLength() && sImages
[0].is() )
295 helper
.addIcon( sImages
[0], sCommand
);
300 else if ( rHeader
.getTct() == 0x0a )
302 aProp
.Name
= rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("CommandURL") ) ;
303 aProp
.Value
= uno::makeAny( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("private:" ) ) ); // dummy command
304 nStyle
|= ui::ItemStyle::DROP_DOWN
;
305 props
.push_back( aProp
);
308 short icontext
= ( rHeader
.getTbct() & 0x03 );
309 aProp
.Name
= rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Style") ) ;
312 nStyle
|= ui::ItemStyle::TEXT
;
313 if ( !icontext
|| icontext
== 0x3 )
315 nStyle
|= ui::ItemStyle::ICON
;
319 if ( ( icontext
& 0x02 ) == 0x02 )
320 nStyle
|= ui::ItemStyle::TEXT
;
321 if ( !icontext
|| ( icontext
& 0x03 ) == 0x03 )
322 nStyle
|= ui::ItemStyle::ICON
;
324 aProp
.Value
<<= nStyle
;
325 props
.push_back( aProp
);
326 return true; // just ignore
329 void TBCData::Print( FILE* fp
)
332 indent_printf(fp
,"[ 0x%x ] TBCData -- dump\n", nOffSet
);
333 indent_printf(fp
," dumping controlGeneralInfo( TBCGeneralInfo )\n");
334 controlGeneralInfo
.Print( fp
);
335 //if ( rHeader.getTct() == 1 )
336 if ( controlSpecificInfo
.get() )
338 indent_printf(fp
," dumping controlSpecificInfo( TBCBSpecificInfo )\n");
339 controlSpecificInfo
->Print( fp
);
344 WString::Read( SvStream
*pS
)
346 OSL_TRACE("WString::Read() stream pos 0x%x", pS
->Tell() );
347 nOffSet
= pS
->Tell();
350 sString
= readUnicodeString( pS
, static_cast< sal_Int32
>( nChars
) );
354 TBCExtraInfo::TBCExtraInfo() : idHelpContext( 0 )
359 TBCExtraInfo::Read( SvStream
*pS
)
361 OSL_TRACE("TBCExtraInfo::Read() stream pos 0x%x", pS
->Tell() );
362 nOffSet
= pS
->Tell();
363 if( !wstrHelpFile
.Read( pS
) )
366 *pS
>> idHelpContext
;
368 if ( !wstrTag
.Read( pS
) || !wstrOnAction
.Read( pS
) || !wstrParam
.Read( pS
) )
376 TBCExtraInfo::Print( FILE* fp
)
379 indent_printf( fp
, "[ 0x%x ] TBCExtraInfo -- dump\n", nOffSet
);
380 indent_printf( fp
, " wstrHelpFile %s\n",
381 rtl::OUStringToOString( wstrHelpFile
.getString(), RTL_TEXTENCODING_UTF8
).getStr() );
382 indent_printf( fp
, " idHelpContext 0x%x\n", static_cast< unsigned int >( idHelpContext
) );
383 indent_printf( fp
, " wstrTag %s\n",
384 rtl::OUStringToOString( wstrTag
.getString(), RTL_TEXTENCODING_UTF8
).getStr() );
385 indent_printf( fp
, " wstrOnAction %s\n",
386 rtl::OUStringToOString( wstrOnAction
.getString(), RTL_TEXTENCODING_UTF8
).getStr() );
387 indent_printf( fp
, " wstrParam %s\n",
388 rtl::OUStringToOString( wstrParam
.getString(), RTL_TEXTENCODING_UTF8
).getStr() );
389 indent_printf( fp
, " tbcu 0x%x\n", tbcu
);
390 indent_printf( fp
, " tbmg 0x%x\n", tbmg
);
395 TBCExtraInfo::getOnAction()
397 return wstrOnAction
.getString();
400 TBCGeneralInfo::TBCGeneralInfo() : bFlags( 0 )
404 bool TBCGeneralInfo::Read( SvStream
*pS
)
406 OSL_TRACE("TBCGeneralInfo::Read() stream pos 0x%x", pS
->Tell() );
407 nOffSet
= pS
->Tell();
410 if ( ( bFlags
& 0x1 ) && !customText
.Read( pS
) )
412 if ( ( bFlags
& 0x2 ) && ( !descriptionText
.Read( pS
) || !tooltip
.Read( pS
) ) )
414 if ( ( bFlags
& 0x4 ) && !extraInfo
.Read( pS
) )
420 TBCGeneralInfo::Print( FILE* fp
)
423 indent_printf( fp
, "[ 0x%x ] TBCGeneralInfo -- dump\n", nOffSet
);
424 indent_printf( fp
, " bFlags 0x%x\n", bFlags
);
425 indent_printf( fp
, " customText %s\n",
426 rtl::OUStringToOString( customText
.getString(), RTL_TEXTENCODING_UTF8
).getStr() );
427 indent_printf( fp
, " description %s\n",
428 rtl::OUStringToOString( descriptionText
.getString(), RTL_TEXTENCODING_UTF8
).getStr() );
429 indent_printf( fp
, " tooltip %s\n",
430 rtl::OUStringToOString( tooltip
.getString(), RTL_TEXTENCODING_UTF8
).getStr() );
432 extraInfo
.Print( fp
);
436 TBCGeneralInfo::ImportToolBarControlData( CustomToolBarImportHelper
& helper
, std::vector
< beans::PropertyValue
>& sControlData
)
438 if ( ( bFlags
& 0x5 ) )
440 beans::PropertyValue aProp
;
441 // probably access to the header would be a better test than seeing if there is an action, e.g.
442 // if ( rHeader.getTct() == 0x01 && rHeader.getTcID() == 0x01 ) // not defined, probably this is a command
443 if ( extraInfo
.getOnAction().getLength() )
445 aProp
.Name
= rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("CommandURL") );
446 ooo::vba::VBAMacroResolvedInfo aMacroInf
= ooo::vba::resolveVBAMacro( &helper
.GetDocShell(), extraInfo
.getOnAction(), true );
447 if ( aMacroInf
.IsResolved() )
448 aProp
.Value
= helper
.createCommandFromMacro( aMacroInf
.ResolvedMacro() );
450 aProp
.Value
<<= rtl::OUString::createFromAscii("UnResolvedMacro[").concat( extraInfo
.getOnAction() ).concat( rtl::OUString::createFromAscii("]") );
451 sControlData
.push_back( aProp
);
454 aProp
.Name
= rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Label") );
455 aProp
.Value
= uno::makeAny( customText
.getString().replace('&','~') );
456 sControlData
.push_back( aProp
);
458 aProp
.Name
= rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Type") );
459 aProp
.Value
= uno::makeAny( ui::ItemType::DEFAULT
);
460 sControlData
.push_back( aProp
);
462 aProp
.Name
= rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Tooltip") );
463 aProp
.Value
= uno::makeAny( tooltip
.getString() );
464 sControlData
.push_back( aProp
);
466 aToolbarItem(0).Name = "CommandURL" wstrOnAction
467 aToolbarItem(0).Value = Command
468 aToolbarItem(1).Name = "Label" customText
469 aToolbarItem(1).Value = Label
470 aToolbarItem(2).Name = "Type"
471 aToolbarItem(2).Value = 0
472 aToolbarItem(3).Name = "Visible"
473 aToolbarItem(3).Value = true
479 TBCMenuSpecific::TBCMenuSpecific() : tbid( 0 )
484 TBCMenuSpecific::Read( SvStream
*pS
)
486 OSL_TRACE("TBCMenuSpecific::Read() stream pos 0x%x", pS
->Tell() );
487 nOffSet
= pS
->Tell();
491 name
.reset( new WString() );
492 return name
->Read( pS
);
498 TBCMenuSpecific::Print( FILE* fp
)
501 indent_printf( fp
, "[ 0x%x ] TBCMenuSpecific -- dump\n", nOffSet
);
502 indent_printf( fp
, " tbid 0x%x\n", static_cast< unsigned int >( tbid
) );
504 indent_printf( fp
, " name %s\n", rtl::OUStringToOString( name
->getString(), RTL_TEXTENCODING_UTF8
).getStr() );
508 rtl::OUString
TBCMenuSpecific::Name()
512 aName
= name
->getString();
515 TBCBSpecific::TBCBSpecific() : bFlags( 0 )
519 bool TBCBSpecific::Read( SvStream
*pS
)
521 OSL_TRACE("TBCBSpecific::Read() stream pos 0x%x", pS
->Tell() );
522 nOffSet
= pS
->Tell();
525 // bFlags determines what we read next
527 // bFlags.fCustomBitmap = 1 ( 0x8 ) set
530 icon
.reset( new TBCBitMap() );
531 iconMask
.reset( new TBCBitMap() );
532 if ( !icon
->Read( pS
) || !iconMask
->Read( pS
) )
535 // if bFlags.fCustomBtnFace = 1 ( 0x10 )
538 iBtnFace
.reset( new sal_uInt16
);
539 *pS
>> *iBtnFace
.get();
541 // if bFlags.fAccelerator equals 1 ( 0x04 )
544 wstrAcc
.reset( new WString() );
545 return wstrAcc
->Read( pS
);
551 void TBCBSpecific::Print( FILE* fp
)
554 indent_printf( fp
, "[ 0x%x ] TBCBSpecific -- dump\n", nOffSet
);
555 indent_printf( fp
, " bFlags 0x%x\n", bFlags
);
556 bool bResult
= ( icon
.get() != NULL
);
557 indent_printf( fp
, " icon present? %s\n", bResult
? "true" : "false" );
561 indent_printf( fp
, " icon: \n");
562 icon
->Print( fp
); // will dump size
564 bResult
= ( iconMask
.get() != NULL
);
565 indent_printf( fp
, " icon mask present? %s\n", bResult
? "true" : "false" );
569 indent_printf( fp
, " icon mask: \n");
570 iconMask
->Print( fp
); // will dump size
572 if ( iBtnFace
.get() )
574 indent_printf( fp
, " iBtnFace 0x%x\n", *(iBtnFace
.get()) );
576 bResult
= ( wstrAcc
.get() != NULL
);
577 indent_printf( fp
, " option string present? %s ->%s<-\n", bResult
? "true" : "false", bResult
? rtl::OUStringToOString( wstrAcc
->getString(), RTL_TEXTENCODING_UTF8
).getStr() : "N/A" );
581 TBCBSpecific::getIcon()
587 TBCBSpecific::getIconMask()
589 return iconMask
.get();
592 TBCComboDropdownSpecific::TBCComboDropdownSpecific(const TBCHeader
& header
)
594 if ( header
.getTcID() == 0x01 )
595 data
.reset( new TBCCDData() );
598 bool TBCComboDropdownSpecific::Read( SvStream
*pS
)
600 nOffSet
= pS
->Tell();
602 return data
->Read( pS
);
606 void TBCComboDropdownSpecific::Print( FILE* fp
)
609 indent_printf(fp
,"[ 0x%x ] TBCComboDropdownSpecific -- dump\n", nOffSet
);
613 indent_printf(fp
," no data " );
616 TBCCDData::TBCCDData() : cwstrItems( 0 )
623 TBCCDData::~TBCCDData()
627 bool TBCCDData::Read( SvStream
*pS
)
629 nOffSet
= pS
->Tell();
633 for( sal_Int32 index
=0; index
< cwstrItems
; ++index
)
636 if ( !aString
.Read( pS
) )
638 wstrList
.push_back( aString
);
641 *pS
>> cwstrMRU
>> iSel
>> cLines
>> dxWidth
;
643 return wstrEdit
.Read( pS
);
646 void TBCCDData::Print( FILE* fp
)
649 indent_printf(fp
,"[ 0x%x ] TBCCDData -- dump\n", nOffSet
);
650 indent_printf(fp
," cwstrItems items in wstrList 0x%d\n", cwstrItems
);
651 for ( sal_Int32 index
=0; index
< cwstrItems
; ++index
)
654 indent_printf(fp
, " wstrList[%d] %s", static_cast< int >( index
), rtl::OUStringToOString( wstrList
[index
].getString(), RTL_TEXTENCODING_UTF8
).getStr() );
656 indent_printf(fp
," cwstrMRU num most recently used string 0x%d item\n", cwstrMRU
);
657 indent_printf(fp
," iSel index of selected item 0x%d item\n", iSel
);
658 indent_printf(fp
," cLines num of suggested lines to display 0x%d", cLines
);
659 indent_printf(fp
," dxWidth width in pixels 0x%d", dxWidth
);
660 indent_printf(fp
," wstrEdit %s", rtl::OUStringToOString( wstrEdit
.getString(), RTL_TEXTENCODING_UTF8
).getStr() );
663 TBCBitMap::TBCBitMap() : cbDIB( 0 ), size( 0 )
667 TBCBitMap::~TBCBitMap()
673 TBCBitMap::getBitMap()
678 bool TBCBitMap::Read( SvStream
* pS
)
680 OSL_TRACE("TBCBitMap::Read() stream pos 0x%x", pS
->Tell() );
681 nOffSet
= pS
->Tell();
683 // cbDIB = sizeOf(biHeader) + sizeOf(colors) + sizeOf(bitmapData) + 10
684 return mBitMap
.Read( *pS
, FALSE
, TRUE
);
687 void TBCBitMap::Print( FILE* fp
)
690 indent_printf(fp
, "[ 0x%x ] TBCBitMap -- dump\n", nOffSet
);
691 indent_printf(fp
, " TBCBitMap size of bitmap data 0x%x\n", static_cast< unsigned int > ( cbDIB
) );
694 TB::TB() : bSignature(0x2),
704 bool TB::Read(SvStream
*pS
)
706 OSL_TRACE("TB::Read() stream pos 0x%x", pS
->Tell() );
707 nOffSet
= pS
->Tell();
708 *pS
>> bSignature
>> bVersion
>> cCL
>> ltbid
>> ltbtr
>> cRowsDefault
>> bFlags
;
716 return ( bFlags
& 0x01 ) != 0x01;
719 bool TB::NeedsPositioning()
721 return ( bFlags
& 0x10 ) == 0x10;
724 void TB::Print( FILE* fp
)
727 indent_printf(fp
,"[ 0x%x ] TB -- dump\n", nOffSet
);
728 indent_printf(fp
," bSignature 0x%x\n", bSignature
);
729 indent_printf(fp
," bVersion 0x%x\n", bVersion
);
730 indent_printf(fp
," cCL 0x%x\n", cCL
);
731 indent_printf(fp
," ltbid 0x%x\n", ltbid
);
732 indent_printf(fp
," ltbtr 0x%x\n", ltbtr
);
733 indent_printf(fp
," cRowsDefault 0x%x\n", cRowsDefault
);
734 indent_printf(fp
," bFlags 0x%x\n", bFlags
);
735 indent_printf(fp
, " name %s\n", rtl::OUStringToOString( name
.getString(), RTL_TEXTENCODING_UTF8
).getStr() );
738 TBVisualData::TBVisualData() : tbds(0), tbv(0), tbdsDock(0), iRow(0)
742 bool TBVisualData::Read( SvStream
* pS
)
744 OSL_TRACE("TBVisualData::Read() stream pos 0x%x", pS
->Tell() );
745 nOffSet
= pS
->Tell();
746 *pS
>> tbds
>> tbv
>> tbdsDock
>> iRow
;
752 void SRECT::Print( FILE* fp
)
755 indent_printf( fp
, " left 0x%x\n", left
);
756 indent_printf( fp
, " top 0x%x\n", top
);
757 indent_printf( fp
, " right 0x%x\n", right
);
758 indent_printf( fp
, " bottom 0x%x\n", bottom
);
761 void TBVisualData::Print( FILE* fp
)
764 indent_printf( fp
, "[ 0x%x ] TBVisualData -- dump\n", nOffSet
);
765 indent_printf( fp
, " tbds 0x%x\n", tbds
);
766 indent_printf( fp
, " tbv 0x%x\n", tbv
);
767 indent_printf( fp
, " tbdsDoc 0x%x\n", tbdsDock
);
768 indent_printf( fp
, " iRow 0x%x\n", iRow
);