[Libreoffice-commits] core.git: Branch 'feature/calctiledrendering' - 4 commits - include/LibreOfficeKit libreofficekit/source sc/source
Andrzej Hunt
andrzej.hunt at collabora.com
Sun Jun 29 22:50:18 PDT 2014
include/LibreOfficeKit/LibreOfficeKit.h | 4 ----
libreofficekit/source/gtk/lokdocview.c | 22 +++++++++++++++-------
sc/source/ui/view/gridwin4.cxx | 24 ++++++++++++++++++++++--
3 files changed, 37 insertions(+), 13 deletions(-)
New commits:
commit 07aae44547c4494509986ed7dcbca6787a6ced27
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Fri Jun 27 09:28:17 2014 +0200
Kill saveAsWithOptions again. (merge error/oversight)
The declaration sneaked in again when merging the libreofficekit
tiled rendering changes, there's no actual implementation or use
of this anywhere though.
(cherry picked from commit 822cf7cb24eaa11ed3aa8d243370fba5bf6af889)
diff --git a/include/LibreOfficeKit/LibreOfficeKit.h b/include/LibreOfficeKit/LibreOfficeKit.h
index 77a8d0f..ba4319f 100644
--- a/include/LibreOfficeKit/LibreOfficeKit.h
+++ b/include/LibreOfficeKit/LibreOfficeKit.h
@@ -72,10 +72,6 @@ struct _LibreOfficeKitDocumentClass
const char *pUrl,
const char *pFormat,
const char *pFilterOptions);
- int (*saveAsWithOptions) (LibreOfficeKitDocument* pThis,
- const char *pUrl,
- const char *pFormat,
- const char *pFilterOptions);
#ifdef LOK_USE_UNSTABLE_API
LibreOfficeKitDocumentType (*getDocumentType) (LibreOfficeKitDocument* pThis);
commit 85ef5e243d7bece45cd62a742ad07d3db3d33777
Author: Michael Meeks <michael.meeks at collabora.com>
Date: Thu Jun 26 11:14:50 2014 +0100
LOK DocView: handle document load failure without crashing.
Change-Id: Icd668b3a7ec3ac58322a6af3f1da6008837d0b6b
(cherry picked from commit 3c440aad56cdaf3e0c05af6c7967a3d15b183034)
diff --git a/libreofficekit/source/gtk/lokdocview.c b/libreofficekit/source/gtk/lokdocview.c
index 49aaf2e..f813e68 100644
--- a/libreofficekit/source/gtk/lokdocview.c
+++ b/libreofficekit/source/gtk/lokdocview.c
@@ -22,8 +22,9 @@ static void lok_docview_init( LOKDocView* pDocView );
void lcl_onDestroy( LOKDocView* pDocView, gpointer pData )
{
(void) pData;
- pDocView->pDocument->pClass->destroy( pDocView->pDocument );
- pDocView->pDocument = 0;
+ if ( pDocView->pDocument )
+ pDocView->pDocument->pClass->destroy( pDocView->pDocument );
+ pDocView->pDocument = NULL;
}
SAL_DLLPUBLIC_EXPORT guint lok_docview_get_type()
@@ -139,15 +140,22 @@ SAL_DLLPUBLIC_EXPORT gboolean lok_docview_open_document( LOKDocView* pDocView, c
if ( pDocView->pDocument )
{
pDocView->pDocument->pClass->destroy( pDocView->pDocument );
- pDocView->pDocument = 0;
+ pDocView->pDocument = NULL;
}
pDocView->pDocument = pDocView->pOffice->pClass->documentLoad( pDocView->pOffice,
- pPath );
-
- renderDocument( pDocView );
+ pPath );
+ if ( !pDocView->pDocument )
+ {
+ // FIXME: should have a GError parameter and populate it.
+ char *pError = pDocView->pOffice->pClass->getError( pDocView->pOffice );
+ fprintf( stderr, "Error opening document '%s'\n", pError );
+ return FALSE;
+ }
+ else
+ renderDocument( pDocView );
- return FALSE;
+ return TRUE;
}
SAL_DLLPUBLIC_EXPORT void lok_docview_set_zoom ( LOKDocView* pDocView, float fZoom )
commit 952900510397d7bd64ee85edf245465b3d73d5a2
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Thu Jun 26 17:06:58 2014 +0100
Ensure we actually render all cells in the selected area.
Only cells within maVisibleRange are rendered, even if we request
a larger area (and maVisibleRange is otherwise not updated for tiled
rendering). Hence we should explicitly set it here.
Change-Id: I399be9df1f266a2b3d32a95483960b21f561c6b3
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index 08fc100..06838f6 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -383,6 +383,10 @@ void ScGridWindow::Paint( const Rectangle& rRect, OutputDevice* pOutDev )
nScrY += pOutDev->LogicToPixel( Point( 0, pDoc->GetRowHeight( nY2, nTab ) ) ).getY();
}
+ // We specifically need to set the visible range here -- by default it is
+ // set in UpdateVisibleRange which however uses the viewdata, which is
+ // completely irrelevant for tiled rendering.
+ maVisibleRange.set( nX1, nY1, nX2, nY2 );
Draw( nX1,nY1,nX2,nY2, SC_UPDATE_MARKS, pOutDev ); // nicht weiterzeichnen
bIsInPaint = false;
}
commit aec7317d368d0dcfeaccc19878bcb179de5075f5
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Thu Jun 26 14:30:08 2014 +0100
Take into account drawing layer for data area size.
The drawing layer could potentially have items that are outwith
the data area, but we probably want to have them included for
tiled rendering.
Change-Id: I958c4fa29491cdb0fd80392dfcfa033306f2b76c
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index a34b95e..08fc100 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -29,6 +29,7 @@
#include <sfx2/printer.hxx>
#include <vcl/settings.hxx>
+#include <svx/svdpage.hxx>
#include <svx/svdview.hxx>
#include "tabvwsh.hxx"
@@ -394,17 +395,32 @@ Size ScGridWindow::GetDataAreaSize()
SCTAB nTab = pViewData->GetTabNo();
+ // Actual data area
pDoc->ShrinkToDataArea( nTab,
nStartCol, nStartRow, nEndCol, nEndRow );
+ // Drawing layer area -- is completely independent of the data area.
+ ScTabViewShell* pTabViewShell = pViewData->GetViewShell();
+ SdrView* pDrawView = pTabViewShell->GetSdrView();
+ SdrPageView* pPageView = pDrawView->GetSdrPageView();
+ SdrPage* pPage = pPageView->GetPage();
+ Rectangle aDrawDataArea = pPage->GetAllObjBoundRect();
+ // Draw layer works in 100th mm, whereas we're working with TWIPs.
+ aDrawDataArea.SetPos( aDrawDataArea.TopLeft() * 1440 / 2540 );
+ aDrawDataArea.SetSize( Size( aDrawDataArea.GetSize().Width() * 1440 / 2540,
+ aDrawDataArea.GetSize().Height() * 1440 / 2540 ) );
+
+ // We specifically keep iterating until we have covered both the
+ // data area AND the drawing layer area. We also make sure that
+ // we return an area corresponding to a whole number of cells.
long nX = 0;
- for ( SCCOL i = 0; i <= nEndCol; i++ )
+ for ( SCCOL i = 0; i <= nEndCol || nX < aDrawDataArea.Right(); i++ )
{
nX += pDoc->GetColWidth( i, nTab );
}
long nY = 0;
- for ( SCROW i = 0; i <= nEndRow; i++ )
+ for ( SCROW i = 0; i <= nEndRow || nY < aDrawDataArea.Bottom(); i++ )
{
nY += pDoc->GetRowHeight( i, nTab );
}
More information about the Libreoffice-commits
mailing list