|
 |
f325b2 |
From ed4ab7cba0e5f7eaf18b4f10b731d52ae3b8f049 Mon Sep 17 00:00:00 2001
|
|
 |
f325b2 |
From: Miklos Vajna <vmiklos@collabora.co.uk>
|
|
 |
f325b2 |
Date: Tue, 29 Sep 2015 10:47:31 +0200
|
|
 |
f325b2 |
Subject: [PATCH 164/398] lok: add Document::getPartPageRectangles()
|
|
 |
f325b2 |
|
|
 |
f325b2 |
(cherry picked from commit d355207b45755cfe1eef0147bc25ead931741684)
|
|
 |
f325b2 |
|
|
 |
f325b2 |
Change-Id: I20acd44f7a81471982ba96ad3894a9124e035c5f
|
|
 |
f325b2 |
---
|
|
 |
f325b2 |
desktop/qa/desktop_lib/test_desktop_lib.cxx | 25 +++++++++++++++++++++++++
|
|
 |
f325b2 |
desktop/source/lib/init.cxx | 19 +++++++++++++++++++
|
|
 |
f325b2 |
include/LibreOfficeKit/LibreOfficeKit.h | 3 +++
|
|
 |
f325b2 |
include/LibreOfficeKit/LibreOfficeKit.hxx | 14 ++++++++++++++
|
|
 |
f325b2 |
include/vcl/ITiledRenderable.hxx | 8 ++++++++
|
|
 |
f325b2 |
sw/inc/crsrsh.hxx | 3 +++
|
|
 |
f325b2 |
sw/inc/unotxdoc.hxx | 2 ++
|
|
 |
f325b2 |
sw/source/core/crsr/crsrsh.cxx | 14 ++++++++++++++
|
|
 |
f325b2 |
sw/source/uibase/uno/unotxdoc.cxx | 11 +++++++++++
|
|
 |
f325b2 |
9 files changed, 99 insertions(+)
|
|
 |
f325b2 |
|
|
 |
f325b2 |
diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx
|
|
 |
f325b2 |
index d7b93472c1b5..a7696d824bee 100644
|
|
 |
f325b2 |
--- a/desktop/qa/desktop_lib/test_desktop_lib.cxx
|
|
 |
f325b2 |
+++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx
|
|
 |
f325b2 |
@@ -52,12 +52,14 @@ public:
|
|
 |
f325b2 |
void testGetFonts();
|
|
 |
f325b2 |
void testCreateView();
|
|
 |
f325b2 |
void testGetFilterTypes();
|
|
 |
f325b2 |
+ void testGetPartPageRectangles();
|
|
 |
f325b2 |
|
|
 |
f325b2 |
CPPUNIT_TEST_SUITE(DesktopLOKTest);
|
|
 |
f325b2 |
CPPUNIT_TEST(testGetStyles);
|
|
 |
f325b2 |
CPPUNIT_TEST(testGetFonts);
|
|
 |
f325b2 |
CPPUNIT_TEST(testCreateView);
|
|
 |
f325b2 |
CPPUNIT_TEST(testGetFilterTypes);
|
|
 |
f325b2 |
+ CPPUNIT_TEST(testGetPartPageRectangles);
|
|
 |
f325b2 |
CPPUNIT_TEST_SUITE_END();
|
|
 |
f325b2 |
|
|
 |
f325b2 |
uno::Reference<lang::XComponent> mxComponent;
|
|
 |
f325b2 |
@@ -152,6 +154,29 @@ void DesktopLOKTest::testCreateView()
|
|
 |
f325b2 |
closeDoc();
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
|
|
 |
f325b2 |
+void DesktopLOKTest::testGetPartPageRectangles()
|
|
 |
f325b2 |
+{
|
|
 |
f325b2 |
+ // Test that we get as many page rectangles as expected: blank document is
|
|
 |
f325b2 |
+ // one page.
|
|
 |
f325b2 |
+ LibLODocument_Impl* pDocument = loadDoc("blank_text.odt");
|
|
 |
f325b2 |
+ char* pRectangles = pDocument->pClass->getPartPageRectangles(pDocument);
|
|
 |
f325b2 |
+ OUString sRectangles = OUString::fromUtf8(pRectangles);
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ std::vector<OUString> aRectangles;
|
|
 |
f325b2 |
+ sal_Int32 nIndex = 0;
|
|
 |
f325b2 |
+ do
|
|
 |
f325b2 |
+ {
|
|
 |
f325b2 |
+ OUString aRectangle = sRectangles.getToken(0, ';', nIndex);
|
|
 |
f325b2 |
+ if (!aRectangle.isEmpty())
|
|
 |
f325b2 |
+ aRectangles.push_back(aRectangle);
|
|
 |
f325b2 |
+ }
|
|
 |
f325b2 |
+ while (nIndex >= 0);
|
|
 |
f325b2 |
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), aRectangles.size());
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ free(pRectangles);
|
|
 |
f325b2 |
+ closeDoc();
|
|
 |
f325b2 |
+}
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
void DesktopLOKTest::testGetFilterTypes()
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
LibLibreOffice_Impl aOffice;
|
|
 |
f325b2 |
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
|
|
 |
f325b2 |
index 5d716abdf8c4..4432ec8ea889 100644
|
|
 |
f325b2 |
--- a/desktop/source/lib/init.cxx
|
|
 |
f325b2 |
+++ b/desktop/source/lib/init.cxx
|
|
 |
f325b2 |
@@ -203,6 +203,7 @@ static void doc_destroy(LibreOfficeKitDocument* pThis);
|
|
 |
f325b2 |
static int doc_saveAs(LibreOfficeKitDocument* pThis, const char* pUrl, const char* pFormat, const char* pFilterOptions);
|
|
 |
f325b2 |
static int doc_getDocumentType(LibreOfficeKitDocument* pThis);
|
|
 |
f325b2 |
static int doc_getParts(LibreOfficeKitDocument* pThis);
|
|
 |
f325b2 |
+static char* doc_getPartPageRectangles(LibreOfficeKitDocument* pThis);
|
|
 |
f325b2 |
static int doc_getPart(LibreOfficeKitDocument* pThis);
|
|
 |
f325b2 |
static void doc_setPart(LibreOfficeKitDocument* pThis, int nPart);
|
|
 |
f325b2 |
static char* doc_getPartName(LibreOfficeKitDocument* pThis, int nPart);
|
|
 |
f325b2 |
@@ -265,6 +266,7 @@ LibLODocument_Impl::LibLODocument_Impl(const uno::Reference
|
|
 |
f325b2 |
m_pDocumentClass->saveAs = doc_saveAs;
|
|
 |
f325b2 |
m_pDocumentClass->getDocumentType = doc_getDocumentType;
|
|
 |
f325b2 |
m_pDocumentClass->getParts = doc_getParts;
|
|
 |
f325b2 |
+ m_pDocumentClass->getPartPageRectangles = doc_getPartPageRectangles;
|
|
 |
f325b2 |
m_pDocumentClass->getPart = doc_getPart;
|
|
 |
f325b2 |
m_pDocumentClass->setPart = doc_setPart;
|
|
 |
f325b2 |
m_pDocumentClass->getPartName = doc_getPartName;
|
|
 |
f325b2 |
@@ -658,6 +660,23 @@ static void doc_setPart(LibreOfficeKitDocument* pThis, int nPart)
|
|
 |
f325b2 |
pDoc->setPart( nPart );
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
|
|
 |
f325b2 |
+static char* doc_getPartPageRectangles(LibreOfficeKitDocument* pThis)
|
|
 |
f325b2 |
+{
|
|
 |
f325b2 |
+ ITiledRenderable* pDoc = getTiledRenderable(pThis);
|
|
 |
f325b2 |
+ if (!pDoc)
|
|
 |
f325b2 |
+ {
|
|
 |
f325b2 |
+ gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
|
|
 |
f325b2 |
+ return 0;
|
|
 |
f325b2 |
+ }
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ OUString sRectangles = pDoc->getPartPageRectangles();
|
|
 |
f325b2 |
+ OString aString = OUStringToOString(sRectangles, RTL_TEXTENCODING_UTF8);
|
|
 |
f325b2 |
+ char* pMemory = static_cast<char*>(malloc(aString.getLength() + 1));
|
|
 |
f325b2 |
+ strcpy(pMemory, aString.getStr());
|
|
 |
f325b2 |
+ return pMemory;
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+}
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
static char* doc_getPartName(LibreOfficeKitDocument* pThis, int nPart)
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
ITiledRenderable* pDoc = getTiledRenderable(pThis);
|
|
 |
f325b2 |
diff --git a/include/LibreOfficeKit/LibreOfficeKit.h b/include/LibreOfficeKit/LibreOfficeKit.h
|
|
 |
f325b2 |
index d5094bdb1b76..d83dd49f32b5 100644
|
|
 |
f325b2 |
--- a/include/LibreOfficeKit/LibreOfficeKit.h
|
|
 |
f325b2 |
+++ b/include/LibreOfficeKit/LibreOfficeKit.h
|
|
 |
f325b2 |
@@ -85,6 +85,9 @@ struct _LibreOfficeKitDocumentClass
|
|
 |
f325b2 |
/// @see lok::Document::getParts().
|
|
 |
f325b2 |
int (*getParts) (LibreOfficeKitDocument* pThis);
|
|
 |
f325b2 |
|
|
 |
f325b2 |
+ /// @see lok::Document::getPartPageRectangles().
|
|
 |
f325b2 |
+ char* (*getPartPageRectangles) (LibreOfficeKitDocument* pThis);
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
/// @see lok::Document::getPart().
|
|
 |
f325b2 |
int (*getPart) (LibreOfficeKitDocument* pThis);
|
|
 |
f325b2 |
|
|
 |
f325b2 |
diff --git a/include/LibreOfficeKit/LibreOfficeKit.hxx b/include/LibreOfficeKit/LibreOfficeKit.hxx
|
|
 |
f325b2 |
index 207a9ce6e883..cd12ad64f245 100644
|
|
 |
f325b2 |
--- a/include/LibreOfficeKit/LibreOfficeKit.hxx
|
|
 |
f325b2 |
+++ b/include/LibreOfficeKit/LibreOfficeKit.hxx
|
|
 |
f325b2 |
@@ -76,6 +76,20 @@ public:
|
|
 |
f325b2 |
return mpDoc->pClass->getParts(mpDoc);
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
|
|
 |
f325b2 |
+ /**
|
|
 |
f325b2 |
+ * Get the logical rectangle of each part in the document.
|
|
 |
f325b2 |
+ *
|
|
 |
f325b2 |
+ * A part refers to an individual page in Writer and has no relevant for
|
|
 |
f325b2 |
+ * Calc or Impress.
|
|
 |
f325b2 |
+ *
|
|
 |
f325b2 |
+ * @return a rectangle list, using the same format as
|
|
 |
f325b2 |
+ * LOK_CALLBACK_TEXT_SELECTION.
|
|
 |
f325b2 |
+ */
|
|
 |
f325b2 |
+ inline char* getPartPageRectangles()
|
|
 |
f325b2 |
+ {
|
|
 |
f325b2 |
+ return mpDoc->pClass->getPartPageRectangles(mpDoc);
|
|
 |
f325b2 |
+ }
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
/// Get the current part of the document.
|
|
 |
f325b2 |
inline int getPart()
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
diff --git a/include/vcl/ITiledRenderable.hxx b/include/vcl/ITiledRenderable.hxx
|
|
 |
f325b2 |
index 6639745e4a2f..fd336f603296 100644
|
|
 |
f325b2 |
--- a/include/vcl/ITiledRenderable.hxx
|
|
 |
f325b2 |
+++ b/include/vcl/ITiledRenderable.hxx
|
|
 |
f325b2 |
@@ -139,6 +139,14 @@ public:
|
|
 |
f325b2 |
* @see lok::Document::resetSelection().
|
|
 |
f325b2 |
*/
|
|
 |
f325b2 |
virtual void resetSelection() = 0;
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ /**
|
|
 |
f325b2 |
+ * @see lok::Document::getPartPageRectangles().
|
|
 |
f325b2 |
+ */
|
|
 |
f325b2 |
+ virtual OUString getPartPageRectangles()
|
|
 |
f325b2 |
+ {
|
|
 |
f325b2 |
+ return OUString();
|
|
 |
f325b2 |
+ }
|
|
 |
f325b2 |
};
|
|
 |
f325b2 |
|
|
 |
f325b2 |
} // namespace vcl
|
|
 |
f325b2 |
diff --git a/sw/inc/crsrsh.hxx b/sw/inc/crsrsh.hxx
|
|
 |
f325b2 |
index 073a8dfb1d8d..ee849074cd7d 100644
|
|
 |
f325b2 |
--- a/sw/inc/crsrsh.hxx
|
|
 |
f325b2 |
+++ b/sw/inc/crsrsh.hxx
|
|
 |
f325b2 |
@@ -852,6 +852,9 @@ public:
|
|
 |
f325b2 |
@return the textual description of the current selection
|
|
 |
f325b2 |
*/
|
|
 |
f325b2 |
OUString GetCrsrDescr() const;
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ /// Implementation of lok::Document::getPartPageRectangles() for Writer.
|
|
 |
f325b2 |
+ OUString getPageRectangles();
|
|
 |
f325b2 |
};
|
|
 |
f325b2 |
|
|
 |
f325b2 |
// Cursor Inlines:
|
|
 |
f325b2 |
diff --git a/sw/inc/unotxdoc.hxx b/sw/inc/unotxdoc.hxx
|
|
 |
f325b2 |
index 9f0b03b3af38..311147eeaaea 100644
|
|
 |
f325b2 |
--- a/sw/inc/unotxdoc.hxx
|
|
 |
f325b2 |
+++ b/sw/inc/unotxdoc.hxx
|
|
 |
f325b2 |
@@ -431,6 +431,8 @@ public:
|
|
 |
f325b2 |
virtual void setGraphicSelection(int nType, int nX, int nY) SAL_OVERRIDE;
|
|
 |
f325b2 |
/// @see vcl::ITiledRenderable::resetSelection().
|
|
 |
f325b2 |
virtual void resetSelection() SAL_OVERRIDE;
|
|
 |
f325b2 |
+ /// @see vcl::ITiledRenderable::getPartPageRectangles().
|
|
 |
f325b2 |
+ virtual OUString getPartPageRectangles() SAL_OVERRIDE;
|
|
 |
f325b2 |
|
|
 |
f325b2 |
// ::com::sun::star::tiledrendering::XTiledRenderable
|
|
 |
f325b2 |
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 ) throw (::css::uno::RuntimeException, ::std::exception) SAL_OVERRIDE;
|
|
 |
f325b2 |
diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx
|
|
 |
f325b2 |
index cbb89aca8868..ffff6a6b2a93 100644
|
|
 |
f325b2 |
--- a/sw/source/core/crsr/crsrsh.cxx
|
|
 |
f325b2 |
+++ b/sw/source/core/crsr/crsrsh.cxx
|
|
 |
f325b2 |
@@ -1201,6 +1201,20 @@ sal_uInt16 SwCrsrShell::GetPageCnt()
|
|
 |
f325b2 |
return GetLayout()->GetPageNum();
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
|
|
 |
f325b2 |
+OUString SwCrsrShell::getPageRectangles()
|
|
 |
f325b2 |
+{
|
|
 |
f325b2 |
+ CurrShell aCurr(this);
|
|
 |
f325b2 |
+ SwRootFrm* pLayout = GetLayout();
|
|
 |
f325b2 |
+ std::stringstream ss;
|
|
 |
f325b2 |
+ for (const SwFrm* pFrm = pLayout->GetLower(); pFrm; pFrm = pFrm->GetNext())
|
|
 |
f325b2 |
+ {
|
|
 |
f325b2 |
+ if (pFrm != pLayout->GetLower())
|
|
 |
f325b2 |
+ ss << "; ";
|
|
 |
f325b2 |
+ ss << pFrm->Frm().Left() << ", " << pFrm->Frm().Top() << ", " << pFrm->Frm().Width() << ", " << pFrm->Frm().Height();
|
|
 |
f325b2 |
+ }
|
|
 |
f325b2 |
+ return OUString::fromUtf8(ss.str().c_str());
|
|
 |
f325b2 |
+}
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
/// go to the next SSelection
|
|
 |
f325b2 |
bool SwCrsrShell::GoNextCrsr()
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
diff --git a/sw/source/uibase/uno/unotxdoc.cxx b/sw/source/uibase/uno/unotxdoc.cxx
|
|
 |
f325b2 |
index d6315d2964ae..26ab19f170b9 100644
|
|
 |
f325b2 |
--- a/sw/source/uibase/uno/unotxdoc.cxx
|
|
 |
f325b2 |
+++ b/sw/source/uibase/uno/unotxdoc.cxx
|
|
 |
f325b2 |
@@ -3177,6 +3177,17 @@ int SwXTextDocument::getParts()
|
|
 |
f325b2 |
return pWrtShell->GetPageCnt();
|
|
 |
f325b2 |
}
|
|
 |
f325b2 |
|
|
 |
f325b2 |
+OUString SwXTextDocument::getPartPageRectangles()
|
|
 |
f325b2 |
+{
|
|
 |
f325b2 |
+ SolarMutexGuard aGuard;
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ SwWrtShell* pWrtShell = pDocShell->GetWrtShell();
|
|
 |
f325b2 |
+ if (!pWrtShell)
|
|
 |
f325b2 |
+ return OUString();
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
+ return pWrtShell->getPageRectangles();
|
|
 |
f325b2 |
+}
|
|
 |
f325b2 |
+
|
|
 |
f325b2 |
int SwXTextDocument::getPart()
|
|
 |
f325b2 |
{
|
|
 |
f325b2 |
SolarMutexGuard aGuard;
|
|
 |
f325b2 |
--
|
|
 |
f325b2 |
2.12.0
|
|
 |
f325b2 |
|