diff options
author | Andrzej Hunt <andrzej.hunt@collabora.com> | 2014-06-13 17:31:42 +0100 |
---|---|---|
committer | Andrzej Hunt <andrzej.hunt@collabora.com> | 2014-06-25 13:04:32 +0100 |
commit | f35b010a95ad877988bb5eaa4f689644b00f702c (patch) | |
tree | 0173db39686b8ef5d1749b1dede4d7f471422256 | |
parent | 837631c6cfa189280f9e723481f2251de56a1d92 (diff) |
Add ITiledRenderable.
We want to have a simple interface that allows access to tiled
rendering without digging into the internals of writer
(and in the future calc/impress/draw).
Change-Id: Ia9c278a48c919333186e5361ff25bb1ab603b846
-rw-r--r-- | include/vcl/ITiledRenderable.hxx | 48 | ||||
-rw-r--r-- | sw/inc/unotxdoc.hxx | 14 | ||||
-rw-r--r-- | sw/source/uibase/uno/unotxdoc.cxx | 18 |
3 files changed, 79 insertions, 1 deletions
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 <tools/gen.hxx> +#include <vcl/virdev.hxx> + +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 <cppuhelper/weak.hxx> #include <cppuhelper/implbase2.hxx> #include <cppuhelper/implbase4.hxx> +#include <vcl/ITiledRenderable.hxx> #include <unobaseclass.hxx> #include <viewopt.hxx> @@ -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); |