LCOV - code coverage report
Current view: top level - render - ClipPlanes.cpp (source / functions) Hit Total Coverage
Test: Lexis Lines: 19 19 100.0 %
Date: 2017-10-26 03:19:55 Functions: 7 7 100.0 %

          Line data    Source code
       1             : /* Copyright (c) 2016-2017, Human Brain Project
       2             :  *                          Ahmet.Bilgili@epfl.ch
       3             :  */
       4             : 
       5             : #include "ClipPlanes.h"
       6             : 
       7             : #include <vmmlib/aabb.hpp>
       8             : 
       9             : namespace lexis
      10             : {
      11             : namespace render
      12             : {
      13             : 
      14           1 : ClipPlanes::ClipPlanes()
      15             : {
      16           1 :     reset();
      17           1 : }
      18             : 
      19           3 : bool ClipPlanes::isEmpty() const
      20             : {
      21           3 :     return getPlanes().empty();
      22             : }
      23             : 
      24           1 : void ClipPlanes::clear()
      25             : {
      26           1 :     getPlanes().clear();
      27           1 : }
      28             : 
      29           2 : void ClipPlanes::reset()
      30             : {
      31          16 :     setPlanes( {
      32             :                    { { -1.0f,  0.0f,  0.0f }, 0.5f }, // +X plane
      33             :                    { {  1.0f,  0.0f,  0.0f }, 0.5f }, // -X plane
      34             :                    { {  0.0f, -1.0f,  0.0f }, 0.5f }, // +Y plane
      35             :                    { {  0.0f,  1.0f,  0.0f }, 0.5f }, // -Y plane
      36             :                    { {  0.0f,  0.0f, -1.0f }, 0.5f }, // +Z plane
      37             :                    { {  0.0f,  0.0f,  1.0f }, 0.5f }  // -Z Plane
      38          14 :                 } );
      39           2 : }
      40             : 
      41           6 : bool ClipPlanes::isOutside( const vmml::AABBf& worldBox ) const
      42             : {
      43          30 :     for( const auto& plane : getPlanes() )
      44             :     {
      45          26 :         const float* normal = plane.getNormal();
      46          26 :         if( worldBox.isInFront( { normal[ 0 ], normal[ 1 ], normal[ 2 ], plane.getD() } ))
      47           2 :             return true;
      48             :     }
      49             : 
      50           4 :     return false;
      51             : }
      52             : 
      53             : }
      54          12 : }

Generated by: LCOV version 1.11