diff options
author | Andrzej Hunt <andrzej.hunt@collabora.com> | 2014-07-08 15:23:06 +0200 |
---|---|---|
committer | Andrzej Hunt <andrzej.hunt@collabora.com> | 2014-07-12 05:19:13 +0200 |
commit | 4d15212ef8de89a71387c00bdeb7d9a41409e467 (patch) | |
tree | 8607981865d3044ba662698cb615f8a04217da69 | |
parent | 312883ad755e76cee95735f9faca4a8354b068fd (diff) |
Add get/setPart to ITiledRenderable, and implement for sw/sc.
Change-Id: Iec3d6374f029149cadf8fb9c9b16fec90146c31e
-rw-r--r-- | desktop/source/lib/init.cxx | 47 | ||||
-rw-r--r-- | include/LibreOfficeKit/LibreOfficeKit.h | 3 | ||||
-rw-r--r-- | include/LibreOfficeKit/LibreOfficeKit.hxx | 11 | ||||
-rw-r--r-- | include/vcl/ITiledRenderable.hxx | 16 | ||||
-rw-r--r-- | sc/inc/docuno.hxx | 3 | ||||
-rw-r--r-- | sc/source/ui/unoobj/docuno.cxx | 18 | ||||
-rw-r--r-- | sw/inc/unotxdoc.hxx | 3 | ||||
-rw-r--r-- | sw/source/uibase/uno/unotxdoc.cxx | 15 |
8 files changed, 104 insertions, 12 deletions
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index 273446f1f142..bde1c508ef6f 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -181,7 +181,8 @@ extern "C" static void doc_destroy(LibreOfficeKitDocument* pThis); static int doc_saveAs(LibreOfficeKitDocument* pThis, const char* pUrl, const char* pFormat, const char* pFilterOptions); static LibreOfficeKitDocumentType doc_getDocumentType(LibreOfficeKitDocument* pThis); -static int doc_getNumberOfParts(LibreOfficeKitDocument* pThis); +static int doc_getParts(LibreOfficeKitDocument* pThis); +static int doc_getPart(LibreOfficeKitDocument* pThis); static void doc_setPart(LibreOfficeKitDocument* pThis, int nPart); void doc_paintTile(LibreOfficeKitDocument* pThis, unsigned char* pBuffer, @@ -210,7 +211,8 @@ struct LibLODocument_Impl : public _LibreOfficeKitDocument m_pDocumentClass->destroy = doc_destroy; m_pDocumentClass->saveAs = doc_saveAs; m_pDocumentClass->getDocumentType = doc_getDocumentType; - m_pDocumentClass->getNumberOfParts = doc_getNumberOfParts; + m_pDocumentClass->getParts = doc_getParts; + m_pDocumentClass->getPart = doc_getPart; m_pDocumentClass->setPart = doc_setPart; m_pDocumentClass->paintTile = doc_paintTile; m_pDocumentClass->getDocumentSize = doc_getDocumentSize; @@ -421,17 +423,46 @@ static LibreOfficeKitDocumentType doc_getDocumentType (LibreOfficeKitDocument* p return LOK_DOCTYPE_OTHER; } -static int doc_getNumberOfParts (LibreOfficeKitDocument* pThis) +static int doc_getParts (LibreOfficeKitDocument* pThis) { - (void) pThis; - // Assume writer document for now. - return 1; + LibLODocument_Impl* pDocument = static_cast<LibLODocument_Impl*>(pThis); + + ::vcl::ITiledRenderable* pDoc = dynamic_cast< ::vcl::ITiledRenderable* >( pDocument->mxComponent.get() ); + if (!pDoc) + { + gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering"; + return 0; + } + + return pDoc->getParts(); +} + +static int doc_getPart (LibreOfficeKitDocument* pThis) +{ + LibLODocument_Impl* pDocument = static_cast<LibLODocument_Impl*>(pThis); + + ::vcl::ITiledRenderable* pDoc = dynamic_cast< ::vcl::ITiledRenderable* >( pDocument->mxComponent.get() ); + if (!pDoc) + { + gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering"; + return 0; + } + + return pDoc->getPart(); } static void doc_setPart(LibreOfficeKitDocument* pThis, int nPart) { - (void) pThis; - (void) nPart; + LibLODocument_Impl* pDocument = static_cast<LibLODocument_Impl*>(pThis); + + ::vcl::ITiledRenderable* pDoc = dynamic_cast< ::vcl::ITiledRenderable* >( pDocument->mxComponent.get() ); + if (!pDoc) + { + gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering"; + return; + } + + pDoc->setPart( nPart ); } void doc_paintTile (LibreOfficeKitDocument* pThis, diff --git a/include/LibreOfficeKit/LibreOfficeKit.h b/include/LibreOfficeKit/LibreOfficeKit.h index ba4319f70a3d..675eabc5ae5e 100644 --- a/include/LibreOfficeKit/LibreOfficeKit.h +++ b/include/LibreOfficeKit/LibreOfficeKit.h @@ -77,8 +77,9 @@ struct _LibreOfficeKitDocumentClass // Part refers to either indivual sheets in a Spreadsheet, or slides // in a Slideshow, and has no relevance for wrtier documents. - int (*getNumberOfParts) (LibreOfficeKitDocument* pThis); + int (*getParts) (LibreOfficeKitDocument* pThis); + int (*getPart) (LibreOfficeKitDocument* pThis); void (*setPart) (LibreOfficeKitDocument* pThis, int nPart); diff --git a/include/LibreOfficeKit/LibreOfficeKit.hxx b/include/LibreOfficeKit/LibreOfficeKit.hxx index 427ea833c5a9..32faf26e6291 100644 --- a/include/LibreOfficeKit/LibreOfficeKit.hxx +++ b/include/LibreOfficeKit/LibreOfficeKit.hxx @@ -49,9 +49,14 @@ public: return mpDoc->pClass->getDocumentType(mpDoc); } - inline int getNumberOfParts() + inline int getParts() { - return mpDoc->pClass->getNumberOfParts(mpDoc); + return mpDoc->pClass->getParts(mpDoc); + } + + inline int getPart() + { + return mpDoc->pClass->getPart(mpDoc); } inline void setPart(int nPart) @@ -75,7 +80,7 @@ public: inline void getDocumentSize(long* pWidth, long* pHeight) { - mpDoc->getDocumentSize(mpDoc, pWidth, pHeight); + mpDoc->pClass->getDocumentSize(mpDoc, pWidth, pHeight); } #endif // LOK_USE_UNSTABLE_API }; diff --git a/include/vcl/ITiledRenderable.hxx b/include/vcl/ITiledRenderable.hxx index e9cea10af371..55e1b39411f9 100644 --- a/include/vcl/ITiledRenderable.hxx +++ b/include/vcl/ITiledRenderable.hxx @@ -41,6 +41,22 @@ public: */ virtual Size getDocumentSize() = 0; + /** + * Set the document "part", i.e. slide for a slideshow, and + * tab for a spreadsheet. + */ + virtual void setPart( int nPart ) = 0; + + /** + * Get the number of parts -- see setPart for further details. + */ + virtual int getParts() = 0; + + /** + * Get the currently displayed/selected part -- see setPart for further + * details. + */ + virtual int getPart() = 0; }; } // namespace vcl diff --git a/sc/inc/docuno.hxx b/sc/inc/docuno.hxx index 27575fe66a2c..932017da9b89 100644 --- a/sc/inc/docuno.hxx +++ b/sc/inc/docuno.hxx @@ -363,6 +363,9 @@ public: long nTileWidth, long nTileHeight ) SAL_OVERRIDE; virtual Size getDocumentSize() SAL_OVERRIDE; + virtual void setPart( int nPart ) SAL_OVERRIDE; + virtual int getPart() SAL_OVERRIDE; + virtual int getParts() SAL_OVERRIDE; }; class ScDrawPagesObj : public cppu::WeakImplHelper2< diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx index 6852d1c1c438..2893974ced06 100644 --- a/sc/source/ui/unoobj/docuno.cxx +++ b/sc/source/ui/unoobj/docuno.cxx @@ -461,6 +461,24 @@ void ScModelObj::paintTile( VirtualDevice& rDevice, nTilePosX, nTilePosY, nTileWidth, nTileHeight ); } +void ScModelObj::setPart( int nPart ) +{ + ScViewData* pViewData = ScDocShell::GetViewData(); + pViewData->SetTabNo( nPart ); +} + +int ScModelObj::getParts() +{ + ScDocument& rDoc = pDocShell->GetDocument(); + return rDoc.GetTableCount(); +} + +int ScModelObj::getPart() +{ + ScViewData* pViewData = ScDocShell::GetViewData(); + return pViewData->GetTabNo(); +} + Size ScModelObj::getDocumentSize() { // TODO: not sure what we want to do here, maybe just return the size for a certain diff --git a/sw/inc/unotxdoc.hxx b/sw/inc/unotxdoc.hxx index a48a8f34bab5..131807135dcb 100644 --- a/sw/inc/unotxdoc.hxx +++ b/sw/inc/unotxdoc.hxx @@ -439,6 +439,9 @@ public: long nTileWidth, long nTileHeight ) SAL_OVERRIDE; virtual Size getDocumentSize() SAL_OVERRIDE; + virtual void setPart( int nPart ) SAL_OVERRIDE; + virtual int getPart() SAL_OVERRIDE; + virtual int getParts() SAL_OVERRIDE; void Invalidate(); void Reactivate(SwDocShell* pNewDocShell); diff --git a/sw/source/uibase/uno/unotxdoc.cxx b/sw/source/uibase/uno/unotxdoc.cxx index 9ceee4566add..10f618579510 100644 --- a/sw/source/uibase/uno/unotxdoc.cxx +++ b/sw/source/uibase/uno/unotxdoc.cxx @@ -3137,6 +3137,21 @@ Size SwXTextDocument::getDocumentSize() return pViewShell->GetDocSize(); } +void SwXTextDocument::setPart( int /*nPart*/ ) +{ +} + +int SwXTextDocument::getPart() +{ + return 0; +} + +int SwXTextDocument::getParts() +{ + // For now we treat the document as one large piece. + return 1; +} + void * SAL_CALL SwXTextDocument::operator new( size_t t) throw() { return SwXTextDocumentBaseClass::operator new(t); |