31#include <com/sun/star/awt/XControl.hpp>
32#include <com/sun/star/awt/XControlModel.hpp>
33#include <com/sun/star/awt/XControlContainer.hpp>
34#include <com/sun/star/awt/XWindow2.hpp>
35#include <com/sun/star/awt/PosSize.hpp>
36#include <com/sun/star/awt/XView.hpp>
37#include <com/sun/star/beans/XPropertySet.hpp>
38#include <com/sun/star/beans/XPropertySetInfo.hpp>
39#include <com/sun/star/lang/XComponent.hpp>
40#include <com/sun/star/awt/InvalidateStyle.hpp>
41#include <com/sun/star/util/XModeChangeListener.hpp>
42#include <com/sun/star/util/XModeChangeBroadcaster.hpp>
43#include <com/sun/star/uno/XComponentContext.hpp>
44#include <com/sun/star/container/XContainerListener.hpp>
45#include <com/sun/star/container/XContainer.hpp>
105 using namespace ::com::sun::star::awt::InvalidateStyle;
106 using ::com::sun::star::uno::Reference;
107 using ::com::sun::star::uno::XInterface;
108 using ::com::sun::star::uno::UNO_QUERY;
109 using ::com::sun::star::uno::UNO_QUERY_THROW;
110 using ::com::sun::star::uno::Exception;
111 using ::com::sun::star::uno::RuntimeException;
112 using ::com::sun::star::awt::XControl;
113 using ::com::sun::star::awt::XControlModel;
114 using ::com::sun::star::awt::XControlContainer;
115 using ::com::sun::star::awt::XWindow2;
116 using ::com::sun::star::awt::XWindowListener;
117 using ::com::sun::star::awt::PosSize::POSSIZE;
118 using ::com::sun::star::awt::XView;
119 using ::com::sun::star::awt::WindowEvent;
121 using ::com::sun::star::beans::XPropertySetInfo;
122 using ::com::sun::star::lang::XComponent;
123 using ::com::sun::star::awt::XWindowPeer;
124 using ::com::sun::star::beans::XPropertyChangeListener;
125 using ::com::sun::star::util::XModeChangeListener;
126 using ::com::sun::star::util::XModeChangeBroadcaster;
127 using ::com::sun::star::util::ModeChangeEvent;
128 using ::com::sun::star::lang::EventObject;
129 using ::com::sun::star::beans::PropertyChangeEvent;
130 using ::com::sun::star::container::XContainerListener;
131 using ::com::sun::star::container::XContainer;
132 using ::com::sun::star::container::ContainerEvent;
133 using ::com::sun::star::uno::Any;
149 explicit ControlHolder(
const Reference< XControl >& _rxControl )
154 ControlHolder& operator=(
const Reference< XControl >& _rxControl )
165 OSL_FAIL(
"ControlHolder::operator=: invalid XControl, missing required interfaces!" );
179 bool isDesignMode()
const {
return m_xControl->isDesignMode(); }
180 void setDesignMode(
const bool _bDesign )
const {
m_xControl->setDesignMode( _bDesign ); }
182 void setVisible(
const bool _bVisible )
const {
m_xControlWindow->setVisible( _bVisible ); }
183 Reference< XControlModel >
184 getModel()
const {
return m_xControl->getModel(); }
185 void setModel(
const Reference< XControlModel >& _m )
const {
m_xControl->setModel( _m ); }
187 void addWindowListener(
const Reference< XWindowListener >& _l )
const {
m_xControlWindow->addWindowListener( _l ); }
188 void removeWindowListener(
const Reference< XWindowListener >& _l )
const {
m_xControlWindow->removeWindowListener( _l ); }
192 void setZoom( const ::basegfx::B2DVector& _rScale )
const;
196 void invalidate()
const;
199 const Reference< XControl >& getControl()
const {
return m_xControl; }
202 bool operator==(
const ControlHolder& _rControl,
const Reference< XInterface >& _rxCompare )
204 return _rControl.getControl() == _rxCompare;
207 bool operator==(
const ControlHolder& _rControl,
const Any& _rxCompare )
209 return _rControl == Reference< XInterface >( _rxCompare, UNO_QUERY );
220 if ( aCurrentRect != _rPosSize )
237 void ControlHolder::setZoom( const ::basegfx::B2DVector& _rScale )
const
240 m_xControlView->setZoom(
static_cast<float>(_rScale.getX()),
static_cast<float>(_rScale.getY()) );
244 void ControlHolder::invalidate()
const
246 Reference< XWindowPeer > xPeer(
m_xControl->getPeer() );
250 OSL_ENSURE( pWindow,
"ControlHolder::invalidate: no implementation access!" );
252 pWindow->Invalidate();
263 OSL_ENSURE( pWindow,
"ControlHolder::getZoom: no implementation access!" );
268 const Fraction& rZoom( pWindow->GetZoom() );
269 aZoom.setX(
static_cast<double>(rZoom) );
270 aZoom.setY(
static_cast<double>(rZoom) );
275 namespace UnoControlContactHelper {
280 const basegfx::B2DHomMatrix& _rViewTransformation, const ::basegfx::B2DHomMatrix& _rZoomLevelNormalization )
282 OSL_PRECOND( _rControl.is(),
"UnoControlContactHelper::adjustControlGeometry_throw: illegal control!" );
283 if ( !_rControl.is() )
286 #if OSL_DEBUG_LEVEL > 0
288 double nViewRotate(0), nViewShearX(0);
289 _rViewTransformation.
decompose( aViewScale, aViewTranslate, nViewRotate, nViewShearX );
292 double nZoomRotate(0), nZoomShearX(0);
293 _rZoomLevelNormalization.decompose( aZoomScale, aZoomTranslate, nZoomRotate, nZoomShearX );
298 aTopLeft *= _rViewTransformation;
300 aBottomRight *= _rViewTransformation;
306 _rControl.setPosSize( aPaintRectPixel );
311 double fRotate, fShearX;
312 aObtainResolutionDependentScale.
decompose( aScale, aTranslate, fRotate, fShearX );
313 _rControl.setZoom( aScale );
322 Reference< XComponent > xControlComp = _rControl.getControl();
323 if ( xControlComp.is() )
324 xControlComp->dispose();
339 class IPageViewAccess
344 virtual bool isDesignMode()
const = 0;
348 virtual Reference< XControlContainer >
349 getControlContainer(
const OutputDevice& _rDevice )
const = 0;
353 virtual bool isLayerVisible(
SdrLayerID _nLayerID )
const = 0;
356 ~IPageViewAccess() {}
361 class SdrPageViewAccess :
public IPageViewAccess
367 virtual ~SdrPageViewAccess() {}
369 virtual bool isDesignMode()
const override;
370 virtual Reference< XControlContainer >
371 getControlContainer(
const OutputDevice& _rDevice )
const override;
372 virtual bool isLayerVisible(
SdrLayerID _nLayerID )
const override;
377 bool SdrPageViewAccess::isDesignMode()
const
383 Reference< XControlContainer > SdrPageViewAccess::getControlContainer(
const OutputDevice& _rDevice )
const
387 "SdrPageViewAccess::getControlContainer: the output device is known, but there is no control container for it?" );
388 return xControlContainer;
392 bool SdrPageViewAccess::isLayerVisible(
SdrLayerID _nLayerID )
const
402 class InvisibleControlViewAccess :
public IPageViewAccess
407 explicit InvisibleControlViewAccess( Reference< XControlContainer >& _inout_ControlContainer )
412 virtual ~InvisibleControlViewAccess() {}
414 virtual bool isDesignMode()
const override;
415 virtual Reference< XControlContainer >
416 getControlContainer(
const OutputDevice& _rDevice )
const override;
417 virtual bool isLayerVisible(
SdrLayerID _nLayerID )
const override;
422 bool InvisibleControlViewAccess::isDesignMode()
const
428 Reference< XControlContainer > InvisibleControlViewAccess::getControlContainer(
const OutputDevice& _rDevice )
const
433 OSL_ENSURE( pWindow,
"InvisibleControlViewAccess::getControlContainer: expected to be called for a window only!" );
441 bool InvisibleControlViewAccess::isLayerVisible(
SdrLayerID )
const
457 class DummyPageViewAccess :
public IPageViewAccess
460 DummyPageViewAccess()
464 virtual ~DummyPageViewAccess() {}
466 virtual bool isDesignMode()
const override;
467 virtual Reference< XControlContainer >
468 getControlContainer(
const OutputDevice& _rDevice )
const override;
469 virtual bool isLayerVisible(
SdrLayerID _nLayerID )
const override;
474 bool DummyPageViewAccess::isDesignMode()
const
480 Reference< XControlContainer > DummyPageViewAccess::getControlContainer(
const OutputDevice& )
const
486 bool DummyPageViewAccess::isLayerVisible(
SdrLayerID )
const
494 typedef ::cppu::WeakImplHelper < XWindowListener
495 , XPropertyChangeListener
497 , XModeChangeListener
609 IPageViewAccess
const & _rPageView,
614 ControlHolder& _out_rControl
628 virtual void SAL_CALL
disposing(
const EventObject& Source )
override;
631 virtual void SAL_CALL
windowResized(
const WindowEvent& e )
override;
632 virtual void SAL_CALL
windowMoved(
const WindowEvent& e )
override;
633 virtual void SAL_CALL
windowShown(
const EventObject& e )
override;
634 virtual void SAL_CALL
windowHidden(
const EventObject& e )
override;
637 virtual void SAL_CALL
propertyChange(
const PropertyChangeEvent& evt )
override;
640 virtual void SAL_CALL
modeChanged(
const ModeChangeEvent& _rSource )
override;
643 virtual void SAL_CALL
elementInserted(
const css::container::ContainerEvent& Event )
override;
644 virtual void SAL_CALL
elementRemoved(
const css::container::ContainerEvent& Event )
override;
645 virtual void SAL_CALL
elementReplaced(
const css::container::ContainerEvent& Event )
override;
715 IPageViewAccess
const & _rPageView,
bool _bIsCurrentlyVisible,
bool _bForce );
772 IPageViewAccess
const & _rPageView,
791 const ::drawinglayer::geometry::ViewInformation2D& rViewInformation
794 virtual void create2DDecomposition(
796 const ::drawinglayer::geometry::ViewInformation2D& rViewInformation
799 virtual ::basegfx::B2DRange
801 const ::drawinglayer::geometry::ViewInformation2D& rViewInformation
812 virtual bool operator==(
const BasePrimitive2D& rPrimitive)
const override;
815 virtual sal_uInt32 getPrimitive2DID()
const override;
817 static void getTransformation(
const ViewContactOfUnoControl& _rVOC,
::basegfx::B2DHomMatrix& _out_Transformation );
820 void impl_positionAndZoomControl( const ::drawinglayer::geometry::ViewInformation2D& _rViewInformation )
const
822 if ( !_rViewInformation.getViewport().isEmpty() )
823 m_pVOCImpl->positionAndZoomControl( _rViewInformation.getObjectToViewTransformation() );
838 :m_pAntiImpl( _pAntiImpl )
839 ,m_bCreatingControl( false )
840 ,m_pOutputDeviceForWindow( nullptr )
841 ,m_bControlIsVisible( false )
842 ,m_bIsDesignModeListening( false )
845 DBG_ASSERT(
m_pAntiImpl,
"ViewObjectContactOfUnoControl_Impl::ViewObjectContactOfUnoControl_Impl: invalid AntiImpl!" );
850 #if OSL_DEBUG_LEVEL > 0
852 double fRotate, fShearX;
858 aScaleNormalization.
set( 0, 0,
static_cast<double>(aCurrentDeviceMapMode.
GetScaleX()) );
859 aScaleNormalization.
set( 1, 1,
static_cast<double>(aCurrentDeviceMapMode.
GetScaleY()) );
862 #if OSL_DEBUG_LEVEL > 0
891 if ( _bAlsoDisposeControl )
912 OSL_PRECOND( !
impl_isDisposed_nofail(),
"ViewObjectContactOfUnoControl_Impl::getUnoObject: already disposed()" );
917 "ViewObjectContactOfUnoControl_Impl::getUnoObject: invalid SdrObject!" );
924 OSL_PRECOND(
m_aControl.is(),
"ViewObjectContactOfUnoControl_Impl::positionAndZoomControl: no output device or no control!" );
937 OSL_FAIL(
"ViewObjectContactOfUnoControl_Impl::positionAndZoomControl: no SdrUnoObj!" );
948 OSL_PRECOND( !
impl_isDisposed_nofail(),
"ViewObjectContactOfUnoControl_Impl::ensureControl: already disposed()" );
953 if ( pPageViewContact )
960 _pInitialViewTransformationOrNULL ? *_pInitialViewTransformationOrNULL : rDevice.
GetViewTransformation()
965 DummyPageViewAccess aNoPageView;
970 _pInitialViewTransformationOrNULL ? *_pInitialViewTransformationOrNULL : rDevice.
GetViewTransformation()
981 return *oPageOutputDev;
991 void lcl_resetFlag(
bool& rbFlag )
1003 OSL_FAIL(
"ViewObjectContactOfUnoControl_Impl::impl_ensureControl_nothrow: reentrance is not really good here!" );
1040 ControlHolder aControl;
1046 m_xContainer.set(_rPageView.getControlContainer( _rDevice ), css::uno::UNO_QUERY);
1048 || ( ( !_rPageView.getControlContainer( _rDevice ).is() )
1052 "ViewObjectContactOfUnoControl_Impl::impl_ensureControl_nothrow: no XContainer at the ControlContainer!" );
1079 _out_rControl.clear();
1082 DBG_ASSERT( xControlModel.is(),
"ViewObjectContactOfUnoControl_Impl::createControlForDevice: no control model at the SdrUnoObject!?" );
1083 if ( !xControlModel.is() )
1086 bool bSuccess =
false;
1091 Reference< css::uno::XComponentContext > xContext = ::comphelper::getProcessComponentContext();
1092 _out_rControl = Reference<XControl>( xContext->getServiceManager()->createInstanceWithContext(sControlServiceName, xContext), UNO_QUERY_THROW );
1095 Reference<XPropertySet> xModelProperties(xControlModel, UNO_QUERY);
1096 Reference<XPropertySetInfo> xInfo = xModelProperties ? xModelProperties->getPropertySetInfo() :
nullptr;
1097 if (xInfo && xInfo->hasPropertyByName(
"StandardTheme"))
1101 _out_rControl.setModel( xControlModel );
1108 _rInitialViewTransformation,
1109 _rInitialZoomNormalization
1114 _out_rControl.setDesignMode( _rPageView.isDesignMode() );
1121 Reference< XControlContainer > xControlContainer( _rPageView.getControlContainer( _rDevice ) );
1122 if ( xControlContainer.is() )
1123 xControlContainer->addControl( sControlServiceName, _out_rControl.getControl() );
1138 return _out_rControl.is();
1144 OSL_PRECOND( !
impl_isDisposed_nofail(),
"ViewObjectContactOfUnoControl_Impl::impl_getPageView_nothrow: already disposed!" );
1146 _out_rpPageView =
nullptr;
1151 if ( pPageViewContact )
1154 DBG_ASSERT( _out_rpPageView !=
nullptr,
"ViewObjectContactOfUnoControl_Impl::impl_getPageView_nothrow: this method is expected to always have success!" );
1155 return ( _out_rpPageView !=
nullptr );
1162 "ViewObjectContactOfUnoControl_Impl::impl_adjustControlVisibilityToLayerVisibility_throw: only valid if we have a control!" );
1172 SdrPageViewAccess aPVAccess( *pPageView );
1178 const SdrUnoObj& _rUnoObject, IPageViewAccess
const & _rPageView,
bool _bIsCurrentlyVisible,
bool _bForce )
1183 if ( !_rControl.isDesignMode() )
1188 bool bIsObjectVisible = _rUnoObject.
IsVisible() && _rPageView.isLayerVisible( nObjectLayer );
1190 if ( _bForce || ( bIsObjectVisible != _bIsCurrentlyVisible ) )
1192 _rControl.setVisible( bIsObjectVisible );
1200 OSL_PRECOND(
m_xContainer.is(),
"ViewObjectContactOfUnoControl_Impl::impl_switchContainerListening_nothrow: no control container!" );
1220 OSL_PRECOND(
m_aControl.is(),
"ViewObjectContactOfUnoControl_Impl::impl_switchControlListening_nothrow: invalid control!" );
1236 Reference< XModeChangeBroadcaster > xDesignModeChanges(
m_aControl.getControl(), UNO_QUERY_THROW );
1238 xDesignModeChanges->addModeChangeListener(
this );
1240 xDesignModeChanges->removeModeChangeListener(
this );
1261 OSL_PRECOND(
m_aControl.is(),
"ViewObjectContactOfUnoControl_Impl::impl_switchPropertyListening_nothrow: no control!" );
1267 Reference< XPropertySet > xModelProperties(
m_aControl.getModel(), UNO_QUERY_THROW );
1269 xModelProperties->addPropertyChangeListener( OUString(),
this );
1271 xModelProperties->removePropertyChangeListener( OUString(),
this );
1286 bool bIsPrintable =
false;
1289 Reference< XPropertySet > xModelProperties( pUnoObject->
GetUnoControlModel(), UNO_QUERY_THROW );
1290 OSL_VERIFY( xModelProperties->getPropertyValue(
"Printable" ) >>= bIsPrintable );
1296 return bIsPrintable;
1356 OSL_PRECOND( !
impl_isDisposed_nofail(),
"ViewObjectContactOfUnoControl_Impl::propertyChange: already disposed()" );
1376 DBG_ASSERT( _rSource.NewMode ==
"design" || _rSource.NewMode ==
"alive",
"ViewObjectContactOfUnoControl_Impl::modeChanged: unexpected mode!" );
1407 DBG_ASSERT( Event.Source ==
m_xContainer,
"ViewObjectContactOfUnoControl_Impl::elementRemoved: where did this come from?" );
1417 DBG_ASSERT( Event.Source ==
m_xContainer,
"ViewObjectContactOfUnoControl_Impl::elementReplaced: where did this come from?" );
1419 if ( ! (
m_aControl == Event.ReplacedElement ) )
1422 Reference< XControl > xNewControl( Event.Element, UNO_QUERY );
1423 DBG_ASSERT( xNewControl.is(),
"ViewObjectContactOfUnoControl_Impl::elementReplaced: invalid new control!" );
1424 if ( !xNewControl.is() )
1429 DBG_ASSERT( xNewControl->getModel() ==
m_aControl.getModel(),
"ViewObjectContactOfUnoControl_Impl::elementReplaced: another model at the new control?" );
1435 ControlHolder aNewControl( xNewControl );
1437 aNewControl.setPosSize(
m_aControl.getPosSize() );
1475 bool LazyControlCreationPrimitive2D::operator==(
const BasePrimitive2D& rPrimitive)
const
1477 if ( !BufferedDecompositionPrimitive2D::operator==( rPrimitive ) )
1480 const LazyControlCreationPrimitive2D* pRHS =
dynamic_cast< const LazyControlCreationPrimitive2D*
>( &rPrimitive );
1494 void LazyControlCreationPrimitive2D::getTransformation(
const ViewContactOfUnoControl& _rVOC,
::basegfx::B2DHomMatrix& _out_Transformation )
1503 _out_Transformation.
set( 0, 0, aRange.
getWidth() );
1505 _out_Transformation.
set( 0, 2, aRange.
getMinX() );
1506 _out_Transformation.
set( 1, 2, aRange.
getMinY() );
1510 ::basegfx::B2DRange LazyControlCreationPrimitive2D::getB2DRange( const ::drawinglayer::geometry::ViewInformation2D& )
const
1520 #if OSL_DEBUG_LEVEL > 0
1522 double fRotate, fShearX;
1523 _rViewInformation.getObjectToViewTransformation().decompose( aScale, aTranslate, fRotate, fShearX );
1526 impl_positionAndZoomControl( _rViewInformation );
1527 BufferedDecompositionPrimitive2D::get2DDecomposition( rVisitor, _rViewInformation );
1533 #if OSL_DEBUG_LEVEL > 0
1535 double fRotate, fShearX;
1536 _rViewInformation.getObjectToViewTransformation().decompose( aScale, aTranslate, fRotate, fShearX );
1538 const bool bHadControl =
m_pVOCImpl->getExistentControl().is();
1542 m_pVOCImpl->ensureControl( &_rViewInformation.getObjectToViewTransformation() );
1543 impl_positionAndZoomControl( _rViewInformation );
1546 const ViewContactOfUnoControl& rViewContactOfUnoControl(
m_pVOCImpl->getViewContact() );
1547 Reference< XControlModel > xControlModel( rViewContactOfUnoControl.GetSdrUnoObj().GetUnoControlModel() );
1548 const ControlHolder& rControl(
m_pVOCImpl->getExistentControl() );
1550 if ( !bHadControl && rControl.is() && rControl.isVisible() )
1551 rControl.invalidate();
1554 if ( !xControlModel.is() || !rControl.is() )
1559 rViewContactOfUnoControl.getViewIndependentPrimitive2DContainer(rContainer);
1565 rContainer.push_back( new ::drawinglayer::primitive2d::ControlPrimitive2D(
1569 sal_uInt32 LazyControlCreationPrimitive2D::getPrimitive2DID()
const
1592 m_pImpl->ensureControl(
nullptr );
1593 return m_pImpl->getExistentControl().getControl();
1598 const vcl::Window& _rWindow, Reference< XControlContainer >& _inout_ControlContainer,
const SdrUnoObj& _rUnoObject )
1600 ControlHolder aControl;
1602 InvisibleControlViewAccess aSimulatePageView( _inout_ControlContainer );
1605 return aControl.getControl();
1615 const ControlHolder& rControl(
m_pImpl->getExistentControl() );
1616 if ( !rControl.is() )
1620 if ( rControl.isDesignMode() )
1624 if (
m_pImpl->isControlVisible() == _bVisible )
1628 rControl.setVisible( _bVisible );
1629 DBG_ASSERT(
m_pImpl->isControlVisible() == _bVisible,
"ViewObjectContactOfUnoControl::ensureControlVisibility: this didn't work!" );
1643 m_pImpl->setControlDesignMode( _bDesignMode );
1663 if (
GetObjectContact().getViewInformation2D().getViewTransformation().isIdentity() )
1668 const ControlHolder& rControl(
m_pImpl->getExistentControl() );
1669 if ( rControl.is() && !rControl.isDesignMode() && !rControl.isVisible() )
1672 rVisitor.
visit(
new LazyControlCreationPrimitive2D(
m_pImpl ) );
1682 const ::drawinglayer::geometry::ViewInformation2D& rViewInformation(
GetObjectContact().getViewInformation2D() );
1683 #if OSL_DEBUG_LEVEL > 0
1685 double fRotate, fShearX;
1686 rViewInformation.getObjectToViewTransformation().decompose( aScale, aTranslate, fRotate, fShearX );
1689 if ( !rViewInformation.getViewport().isEmpty() )
1703 if(0.0 != rGridOffset.
getX() || 0.0 != rGridOffset.
getY())
1712 m_pImpl->positionAndZoomControl(aViewTransformation);
1730 const ControlHolder& rControl(
m_pImpl->getExistentControl());
1732 if(!rControl.is() || rControl.isDesignMode())
1744 if(rControl.isVisible() != bIsLayerVisible)
1746 rControl.setVisible(bIsLayerVisible);
1777 if ( !
m_pImpl->isPrintableControl() )
const Fraction & GetScaleX() const
const Fraction & GetScaleY() const
basegfx::B2DHomMatrix GetViewTransformation() const
basegfx::B2DHomMatrix GetInverseViewTransformation() const
const MapMode & GetMapMode() const
virtual vcl::Window * GetOwnerWindow() const
bool IsSet(SdrLayerID a) const
bool IsDesignMode() const
SdrModel & getSdrModelFromSdrObject() const
virtual SdrLayerID GetLayer() const
const SdrLayerIDSet & GetVisibleLayers() const
css::uno::Reference< css::awt::XControlContainer > GetControlContainer(const OutputDevice &_rDevice) const
Looks up the control container belonging to given output device.
SdrPageWindow * FindPageWindow(const SdrPaintWindow &rPaintWindow) const
SdrPageView & GetPageView() const
virtual const tools::Rectangle & GetLogicRect() const override
const OUString & GetUnoControlTypeName() const
const css::uno::Reference< css::awt::XControlModel > & GetUnoControlModel() const
static css::uno::Reference< css::awt::XControlContainer > CreateControlContainer(vcl::Window *pWindow)
::tools::Rectangle ConvertToVCLRect(css::awt::Rectangle const &_rRect)
static vcl::Window * GetWindow(const css::uno::Reference< css::awt::XWindow > &rxWindow)
reference_type * get() const
bool decompose(B2DTuple &rScale, B2DTuple &rTranslate, double &rRotate, double &rShearX) const
void set(sal_uInt16 nRow, sal_uInt16 nColumn, double fValue)
BASEGFX_DLLPUBLIC void transform(const B2DHomMatrix &rMatrix)
virtual void visit(const Primitive2DReference &)=0
SdrPageWindow & GetPageWindow() const
::OutputDevice const * GetOutDev() const
#define DBG_ASSERT(sCon, aError)
#define ENSURE_OR_THROW(c, m)
#define DBG_UNHANDLED_EXCEPTION(...)
B2DHomMatrix createTranslateB2DHomMatrix(double fTranslateX, double fTranslateY)
class SAL_NO_VTABLE XPropertySet
#define PRIMITIVE2D_ID_SDRCONTROLPRIMITIVE2D
bool operator==(const XclFontData &rLeft, const XclFontData &rRight)