LCOV - code coverage report
Current view: top level - seq - viewData.h (source / functions) Hit Total Coverage
Test: Equalizer Lines: 1 3 33.3 %
Date: 2017-12-16 05:07:20 Functions: 1 3 33.3 %

          Line data    Source code
       1             : 
       2             : /* Copyright (c) 2011-2017, Stefan Eilemann <eile@eyescale.ch>
       3             :  *                          Daniel Nachbaur <danielnachbaur@gmail.com>
       4             :  *
       5             :  * This library is free software; you can redistribute it and/or modify it under
       6             :  * the terms of the GNU Lesser General Public License version 2.1 as published
       7             :  * by the Free Software Foundation.
       8             :  *
       9             :  * This library is distributed in the hope that it will be useful, but WITHOUT
      10             :  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
      11             :  * FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
      12             :  * details.
      13             :  *
      14             :  * You should have received a copy of the GNU Lesser General Public License
      15             :  * along with this library; if not, write to the Free Software Foundation, Inc.,
      16             :  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
      17             :  */
      18             : 
      19             : #ifndef EQSEQUEL_VIEWDATA_H
      20             : #define EQSEQUEL_VIEWDATA_H
      21             : 
      22             : #include <co/serializable.h> // base class
      23             : #include <eq/fabric/vmmlib.h>
      24             : #include <seq/api.h>
      25             : #include <seq/types.h>
      26             : 
      27             : namespace seq
      28             : {
      29             : /** Stores per-view data. */
      30             : class ViewData : public co::Serializable
      31             : {
      32             : public:
      33             :     /** Construct a new view data. @version 1.0 */
      34             :     SEQ_API explicit ViewData(View& view);
      35             : 
      36             :     /** Destruct this view data. @version 1.0 */
      37             :     SEQ_API virtual ~ViewData();
      38             : 
      39             :     /** @name Operations */
      40             :     //@{
      41             :     /**
      42             :      * Handle the given event command.
      43             :      *
      44             :      * The default implementation provides a pointer-based camera model and some
      45             :      * key event handling, all of which can be modified by overwriting this
      46             :      * method and handling the appropriate events.
      47             :      * @version 1.5.1
      48             :      */
      49             :     SEQ_API virtual bool handleEvent(eq::EventType type, const SizeEvent&);
      50             :     SEQ_API virtual bool handleEvent(eq::EventType type, const PointerEvent&);
      51             :     SEQ_API virtual bool handleEvent(eq::EventType type, const KeyEvent&);
      52             :     SEQ_API virtual bool handleEvent(const AxisEvent&);
      53             :     SEQ_API virtual bool handleEvent(const ButtonEvent&);
      54             : 
      55             :     /** Rotate the model matrix by the given increments. @version 1.0 */
      56             :     SEQ_API void spinModel(const float x, const float y, const float z);
      57             : 
      58             :     /** Move the model matrix by the given increments. @version 1.0 */
      59             :     SEQ_API void moveModel(const float x, const float y, const float z);
      60             : 
      61             :     /**
      62             :      * Enable or disable statistics rendering.
      63             :      *
      64             :      * The statistics are rendered in the views where they are enabled. The
      65             :      * default event handler of this view toggles the statistics rendering state
      66             :      * when 's' is pressed.
      67             :      *
      68             :      * @param on the state of the statistics rendering.
      69             :      * @version 1.0
      70             :      */
      71             :     SEQ_API void showStatistics(const bool on);
      72             : 
      73             :     /**
      74             :      * Enable or disable orthographic rendering.
      75             :      *
      76             :      * The default event handler of this view toggles the orthographic rendering
      77             :      * state when 'o' is pressed.
      78             :      *
      79             :      * @param on the state of the orthographic rendering.
      80             :      * @version 1.2
      81             :      */
      82             :     SEQ_API void setOrtho(const bool on);
      83             : 
      84             :     /**
      85             :      * Update the view data.
      86             :      *
      87             :      * Called once at the end of each frame to trigger animations. The default
      88             :      * implementation updates the camera data.
      89             :      *
      90             :      * @return true to request a redraw.
      91             :      * @version 1.0
      92             :      */
      93             :     SEQ_API virtual bool update();
      94             :     //@}
      95             : 
      96             :     /** @name Data Access. */
      97             :     //@{
      98             :     /** Set the current model matrix (global camera). @version 1.11 */
      99             :     SEQ_API void setModelMatrix(const Matrix4f& matrix);
     100             : 
     101             :     /** @return the current model matrix (global camera). @version 1.0 */
     102           0 :     const Matrix4f& getModelMatrix() const { return _modelMatrix; }
     103             :     /** @return true is statistics are rendered. @version 1.0 */
     104           1 :     bool getStatistics() const { return _statistics; }
     105             :     //@}
     106             : 
     107             :     /** @return true when orthographic rendering is enabled. @version 1.2 */
     108           0 :     bool useOrtho() const { return _ortho; }
     109             :     //@}
     110             : 
     111             : protected:
     112             :     SEQ_API void serialize(co::DataOStream& os,
     113             :                            const uint64_t dirtyBits) override;
     114             :     SEQ_API void deserialize(co::DataIStream& is,
     115             :                              const uint64_t dirtyBits) override;
     116             : 
     117             :     /** The changed parts of the object since the last serialize(). */
     118             :     enum DirtyBits
     119             :     {
     120             :         DIRTY_MODELMATRIX = co::Serializable::DIRTY_CUSTOM << 0, // 1
     121             :         DIRTY_STATISTICS = co::Serializable::DIRTY_CUSTOM << 1,  // 2
     122             :         DIRTY_ORTHO = co::Serializable::DIRTY_CUSTOM << 2,       // 4
     123             :         DIRTY_CUSTOM = co::Serializable::DIRTY_CUSTOM << 3       // 8
     124             :     };
     125             : 
     126             : private:
     127             :     View& _view;
     128             :     Matrix4f _modelMatrix;
     129             :     int32_t _spinX, _spinY;
     130             :     int32_t _advance;
     131             :     bool _statistics;
     132             :     bool _ortho;
     133             : };
     134             : }
     135             : #endif // EQSEQUEL_VIEWDATA_H

Generated by: LCOV version 1.11