1 //****************************************************************************** 2 /// 3 /// @file vfe/vfepovms.h 4 /// 5 /// This file contains prototypes for functions found in `vfepovms.cpp`. 6 /// 7 /// @author Christopher J. Cason 8 /// 9 /// @copyright 10 /// @parblock 11 /// 12 /// Persistence of Vision Ray Tracer ('POV-Ray') version 3.8. 13 /// Copyright 1991-2017 Persistence of Vision Raytracer Pty. Ltd. 14 /// 15 /// POV-Ray is free software: you can redistribute it and/or modify 16 /// it under the terms of the GNU Affero General Public License as 17 /// published by the Free Software Foundation, either version 3 of the 18 /// License, or (at your option) any later version. 19 /// 20 /// POV-Ray is distributed in the hope that it will be useful, 21 /// but WITHOUT ANY WARRANTY; without even the implied warranty of 22 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 23 /// GNU Affero General Public License for more details. 24 /// 25 /// You should have received a copy of the GNU Affero General Public License 26 /// along with this program. If not, see <http://www.gnu.org/licenses/>. 27 /// 28 /// ---------------------------------------------------------------------------- 29 /// 30 /// POV-Ray is based on the popular DKB raytracer version 2.12. 31 /// DKBTrace was originally written by David K. Buck. 32 /// DKBTrace Ver 2.0-2.12 were written by David K. Buck & Aaron A. Collins. 33 /// 34 /// @endparblock 35 /// 36 //****************************************************************************** 37 38 #ifndef POVRAY_VFE_VFEPOVMS_H 39 #define POVRAY_VFE_VFEPOVMS_H 40 41 namespace vfe 42 { 43 bool POVMS_Init (void); 44 void POVMS_Shutdown (void); 45 } 46 47 //////////////////////////////////////////////////////////////////////////////////////// 48 // templates to turn a type into a POVMS typeid. note not all POVMS types are supported. 49 //////////////////////////////////////////////////////////////////////////////////////// 50 51 template<typename ET> struct GetPOVMSTypeID { enum { type_id = 0 } ; } ; 52 template<> struct GetPOVMSTypeID<bool> { enum { type_id = kPOVMSType_Bool } ; } ; 53 template<> struct GetPOVMSTypeID<int> { enum { type_id = kPOVMSType_Int } ; } ; 54 template<> struct GetPOVMSTypeID<long> { enum { type_id = kPOVMSType_Long } ; } ; 55 template<> struct GetPOVMSTypeID<float> { enum { type_id = kPOVMSType_Float } ; } ; 56 template<> struct GetPOVMSTypeID<char *> { enum { type_id = kPOVMSType_CString } ; } ; 57 template<> struct GetPOVMSTypeID<pov_base::UCS2String&> { enum { type_id = kPOVMSType_UCS2String } ; } ; 58 59 #endif // POVRAY_VFE_VFEPOVMS_H 60