LCOV - code coverage report
Current view: top level - eq/fabric - equalizer.cpp (source / functions) Hit Total Coverage
Test: Equalizer Lines: 72 118 61.0 %
Date: 2016-09-29 05:02:09 Functions: 24 37 64.9 %

          Line data    Source code
       1             : 
       2             : /* Copyright (c) 2012, Daniel Nachbaur <danielnachbaur@gmail.com>
       3             :  *               2012-2013, Stefan.Eilemann@epfl.ch
       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             : #include "equalizer.h"
      20             : 
      21             : #include "configParams.h"
      22             : #include "global.h"
      23             : 
      24             : #include <co/dataOStream.h>
      25             : #include <co/dataIStream.h>
      26             : 
      27             : 
      28             : namespace eq
      29             : {
      30             : namespace fabric
      31             : {
      32             : namespace detail
      33             : {
      34           0 : class Equalizer
      35             : {
      36             : public:
      37        1010 :     Equalizer()
      38             :         : damping( .5f )
      39        1010 :         , boundaryf( std::numeric_limits<float>::epsilon( ))
      40             :         , resistancef( .0f )
      41        1010 :         , assembleOnlyLimit( std::numeric_limits< float >::max( ))
      42             :         , frameRate( 10.f )
      43             :         , boundary2i( 1, 1 )
      44             :         , resistance2i( 0, 0 )
      45             :         , tilesize( 64, 64 )
      46             :         , mode( fabric::Equalizer::MODE_2D )
      47        3030 :         , frozen( false )
      48             :     {
      49        1010 :         const uint32_t flags = eq::fabric::Global::getFlags();
      50        1010 :         switch( flags & fabric::ConfigParams::FLAG_LOAD_EQ_ALL )
      51             :         {
      52             :             case fabric::ConfigParams::FLAG_LOAD_EQ_2D:
      53           0 :                 mode = fabric::Equalizer::MODE_2D;
      54           0 :                 break;
      55             :             case fabric::ConfigParams::FLAG_LOAD_EQ_HORIZONTAL:
      56           0 :                 mode = fabric::Equalizer::MODE_HORIZONTAL;
      57           0 :                 break;
      58             :             case fabric::ConfigParams::FLAG_LOAD_EQ_VERTICAL:
      59           0 :                 mode = fabric::Equalizer::MODE_VERTICAL;
      60           0 :                 break;
      61             :             case fabric::ConfigParams::FLAG_NONE:
      62        1010 :                 break;
      63             :             default:
      64           0 :                 LBUNIMPLEMENTED;
      65             :         }
      66        1010 :     }
      67             : 
      68           4 :     Equalizer( const Equalizer& rhs )
      69             :         : damping( rhs.damping )
      70             :         , boundaryf( rhs.boundaryf )
      71             :         , resistancef( rhs.resistancef )
      72             :         , assembleOnlyLimit( rhs.assembleOnlyLimit )
      73             :         , frameRate( rhs.frameRate )
      74             :         , boundary2i( rhs.boundary2i )
      75             :         , resistance2i( rhs.resistance2i )
      76             :         , tilesize( rhs.tilesize )
      77             :         , mode( rhs.mode )
      78           4 :         , frozen( rhs.frozen )
      79           4 :     {}
      80             : 
      81             :     float damping;
      82             :     float boundaryf;
      83             :     float resistancef;
      84             :     float assembleOnlyLimit;
      85             :     float frameRate;
      86             :     Vector2i boundary2i;
      87             :     Vector2i resistance2i;
      88             :     Vector2i tilesize;
      89             :     fabric::Equalizer::Mode mode;
      90             :     bool frozen;
      91             : };
      92             : }
      93             : 
      94        1010 : Equalizer::Equalizer()
      95        1010 :     : _data( new detail::Equalizer )
      96        2020 :     , _backup( 0 )
      97        1010 : {}
      98             : 
      99           4 : Equalizer::Equalizer( const Equalizer& rhs )
     100           4 :     : _data( new detail::Equalizer( *rhs._data ))
     101           8 :     , _backup( 0 )
     102           4 : {}
     103             : 
     104             : // cppcheck-suppress operatorEqVarError
     105           0 : Equalizer& Equalizer::operator=( const Equalizer& rhs )
     106             : {
     107           0 :     if( this == &rhs )
     108           0 :         return *this;
     109             : 
     110           0 :     *_data = *rhs._data;
     111           0 :     return *this;
     112             : }
     113             : 
     114        1012 : Equalizer::~Equalizer()
     115             : {
     116        1012 :     delete _data;
     117        1012 : }
     118             : 
     119           0 : void Equalizer::setFrozen( const bool onOff )
     120             : {
     121           0 :     _data->frozen = onOff;
     122           0 : }
     123             : 
     124           0 : bool Equalizer::isFrozen() const
     125             : {
     126           0 :     return _data->frozen;
     127             : }
     128             : 
     129         140 : void Equalizer::setMode( const Mode mode )
     130             : {
     131         140 :     _data->mode = mode;
     132         140 : }
     133             : 
     134          94 : Equalizer::Mode Equalizer::getMode() const
     135             : {
     136          94 :     return _data->mode;
     137             : }
     138             : 
     139          10 : void Equalizer::setDamping( const float damping )
     140             : {
     141          10 :     _data->damping = damping;
     142          10 : }
     143             : 
     144         106 : float Equalizer::getDamping() const
     145             : {
     146         106 :     return _data->damping;
     147             : }
     148             : 
     149          16 : void Equalizer::setFrameRate( const float frameRate )
     150             : {
     151          16 :     _data->frameRate = frameRate;
     152          16 : }
     153             : 
     154          24 : float Equalizer::getFrameRate() const
     155             : {
     156          24 :     return _data->frameRate;
     157             : }
     158             : 
     159           0 : void Equalizer::setBoundary( const Vector2i& boundary )
     160             : {
     161           0 :     LBASSERT( boundary.x() > 0 && boundary.y() > 0 );
     162           0 :     _data->boundary2i = boundary;
     163           0 : }
     164             : 
     165           0 : void Equalizer::setBoundary( const float boundary )
     166             : {
     167           0 :     LBASSERT( boundary > 0.0f );
     168           0 :     _data->boundaryf = boundary;
     169           0 : }
     170             : 
     171          94 : const Vector2i& Equalizer::getBoundary2i() const
     172             : {
     173          94 :     return _data->boundary2i;
     174             : }
     175             : 
     176          94 : float Equalizer::getBoundaryf() const
     177             : {
     178          94 :     return _data->boundaryf;
     179             : }
     180             : 
     181           0 : void Equalizer::setResistance( const Vector2i& resistance )
     182             : {
     183           0 :     _data->resistance2i = resistance;
     184           0 : }
     185             : 
     186           0 : void Equalizer::setResistance( const float resistance )
     187             : {
     188           0 :     _data->resistancef = resistance;
     189           0 : }
     190             : 
     191          94 : const Vector2i& Equalizer::getResistance2i() const
     192             : {
     193          94 :     return _data->resistance2i;
     194             : }
     195             : 
     196          94 : float Equalizer::getResistancef() const
     197             : {
     198          94 :     return _data->resistancef;
     199             : }
     200             : 
     201           0 : void Equalizer::setAssembleOnlyLimit( const float limit )
     202             : {
     203           0 :     _data->assembleOnlyLimit = limit;
     204           0 : }
     205             : 
     206           0 : float Equalizer::getAssembleOnlyLimit() const
     207             : {
     208           0 :     return _data->assembleOnlyLimit;
     209             : }
     210             : 
     211           4 : void Equalizer::setTileSize( const Vector2i& size )
     212             : {
     213           4 :     _data->tilesize = size;
     214           4 : }
     215             : 
     216           4 : const Vector2i& Equalizer::getTileSize() const
     217             : {
     218           4 :     return _data->tilesize;
     219             : }
     220             : 
     221          14 : void Equalizer::serialize( co::DataOStream& os ) const
     222             : {
     223          14 :     os << _data->damping << _data->boundaryf << _data->resistancef
     224          28 :        << _data->assembleOnlyLimit << _data->frameRate << _data->boundary2i
     225          28 :        << _data->resistance2i << _data->tilesize << _data->mode
     226          28 :        << _data->frozen;
     227          14 : }
     228             : 
     229           8 : void Equalizer::deserialize( co::DataIStream& is )
     230             : {
     231           8 :     is >> _data->damping >> _data->boundaryf >> _data->resistancef
     232          16 :        >> _data->assembleOnlyLimit >> _data->frameRate >> _data->boundary2i
     233          16 :        >> _data->resistance2i >> _data->tilesize >> _data->mode
     234          16 :        >> _data->frozen;
     235           8 : }
     236             : 
     237           0 : void Equalizer::backup()
     238             : {
     239           0 :     _backup = new detail::Equalizer( *_data );
     240           0 : }
     241             : 
     242           0 : void Equalizer::restore()
     243             : {
     244           0 :     LBASSERT( _backup );
     245           0 :     delete _data;
     246           0 :     _data = _backup;
     247           0 :     _backup = 0;
     248           0 : }
     249             : 
     250          14 : co::DataOStream& operator << ( co::DataOStream& os, const Equalizer& eq )
     251             : {
     252          14 :     eq.serialize( os );
     253          14 :     return os;
     254             : }
     255             : 
     256           8 : co::DataIStream& operator >> ( co::DataIStream& is, Equalizer& eq )
     257             : {
     258           8 :     eq.deserialize( is );
     259           8 :     return is;
     260             : }
     261             : 
     262          94 : std::ostream& operator << ( std::ostream& os, const Equalizer::Mode mode )
     263             : {
     264             :     os << ( mode == Equalizer::MODE_2D         ? "2D" :
     265             :             mode == Equalizer::MODE_VERTICAL   ? "VERTICAL" :
     266             :             mode == Equalizer::MODE_HORIZONTAL ? "HORIZONTAL" :
     267          94 :             mode == Equalizer::MODE_DB         ? "DB" : "ERROR" );
     268          94 :     return os;
     269             : }
     270             : 
     271             : }
     272          84 : }

Generated by: LCOV version 1.11