IvfLighting.h

00001 //
00002 // Copyright 1999-2006 by Structural Mechanics, Lund University.
00003 //
00004 // This library is free software; you can redistribute it and/or
00005 // modify it under the terms of the GNU Library General Public
00006 // License as published by the Free Software Foundation; either
00007 // version 2 of the License, or (at your option) any later version.
00008 //
00009 // This library is distributed in the hope that it will be useful,
00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012 // Library General Public License for more details.
00013 //
00014 // You should have received a copy of the GNU Library General Public
00015 // License along with this library; if not, write to the Free Software
00016 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00017 // USA.
00018 //
00019 // Please report all bugs and problems to "ivf@byggmek.lth.se".
00020 //
00021 //
00022 // Written by Jonas Lindemann
00023 //
00024 
00025 #ifndef _CIvfLighting_h_
00026 #define _CIvfLighting_h_
00027 
00028 #include <ivf/IvfBase.h>
00029 #include <ivf/IvfLight.h>
00030 
00031 #include <ivfdef/IvfSingletonDestroyer.h>
00032 
00033 IvfStdPointer(CIvfLighting);
00034 
00052 class IVF_API CIvfLighting : public CIvfBase {
00053 private:
00054         static CIvfLighting* m_instance;
00055         static CIvfSingletonDestroyer<CIvfLighting> m_destroyer;
00056         std::vector<CIvfLight*> m_lights;
00057         GLfloat m_ambient[4];
00058         GLint m_local[1], m_twoside[1];
00059         std::vector<bool> m_enabled;
00060 public: 
00061         static CIvfLighting* getInstance();
00062 
00063         IvfClassInfo("CIvfLighting",CIvfBase);
00064 
00065 
00067         void render();
00068 
00070         void enable();
00071 
00073         void disable();
00074 
00076         bool isEnabled();
00077 
00079         void disableLights();
00080         
00082         void enableLights();
00083 
00085         void saveState();
00086 
00088         void restoreState();
00089 
00091         void setTwoSide(bool flag);
00092 
00094         bool getTwoSide();
00095 
00097         void setLocalViewer(bool flag);
00098 
00100         bool getLocalViewer();
00101 
00107         CIvfLight* getLight(int idx);
00108 
00110         int getSize();
00111 
00113         void setAmbientColor(float red, float green, float blue, float alpha);
00114 
00116         void restoreEnabledState();
00117 
00119         void saveEnabledState();
00120 protected:
00122         CIvfLighting();
00123         ~CIvfLighting();
00124         friend class CIvfSingletonDestroyer<CIvfLighting>;
00125 };
00126  
00127 #endif 

Generated on Fri Sep 1 15:36:45 2006 for Interactive Visualisation Framework - Ivf++ by  doxygen 1.4.6-NO