diff --git a/include/vcl/ITiledRenderable.hxx b/include/vcl/ITiledRenderable.hxx new file mode 100644 index 000000000000..fecfd6c77fae --- /dev/null +++ b/include/vcl/ITiledRenderable.hxx @@ -0,0 +1,48 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + */ + +#ifndef INCLUDED_VCL_ITILEDRENDERABLE_HXX +#define INCLUDED_VCL_ITILEDRENDERABLE_HXX + +#include +#include + +namespace vcl +{ + +class VCL_DLLPUBLIC ITiledRenderable +{ +public: + virtual ~ITiledRenderable() {}; + + /** + * Paint a tile to a given VirtualDevice. + * + * Output parameters are measured in pixels, tile parameters are in + * twips. + */ + virtual void paintTile( VirtualDevice &rDevice, + int nOutputWidth, + int nOutputHeight, + int nTilePosX, + int nTilePosY, + long nTileWidth, + long nTileHeight ) = 0; + + /** + * Get the document size in twips. + */ + virtual Size getDocumentSize() = 0; + +}; + +} // namespace vcl + +#endif // INCLUDED_VCL_ITILEDRENDERABLE_HXX diff --git a/sw/inc/unotxdoc.hxx b/sw/inc/unotxdoc.hxx index e43ea2be83aa..a48a8f34bab5 100644 --- a/sw/inc/unotxdoc.hxx +++ b/sw/inc/unotxdoc.hxx @@ -67,6 +67,7 @@ #include #include #include +#include #include #include @@ -161,7 +162,8 @@ SwXTextDocumentBaseClass; class SW_DLLPUBLIC SwXTextDocument : public SwXTextDocumentBaseClass, public SvxFmMSFactory, - public SfxBaseModel + public SfxBaseModel, + public ::vcl::ITiledRenderable { private: class Impl; @@ -428,6 +430,16 @@ public: // ::com::sun::star::util::XCloneable virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloneable > SAL_CALL createClone( ) throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE; + // ITiledRenderable + virtual void paintTile( VirtualDevice &rDevice, + int nOutputWidth, + int nOutputHeight, + int nTilePosX, + int nTilePosY, + long nTileWidth, + long nTileHeight ) SAL_OVERRIDE; + virtual Size getDocumentSize() SAL_OVERRIDE; + void Invalidate(); void Reactivate(SwDocShell* pNewDocShell); SwXDocumentPropertyHelper * GetPropertyHelper (); diff --git a/sw/source/uibase/uno/unotxdoc.cxx b/sw/source/uibase/uno/unotxdoc.cxx index 1ce5469bd189..b61eb77d98f1 100644 --- a/sw/source/uibase/uno/unotxdoc.cxx +++ b/sw/source/uibase/uno/unotxdoc.cxx @@ -3119,6 +3119,24 @@ uno::Reference< util::XCloneable > SwXTextDocument::createClone( ) throw (uno:: return uno::Reference< util::XCloneable >( xNewModel, UNO_QUERY ); } +void SwXTextDocument::paintTile( VirtualDevice &rDevice, + int nOutputWidth, int nOutputHeight, + int nTilePosX, int nTilePosY, + long nTileWidth, long nTileHeight ) +{ + SwDoc* pDoc = pDocShell->GetDoc(); + SwViewShell* pViewShell = pDoc->GetCurrentViewShell(); + pViewShell->PaintTile(rDevice, nOutputWidth, nOutputHeight, + nTilePosX, nTilePosY, nTileWidth, nTileHeight); +} + +Size SwXTextDocument::getDocumentSize() +{ + SwDoc* pDoc = pDocShell->GetDoc(); + SwViewShell* pViewShell = pDoc->GetCurrentViewShell(); + return pViewShell->GetDocSize(); +} + void * SAL_CALL SwXTextDocument::operator new( size_t t) throw() { return SwXTextDocumentBaseClass::operator new(t);