Kaydet (Commit) 17f223c1 authored tarafından Andrzej Hunt's avatar Andrzej Hunt

Implement data area size retrieval.

The scaling is wrong, but seems to work in principle
(i.e. we get roughly 1.5x the correct size).


Conflicts:
	sc/source/ui/view/gridwin4.cxx

Change-Id: I6db1986e6cb1e5f3889ec3a462d999a9eab57331
üst d465dfb2
...@@ -18,6 +18,10 @@ $(eval $(call gb_Executable_use_externals,gtktiledviewer,\ ...@@ -18,6 +18,10 @@ $(eval $(call gb_Executable_use_externals,gtktiledviewer,\
gtk \ gtk \
)) ))
$(eval $(call gb_Executable_use_libraries,gtktiledviewer,\
libreofficekitgtk \
))
$(eval $(call gb_Executable_use_static_libraries,gtktiledviewer,\ $(eval $(call gb_Executable_use_static_libraries,gtktiledviewer,\
libreofficekit \ libreofficekit \
)) ))
......
...@@ -13,10 +13,7 @@ ...@@ -13,10 +13,7 @@
#include <gdk/gdk.h> #include <gdk/gdk.h>
#include <gtk/gtk.h> #include <gtk/gtk.h>
#define LOK_USE_UNSTABLE_API #include <LibreOfficeKit/LibreOfficeKitGtk.h>
#include <LibreOfficeKit/LibreOfficeKit.hxx>
using namespace ::lok;
static int help() static int help()
{ {
...@@ -24,56 +21,6 @@ static int help() ...@@ -24,56 +21,6 @@ static int help()
return 1; return 1;
} }
static GtkWidget* ourCanvas;
static GdkPixbuf* ourPixBuf = 0;
bool drawCallback(GtkWidget* /* The eventbox */, void* /* cairo_t* cr */, gpointer pData)
{
fprintf(stderr, "attempting to draw tile");
Document* pDocument = static_cast< Document* >( pData );
long nWidth, nHeight;
pDocument->getDocumentSize( &nWidth, &nHeight );
// Draw the whole document at once (for now)
int nRenderWidth = nWidth / 10;
int nRenderHeight = nHeight / 10;
int nRowStride;
if ( ourPixBuf &&
(gdk_pixbuf_get_width( ourPixBuf ) != nRenderWidth ||
gdk_pixbuf_get_height( ourPixBuf ) != nRenderHeight ) )
{
g_object_unref( G_OBJECT( ourPixBuf ) );
ourPixBuf = 0;
}
if (!ourPixBuf)
{
ourPixBuf = gdk_pixbuf_new( GDK_COLORSPACE_RGB,
true, 8,
nRenderWidth, nRenderHeight);
}
unsigned char* pBuffer = gdk_pixbuf_get_pixels( ourPixBuf );
pDocument->paintTile( pBuffer,
nRenderWidth, nRenderHeight,
&nRowStride,
0, 0, // origin
nWidth, nHeight );
// TODO: double check that the rowstride really matches what we expected,
// although presumably we'd already be crashing by now if things were
// wrong.
(void) nRowStride;
gtk_image_set_from_pixbuf( GTK_IMAGE( ourCanvas ), ourPixBuf );
return true;
}
int main( int argc, char* argv[] ) int main( int argc, char* argv[] )
{ {
if( argc < 2 || if( argc < 2 ||
...@@ -86,7 +33,7 @@ int main( int argc, char* argv[] ) ...@@ -86,7 +33,7 @@ int main( int argc, char* argv[] )
return 1; return 1;
} }
::lok::Office *pOffice = ::lok::lok_cpp_init( argv[1] ); LibreOfficeKit* pOffice = lok_init( argv[1] );
if( !pOffice ) if( !pOffice )
{ {
fprintf( stderr, "Failed to initialize\n" ); fprintf( stderr, "Failed to initialize\n" );
...@@ -103,25 +50,14 @@ int main( int argc, char* argv[] ) ...@@ -103,25 +50,14 @@ int main( int argc, char* argv[] )
g_signal_connect( pWindow, "destroy", G_CALLBACK(gtk_main_quit), NULL ); g_signal_connect( pWindow, "destroy", G_CALLBACK(gtk_main_quit), NULL );
GtkWidget* pScroller = gtk_scrolled_window_new( 0, 0 ); GtkWidget* pDocView = lok_docview_new( pOffice );
gtk_container_add( GTK_CONTAINER(pWindow), pScroller ); gtk_container_add( GTK_CONTAINER(pWindow), pDocView );
GtkWidget* pEventBox = gtk_event_box_new();
gtk_scrolled_window_add_with_viewport( GTK_SCROLLED_WINDOW(pScroller), pEventBox );
GtkWidget* pCanvas = gtk_image_new(); lok_docview_open_document( LOK_DOCVIEW(pDocView), argv[2] );
ourCanvas = pCanvas;
gtk_container_add( GTK_CONTAINER( pEventBox ), pCanvas );
g_signal_connect( G_OBJECT(pEventBox), "button-press-event", G_CALLBACK(drawCallback), pDocument); gtk_widget_show( pDocView );
gtk_widget_show( pCanvas );
gtk_widget_show( pEventBox );
gtk_widget_show( pScroller );
gtk_widget_show( pWindow ); gtk_widget_show( pWindow );
drawCallback( pCanvas, 0, pDocument );
gtk_main(); gtk_main();
return 0; return 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment