Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

OgreCommon.h

Go to the documentation of this file.
00001 /*
00002 -----------------------------------------------------------------------------
00003 This source file is part of OGRE
00004     (Object-oriented Graphics Rendering Engine)
00005 For the latest info, see http://www.ogre3d.org/
00006 
00007 Copyright (c) 2000-2006 Torus Knot Software Ltd
00008 Also see acknowledgements in Readme.html
00009 
00010 This program is free software; you can redistribute it and/or modify it under
00011 the terms of the GNU Lesser General Public License as published by the Free Software
00012 Foundation; either version 2 of the License, or (at your option) any later
00013 version.
00014 
00015 This program is distributed in the hope that it will be useful, but WITHOUT
00016 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
00017 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
00018 
00019 You should have received a copy of the GNU Lesser General Public License along with
00020 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
00021 Place - Suite 330, Boston, MA 02111-1307, USA, or go to
00022 http://www.gnu.org/copyleft/lesser.txt.
00023 
00024 You may alternatively use this source under the terms of a specific version of
00025 the OGRE Unrestricted License provided you have obtained such a license from
00026 Torus Knot Software Ltd.
00027 -----------------------------------------------------------------------------
00028 */
00029 #ifndef __Common_H__
00030 #define __Common_H__
00031 // Common stuff
00032 
00033 #include "OgreString.h"
00034 
00035 #if defined ( OGRE_GCC_VISIBILITY )
00036 #   pragma GCC visibility push(default)
00037 #endif
00038 
00039 #include <utility>
00040 #include <vector>
00041 #include <map>
00042 
00043 #if defined ( OGRE_GCC_VISIBILITY )
00044 #   pragma GCC visibility pop
00045 #endif
00046 
00047 namespace Ogre {
00048 
00049 
00052     enum CompareFunction
00053     {
00054         CMPF_ALWAYS_FAIL,
00055         CMPF_ALWAYS_PASS,
00056         CMPF_LESS,
00057         CMPF_LESS_EQUAL,
00058         CMPF_EQUAL,
00059         CMPF_NOT_EQUAL,
00060         CMPF_GREATER_EQUAL,
00061         CMPF_GREATER
00062     };
00063 
00066     enum TextureFilterOptions
00067     {
00069         TFO_NONE,
00071         TFO_BILINEAR,
00073         TFO_TRILINEAR,
00075         TFO_ANISOTROPIC
00076     };
00077 
00078     enum FilterType
00079     {
00081         FT_MIN,
00083         FT_MAG,
00085         FT_MIP
00086     };
00088     enum FilterOptions
00089     {
00091         FO_NONE,
00093         FO_POINT,
00095         FO_LINEAR,
00097         FO_ANISOTROPIC
00098     };
00099 
00101     enum ShadeOptions
00102     {
00103         SO_FLAT,
00104         SO_GOURAUD,
00105         SO_PHONG
00106     };
00107 
00109     enum FogMode
00110     {
00112         FOG_NONE,
00114         FOG_EXP,
00116         FOG_EXP2,
00118         FOG_LINEAR
00119     };
00120 
00123     enum CullingMode
00124     {
00126         CULL_NONE = 1,
00128         CULL_CLOCKWISE = 2,
00130         CULL_ANTICLOCKWISE = 3
00131     };
00132 
00138     enum ManualCullingMode
00139     {
00141         MANUAL_CULL_NONE = 1,
00143         MANUAL_CULL_BACK = 2,
00145         MANUAL_CULL_FRONT = 3
00146     };
00147 
00149     enum WaveformType
00150     {
00152         WFT_SINE,
00154         WFT_TRIANGLE,
00156         WFT_SQUARE,
00158         WFT_SAWTOOTH,
00160         WFT_INVERSE_SAWTOOTH,
00163         WFT_PWM
00164     };
00165 
00167     enum PolygonMode
00168     {
00170         PM_POINTS = 1,
00172         PM_WIREFRAME = 2,
00174         PM_SOLID = 3
00175     };
00176 
00178     enum ShadowTechnique
00179     {
00181         SHADOWTYPE_NONE = 0x00,
00184         SHADOWDETAILTYPE_ADDITIVE = 0x01,
00187         SHADOWDETAILTYPE_MODULATIVE = 0x02,
00190         SHADOWDETAILTYPE_INTEGRATED = 0x04,
00193         SHADOWDETAILTYPE_STENCIL = 0x10,
00196         SHADOWDETAILTYPE_TEXTURE = 0x20,
00197         
00204         SHADOWTYPE_STENCIL_MODULATIVE = 0x12,
00212         SHADOWTYPE_STENCIL_ADDITIVE = 0x11,
00217         SHADOWTYPE_TEXTURE_MODULATIVE = 0x22,
00218         
00227         SHADOWTYPE_TEXTURE_ADDITIVE = 0x21,
00228 
00244         SHADOWTYPE_TEXTURE_ADDITIVE_INTEGRATED = 0x25,
00260         SHADOWTYPE_TEXTURE_MODULATIVE_INTEGRATED = 0x26
00261     };
00262 
00264     typedef int TrackVertexColourType;
00265     enum TrackVertexColourEnum {
00266         TVC_NONE        = 0x0,
00267         TVC_AMBIENT     = 0x1,        
00268         TVC_DIFFUSE     = 0x2,
00269         TVC_SPECULAR    = 0x4,
00270         TVC_EMISSIVE    = 0x8
00271     };
00272 
00274     enum SortMode
00275     {
00277         SM_DIRECTION,
00279         SM_DISTANCE
00280     };
00281 
00283     enum FrameBufferType {
00284         FBT_COLOUR  = 0x1,
00285         FBT_DEPTH   = 0x2,
00286         FBT_STENCIL = 0x4
00287     };
00288     
00289     
00290     class Light;
00291     typedef std::vector<Light*> LightList;
00292 
00293     typedef std::map<String, bool> UnaryOptionList;
00294     typedef std::map<String, String> BinaryOptionList;
00295 
00297     typedef std::map<String, String> NameValuePairList;
00298 
00300     typedef std::map<String, String> AliasTextureNamePairList;
00301 
00302         template< typename T > struct TRect
00303         {
00304           T left, top, right, bottom;
00305           TRect() {}
00306           TRect( T const & l, T const & t, T const & r, T const & b )
00307             : left( l ), top( t ), right( r ), bottom( b )
00308           {
00309           }
00310           TRect( TRect const & o )
00311             : left( o.left ), top( o.top ), right( o.right ), bottom( o.bottom )
00312           {
00313           }
00314           TRect & operator=( TRect const & o )
00315           {
00316             left = o.left;
00317             top = o.top;
00318             right = o.right;
00319             bottom = o.bottom;
00320             return *this;
00321           }
00322           T width() const
00323           {
00324             return right - left;
00325           }
00326           T height() const
00327           {
00328             return bottom - top;
00329           }
00330         };
00331 
00334         typedef TRect<float> FloatRect;
00335 
00338         typedef TRect< long > Rect;
00339 
00344         struct Box
00345         {
00346             size_t left, top, right, bottom, front, back;
00348             Box()
00349             {
00350             }
00360             Box( size_t l, size_t t, size_t r, size_t b ):
00361                 left(l),
00362                 top(t),   
00363                 right(r),
00364                 bottom(b),
00365                 front(0),
00366                 back(1)
00367             {
00368                 assert(right >= left && bottom >= top && back >= front);
00369             }
00381             Box( size_t l, size_t t, size_t ff, size_t r, size_t b, size_t bb ):
00382                 left(l),
00383                 top(t),   
00384                 right(r),
00385                 bottom(b),
00386                 front(ff),
00387                 back(bb)
00388             {
00389                 assert(right >= left && bottom >= top && back >= front);
00390             }
00391             
00393             bool contains(const Box &def) const
00394             {
00395                 return (def.left >= left && def.top >= top && def.front >= front &&
00396                     def.right <= right && def.bottom <= bottom && def.back <= back);
00397             }
00398             
00400             size_t getWidth() const { return right-left; }
00402             size_t getHeight() const { return bottom-top; }
00404             size_t getDepth() const { return back-front; }
00405         };
00406 
00407     
00408     
00420     int _OgreExport findCommandLineOpts(int numargs, char** argv, UnaryOptionList& unaryOptList, 
00421         BinaryOptionList& binOptList);
00422 
00423 }
00424 
00425 #endif

Copyright © 2000-2005 by The OGRE Team
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
Last modified Thu Mar 6 09:46:25 2008