cstool/noise/module/modulebase.h Source File (Crystal Space 2.0 Public API Reference)

| ## Public API Reference

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

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