LCOV - code coverage report
Current view: top level - eq/fabric - equalizer.cpp (source / functions) Hit Total Coverage
Test: Equalizer Lines: 92 126 73.0 %
Date: 2017-12-16 05:07:20 Functions: 29 37 78.4 %

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

Generated by: LCOV version 1.11