LCOV - code coverage report
Current view: top level - vcl/source/window - openglwin.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 19 46 41.3 %
Date: 2014-11-03 Functions: 8 15 53.3 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  */
       9             : 
      10             : #include <vcl/openglwin.hxx>
      11             : #include <vcl/opengl/OpenGLContext.hxx>
      12             : #include <vcl/event.hxx>
      13             : #include <vcl/sysdata.hxx>
      14             : 
      15          34 : class OpenGLWindowImpl
      16             : {
      17             : public:
      18             :     OpenGLWindowImpl(vcl::Window* pWindow);
      19           0 :     OpenGLContext& getContext() { return maContext;}
      20             : private:
      21             :     OpenGLContext maContext;
      22             :     boost::scoped_ptr<SystemChildWindow> mpChildWindow;
      23             : };
      24             : 
      25          34 : OpenGLWindowImpl::OpenGLWindowImpl(vcl::Window* pWindow)
      26             : {
      27          34 :     SystemWindowData aData = OpenGLContext::generateWinData(pWindow, false);
      28          34 :     mpChildWindow.reset(new SystemChildWindow(pWindow, 0, &aData));
      29          34 :     mpChildWindow->Show();
      30          34 :     maContext.init(mpChildWindow.get());
      31          34 :     pWindow->SetMouseTransparent(false);
      32          34 : }
      33             : 
      34             : 
      35          34 : OpenGLWindow::OpenGLWindow(vcl::Window* pParent):
      36             :     Window(pParent, 0),
      37          34 :     mpImpl(new OpenGLWindowImpl(this)),
      38          68 :     mpRenderer(NULL)
      39             : {
      40          34 : }
      41             : 
      42         102 : OpenGLWindow::~OpenGLWindow()
      43             : {
      44          34 :     if(mpRenderer)
      45          34 :         mpRenderer->contextDestroyed();
      46          68 : }
      47             : 
      48           0 : OpenGLContext& OpenGLWindow::getContext()
      49             : {
      50           0 :     return mpImpl->getContext();
      51             : }
      52             : 
      53           0 : void OpenGLWindow::Paint(const Rectangle&)
      54             : {
      55           0 :     if(mpRenderer)
      56           0 :         mpRenderer->update();
      57           0 : }
      58             : 
      59           0 : void OpenGLWindow::MouseButtonDown( const MouseEvent& rMEvt )
      60             : {
      61           0 :     maStartPoint = rMEvt.GetPosPixel();
      62           0 : }
      63             : 
      64           0 : void OpenGLWindow::MouseButtonUp( const MouseEvent& rMEvt )
      65             : {
      66           0 :     if(!mpRenderer)
      67           0 :         return;
      68             : 
      69           0 :     Point aPoint = rMEvt.GetPosPixel();
      70           0 :     if(aPoint == maStartPoint)
      71             :     {
      72           0 :         mpRenderer->clickedAt(aPoint, rMEvt.GetButtons());
      73             :     }
      74             :     else
      75             :     {
      76             :         mpRenderer->mouseDragMove(maStartPoint, aPoint,
      77           0 :                                   rMEvt.GetButtons());
      78             :     }
      79             : }
      80             : 
      81           0 : void OpenGLWindow::Command( const CommandEvent& rCEvt )
      82             : {
      83           0 :     if(!mpRenderer)
      84           0 :         return;
      85             : 
      86           0 :     if(rCEvt.GetCommand() == COMMAND_WHEEL)
      87             :     {
      88           0 :         const CommandWheelData* pData = rCEvt.GetWheelData();
      89           0 :         if(pData->GetMode() == CommandWheelMode::SCROLL)
      90             :         {
      91           0 :             long nDelta = pData->GetDelta();
      92           0 :             mpRenderer->scroll(nDelta);
      93             :         }
      94             :     }
      95             : }
      96             : 
      97           0 : void OpenGLWindow::MouseMove( const MouseEvent& /*rMEvt*/ )
      98             : {
      99           0 : }
     100             : 
     101         368 : void OpenGLWindow::setRenderer(IRenderer* pRenderer)
     102             : {
     103         368 :     mpRenderer = pRenderer;
     104        1019 : }
     105             : 
     106             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10