1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 /* 3 * This file is part of the LibreOffice project. 4 * 5 * This Source Code Form is subject to the terms of the Mozilla Public 6 * License, v. 2.0. If a copy of the MPL was not distributed with this 7 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 8 * 9 * This file incorporates work covered by the following license notice: 10 * 11 * Licensed to the Apache Software Foundation (ASF) under one or more 12 * contributor license agreements. See the NOTICE file distributed 13 * with this work for additional information regarding copyright 14 * ownership. The ASF licenses this file to you under the Apache 15 * License, Version 2.0 (the "License"); you may not use this file 16 * except in compliance with the License. You may obtain a copy of 17 * the License at http://www.apache.org/licenses/LICENSE-2.0 . 18 */ 19 #ifndef INCLUDED_SW_INC_UNOTXDOC_HXX 20 #define INCLUDED_SW_INC_UNOTXDOC_HXX 21 22 #include "swdllapi.h" 23 #include <sfx2/sfxbasemodel.hxx> 24 25 #include <com/sun/star/style/XStyleFamiliesSupplier.hpp> 26 #include <com/sun/star/style/XAutoStylesSupplier.hpp> 27 #include <com/sun/star/document/XLinkTargetSupplier.hpp> 28 #include <com/sun/star/document/XRedlinesSupplier.hpp> 29 #include <com/sun/star/text/XNumberingRulesSupplier.hpp> 30 #include <com/sun/star/text/XFootnotesSupplier.hpp> 31 #include <com/sun/star/text/XEndnotesSupplier.hpp> 32 #include <com/sun/star/text/XTextSectionsSupplier.hpp> 33 #include <com/sun/star/text/XLineNumberingProperties.hpp> 34 #include <com/sun/star/text/XChapterNumberingSupplier.hpp> 35 #include <com/sun/star/text/XPagePrintable.hpp> 36 #include <com/sun/star/text/XTextFieldsSupplier.hpp> 37 #include <com/sun/star/text/XTextGraphicObjectsSupplier.hpp> 38 #include <com/sun/star/text/XTextTablesSupplier.hpp> 39 #include <com/sun/star/text/XDocumentIndexesSupplier.hpp> 40 #include <com/sun/star/text/XBookmarksSupplier.hpp> 41 #include <com/sun/star/text/XTextDocument.hpp> 42 #include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp> 43 #include <com/sun/star/text/XReferenceMarksSupplier.hpp> 44 #include <com/sun/star/text/XTextFramesSupplier.hpp> 45 #include <com/sun/star/drawing/XDrawPageSupplier.hpp> 46 #include <com/sun/star/drawing/XDrawPagesSupplier.hpp> 47 #include <com/sun/star/util/XReplaceable.hpp> 48 #include <com/sun/star/util/XRefreshable.hpp> 49 #include <com/sun/star/util/XLinkUpdate.hpp> 50 #include <com/sun/star/view/XRenderable.hpp> 51 #include <com/sun/star/lang/XServiceInfo.hpp> 52 #include <com/sun/star/beans/XPropertySet.hpp> 53 #include <com/sun/star/beans/XPropertyState.hpp> 54 #include <com/sun/star/xforms/XFormsSupplier.hpp> 55 #include <com/sun/star/text/XFlatParagraphIteratorProvider.hpp> 56 #include <com/sun/star/document/XDocumentLanguages.hpp> 57 #include <com/sun/star/util/XCloneable.hpp> 58 #include <o3tl/deleter.hxx> 59 #include <rtl/ref.hxx> 60 #include <svx/fmdmod.hxx> 61 #include <editeng/UnoForbiddenCharsTable.hxx> 62 #include <cppuhelper/implbase.hxx> 63 #include <vcl/ITiledRenderable.hxx> 64 #include <com/sun/star/tiledrendering/XTiledRenderable.hpp> 65 #include <com/sun/star/text/XPasteBroadcaster.hpp> 66 67 #include "unobaseclass.hxx" 68 #include "viewopt.hxx" 69 70 #include <deque> 71 72 class SwDoc; 73 class SwDocShell; 74 class UnoActionContext; 75 class SwXBodyText; 76 class SwXDrawPage; 77 class SwUnoCursor; 78 class SwXDocumentPropertyHelper; 79 class SfxViewFrame; 80 class SfxViewShell; 81 class SwPrintUIOptions; 82 class SwPrintData; 83 class SwRenderData; 84 class SwViewShell; 85 class SfxItemPropertySet; 86 namespace com { namespace sun { namespace star { namespace container { class XNameContainer; } } } } 87 namespace com { namespace sun { namespace star { namespace frame { class XController; } } } } 88 namespace com { namespace sun { namespace star { namespace lang { struct Locale; } } } } 89 namespace com { namespace sun { namespace star { namespace uno { class XAggregation; } } } } 90 91 namespace com { namespace sun { namespace star { namespace util { class XReplaceDescriptor; } } } } 92 93 typedef cppu::WeakImplHelper 94 < 95 css::text::XTextDocument, 96 css::text::XLineNumberingProperties, 97 css::text::XChapterNumberingSupplier, 98 css::text::XNumberingRulesSupplier, 99 css::text::XFootnotesSupplier, 100 css::text::XEndnotesSupplier, 101 css::util::XReplaceable, 102 css::text::XPagePrintable, 103 css::text::XReferenceMarksSupplier, 104 css::text::XTextTablesSupplier, 105 css::text::XTextFramesSupplier, 106 css::text::XBookmarksSupplier, 107 css::text::XTextSectionsSupplier, 108 css::text::XTextGraphicObjectsSupplier, 109 css::text::XTextEmbeddedObjectsSupplier, 110 css::text::XTextFieldsSupplier, 111 css::style::XStyleFamiliesSupplier, 112 css::style::XAutoStylesSupplier, 113 css::lang::XServiceInfo, 114 css::drawing::XDrawPageSupplier, 115 css::drawing::XDrawPagesSupplier, 116 css::text::XDocumentIndexesSupplier, 117 css::beans::XPropertySet, 118 css::beans::XPropertyState, 119 css::document::XLinkTargetSupplier, 120 css::document::XRedlinesSupplier, 121 css::util::XRefreshable, 122 css::util::XLinkUpdate, 123 css::view::XRenderable, 124 css::xforms::XFormsSupplier, 125 css::text::XFlatParagraphIteratorProvider, 126 css::document::XDocumentLanguages, 127 css::util::XCloneable, 128 css::text::XPasteBroadcaster 129 > 130 SwXTextDocumentBaseClass; 131 132 class SW_DLLPUBLIC SwXTextDocument final : public SwXTextDocumentBaseClass, 133 public SvxFmMSFactory, 134 public SfxBaseModel, 135 public vcl::ITiledRenderable, 136 public css::tiledrendering::XTiledRenderable 137 { 138 private: 139 class Impl; 140 ::sw::UnoImplPtr<Impl> m_pImpl; 141 142 std::deque<std::unique_ptr<UnoActionContext, o3tl::default_delete<UnoActionContext>>> maActionArr; 143 144 const SfxItemPropertySet* pPropSet; 145 146 SwDocShell* pDocShell; 147 bool bObjectValid; 148 149 SwXDrawPage* pDrawPage; 150 css::uno::Reference< css::drawing::XDrawPage > mxXDrawPage; 151 152 css::uno::Reference< css::text::XText > xBodyText; 153 SwXBodyText* pBodyText; 154 css::uno::Reference< css::uno::XAggregation > xNumFormatAgg; 155 156 css::uno::Reference< css::container::XIndexAccess > mxXNumberingRules; 157 css::uno::Reference< css::container::XIndexAccess > mxXFootnotes; 158 css::uno::Reference< css::beans::XPropertySet > mxXFootnoteSettings; 159 css::uno::Reference< css::container::XIndexAccess > mxXEndnotes; 160 css::uno::Reference< css::beans::XPropertySet > mxXEndnoteSettings; 161 css::uno::Reference< css::container::XNameAccess > mxXReferenceMarks; 162 css::uno::Reference< css::container::XEnumerationAccess > mxXTextFieldTypes; 163 css::uno::Reference< css::container::XNameAccess > mxXTextFieldMasters; 164 css::uno::Reference< css::container::XNameAccess > mxXTextSections; 165 css::uno::Reference< css::container::XNameAccess > mxXBookmarks; 166 css::uno::Reference< css::container::XNameAccess > mxXTextTables; 167 css::uno::Reference< css::container::XNameAccess > mxXTextFrames; 168 css::uno::Reference< css::container::XNameAccess > mxXGraphicObjects; 169 css::uno::Reference< css::container::XNameAccess > mxXEmbeddedObjects; 170 css::uno::Reference< css::container::XNameAccess > mxXStyleFamilies; 171 mutable css::uno::Reference< css::style::XAutoStyles > mxXAutoStyles; 172 css::uno::Reference< css::container::XIndexReplace > mxXChapterNumbering; 173 css::uno::Reference< css::container::XIndexAccess > mxXDocumentIndexes; 174 175 css::uno::Reference< css::beans::XPropertySet > mxXLineNumberingProperties; 176 css::uno::Reference< css::container::XNameAccess > mxLinkTargetSupplier; 177 css::uno::Reference< css::container::XEnumerationAccess > mxXRedlines; 178 179 //temporary frame to enable PDF export if no valid view is available 180 SfxViewFrame* m_pHiddenViewFrame; 181 rtl::Reference<SwXDocumentPropertyHelper> mxPropertyHelper; 182 183 std::unique_ptr<SwPrintUIOptions> m_pPrintUIOptions; 184 std::unique_ptr<SwRenderData> m_pRenderData; 185 186 void GetNumberFormatter(); 187 188 css::uno::Reference<css::uno::XInterface> create( 189 OUString const & rServiceName, 190 css::uno::Sequence<css::uno::Any> const * arguments); 191 192 // used for XRenderable implementation 193 SfxViewShell * GuessViewShell( /* out */ bool &rbIsSwSrcView, const css::uno::Reference< css::frame::XController >& rController = css::uno::Reference< css::frame::XController >() ); 194 SwDoc * GetRenderDoc( SfxViewShell *&rpView, const css::uno::Any& rSelection, bool bIsPDFExport ); 195 SfxViewShell * GetRenderView( bool &rbIsSwSrcView, const css::uno::Sequence< css::beans::PropertyValue >& rxOptions, bool bIsPDFExport ); 196 197 OUString maBuildId; 198 199 // boolean for XPagePrintable 200 // set in XPagePrintable::printPages(..) to indicate that the PagePrintSettings 201 // has to be applied in XRenderable::getRenderer(..) through which the printing 202 // is implemented. 203 bool bApplyPagePrintSettingsFromXPagePrintable; 204 205 using SfxBaseModel::addEventListener; 206 using SfxBaseModel::removeEventListener; 207 208 /** abstract SdrModel provider */ 209 virtual SdrModel& getSdrModelFromUnoModel() const override; 210 211 virtual ~SwXTextDocument() override; 212 public: 213 SwXTextDocument(SwDocShell* pShell); 214 215 void NotifyRefreshListeners(); 216 virtual css::uno::Any SAL_CALL queryInterface( const css::uno::Type& aType ) override; 217 virtual void SAL_CALL acquire( ) throw() override; 218 virtual void SAL_CALL release( ) throw() override; 219 220 //XWeak 221 virtual css::uno::Reference< css::uno::XAdapter > SAL_CALL queryAdapter( ) override; 222 223 virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes( ) override; 224 225 static const css::uno::Sequence< sal_Int8 > & getUnoTunnelId(); 226 227 //XUnoTunnel 228 virtual sal_Int64 SAL_CALL getSomething( const css::uno::Sequence< sal_Int8 >& aIdentifier ) override; 229 230 //XTextDocument 231 virtual css::uno::Reference< css::text::XText > SAL_CALL getText() override; 232 virtual void SAL_CALL reformat() override; 233 234 //XModel 235 virtual sal_Bool SAL_CALL attachResource( const OUString& aURL, const css::uno::Sequence< css::beans::PropertyValue >& aArgs ) override; 236 virtual OUString SAL_CALL getURL( ) override; 237 virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL getArgs( ) override; 238 virtual void SAL_CALL connectController( const css::uno::Reference< css::frame::XController >& xController ) override; 239 virtual void SAL_CALL disconnectController( const css::uno::Reference< css::frame::XController >& xController ) override; 240 virtual void SAL_CALL lockControllers( ) override; 241 virtual void SAL_CALL unlockControllers( ) override; 242 virtual sal_Bool SAL_CALL hasControllersLocked( ) override; 243 virtual css::uno::Reference< css::frame::XController > SAL_CALL getCurrentController( ) override; 244 virtual void SAL_CALL setCurrentController( const css::uno::Reference< css::frame::XController >& xController ) override; 245 virtual css::uno::Reference< css::uno::XInterface > SAL_CALL getCurrentSelection( ) override; 246 247 //XComponent 248 virtual void SAL_CALL dispose() override; 249 virtual void SAL_CALL addEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override; 250 virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::lang::XEventListener > & aListener) override; 251 252 //XCloseable 253 virtual void SAL_CALL close( sal_Bool bDeliverOwnership ) override; 254 255 //XLineNumberingProperties 256 virtual css::uno::Reference< css::beans::XPropertySet > SAL_CALL getLineNumberingProperties() override; 257 258 //XChapterNumberingSupplier 259 virtual css::uno::Reference< css::container::XIndexReplace > SAL_CALL getChapterNumberingRules() override; 260 261 //XNumberingRulesSupplier 262 virtual css::uno::Reference< css::container::XIndexAccess > SAL_CALL getNumberingRules() override; 263 264 //XFootnotesSupplier 265 virtual css::uno::Reference< css::container::XIndexAccess > SAL_CALL getFootnotes() override; 266 virtual css::uno::Reference< css::beans::XPropertySet > SAL_CALL getFootnoteSettings() override; 267 268 //XEndnotesSupplier 269 virtual css::uno::Reference< css::container::XIndexAccess > SAL_CALL getEndnotes() override; 270 virtual css::uno::Reference< css::beans::XPropertySet > SAL_CALL getEndnoteSettings() override; 271 272 //XReplaceable 273 virtual css::uno::Reference< css::util::XReplaceDescriptor > SAL_CALL createReplaceDescriptor() override; 274 virtual sal_Int32 SAL_CALL replaceAll(const css::uno::Reference< css::util::XSearchDescriptor > & xDesc) override; 275 276 //XSearchable 277 virtual css::uno::Reference< css::util::XSearchDescriptor > SAL_CALL createSearchDescriptor() override; 278 virtual css::uno::Reference< css::container::XIndexAccess > SAL_CALL findAll(const css::uno::Reference< css::util::XSearchDescriptor > & xDesc) override; 279 virtual css::uno::Reference< css::uno::XInterface > SAL_CALL findFirst(const css::uno::Reference< css::util::XSearchDescriptor > & xDesc) override; 280 virtual css::uno::Reference< css::uno::XInterface > SAL_CALL findNext(const css::uno::Reference< css::uno::XInterface > & xStartAt, const css::uno::Reference< css::util::XSearchDescriptor > & xDesc) override; 281 282 //XPagePrintable 283 virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL getPagePrintSettings() override; 284 virtual void SAL_CALL setPagePrintSettings(const css::uno::Sequence< css::beans::PropertyValue >& aSettings) override; 285 virtual void SAL_CALL printPages(const css::uno::Sequence< css::beans::PropertyValue >& xOptions) override; 286 287 //XReferenceMarksSupplier 288 virtual css::uno::Reference< css::container::XNameAccess > SAL_CALL getReferenceMarks() override; 289 290 // css::text::XTextFieldsSupplier 291 virtual css::uno::Reference< css::container::XEnumerationAccess > SAL_CALL getTextFields() override; 292 virtual css::uno::Reference< css::container::XNameAccess > SAL_CALL getTextFieldMasters() override; 293 294 // css::text::XTextEmbeddedObjectsSupplier 295 virtual css::uno::Reference< css::container::XNameAccess > SAL_CALL getEmbeddedObjects() override; 296 297 // css::text::XBookmarksSupplier 298 virtual css::uno::Reference< css::container::XNameAccess > SAL_CALL getBookmarks() override; 299 300 // css::text::XTextSectionsSupplier 301 virtual css::uno::Reference< css::container::XNameAccess > SAL_CALL getTextSections() override; 302 303 // css::text::XTextTablesSupplier 304 virtual css::uno::Reference< css::container::XNameAccess > SAL_CALL getTextTables() override; 305 306 // css::text::XTextGraphicObjectsSupplier 307 virtual css::uno::Reference< css::container::XNameAccess > SAL_CALL getGraphicObjects() override; 308 309 // css::text::XTextFramesSupplier 310 virtual css::uno::Reference< css::container::XNameAccess > SAL_CALL getTextFrames() override; 311 312 //XStyleFamiliesSupplier 313 virtual css::uno::Reference< css::container::XNameAccess > SAL_CALL getStyleFamilies() override; 314 315 //XAutoStylesSupplier 316 virtual css::uno::Reference< css::style::XAutoStyles > SAL_CALL getAutoStyles( ) override; 317 318 //XMultiServiceFactory 319 virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstance(const OUString& ServiceSpecifier) override; 320 virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstanceWithArguments(const OUString& ServiceSpecifier, 321 const css::uno::Sequence< css::uno::Any >& Arguments) override; 322 virtual css::uno::Sequence< OUString > SAL_CALL getAvailableServiceNames() override; 323 324 //XServiceInfo 325 virtual OUString SAL_CALL getImplementationName() override; 326 virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; 327 virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; 328 329 // css::drawing::XDrawPageSupplier 330 virtual css::uno::Reference< css::drawing::XDrawPage > SAL_CALL getDrawPage() override; 331 332 // css::drawing::XDrawPagesSupplier 333 virtual css::uno::Reference< css::drawing::XDrawPages > SAL_CALL getDrawPages() override; 334 335 // css::text::XDocumentIndexesSupplier 336 virtual css::uno::Reference< css::container::XIndexAccess > SAL_CALL getDocumentIndexes() override; 337 338 //XPropertySet 339 virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; 340 virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) override; 341 virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) override; 342 virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) override; 343 virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) override; 344 virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; 345 virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; 346 347 //XPropertyState 348 virtual css::beans::PropertyState SAL_CALL getPropertyState( const OUString& rPropertyName ) override; 349 virtual css::uno::Sequence< css::beans::PropertyState > SAL_CALL getPropertyStates( const css::uno::Sequence< OUString >& rPropertyNames ) override; 350 virtual void SAL_CALL setPropertyToDefault( const OUString& rPropertyName ) override; 351 virtual css::uno::Any SAL_CALL getPropertyDefault( const OUString& rPropertyName ) override; 352 353 //XLinkTargetSupplier 354 virtual css::uno::Reference< css::container::XNameAccess > SAL_CALL getLinks() override; 355 356 //XRedlinesSupplier 357 virtual css::uno::Reference< css::container::XEnumerationAccess > SAL_CALL getRedlines( ) override; 358 359 // css::util::XRefreshable 360 virtual void SAL_CALL refresh() override; 361 virtual void SAL_CALL addRefreshListener(const css::uno::Reference< css::util::XRefreshListener > & l) override; 362 virtual void SAL_CALL removeRefreshListener(const css::uno::Reference< css::util::XRefreshListener > & l) override; 363 364 // css::util::XLinkUpdate, 365 virtual void SAL_CALL updateLinks( ) override; 366 367 // css::view::XRenderable 368 virtual sal_Int32 SAL_CALL getRendererCount( const css::uno::Any& aSelection, const css::uno::Sequence< css::beans::PropertyValue >& xOptions ) override; 369 virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL getRenderer( sal_Int32 nRenderer, const css::uno::Any& aSelection, const css::uno::Sequence< css::beans::PropertyValue >& xOptions ) override; 370 virtual void SAL_CALL render( sal_Int32 nRenderer, const css::uno::Any& aSelection, const css::uno::Sequence< css::beans::PropertyValue >& xOptions ) override; 371 372 // css::xforms::XFormsSupplier 373 virtual css::uno::Reference< css::container::XNameContainer > SAL_CALL getXForms( ) override; 374 375 // css::document::XDocumentLanguages 376 virtual css::uno::Sequence< css::lang::Locale > SAL_CALL getDocumentLanguages( ::sal_Int16 nScriptTypes, ::sal_Int16 nCount ) override; 377 378 // css::text::XFlatParagraphIteratorProvider: 379 virtual css::uno::Reference< css::text::XFlatParagraphIterator > SAL_CALL getFlatParagraphIterator(::sal_Int32 nTextMarkupType, sal_Bool bAutomatic ) override; 380 381 // css::util::XCloneable 382 virtual css::uno::Reference< css::util::XCloneable > SAL_CALL createClone( ) override; 383 384 // css::text::XPasteBroadcaster 385 void SAL_CALL addPasteEventListener( 386 const ::css::uno::Reference<::css::text::XPasteListener>& xListener) override; 387 void SAL_CALL removePasteEventListener( 388 const ::css::uno::Reference<::css::text::XPasteListener>& xListener) override; 389 390 /// @see vcl::ITiledRenderable::paintTile(). 391 virtual void paintTile( VirtualDevice &rDevice, 392 int nOutputWidth, 393 int nOutputHeight, 394 int nTilePosX, 395 int nTilePosY, 396 long nTileWidth, 397 long nTileHeight ) override; 398 /// @see vcl::ITiledRenderable::getDocumentSize(). 399 virtual Size getDocumentSize() override; 400 /// @see vcl::ITiledRenderable::setPart(). 401 virtual void setPart(int nPart) override; 402 /// @see vcl::ITiledRenderable::getParts(). 403 virtual int getParts() override; 404 /// @see vcl::ITiledRenderable::getPart(). 405 virtual int getPart() override; 406 /// @see vcl::ITiledRenderable::getPartName(). 407 virtual OUString getPartName(int nPart) override; 408 /// @see vcl::ITiledRenderable::getPartHash(). 409 virtual OUString getPartHash(int nPart) override; 410 /// @see vcl::ITiledRenderable::getDocWindow(). 411 virtual VclPtr<vcl::Window> getDocWindow() override; 412 /// @see vcl::ITiledRenderable::initializeForTiledRendering(). 413 virtual void initializeForTiledRendering(const css::uno::Sequence<css::beans::PropertyValue>& rArguments) override; 414 /// @see vcl::ITiledRenderable::postKeyEvent(). 415 virtual void postKeyEvent(int nType, int nCharCode, int nKeyCode) override; 416 /// @see vcl::ITiledRenderable::postMouseEvent(). 417 virtual void postMouseEvent(int nType, int nX, int nY, int nCount, int nButtons, int nModifier) override; 418 /// @see vcl::ITiledRenderable::setTextSelection(). 419 virtual void setTextSelection(int nType, int nX, int nY) override; 420 /// @see vcl::ITiledRenderable::getSelection(). 421 virtual css::uno::Reference<css::datatransfer::XTransferable> getSelection() override; 422 /// @see vcl::ITiledRenderable::setGraphicSelection(). 423 virtual void setGraphicSelection(int nType, int nX, int nY) override; 424 /// @see vcl::ITiledRenderable::resetSelection(). 425 virtual void resetSelection() override; 426 /// @see vcl::ITiledRenderable::getPartPageRectangles(). 427 virtual OUString getPartPageRectangles() override; 428 /// @see vcl::ITiledRenderable::setClipboard(). 429 virtual void setClipboard(const css::uno::Reference<css::datatransfer::clipboard::XClipboard>& xClipboard) override; 430 /// @see vcl::ITiledRenderable::isMimeTypeSupported(). 431 virtual bool isMimeTypeSupported() override; 432 /// @see vcl::ITiledRenderable::setClientVisibleArea(). 433 virtual void setClientVisibleArea(const tools::Rectangle& rRectangle) override; 434 /// @see vcl::ITiledRenderable::setClientZoom. 435 virtual void setClientZoom(int nTilePixelWidth_, int nTilePixelHeight_, int nTileTwipWidth_, int nTileTwipHeight_) override; 436 /// @see vcl::ITiledRenderable::getPointer(). 437 virtual PointerStyle getPointer() override; 438 /// @see vcl::ITiledRenderable::getTrackedChanges(). 439 OUString getTrackedChanges() override; 440 /// @see vcl::ITiledRenderable::getTrackedChangeAuthors(). 441 OUString getTrackedChangeAuthors() override; 442 443 OUString getRulerState() override; 444 /// @see vcl::ITiledRenderable::getPostIts(). 445 OUString getPostIts() override; 446 447 // css::tiledrendering::XTiledRenderable 448 virtual void SAL_CALL paintTile( const ::css::uno::Any& Parent, ::sal_Int32 nOutputWidth, ::sal_Int32 nOutputHeight, ::sal_Int32 nTilePosX, ::sal_Int32 nTilePosY, ::sal_Int32 nTileWidth, ::sal_Int32 nTileHeight ) override; 449 450 void Invalidate(); 451 void Reactivate(SwDocShell* pNewDocShell); 452 SwXDocumentPropertyHelper * GetPropertyHelper (); IsValid() const453 bool IsValid() const {return bObjectValid;} 454 455 void InitNewDoc(); 456 457 SwUnoCursor* CreateCursorForSearch(css::uno::Reference< css::text::XTextCursor > & xCursor); 458 SwUnoCursor* FindAny(const css::uno::Reference< css::util::XSearchDescriptor > & xDesc, 459 css::uno::Reference< css::text::XTextCursor > & xCursor, bool bAll, 460 sal_Int32& nResult, 461 css::uno::Reference< css::uno::XInterface > const & xLastResult); 462 GetDocShell()463 SwDocShell* GetDocShell() {return pDocShell;} 464 }; 465 466 class SwXLinkTargetSupplier final : public cppu::WeakImplHelper 467 < 468 css::container::XNameAccess, 469 css::lang::XServiceInfo 470 > 471 { 472 SwXTextDocument* pxDoc; 473 OUString sTables; 474 OUString sFrames; 475 OUString sGraphics; 476 OUString sOLEs; 477 OUString sSections; 478 OUString sOutlines; 479 OUString sBookmarks; 480 481 public: 482 SwXLinkTargetSupplier(SwXTextDocument& rxDoc); 483 virtual ~SwXLinkTargetSupplier() override; 484 485 //XNameAccess 486 virtual css::uno::Any SAL_CALL getByName(const OUString& Name) override; 487 virtual css::uno::Sequence< OUString > SAL_CALL getElementNames() override; 488 virtual sal_Bool SAL_CALL hasByName(const OUString& Name) override; 489 490 //XElementAccess 491 virtual css::uno::Type SAL_CALL getElementType( ) override; 492 virtual sal_Bool SAL_CALL hasElements( ) override; 493 494 //XServiceInfo 495 virtual OUString SAL_CALL getImplementationName() override; 496 virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; 497 virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; 498 Invalidate()499 void Invalidate() {pxDoc = nullptr;} 500 }; 501 502 class SwXLinkNameAccessWrapper final : public cppu::WeakImplHelper 503 < 504 css::beans::XPropertySet, 505 css::container::XNameAccess, 506 css::lang::XServiceInfo, 507 css::document::XLinkTargetSupplier 508 > 509 { 510 css::uno::Reference< css::container::XNameAccess > xRealAccess; 511 const SfxItemPropertySet* pPropSet; 512 const OUString sLinkSuffix; 513 const OUString sLinkDisplayName; 514 SwXTextDocument* pxDoc; 515 516 public: 517 SwXLinkNameAccessWrapper(css::uno::Reference< css::container::XNameAccess > const & xAccess, 518 const OUString& rLinkDisplayName, const OUString& sSuffix); 519 SwXLinkNameAccessWrapper(SwXTextDocument& rxDoc, 520 const OUString& rLinkDisplayName, const OUString& sSuffix); 521 virtual ~SwXLinkNameAccessWrapper() override; 522 523 //XNameAccess 524 virtual css::uno::Any SAL_CALL getByName(const OUString& Name) override; 525 virtual css::uno::Sequence< OUString > SAL_CALL getElementNames() override; 526 virtual sal_Bool SAL_CALL hasByName(const OUString& Name) override; 527 528 //XElementAccess 529 virtual css::uno::Type SAL_CALL getElementType( ) override; 530 virtual sal_Bool SAL_CALL hasElements( ) override; 531 532 //XPropertySet 533 virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; 534 virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) override; 535 virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) override; 536 virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) override; 537 virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) override; 538 virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; 539 virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; 540 541 //XLinkTargetSupplier 542 virtual css::uno::Reference< css::container::XNameAccess > SAL_CALL getLinks() override; 543 544 //XServiceInfo 545 virtual OUString SAL_CALL getImplementationName() override; 546 virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; 547 virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; 548 549 }; 550 551 class SwXOutlineTarget final : public cppu::WeakImplHelper 552 < 553 css::beans::XPropertySet, 554 css::lang::XServiceInfo 555 > 556 { 557 const SfxItemPropertySet* pPropSet; 558 OUString const sOutlineText; 559 560 public: 561 SwXOutlineTarget(const OUString& rOutlineText); 562 virtual ~SwXOutlineTarget() override; 563 564 //XPropertySet 565 virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) override; 566 virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) override; 567 virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) override; 568 virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) override; 569 virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) override; 570 virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; 571 virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; 572 573 //XServiceInfo 574 virtual OUString SAL_CALL getImplementationName() override; 575 virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override; 576 virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; 577 }; 578 579 enum class SwCreateDrawTable { 580 Dash = 1, Gradient, Hatch, Bitmap, TransGradient, Marker, Defaults 581 }; 582 583 class SwXDocumentPropertyHelper : public SvxUnoForbiddenCharsTable 584 { 585 css::uno::Reference < css::uno::XInterface > xDashTable; 586 css::uno::Reference < css::uno::XInterface > xGradientTable; 587 css::uno::Reference < css::uno::XInterface > xHatchTable; 588 css::uno::Reference < css::uno::XInterface > xBitmapTable; 589 css::uno::Reference < css::uno::XInterface > xTransGradientTable; 590 css::uno::Reference < css::uno::XInterface > xMarkerTable; 591 css::uno::Reference < css::uno::XInterface > xDrawDefaults; 592 593 SwDoc* m_pDoc; 594 public: 595 SwXDocumentPropertyHelper(SwDoc& rDoc); 596 virtual ~SwXDocumentPropertyHelper() override; 597 css::uno::Reference<css::uno::XInterface> GetDrawTable(SwCreateDrawTable nWhich); 598 void Invalidate(); 599 600 virtual void onChange() override; 601 }; 602 603 // The class SwViewOptionAdjust_Impl is used to adjust the SwViewOption of 604 // the current SwViewShell so that fields are not printed as commands and 605 // hidden characters are always invisible. Hidden text and place holders 606 // should be printed according to the current print options. 607 // After printing the view options are restored 608 class SwViewOptionAdjust_Impl 609 { 610 SwViewShell * m_pShell; 611 SwViewOption const m_aOldViewOptions; 612 public: 613 SwViewOptionAdjust_Impl( SwViewShell& rSh, const SwViewOption &rViewOptions ); 614 ~SwViewOptionAdjust_Impl(); 615 void AdjustViewOptions( SwPrintData const* const pPrtOptions, bool setShowPlaceHoldersInPDF ); checkShell(const SwViewShell & rCompare) const616 bool checkShell( const SwViewShell& rCompare ) const 617 { return &rCompare == m_pShell; } DontTouchThatViewShellItSmellsFunny()618 void DontTouchThatViewShellItSmellsFunny() { m_pShell = nullptr; } 619 }; 620 621 #endif 622 623 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 624