xref: /AOO41X/main/svx/inc/svx/unoshape.hxx (revision 02563ba08c97572850040481d59c6d25db5a2632)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 #ifndef _SVX_UNOSHAPE_HXX
24 #define _SVX_UNOSHAPE_HXX
25 
26 #include <com/sun/star/document/XActionLockable.hpp>
27 #include <com/sun/star/drawing/XEnhancedCustomShapeDefaulter.hpp>
28 #include <com/sun/star/drawing/XGluePointsSupplier.hpp>
29 #include <com/sun/star/drawing/XShape.hpp>
30 #include <com/sun/star/lang/XComponent.hpp>
31 #include <com/sun/star/beans/XPropertySet.hpp>
32 #include <com/sun/star/beans/XPropertyState.hpp>
33 #include <com/sun/star/lang/XServiceInfo.hpp>
34 #include <com/sun/star/uno/XAggregation.hpp>
35 #include <com/sun/star/lang/XTypeProvider.hpp>
36 #include <com/sun/star/lang/XUnoTunnel.hpp>
37 #include <com/sun/star/awt/Point.hpp>
38 #include <com/sun/star/drawing/PolygonKind.hpp>
39 #include <com/sun/star/container/XNamed.hpp>
40 #include <com/sun/star/container/XChild.hpp>
41 #include <com/sun/star/beans/XMultiPropertySet.hpp>
42 #include <com/sun/star/beans/XMultiPropertyStates.hpp>
43 #include <tools/gen.hxx>
44 #include <tools/weakbase.hxx>
45 #include <svl/lstner.hxx>
46 #include <editeng/unoipset.hxx>
47 #include <cppuhelper/weak.hxx>
48 #include <cppuhelper/weakagg.hxx>
49 #include <cppuhelper/interfacecontainer.h>
50 #include <osl/mutex.hxx>
51 #include "svx/svxdllapi.h"
52 #include <rtl/ref.hxx>
53 #include <com/sun/star/uno/Any.hxx>
54 
55 #include <svx/svdouno.hxx>
56 
57 #include <comphelper/servicehelper.hxx>
58 
59 #include <cppuhelper/implbase1.hxx>
60 #include <cppuhelper/implbase12.hxx>
61 
62 #include <svx/unoprov.hxx>
63 
64 class SfxItemSet;
65 class SdrModel;
66 class SvxDrawPage;
67 class SvGlobalName;
68 // --> OD 2009-01-16 #i59051#
69 namespace basegfx
70     {
71         class B2DPolyPolygon;
72     } // end of namespace basegfx
73 // <--
74 
75 class SvxShapeMutex
76 {
77 protected:
78     ::osl::Mutex maMutex;
79 };
80 
81 struct SvxShapeImpl;
82 class SvxShapeMaster;
83 class SvxItemPropertySet;
84 class SvxItemPropertySimpleEntry;
85 class SfxItemSet;
86 
87 void SVX_DLLPUBLIC SvxItemPropertySet_setPropertyValue( const SvxItemPropertySet& rPropSet, const SfxItemPropertySimpleEntry* pMap,
88         const com::sun::star::uno::Any& rVal, SfxItemSet& rSet );
89 
90 com::sun::star::uno::Any SVX_DLLPUBLIC SvxItemPropertySet_getPropertyValue( const SvxItemPropertySet& rPropSet, const SfxItemPropertySimpleEntry* pMap, const SfxItemSet& rSet );
91 
92 
93 // WARNING: if you update the supported interfaces,
94 //          also update SvxShape::_getTypes()
95 typedef ::cppu::WeakAggImplHelper12<
96     ::com::sun::star::drawing::XShape,
97     ::com::sun::star::lang::XComponent,
98     ::com::sun::star::beans::XPropertySet,
99     ::com::sun::star::beans::XMultiPropertySet,
100     ::com::sun::star::beans::XPropertyState,
101     ::com::sun::star::lang::XUnoTunnel,
102     ::com::sun::star::container::XNamed,
103     ::com::sun::star::drawing::XGluePointsSupplier,
104     ::com::sun::star::container::XChild,
105     ::com::sun::star::lang::XServiceInfo,
106     ::com::sun::star::document::XActionLockable,
107     ::com::sun::star::beans::XMultiPropertyStates> SvxShape_UnoImplHelper;
108 
109 class SVX_DLLPUBLIC SvxShape : public SvxShape_UnoImplHelper,
110                  public SfxListener,
111                  public SvxShapeMutex
112 {
113 private:
114     ::com::sun::star::awt::Size maSize;
115     ::com::sun::star::awt::Point maPosition;
116     ::rtl::OUString maShapeType;
117     ::rtl::OUString maShapeName;
118 
119     /** these members are used to optimize XMultiProperty calls */
120     SvxShapeImpl* mpImpl;
121     bool mbIsMultiPropertyCall;
122 
123     ::com::sun::star::uno::WeakReference< ::com::sun::star::container::XIndexContainer > mxGluePoints;
124 
125 protected:
126     friend class SvxDrawPage;
127     friend class SvxShapeConnector;
128     friend class SdXShape;
129 
130     const SvxItemPropertySet* mpPropSet;
131     const SfxItemPropertyMapEntry* maPropMapEntries;
132 
133     ::tools::WeakReference< SdrObject > mpObj;
134     SdrModel* mpModel;
135     // Umrechnungen fuer den Writer, der in TWIPS arbeitet
136     void ForceMetricToItemPoolMetric(Pair& rPoint) const throw();
137     void ForceMetricTo100th_mm(Pair& rPoint) const throw();
138     // --> OD 2009-01-16 #i59051#
139     void ForceMetricToItemPoolMetric(basegfx::B2DPolyPolygon& rPolyPolygon) const throw();
140     void ForceMetricTo100th_mm(basegfx::B2DPolyPolygon& rPolyPolygon) const throw();
141     // <--
142 
143     ::com::sun::star::uno::Any GetAnyForItem( SfxItemSet& aSet, const SfxItemPropertySimpleEntry* pMap ) const;
144 
145     sal_Bool tryQueryAggregation( const com::sun::star::uno::Type & rType, com::sun::star::uno::Any& rAny );
146 
147     sal_Bool SAL_CALL SetFillAttribute( sal_Int32 nWID, const ::rtl::OUString& rName );
148 
149     /** called from the XActionLockable interface methods on initial locking */
150     virtual void lock();
151 
152     /** called from the XActionLockable interface methods on final unlock */
153     virtual void unlock();
154 
155     /** used from the XActionLockable interface */
156     sal_uInt16 mnLockCount;
157 
getPropertyMapEntries() const158     const SfxItemPropertyMapEntry* getPropertyMapEntries() const { return maPropMapEntries; }
159 
160     void updateShapeKind();
161     void endSetPropertyValues();
162 
163     // overide these for special property handling in subcasses. Return true if property is handled
164     virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
165     virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
166     virtual bool getPropertyStateImpl( const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::beans::PropertyState& rState ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
167     virtual bool setPropertyToDefaultImpl( const SfxItemPropertySimpleEntry* pProperty ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
168 
169 public:
170     SvxShape( SdrObject* pObj ) throw ();
171     SvxShape( SdrObject* pObject, const SfxItemPropertyMapEntry* pEntries, const SvxItemPropertySet* pPropertySet ) throw ();
172     SvxShape() throw ();
173     virtual ~SvxShape() throw ();
174 
175     // Internals
176     void ObtainSettingsFromPropertySet(const SvxItemPropertySet& rPropSet);
177     virtual void Create( SdrObject* pNewOpj, SvxDrawPage* pNewPage = NULL );
178     /** takes the ownership of the SdrObject.
179 
180         When the shape is disposed, and it has the ownership of its associated SdrObject, then
181         it will delete this object.
182     */
183     void TakeSdrObjectOwnership();
184     bool HasSdrObjectOwnership() const;
185 
186     void ChangeModel( SdrModel* pNewModel );
187 
InvalidateSdrObject()188     void InvalidateSdrObject() { mpObj.reset( NULL ); };
GetPropertySet()189     const SvxItemPropertySet& GetPropertySet() { return *mpPropSet; }
GetSdrObject() const190     SdrObject* GetSdrObject() const {return mpObj.get();}
SetShapeType(const::rtl::OUString & ShapeType)191     void SetShapeType( const ::rtl::OUString& ShapeType ) { maShapeType = ShapeType; }
192     ::com::sun::star::uno::Any GetBitmap( sal_Bool bMetaFile = sal_False ) const throw ();
193     static SvxShape* GetShapeForSdrObj( SdrObject* pObj ) throw ();
194 
195     ::svx::PropertyChangeNotifier& getShapePropertyChangeNotifier();
196 
197     void setShapeKind( sal_uInt32 nKind );
198     sal_uInt32 getShapeKind() const;
199 
200     // styles need this
201     static sal_Bool SAL_CALL SetFillAttribute( sal_Int32 nWID, const ::rtl::OUString& rName, SfxItemSet& rSet, SdrModel* pModel );
202     static sal_Bool SAL_CALL SetFillAttribute( sal_Int32 nWID, const ::rtl::OUString& rName, SfxItemSet& rSet );
203 
204     /** same as SetFillAttribute but for property names instead of which ids,
205         and the property found is returned instead of set at the object
206         directly.
207      */
208 // os: unused function
209 //    static ::com::sun::star::uno::Any SAL_CALL GetFillAttributeByName(
210 //        const ::rtl::OUString& rPropertyName, const ::rtl::OUString& rName, SdrModel* pModel );
211 
212     UNO3_GETIMPLEMENTATION_DECL( SvxShape )
213 
214     // access methods for master objects
215     ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL _getPropertySetInfo(  ) throw(::com::sun::star::uno::RuntimeException);
216     void SAL_CALL _setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
217     ::com::sun::star::uno::Any SAL_CALL _getPropertyValue( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
218 
219     ::com::sun::star::beans::PropertyState SAL_CALL _getPropertyState( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
220     void SAL_CALL _setPropertyToDefault( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
221     ::com::sun::star::uno::Any SAL_CALL _getPropertyDefault( const ::rtl::OUString& aPropertyName )     throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
222 
223     ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL _getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
224 
225     ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL _getTypes(  ) throw(::com::sun::star::uno::RuntimeException);
226 
227     void setMaster( SvxShapeMaster* pMaster );
228     const SvxShapeMaster* getMaster() const;
229     SvxShapeMaster* getMaster();
230 
231     // SfxListener
232     virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) throw ();
233 
234 
235     /** @obsolete
236         not used anymore
237     */
238     virtual void onUserCall(SdrUserCallType eUserCall, const Rectangle& rBoundRect);
239 
240     // XAggregation
241     virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type& aType ) throw (::com::sun::star::uno::RuntimeException);
242 
243     // XNamed
244     virtual ::rtl::OUString SAL_CALL getName(  ) throw(::com::sun::star::uno::RuntimeException);
245     virtual void SAL_CALL setName( const ::rtl::OUString& aName ) throw(::com::sun::star::uno::RuntimeException);
246 
247     // XShapeDescriptor
248     virtual ::rtl::OUString SAL_CALL getShapeType() throw(::com::sun::star::uno::RuntimeException);
249 
250     // XShape
251     virtual ::com::sun::star::awt::Point SAL_CALL getPosition() throw(::com::sun::star::uno::RuntimeException);
252     virtual void SAL_CALL setPosition( const ::com::sun::star::awt::Point& aPosition ) throw(::com::sun::star::uno::RuntimeException);
253     virtual ::com::sun::star::awt::Size SAL_CALL getSize() throw(::com::sun::star::uno::RuntimeException);
254     virtual void SAL_CALL setSize( const ::com::sun::star::awt::Size& aSize ) throw(::com::sun::star::beans::PropertyVetoException, ::com::sun::star::uno::RuntimeException);
255 
256     // XComponent
257     virtual void SAL_CALL dispose() throw(::com::sun::star::uno::RuntimeException);
258     virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener ) throw(::com::sun::star::uno::RuntimeException);
259     virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ) throw(::com::sun::star::uno::RuntimeException);
260 
261     // XPropertySet
262     virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo(  ) throw(::com::sun::star::uno::RuntimeException);
263     virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
264     virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
265     virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
266     virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
267     virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
268     virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
269 
270     // XMultiPropertySet
271     virtual void SAL_CALL setPropertyValues( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aValues ) throw (::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
272     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > SAL_CALL getPropertyValues( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames ) throw (::com::sun::star::uno::RuntimeException);
273     virtual void SAL_CALL addPropertiesChangeListener( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
274     virtual void SAL_CALL removePropertiesChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
275     virtual void SAL_CALL firePropertiesChangeEvent( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
276 
277     // XPropertyState
278     virtual ::com::sun::star::beans::PropertyState SAL_CALL getPropertyState( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
279     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyState > SAL_CALL getPropertyStates( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
280     virtual void SAL_CALL setPropertyToDefault( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
281     virtual ::com::sun::star::uno::Any SAL_CALL getPropertyDefault( const ::rtl::OUString& aPropertyName )  throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
282 
283     // XMultiPropertyStates
284     virtual void SAL_CALL setAllPropertiesToDefault()
285         throw (::com::sun::star::uno::RuntimeException);
286     virtual void SAL_CALL setPropertiesToDefault(
287         const ::com::sun::star::uno::Sequence<
288         ::rtl::OUString >& aPropertyNames )
289         throw (::com::sun::star::beans::UnknownPropertyException,
290                ::com::sun::star::uno::RuntimeException);
291     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >
292     SAL_CALL getPropertyDefaults(
293         const ::com::sun::star::uno::Sequence<
294         ::rtl::OUString >& aPropertyNames )
295         throw (::com::sun::star::beans::UnknownPropertyException,
296                ::com::sun::star::lang::WrappedTargetException,
297                ::com::sun::star::uno::RuntimeException);
298 
299     // XServiceInfo
300     virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException);
301     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
302     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException);
303 
304     // XGluePointsSupplier
305     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer > SAL_CALL getGluePoints(  ) throw(::com::sun::star::uno::RuntimeException);
306 
307     // XChild
308     virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getParent(  ) throw(::com::sun::star::uno::RuntimeException);
309     virtual void SAL_CALL setParent( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& Parent ) throw(::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException);
310 
311     // XTypeProvider
312     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes(  ) throw(::com::sun::star::uno::RuntimeException);
313     virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId(  ) throw(::com::sun::star::uno::RuntimeException);
314 
315     // XActionLockable
316     virtual sal_Bool SAL_CALL isActionLocked(  ) throw (::com::sun::star::uno::RuntimeException);
317     virtual void SAL_CALL addActionLock(  ) throw (::com::sun::star::uno::RuntimeException);
318     virtual void SAL_CALL removeActionLock(  ) throw (::com::sun::star::uno::RuntimeException);
319     virtual void SAL_CALL setActionLocks( sal_Int16 nLock ) throw (::com::sun::star::uno::RuntimeException);
320     virtual sal_Int16 SAL_CALL resetActionLocks(  ) throw (::com::sun::star::uno::RuntimeException);
321 
322 private:
323     /** initializes SdrObj-dependent members. Only to be called when GetSdrObject() != NULL
324     */
325     SVX_DLLPRIVATE void impl_initFromSdrObject();
326     /// CTOR-Impl
327     SVX_DLLPRIVATE void impl_construct();
328 };
329 
330 #include <editeng/unotext.hxx>
331 
332 class SVX_DLLPUBLIC SvxShapeText : public SvxShape, public SvxUnoTextBase
333 {
334 protected:
335     /** called from the XActionLockable interface methods on initial locking */
336     virtual void lock();
337 
338     /** called from the XActionLockable interface methods on final unlock */
339     virtual void unlock();
340 
341 protected:
342     // overide these for special property handling in subcasses. Return true if property is handled
343     virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
344     virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
345     virtual bool getPropertyStateImpl( const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::beans::PropertyState& rState ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
346     virtual bool setPropertyToDefaultImpl( const SfxItemPropertySimpleEntry* pProperty ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
347 
348 public:
349     SvxShapeText() throw ();
350     SvxShapeText( SdrObject* pObj ) throw ();
351     SvxShapeText( SdrObject* pObject, const SfxItemPropertyMapEntry* pPropertyMap, const SvxItemPropertySet* pPropertySet ) throw ();
352     virtual ~SvxShapeText() throw ();
353 
354     virtual void Create( SdrObject* pNewOpj, SvxDrawPage* pNewPage = NULL );
355 
356     // XInterface
357     virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
358     virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
359     virtual void SAL_CALL acquire() throw();
360     virtual void SAL_CALL release() throw();
361 
362     // XServiceInfo
363     virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException);
364     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
365     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException);
366 
367     // ::com::sun::star::text::XTextRange
368     virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getStart() throw(::com::sun::star::uno::RuntimeException);
369     virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getEnd() throw(::com::sun::star::uno::RuntimeException);
370     virtual ::rtl::OUString SAL_CALL getString() throw(::com::sun::star::uno::RuntimeException);
371     virtual void SAL_CALL setString( const ::rtl::OUString& aString ) throw(::com::sun::star::uno::RuntimeException);
372 
373     // XUnoTunnel
374     virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw (::com::sun::star::uno::RuntimeException);
375 
376     // XTypeProvider
377     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes(  ) throw(::com::sun::star::uno::RuntimeException);
378     virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId(  ) throw(::com::sun::star::uno::RuntimeException);
379 };
380 
381 class SvxShapeRect : public SvxShapeText
382 {
383 public:
384     SvxShapeRect( SdrObject* pObj ) throw ();
385     virtual ~SvxShapeRect() throw ();
386 
387     // XInterface
388     virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
389     virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
390     virtual void SAL_CALL acquire() throw();
391     virtual void SAL_CALL release() throw();
392 
393     // XServiceInfo
394     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
395 };
396 #include <com/sun/star/drawing/XShapes.hpp>
397 #include <com/sun/star/drawing/XShapeGroup.hpp>
398 #include <com/sun/star/container/XIndexAccess.hpp>
399 
400 /***********************************************************************
401 *                                                                      *
402 ***********************************************************************/
403 class SvxShapeGroup : public SvxShape,
404                       public ::com::sun::star::drawing::XShapeGroup,
405                       public ::com::sun::star::drawing::XShapes
406 {
407 private:
408     rtl::Reference< SvxDrawPage> mxPage;
409 
410 public:
411     SvxShapeGroup( SdrObject* pObj,SvxDrawPage* pDrawPage ) throw ();
412     virtual ~SvxShapeGroup() throw ();
413 
414     virtual void Create( SdrObject* pNewOpj, SvxDrawPage* pNewPage = NULL );
415 
416     // XInterface
417     virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
418     virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
419     virtual void SAL_CALL acquire() throw();
420     virtual void SAL_CALL release() throw();
421 
422     // XShapes
423     virtual void SAL_CALL add( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape ) throw(::com::sun::star::uno::RuntimeException);
424     virtual void SAL_CALL remove( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape ) throw(::com::sun::star::uno::RuntimeException);
425 
426     // XElementAccess
427     virtual ::com::sun::star::uno::Type SAL_CALL getElementType() throw(::com::sun::star::uno::RuntimeException);
428     virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
429 
430     // XIndexAccess
431     virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException) ;
432     virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
433 
434     // XShapeDescriptor
435     virtual ::rtl::OUString SAL_CALL getShapeType() throw(::com::sun::star::uno::RuntimeException);
436 
437     // XShape
438     virtual ::com::sun::star::awt::Point SAL_CALL getPosition() throw(::com::sun::star::uno::RuntimeException);
439     virtual void SAL_CALL setPosition( const ::com::sun::star::awt::Point& aPosition ) throw(::com::sun::star::uno::RuntimeException);
440     virtual ::com::sun::star::awt::Size SAL_CALL getSize() throw(::com::sun::star::uno::RuntimeException);
441     virtual void SAL_CALL setSize( const ::com::sun::star::awt::Size& aSize ) throw(::com::sun::star::beans::PropertyVetoException, ::com::sun::star::uno::RuntimeException);
442 
443     // XShapeGroup
444     virtual void SAL_CALL enterGroup(  ) throw(::com::sun::star::uno::RuntimeException);
445     virtual void SAL_CALL leaveGroup(  ) throw(::com::sun::star::uno::RuntimeException);
446 
447     // XServiceInfo
448     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
449 
450     // XTypeProvider
451     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes(  ) throw(::com::sun::star::uno::RuntimeException);
452     virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId(  ) throw(::com::sun::star::uno::RuntimeException);
453 };
454 #include <com/sun/star/drawing/XConnectorShape.hpp>
455 
456 /***********************************************************************
457 *                                                                      *
458 ***********************************************************************/
459 class SvxShapeConnector : public ::com::sun::star::drawing::XConnectorShape,
460                           public SvxShapeText
461 {
462 public:
463     SvxShapeConnector( SdrObject* pObj ) throw();
464     virtual ~SvxShapeConnector() throw();
465 
466     // XInterface
467     virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
468     virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
469     virtual void SAL_CALL acquire() throw();
470     virtual void SAL_CALL release() throw();
471 
472     // XShapeDescriptor
473     virtual ::rtl::OUString SAL_CALL getShapeType() throw(::com::sun::star::uno::RuntimeException);
474 
475     // XShape
476     virtual ::com::sun::star::awt::Point SAL_CALL getPosition() throw(::com::sun::star::uno::RuntimeException);
477     virtual void SAL_CALL setPosition( const ::com::sun::star::awt::Point& aPosition ) throw(::com::sun::star::uno::RuntimeException);
478     virtual ::com::sun::star::awt::Size SAL_CALL getSize() throw(::com::sun::star::uno::RuntimeException);
479     virtual void SAL_CALL setSize( const ::com::sun::star::awt::Size& aSize ) throw(::com::sun::star::beans::PropertyVetoException, ::com::sun::star::uno::RuntimeException);
480 
481     // XConnectorShape
482     virtual void SAL_CALL connectStart( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XConnectableShape >& xShape, ::com::sun::star::drawing::ConnectionType nPos ) throw(::com::sun::star::uno::RuntimeException);
483     virtual void SAL_CALL connectEnd( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XConnectableShape >& xShape, ::com::sun::star::drawing::ConnectionType nPos ) throw(::com::sun::star::uno::RuntimeException);
484     virtual void SAL_CALL disconnectBegin( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XConnectableShape >& xShape ) throw(::com::sun::star::uno::RuntimeException);
485     virtual void SAL_CALL disconnectEnd( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XConnectableShape >& xShape ) throw(::com::sun::star::uno::RuntimeException);
486 
487     // XServiceInfo
488     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
489 
490     // XTypeProvider
491     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes(  ) throw(::com::sun::star::uno::RuntimeException);
492     virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId(  ) throw(::com::sun::star::uno::RuntimeException);
493 };
494 #include <com/sun/star/drawing/XControlShape.hpp>
495 
496 /***********************************************************************
497 *                                                                      *
498 ***********************************************************************/
499 class SVX_DLLPUBLIC SvxShapeControl : public ::com::sun::star::drawing::XControlShape, public SvxShapeText
500 {
501 protected:
502     using SvxUnoTextRangeBase::setPropertyValue;
503     using SvxUnoTextRangeBase::getPropertyValue;
504 
505 public:
506     SvxShapeControl( SdrObject* pObj ) throw();
507     virtual ~SvxShapeControl() throw();
508 
509     // XInterface
510     virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
511     virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
512     virtual void SAL_CALL acquire() throw();
513     virtual void SAL_CALL release() throw();
514 
515     // XPropertySet
516     virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
517     virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
518 
519     // XPropertyState
520     virtual ::com::sun::star::beans::PropertyState SAL_CALL getPropertyState( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
521     virtual void SAL_CALL setPropertyToDefault( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
522     virtual ::com::sun::star::uno::Any SAL_CALL getPropertyDefault( const ::rtl::OUString& aPropertyName )  throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
523 
524     // XShapeDescriptor
525     virtual ::rtl::OUString SAL_CALL getShapeType() throw(::com::sun::star::uno::RuntimeException);
526 
527     // XShape
528     virtual ::com::sun::star::awt::Point SAL_CALL getPosition() throw(::com::sun::star::uno::RuntimeException);
529     virtual void SAL_CALL setPosition( const ::com::sun::star::awt::Point& aPosition ) throw(::com::sun::star::uno::RuntimeException);
530     virtual ::com::sun::star::awt::Size SAL_CALL getSize() throw(::com::sun::star::uno::RuntimeException);
531     virtual void SAL_CALL setSize( const ::com::sun::star::awt::Size& aSize ) throw(::com::sun::star::beans::PropertyVetoException, ::com::sun::star::uno::RuntimeException);
532 
533     // XControlShape
534     virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel > SAL_CALL getControl() throw(::com::sun::star::uno::RuntimeException);
535     virtual void SAL_CALL setControl( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel >& xControl ) throw(::com::sun::star::uno::RuntimeException);
536 
537     // XServiceInfo
538     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
539 
540     // XTypeProvider
541     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes(  ) throw(::com::sun::star::uno::RuntimeException);
542     virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId(  ) throw(::com::sun::star::uno::RuntimeException);
543 };
544 
545 /***********************************************************************
546 *                                                                      *
547 ***********************************************************************/
548 class SvxShapeDimensioning : public SvxShapeText
549 {
550 public:
551     SvxShapeDimensioning( SdrObject* pObj ) throw();
552     virtual ~SvxShapeDimensioning() throw();
553 
554     // XServiceInfo
555     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
556 };
557 
558 /***********************************************************************
559 *                                                                      *
560 ***********************************************************************/
561 class SvxShapeCircle : public SvxShapeText
562 {
563 public:
564     SvxShapeCircle( SdrObject* pObj ) throw ();
565     virtual ~SvxShapeCircle() throw ();
566 
567     // XServiceInfo
568     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
569 };
570 
571 /***********************************************************************
572 *                                                                      *
573 ***********************************************************************/
574 
575 // #i118485# changed parent to SvxShapeText to allow Text handling over UNO API
576 class SVX_DLLPUBLIC SvxOle2Shape : public SvxShapeText
577 {
578 protected:
579     // overide these for special property handling in subcasses. Return true if property is handled
580     virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
581     virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
582 
583     void resetModifiedState();
584 
585     const SvGlobalName GetClassName_Impl(rtl::OUString& rHexCLSID);
586 public:
587     SvxOle2Shape( SdrObject* pObj ) throw();
588     SvxOle2Shape( SdrObject* pObject, const SfxItemPropertyMapEntry* pPropertyMap, const SvxItemPropertySet* pPropertySet ) throw ();
589     virtual ~SvxOle2Shape() throw();
590 
591     sal_Bool createObject( const SvGlobalName &aClassName );
592 
593     sal_Bool createLink( const ::rtl::OUString& aLinkURL );
594 
595     // XInterface
596     virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
597 };
598 
599 
600 #include <basegfx/polygon/b2dpolypolygon.hxx>
601 
602 /***********************************************************************
603 *                                                                      *
604 ***********************************************************************/
605 class SvxShapePolyPolygon : public SvxShapeText
606 {
607 private:
608     ::com::sun::star::drawing::PolygonKind mePolygonKind;
609 
610 protected:
611     using SvxUnoTextRangeBase::setPropertyValue;
612     using SvxUnoTextRangeBase::getPropertyValue;
613 
614     // overide these for special property handling in subcasses. Return true if property is handled
615     virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
616     virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
617 
618 public:
619     SvxShapePolyPolygon( SdrObject* pObj , ::com::sun::star::drawing::PolygonKind eNew = com::sun::star::drawing::PolygonKind_LINE ) throw(com::sun::star::lang::IllegalArgumentException, com::sun::star::beans::PropertyVetoException);
620     virtual ~SvxShapePolyPolygon() throw();
621 
622     // Local support functions
623     ::com::sun::star::drawing::PolygonKind GetPolygonKind() const throw();
624     void SetPolygon(const basegfx::B2DPolyPolygon& rNew) throw();
625     basegfx::B2DPolyPolygon GetPolygon() const throw();
626 
627     // XServiceInfo
628     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
629 };
630 
631 /***********************************************************************
632 *                                                                      *
633 ***********************************************************************/
634 
635 class SvxShapePolyPolygonBezier : public SvxShapeText
636 {
637 private:
638     ::com::sun::star::drawing::PolygonKind mePolygonKind;
639 
640 protected:
641     using SvxUnoTextRangeBase::setPropertyValue;
642     using SvxUnoTextRangeBase::getPropertyValue;
643 
644 public:
645     // overide these for special property handling in subcasses. Return true if property is handled
646     virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
647     virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
648 
649     SvxShapePolyPolygonBezier( SdrObject* pObj , ::com::sun::star::drawing::PolygonKind eNew = com::sun::star::drawing::PolygonKind_PATHLINE) throw();
650     virtual ~SvxShapePolyPolygonBezier() throw();
651 
652     // Local support functions
653     ::com::sun::star::drawing::PolygonKind GetPolygonKind() const throw();
654     void SetPolygon(const basegfx::B2DPolyPolygon & rNew) throw();
655     basegfx::B2DPolyPolygon GetPolygon() const throw();
656 
657     // XServiceInfo
658     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
659 };
660 
661 /***********************************************************************
662 *                                                                      *
663 ***********************************************************************/
664 class SvxGraphicObject : public SvxShapeText
665 {
666 protected:
667     using SvxUnoTextRangeBase::setPropertyValue;
668     using SvxUnoTextRangeBase::getPropertyValue;
669 
670     // overide these for special property handling in subcasses. Return true if property is handled
671     virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
672     virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
673 
674 public:
675     SvxGraphicObject( SdrObject* pObj ) throw();
676     virtual ~SvxGraphicObject() throw();
677 };
678 
679 /***********************************************************************
680 *                                                                      *
681 ***********************************************************************/
682 class Svx3DSceneObject : public ::com::sun::star::drawing::XShapes, public SvxShape
683 {
684 private:
685     rtl::Reference< SvxDrawPage > mxPage;
686 
687 protected:
688     using SvxShape::setPropertyValue;
689     using SvxShape::getPropertyValue;
690 
691 public:
692     Svx3DSceneObject( SdrObject* pObj, SvxDrawPage* pDrawPage ) throw();
693     // overide these for special property handling in subcasses. Return true if property is handled
694     virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
695     virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
696 
697     virtual ~Svx3DSceneObject() throw();
698 
699     virtual void Create( SdrObject* pNewOpj, SvxDrawPage* pNewPage = NULL );
700 
701     // XInterface
702     virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
703     virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
704     virtual void SAL_CALL acquire() throw();
705     virtual void SAL_CALL release() throw();
706 
707     // XShapes
708     virtual void SAL_CALL add( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape ) throw(::com::sun::star::uno::RuntimeException);
709     virtual void SAL_CALL remove( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape ) throw(::com::sun::star::uno::RuntimeException);
710 
711     // XElementAccess
712     virtual ::com::sun::star::uno::Type SAL_CALL getElementType(  ) throw(::com::sun::star::uno::RuntimeException);
713     virtual sal_Bool SAL_CALL hasElements(  ) throw(::com::sun::star::uno::RuntimeException);
714 
715     // XIndexAccess
716     virtual sal_Int32 SAL_CALL getCount(  ) throw(::com::sun::star::uno::RuntimeException) ;
717     virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
718 
719     // XServiceInfo
720     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException);
721 
722     // XTypeProvider
723     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes(  ) throw(::com::sun::star::uno::RuntimeException);
724     virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId(  ) throw(::com::sun::star::uno::RuntimeException);
725 };
726 
727 /***********************************************************************
728 *                                                                      *
729 ***********************************************************************/
730 class Svx3DCubeObject : public SvxShape
731 {
732 protected:
733     // overide these for special property handling in subcasses. Return true if property is handled
734     virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
735     virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
736 
737 public:
738     Svx3DCubeObject( SdrObject* pObj ) throw();
739     virtual ~Svx3DCubeObject() throw();
740 
741     // XServiceInfo
742     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(  ) throw(::com::sun::star::uno::RuntimeException);
743 };
744 
745 /***********************************************************************
746 *                                                                      *
747 ***********************************************************************/
748 class Svx3DSphereObject : public SvxShape
749 {
750 public:
751     Svx3DSphereObject( SdrObject* pObj ) throw();
752 protected:
753     // overide these for special property handling in subcasses. Return true if property is handled
754     virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
755     virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
756 
757     virtual ~Svx3DSphereObject() throw();
758 
759     // XServiceInfo
760     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(  ) throw(::com::sun::star::uno::RuntimeException);
761 };
762 
763 /***********************************************************************
764 *                                                                      *
765 ***********************************************************************/
766 class Svx3DLatheObject : public SvxShape
767 {
768 protected:
769     // overide these for special property handling in subcasses. Return true if property is handled
770     virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
771     virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
772 
773 public:
774     Svx3DLatheObject( SdrObject* pObj ) throw();
775     virtual ~Svx3DLatheObject() throw();
776 
777     // XServiceInfo
778     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(  ) throw(::com::sun::star::uno::RuntimeException);
779 };
780 
781 /***********************************************************************
782 *                                                                      *
783 ***********************************************************************/
784 class Svx3DExtrudeObject : public SvxShape
785 {
786 public:
787     Svx3DExtrudeObject( SdrObject* pObj ) throw();
788 protected:
789     // overide these for special property handling in subcasses. Return true if property is handled
790     virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
791     virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
792 
793     virtual ~Svx3DExtrudeObject() throw();
794 
795     // XServiceInfo
796     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(  ) throw(::com::sun::star::uno::RuntimeException);
797 };
798 
799 /***********************************************************************
800 *                                                                      *
801 ***********************************************************************/
802 class Svx3DPolygonObject : public SvxShape
803 {
804 protected:
805     // overide these for special property handling in subcasses. Return true if property is handled
806     virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
807     virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
808 
809 public:
810     Svx3DPolygonObject( SdrObject* pObj ) throw();
811     virtual ~Svx3DPolygonObject() throw();
812 
813     // XServiceInfo
814     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(  ) throw(::com::sun::star::uno::RuntimeException);
815 };
816 
817 /***********************************************************************
818 *                                                                      *
819 ***********************************************************************/
820 typedef ::cppu::WeakAggImplHelper1<
821     ::com::sun::star::drawing::XEnhancedCustomShapeDefaulter
822     > SvxShape_UnoImplHelper1;
823 
824 class SVX_DLLPUBLIC SvxCustomShape : public SvxShapeText, public SvxShape_UnoImplHelper1
825 {
826 private:
827     rtl::Reference< SvxDrawPage > mxPage;
828 
829 protected:
830     using SvxUnoTextRangeBase::setPropertyValue;
831     using SvxUnoTextRangeBase::getPropertyValue;
832 
833 public:
834     SvxCustomShape( SdrObject* pObj ) throw ();
835     // overide these for special property handling in subcasses. Return true if property is handled
836     //virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertyMapEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
837     virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
838 
839 
840     virtual ~SvxCustomShape() throw ();
841 
842     virtual void Create( SdrObject* pNewOpj, SvxDrawPage* pNewPage = NULL );
843 
844     // XInterface
845     virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
846     virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
847     virtual void SAL_CALL acquire() throw();
848     virtual void SAL_CALL release() throw();
849 
850     // XShapeDescriptor
851     virtual ::rtl::OUString SAL_CALL getShapeType() throw(::com::sun::star::uno::RuntimeException);
852 
853     // XShape
854     virtual ::com::sun::star::awt::Point SAL_CALL getPosition() throw(::com::sun::star::uno::RuntimeException);
855     virtual void SAL_CALL setPosition( const ::com::sun::star::awt::Point& aPosition ) throw(::com::sun::star::uno::RuntimeException);
856     virtual ::com::sun::star::awt::Size SAL_CALL getSize() throw(::com::sun::star::uno::RuntimeException);
857     virtual void SAL_CALL setSize( const ::com::sun::star::awt::Size& aSize ) throw(::com::sun::star::beans::PropertyVetoException, ::com::sun::star::uno::RuntimeException);
858 
859     // XPropertySet
860     void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException, com::sun::star::beans::PropertyVetoException, com::sun::star::lang::IllegalArgumentException);
861 
862     // XTypeProvider
863     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes(  ) throw(::com::sun::star::uno::RuntimeException);
864     virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId(  ) throw(::com::sun::star::uno::RuntimeException);
865 
866     //XEnhancedCustomShapeDefaulter
867     virtual void SAL_CALL createCustomShapeDefaults( const rtl::OUString& rShapeType ) throw (::com::sun::star::uno::RuntimeException);
868 };
869 
870 /***********************************************************************
871 *                                                                      *
872 ***********************************************************************/
873 
874 class SvxMediaShape : public SvxShape
875 {
876 public:
877     SvxMediaShape( SdrObject* pObj ) throw();
878     virtual     ~SvxMediaShape() throw();
879 
880 protected:
881     // overide these for special property handling in subcasses. Return true if property is handled
882     virtual bool setPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
883     virtual bool getPropertyValueImpl( const ::rtl::OUString& rName, const SfxItemPropertySimpleEntry* pProperty, ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
884 };
885 
886 #endif
887