From a9ed2a81b472091a2f255cf1ffba6f48001f46d6 Mon Sep 17 00:00:00 2001 From: Pranav Kant Date: Sun, 26 Jul 2015 18:24:02 +0530 Subject: [PATCH 081/398] lokdocview: Use only one ctor for instantiating LOEvent ... and set each member variable manually. Additionally, improves documentation of the struct LOEvent. Change-Id: I2e8e1dc70298dc85943769e2f01c6127eedb8207 (cherry picked from commit 4fb3d2e6be39fb3a7323b11a02adf853ed37a3ca) --- libreofficekit/source/gtk/lokdocview.cxx | 41 +++++++++++++++--------- libreofficekit/source/gtk/tilebuffer.cxx | 17 +++++++--- libreofficekit/source/gtk/tilebuffer.hxx | 54 +++++++++++++++----------------- 3 files changed, 65 insertions(+), 47 deletions(-) diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx index e44f9b96886a..6bee2f513ae9 100644 --- a/libreofficekit/source/gtk/lokdocview.cxx +++ b/libreofficekit/source/gtk/lokdocview.cxx @@ -39,8 +39,8 @@ /// Private struct used by this GObject type struct _LOKDocViewPrivate { - gchar* m_aLOPath; - gchar* m_aDocPath; + const gchar* m_aLOPath; + const gchar* m_aDocPath; gdouble m_nLoadProgress; gboolean m_bIsLoading; gboolean m_bCanZoomIn; @@ -302,7 +302,10 @@ signalKey (GtkWidget* pWidget, GdkEventKey* pEvent) if (pEvent->type == GDK_KEY_RELEASE) { GTask* task = g_task_new(pDocView, NULL, NULL, NULL); - LOEvent* pLOEvent = new LOEvent(LOK_POST_KEY, LOK_KEYEVENT_KEYUP, nCharCode, nKeyCode); + LOEvent* pLOEvent = new LOEvent(LOK_POST_KEY); + pLOEvent->m_nKeyEvent = LOK_KEYEVENT_KEYUP; + pLOEvent->m_nCharCode = nCharCode; + pLOEvent->m_nKeyCode = nKeyCode; g_task_set_task_data(task, pLOEvent, g_free); g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL); g_object_unref(task); @@ -310,7 +313,10 @@ signalKey (GtkWidget* pWidget, GdkEventKey* pEvent) else { GTask* task = g_task_new(pDocView, NULL, NULL, NULL); - LOEvent* pLOEvent = new LOEvent(LOK_POST_KEY, LOK_KEYEVENT_KEYINPUT, nCharCode, nKeyCode); + LOEvent* pLOEvent = new LOEvent(LOK_POST_KEY); + pLOEvent->m_nKeyEvent = LOK_KEYEVENT_KEYINPUT; + pLOEvent->m_nCharCode = nCharCode; + pLOEvent->m_nKeyCode = nKeyCode; g_task_set_task_data(task, pLOEvent, g_free); g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL); g_object_unref(task); @@ -1163,7 +1169,7 @@ paintTileInThread (gpointer data) LOKDocViewPrivate *priv = static_cast(lok_doc_view_get_instance_private (pDocView)); LOEvent* pLOEvent = static_cast(g_task_get_task_data(task)); TileBuffer& buffer = priv->m_aTileBuffer; - int index = pLOEvent->m_nX * buffer.m_nWidth + pLOEvent->m_nY; + int index = pLOEvent->m_nPaintTileX * buffer.m_nWidth + pLOEvent->m_nPaintTileY; if (buffer.m_mTiles.find(index) != buffer.m_mTiles.end() && buffer.m_mTiles[index].valid) return; @@ -1177,21 +1183,21 @@ paintTileInThread (gpointer data) unsigned char* pBuffer = gdk_pixbuf_get_pixels(pPixBuf); GdkRectangle aTileRectangle; - aTileRectangle.x = pixelToTwip(nTileSizePixels, pLOEvent->m_fZoom) * pLOEvent->m_nY; - aTileRectangle.y = pixelToTwip(nTileSizePixels, pLOEvent->m_fZoom) * pLOEvent->m_nX; + aTileRectangle.x = pixelToTwip(nTileSizePixels, pLOEvent->m_fPaintTileZoom) * pLOEvent->m_nPaintTileY; + aTileRectangle.y = pixelToTwip(nTileSizePixels, pLOEvent->m_fPaintTileZoom) * pLOEvent->m_nPaintTileX; g_test_timer_start(); priv->m_pDocument->pClass->paintTile(priv->m_pDocument, pBuffer, nTileSizePixels, nTileSizePixels, aTileRectangle.x, aTileRectangle.y, - pixelToTwip(nTileSizePixels, pLOEvent->m_fZoom), - pixelToTwip(nTileSizePixels, pLOEvent->m_fZoom)); + pixelToTwip(nTileSizePixels, pLOEvent->m_fPaintTileZoom), + pixelToTwip(nTileSizePixels, pLOEvent->m_fPaintTileZoom)); double elapsedTime = g_test_timer_elapsed(); g_info ("Rendered (%d, %d) in %f seconds", - pLOEvent->m_nX, - pLOEvent->m_nY, + pLOEvent->m_nPaintTileX, + pLOEvent->m_nPaintTileY, elapsedTime); //create a mapping for it @@ -1674,9 +1680,12 @@ lok_doc_view_open_document (LOKDocView* pDocView, gpointer userdata) { GTask* task = g_task_new(pDocView, cancellable, callback, userdata); - LOEvent* pLOEvent = new LOEvent(LOK_LOAD_DOC, pPath); LOKDocViewPrivate *priv = static_cast(lok_doc_view_get_instance_private (pDocView)); - priv->m_aDocPath = g_strdup(pPath); + + LOEvent* pLOEvent = new LOEvent(LOK_LOAD_DOC); + pLOEvent->m_pPath = pPath; + + priv->m_aDocPath = pPath; g_task_set_task_data(task, pLOEvent, g_free); g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL); @@ -1836,9 +1845,11 @@ lok_doc_view_post_command (LOKDocView* pDocView, { GTask* task = g_task_new(pDocView, NULL, NULL, NULL); - LOEvent* pLOEvent = new LOEvent(LOK_POST_COMMAND, pCommand, pArguments); - g_task_set_task_data(task, pLOEvent, g_free); + LOEvent* pLOEvent = new LOEvent(LOK_POST_COMMAND); + pLOEvent->m_pCommand = pCommand; + pLOEvent->m_pArguments = pArguments; + g_task_set_task_data(task, pLOEvent, g_free); g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL); g_object_unref(task); } diff --git a/libreofficekit/source/gtk/tilebuffer.cxx b/libreofficekit/source/gtk/tilebuffer.cxx index a8594fc916f0..21ea58b0faff 100644 --- a/libreofficekit/source/gtk/tilebuffer.cxx +++ b/libreofficekit/source/gtk/tilebuffer.cxx @@ -70,26 +70,35 @@ void TileBuffer::setInvalid(int x, int y, float fZoom, GTask* task) { m_mTiles[index].valid = false; - LOEvent* pLOEvent = new LOEvent(LOK_PAINT_TILE, x, y, fZoom); + LOEvent* pLOEvent = new LOEvent(LOK_PAINT_TILE); + pLOEvent->m_nPaintTileX = x; + pLOEvent->m_nPaintTileY = y; + pLOEvent->m_fPaintTileZoom = fZoom; g_task_set_task_data(task, pLOEvent, g_free); g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL); } } -Tile& TileBuffer::getTile(int x, int y, float aZoom, GTask* task) +Tile& TileBuffer::getTile(int x, int y, float fZoom, GTask* task) { int index = x * m_nWidth + y; if (m_mTiles.find(index) != m_mTiles.end() && !m_mTiles[index].valid) { - LOEvent* pLOEvent = new LOEvent(LOK_PAINT_TILE, x, y, aZoom); + LOEvent* pLOEvent = new LOEvent(LOK_PAINT_TILE); + pLOEvent->m_nPaintTileX = x; + pLOEvent->m_nPaintTileY = y; + pLOEvent->m_fPaintTileZoom = fZoom; g_task_set_task_data(task, pLOEvent, g_free); g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL); return m_mTiles[index]; } else if(m_mTiles.find(index) == m_mTiles.end()) { - LOEvent* pLOEvent = new LOEvent(LOK_PAINT_TILE, x, y, aZoom); + LOEvent* pLOEvent = new LOEvent(LOK_PAINT_TILE); + pLOEvent->m_nPaintTileX = x; + pLOEvent->m_nPaintTileY = y; + pLOEvent->m_fPaintTileZoom = fZoom; g_task_set_task_data(task, pLOEvent, g_free); g_thread_pool_push(lokThreadPool, g_object_ref(task), NULL); return m_DummyTile; diff --git a/libreofficekit/source/gtk/tilebuffer.hxx b/libreofficekit/source/gtk/tilebuffer.hxx index f23b02330616..6e57d2fe8bd5 100644 --- a/libreofficekit/source/gtk/tilebuffer.hxx +++ b/libreofficekit/source/gtk/tilebuffer.hxx @@ -152,46 +152,44 @@ struct LOEvent { /// To identify the type of LOK call int m_nType; + + /// @name post_command parameters + ///@{ const gchar* m_pCommand; const gchar* m_pArguments; - gchar* m_pPath; + ///@} + + /// @name open_document parameter + ///@{ + const gchar* m_pPath; + ///@} + + /// set_edit parameter gboolean m_bEdit; + + /// set_partmode parameter int m_nPartMode; + + /// set_part parameter int m_nPart; + + /// @name postKeyEvent parameters + ///@{ int m_nKeyEvent; int m_nCharCode; int m_nKeyCode; + ///@} - int m_nX; - int m_nY; - float m_fZoom; + /// @name paintTile parameters + ///@{ + int m_nPaintTileX; + int m_nPaintTileY; + float m_fPaintTileZoom; + ///@} - /// Constructor to easily instantiate an object for LOK call of `type' type. + /// Constructor to instantiate an object of type `type`. LOEvent(int type) : m_nType(type) {} - - LOEvent(int type, const gchar* pCommand, const gchar* pArguments) - : m_nType(type), - m_pCommand(pCommand), - m_pArguments(pArguments) {} - - LOEvent(int type, const gchar* pPath) - : m_nType(type) - { - m_pPath = g_strdup(pPath); - } - - LOEvent(int type, int nKeyEvent, int nCharCode, int nKeyCode) - : m_nType(type), - m_nKeyEvent(nKeyEvent), - m_nCharCode(nCharCode), - m_nKeyCode(nKeyCode) {} - - LOEvent(int type, int x, int y, float zoom) - : m_nType(type), - m_nX(x), - m_nY(y), - m_fZoom(zoom) {} }; #endif // INCLUDED_TILEBUFFER_HXX -- 2.12.0