summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrzej Hunt <andrzej.hunt@collabora.com>2014-05-09 14:39:55 +0100
committerAndrzej Hunt <andrzej.hunt@collabora.com>2014-05-09 14:39:55 +0100
commit3e2b5e619e7d8fc5eb1a23b5b0e93a049752c443 (patch)
tree1ce42370c4b5c7c43eb71662c1d0302d5fa532cd
parentd28eea90e638494db2b37f5a702b862a53d57367 (diff)
Add some rendering to our gtktiledviewer.
Just a hardcoded single tile for now. Change-Id: I9bfae4243e0083aa8fca38ae98dc369fe6de36fb
-rw-r--r--desktop/Executable_gtktiledviewer.mk1
-rw-r--r--desktop/qa/gtktiledviewer/gtktiledviewer.cxx52
2 files changed, 46 insertions, 7 deletions
diff --git a/desktop/Executable_gtktiledviewer.mk b/desktop/Executable_gtktiledviewer.mk
index 17dc2d6439db..c2ea164f072d 100644
--- a/desktop/Executable_gtktiledviewer.mk
+++ b/desktop/Executable_gtktiledviewer.mk
@@ -25,6 +25,7 @@ $(eval $(call gb_Executable_use_static_libraries,gtktiledviewer,\
$(eval $(call gb_Executable_add_libs,gtktiledviewer,\
-lX11 \
-lXext \
+ -lXrender \
-lSM \
-lICE \
))
diff --git a/desktop/qa/gtktiledviewer/gtktiledviewer.cxx b/desktop/qa/gtktiledviewer/gtktiledviewer.cxx
index 22f76849191e..60a2e18201a3 100644
--- a/desktop/qa/gtktiledviewer/gtktiledviewer.cxx
+++ b/desktop/qa/gtktiledviewer/gtktiledviewer.cxx
@@ -10,8 +10,16 @@
#include <stdio.h>
#include <string.h>
+#include <gdk/gdk.h>
+#include <gdk/gdkx.h>
#include <gtk/gtk.h>
+#include <X11/extensions/Xrender.h>
+
+// Only for the SystemGraphicsData struct, and hopefully we can find some better
+// replacement for that at some point.
+#include <vcl/sysdata.hxx>
+
#define LLO_USE_UNSTABLE_API
#include <liblibreoffice.hxx>
@@ -21,6 +29,34 @@ static int help()
return 1;
}
+
+bool drawCallback(GtkWidget* pCanvas, void* /* cairo_t* cr */, gpointer pData)
+{
+ fprintf(stderr, "attempting to draw tile");
+
+ LODocument* pDocument = static_cast< LODocument* >( pData );
+
+ // This is UNX only for now, we need to get the appropriate equivalents
+ // for windows/mac (see SystemGraphicsData for what we need)
+ SystemGraphicsData aSystemGraphicsData;
+ aSystemGraphicsData.pDisplay = GDK_WINDOW_XDISPLAY( pCanvas->window );
+ aSystemGraphicsData.hDrawable = GDK_WINDOW_XWINDOW( pCanvas->window );
+ aSystemGraphicsData.pVisual = GDK_VISUAL_XVISUAL( gtk_widget_get_visual( pCanvas ) );
+ aSystemGraphicsData.nScreen = GDK_SCREEN_XNUMBER( gtk_widget_get_screen( pCanvas ) );
+ aSystemGraphicsData.nDepth = gdk_visual_get_depth( gtk_widget_get_visual( pCanvas ) );
+ aSystemGraphicsData.aColormap = GDK_COLORMAP_XCOLORMAP(
+ gdk_screen_get_default_colormap(
+ gtk_widget_get_screen( pCanvas ) ) );
+ aSystemGraphicsData.pXRenderFormat = XRenderFindVisualFormat(
+ GDK_WINDOW_XDISPLAY( pCanvas->window ),
+ GDK_VISUAL_XVISUAL( gtk_widget_get_visual( pCanvas ) ) );
+
+ // Hardcoded tile just to see whether or not we get any sort of output.
+ pDocument->paintTile( &aSystemGraphicsData, 256, 256, 0, 0, 5000, 5000 );
+ return true;
+
+}
+
int main( int argc, char* argv[] )
{
if( argc < 2 ||
@@ -48,26 +84,28 @@ int main( int argc, char* argv[] )
}
LODocument* pDocument = pOffice->documentLoad( argv[2] );
- (void) pDocument;
-
- GtkWidget *pWindow;
- GtkWidget *pScroller;
gtk_init( &argc, &argv );
- pWindow = gtk_window_new( GTK_WINDOW_TOPLEVEL );
+ GtkWidget *pWindow = gtk_window_new( GTK_WINDOW_TOPLEVEL );
gtk_window_set_title( GTK_WINDOW(pWindow), "LibreOffice GTK Tiled Viewer" );
gtk_window_set_default_size(GTK_WINDOW(pWindow), 800, 600);
g_signal_connect( pWindow, "destroy", G_CALLBACK(gtk_main_quit), NULL );
- pScroller = gtk_scrolled_window_new( 0, 0 );
+ GtkWidget* pScroller = gtk_scrolled_window_new( 0, 0 );
gtk_container_add( GTK_CONTAINER(pWindow), pScroller );
+ GtkWidget* pCanvas = gtk_drawing_area_new();
+ gtk_widget_set_size_request( pCanvas, 1000, 1000 );
+ gtk_scrolled_window_add_with_viewport( GTK_SCROLLED_WINDOW(pScroller), pCanvas );
+
+ g_signal_connect( G_OBJECT(pCanvas), "expose_event", G_CALLBACK(drawCallback), pDocument);
+
+ gtk_widget_show( pCanvas );
gtk_widget_show( pScroller );
gtk_widget_show( pWindow );
- //GDK_WINDOW_XWINDOW
gtk_main();