From 46cea34638b371570073c0e86f79969753c543ed Mon Sep 17 00:00:00 2001 From: Jan Holesovsky Date: Sat, 17 May 2014 04:32:58 +0200 Subject: opengl charts: Move the init from sc to chart2, to have the right parent. Change-Id: I1e23329345e00e7d8e1f269c832e84d015824c0a --- chart2/source/controller/main/ChartWindow.cxx | 33 +++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) (limited to 'chart2/source/controller/main/ChartWindow.cxx') diff --git a/chart2/source/controller/main/ChartWindow.cxx b/chart2/source/controller/main/ChartWindow.cxx index 917d69e8ae74..37335c4b87a2 100644 --- a/chart2/source/controller/main/ChartWindow.cxx +++ b/chart2/source/controller/main/ChartWindow.cxx @@ -22,8 +22,11 @@ #include "HelpIds.hrc" #include +#include #include +#include + using namespace ::com::sun::star; namespace @@ -42,10 +45,11 @@ namespace namespace chart { -ChartWindow::ChartWindow( WindowController* pWindowController, Window* pParent, WinBits nStyle ) +ChartWindow::ChartWindow( ChartController* pController, Window* pParent, WinBits nStyle ) : Window(pParent, nStyle) - , m_pWindowController( pWindowController ) + , m_pWindowController( pController ) , m_bInPaint(false) + , m_pOpenGLWindow(new OpenGLWindow(this)) { this->SetHelpId( HID_SCH_WIN_DOCUMENT ); this->SetMapMode( MapMode(MAP_100TH_MM) ); @@ -55,10 +59,21 @@ ChartWindow::ChartWindow( WindowController* pWindowController, Window* pParent, EnableRTL( false ); if( pParent ) pParent->EnableRTL( false );// #i96215# necessary for a correct position of the context menu in rtl mode + + m_pOpenGLWindow->Show(); + uno::Reference< chart2::X3DChartWindowProvider > x3DWindowProvider(pController->getModel(), uno::UNO_QUERY_THROW); + sal_uInt64 nWindowPtr = reinterpret_cast(m_pOpenGLWindow); + x3DWindowProvider->setWindow(nWindowPtr); } ChartWindow::~ChartWindow() { + if (m_pWindowController && m_pWindowController->getModel().is()) + { + uno::Reference< chart2::X3DChartWindowProvider > x3DWindowProvider(m_pWindowController->getModel(), uno::UNO_QUERY_THROW); + x3DWindowProvider->setWindow(0); + } + delete m_pOpenGLWindow; } void ChartWindow::clear() @@ -79,10 +94,18 @@ void ChartWindow::PrePaint() void ChartWindow::Paint( const Rectangle& rRect ) { m_bInPaint = true; - if( m_pWindowController ) - m_pWindowController->execute_Paint( rRect ); + if (m_pOpenGLWindow && m_pOpenGLWindow->IsVisible()) + { + m_pOpenGLWindow->Paint(rRect); + } + else if (m_pWindowController) + { + m_pWindowController->execute_Paint(rRect); + } else + { Window::Paint( rRect ); + } m_bInPaint = false; } @@ -124,6 +147,8 @@ void ChartWindow::Resize() m_pWindowController->execute_Resize(); else Window::Resize(); + + m_pOpenGLWindow->SetSizePixel(GetSizePixel()); } void ChartWindow::Activate() -- cgit