CrystalSpace

Public API Reference

cstool/noise/module/modulebase.h
00001 // modulebase.h
00002 //
00003 // Copyright (C) 2003, 2004 Jason Bevins
00004 //
00005 // This library is free software; you can redistribute it and/or modify it
00006 // under the terms of the GNU Lesser General Public License as published by
00007 // the Free Software Foundation; either version 2.1 of the License, or (at
00008 // your option) any later version.
00009 //
00010 // This library is distributed in the hope that it will be useful, but WITHOUT
00011 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00012 // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
00013 // License (COPYING.txt) for more details.
00014 //
00015 // You should have received a copy of the GNU Lesser General Public License
00016 // along with this library; if not, write to the Free Software Foundation,
00017 // Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00018 //
00019 // The developer's email is jlbezigvins@gmzigail.com (for great email, take
00020 // off every 'zig'.)
00021 //
00022 
00023 #ifndef NOISE_MODULEBASE_H
00024 #define NOISE_MODULEBASE_H
00025 
00026 #include <stdlib.h>
00027 #include <assert.h>
00028 #include <math.h>
00029 #include "../basictypes.h"
00030 #include "../exception.h"
00031 #include "../noisegen.h"
00032 
00033 namespace CS {
00034 namespace Math {
00035 namespace Noise {
00036 namespace Module {
00037 
00040 
00044 
00222     class CS_CRYSTALSPACE_EXPORT Module
00223     {
00224 
00225       public:
00226 
00228         Module (int sourceModuleCount);
00229 
00231         /*virtual*/ ~Module ();
00232 
00251         virtual const Module& GetSourceModule (int index) const
00252         {
00253           assert (m_pSourceModule != NULL);
00254 
00255           // The following fix was provided by Will Hawkins:
00256           //
00257           //   m_pSourceModule[index] != NULL
00258           //
00259           // was incorrect; it should be:
00260           //
00261           //   m_pSourceModule[index] == NULL
00262           if (index >= GetSourceModuleCount () || index < 0
00263             || m_pSourceModule[index] == NULL) {
00264             //throw CS::Math::Noise::ExceptionNoModule ();
00265             CS_ASSERT (false);
00266           }
00267           return *(m_pSourceModule[index]);
00268         }
00269 
00275         virtual int GetSourceModuleCount () const = 0;
00276 
00296         virtual double GetValue (double x, double y, double z) const = 0;
00297 
00328         virtual void SetSourceModule (int index, const Module& sourceModule)
00329         {
00330           assert (m_pSourceModule != NULL);
00331           if (index >= GetSourceModuleCount () || index < 0) {
00332             //throw CS::Math::Noise::ExceptionInvalidParam ();
00333             CS_ASSERT (false);
00334           }
00335           m_pSourceModule[index] = &sourceModule;
00336         }
00337 
00338       protected:
00339 
00342         const Module** m_pSourceModule;
00343 
00344       private:
00345 
00352         const Module& operator= (const Module& m)
00353         {
00354           return *this;
00355         }
00356 
00357     };
00358 
00360 
00362 
00363 } // namespace Module
00364 } // namespace Noise
00365 } // namespace Math
00366 } // namespace CS
00367 
00368 #endif

Generated for Crystal Space 2.0 by doxygen 1.7.6.1