CrystalSpace

Public API Reference

csplugincommon/shader/weavertypes.h
Go to the documentation of this file.
00001 /*
00002   Copyright (C) 2007 by Frank Richter
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
00016   Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00017 */
00018 
00019 #ifndef __CS_CSPLUGINCOMMON_SHADER_WEAVERTYPES_H__
00020 #define __CS_CSPLUGINCOMMON_SHADER_WEAVERTYPES_H__
00021 
00022 #include "csutil/csstring.h"
00023 
00030 namespace CS
00031 {
00032   namespace PluginCommon
00033   {
00034     namespace ShaderWeaver
00035     {
00036       struct TypeInfo
00037       {
00039         enum 
00040         {
00042           Vector, 
00044           VectorB, 
00046           VectorI, 
00048           Sampler
00049         } baseType;
00051         bool samplerIsCube;
00056         int dimensions;
00058         enum
00059         {
00061           NoSemantics,
00063           Color,
00065           Texcoord,
00067           Position,
00069           Direction,
00071           Depth,
00076           TranslateScale,
00078           Scale
00079         } semantics;
00081         enum
00082         {
00084           NoSpace,
00086           Object,
00088           World,
00090           Camera,
00092           Screen,
00094           Tangent
00095         } space;
00097         bool unit;
00098 
00099         bool operator==(const TypeInfo& other) const
00100         {
00101           return (baseType == other.baseType)
00102             && (samplerIsCube == other.samplerIsCube)
00103             && (dimensions == other.dimensions)
00104             && (semantics == other.semantics)
00105             && (space == other.space)
00106             && (unit == other.unit);
00107         }
00108       };
00109       
00110       CS_CRYSTALSPACE_EXPORT const TypeInfo* QueryTypeInfo (
00111         const char* type);
00112       CS_CRYSTALSPACE_EXPORT const char* QueryType (
00113         const TypeInfo& typeInfo);
00114         
00115       class CS_CRYSTALSPACE_EXPORT TypeInfoIterator
00116       {
00117         size_t n;
00118       public:
00119         TypeInfoIterator ();
00120         
00121         bool HasNext ();
00122         const TypeInfo* Next (csString& type);
00123       };
00124     } // namespace ShaderWeaver
00125   } // namespace PluginCommon
00126 } // namespace CS
00127 
00130 #endif // __CS_CSPLUGINCOMMON_SHADER_WEAVERTYPES_H__
00131 

Generated for Crystal Space 2.0 by doxygen 1.7.6.1