ai_params.h
1 /*
2  * Arnold API header file
3  * Copyright (c) 1998-2009 Marcos Fajardo, (c) 2009-2013 Solid Angle SL
4  */
5 
11 #pragma once
12 #include "ai_array.h"
13 #include "ai_color.h"
14 #include "ai_enum.h"
15 #include "ai_matrix.h"
16 #include "ai_vector.h"
17 #include "ai_types.h"
18 #include "ai_api.h"
19 
20 // forward declaration
21 struct AtList;
22 struct AtNode;
23 
39 #define AI_TYPE_BYTE 0x00
40 #define AI_TYPE_INT 0x01
41 #define AI_TYPE_UINT 0x02
42 #define AI_TYPE_BOOLEAN 0x03
43 #define AI_TYPE_FLOAT 0x04
44 #define AI_TYPE_RGB 0x05
45 #define AI_TYPE_RGBA 0x06
46 #define AI_TYPE_VECTOR 0x07
47 #define AI_TYPE_POINT 0x08
48 #define AI_TYPE_POINT2 0x09
49 #define AI_TYPE_STRING 0x0A
50 #define AI_TYPE_POINTER 0x0B
51 #define AI_TYPE_NODE 0x0C
52 #define AI_TYPE_ARRAY 0x0D
53 #define AI_TYPE_MATRIX 0x0E
54 #define AI_TYPE_ENUM 0x0F
55 #define AI_TYPE_UNDEFINED 0xFF
56 #define AI_TYPE_NONE 0xFF
57 /* \}*/
58 
62 #define AI_USERDEF_UNDEFINED 0
63 #define AI_USERDEF_CONSTANT 1
64 #define AI_USERDEF_UNIFORM 2
65 #define AI_USERDEF_VARYING 3
66 #define AI_USERDEF_INDEXED 4
67 /* \}*/
68 
72 typedef union AtParamValue {
73  AtByte BYTE;
74  int INT;
75  unsigned int UINT;
76  bool BOOL;
77  float FLT;
78  AtRGB RGB;
79  AtRGBA RGBA;
80  AtVector VEC;
81  AtPoint PNT;
82  AtPoint2 PNT2;
83  const char* STR;
84  void* PTR;
85  AtArray* ARRAY;
86  AtMatrix* pMTX;
87 } AtParamValue;
88 
95 struct AtParamEntry;
96 
101 AI_API const char* AiParamGetName (const AtParamEntry* pentry);
102 AI_API int AiParamGetType (const AtParamEntry* pentry);
103 AI_API const AtParamValue* AiParamGetDefault (const AtParamEntry* pentry);
104 AI_API AtEnum AiParamGetEnum (const AtParamEntry* pentry);
105 AI_API const char* AiParamGetTypeName(AtByte type);
106 AI_API int AiParamGetTypeSize(AtByte type);
107 /* \}*/
108 
115 struct AtUserParamEntry;
116 
121 AI_API const char* AiUserParamGetName (const AtUserParamEntry* upentry);
122 AI_API int AiUserParamGetType (const AtUserParamEntry* upentry);
123 AI_API int AiUserParamGetArrayType(const AtUserParamEntry* upentry);
124 AI_API int AiUserParamGetCategory (const AtUserParamEntry* upentry);
125 AI_API int AiUserParamGetIndex (const AtUserParamEntry* upentry); // DEPRECATED
126 /* \}*/
127 
153 #define AiParameterByte(n,c) AiNodeParamByte (params,-1,n,c);
154 #define AiParameterInt(n,c) AiNodeParamInt (params,-1,n,c);
155 #define AiParameterUInt(n,c) AiNodeParamUInt (params,-1,n,c);
156 #define AiParameterBool(n,c) AiNodeParamBool (params,-1,n,c);
157 #define AiParameterFlt(n,c) AiNodeParamFlt (params,-1,n,c);
158 #define AiParameterRGB(n,r,g,b) AiNodeParamRGB (params,-1,n,r,g,b);
159 #define AiParameterRGBA(n,r,g,b,a) AiNodeParamRGBA (params,-1,n,r,g,b,a);
160 #define AiParameterVec(n,x,y,z) AiNodeParamVec (params,-1,n,x,y,z);
161 #define AiParameterPnt(n,x,y,z) AiNodeParamPnt (params,-1,n,x,y,z);
162 #define AiParameterPnt2(n,x,y) AiNodeParamPnt2 (params,-1,n,x,y);
163 #define AiParameterStr(n,c) AiNodeParamStr (params,-1,n,c);
164 #define AiParameterPtr(n,c) AiNodeParamPtr (params,-1,n,c);
165 #define AiParameterNode(n,c) AiNodeParamNode (params,-1,n,c);
166 #define AiParameterArray(n,c) AiNodeParamArray(params,-1,n,c);
167 #define AiParameterMtx(n,c) AiNodeParamMtx (params,-1,n,c);
168 #define AiParameterEnum(n,c,e) AiNodeParamEnum (params,-1,n,c,e);
169 /* \}*/
170 
171 /*\}*/
172 
177 #define AiParameterBYTE(n,c) AiNodeParamByte (params,-1,n,c);
178 #define AiParameterINT(n,c) AiNodeParamInt (params,-1,n,c);
179 #define AiParameterUINT(n,c) AiNodeParamUInt (params,-1,n,c);
180 #define AiParameterBOOL(n,c) AiNodeParamBool (params,-1,n,c);
181 #define AiParameterFLT(n,c) AiNodeParamFlt (params,-1,n,c);
182 #define AiParameterVEC(n,x,y,z) AiNodeParamVec (params,-1,n,x,y,z);
183 #define AiParameterPNT(n,x,y,z) AiNodeParamPnt (params,-1,n,x,y,z);
184 #define AiParameterPNT2(n,x,y) AiNodeParamPnt2 (params,-1,n,x,y);
185 #define AiParameterSTR(n,c) AiNodeParamStr (params,-1,n,c);
186 #define AiParameterPTR(n,c) AiNodeParamPtr (params,-1,n,c);
187 #define AiParameterNODE(n,c) AiNodeParamNode (params,-1,n,c);
188 #define AiParameterARRAY(n,c) AiNodeParamArray(params,-1,n,c);
189 #define AiParameterMTX(n,c) AiNodeParamMtx (params,-1,n,c);
190 #define AiParameterENUM(n,c,e) AiNodeParamEnum (params,-1,n,c,e);
191 
192 /*\}*/
193 
194 /* for convenience, the macros above call these functions */
195 AI_API void AiNodeParamByte (AtList* params, int varoffset, const char* pname, AtByte pdefault);
196 AI_API void AiNodeParamInt (AtList* params, int varoffset, const char* pname, int pdefault);
197 AI_API void AiNodeParamUInt (AtList* params, int varoffset, const char* pname, unsigned int pdefault);
198 AI_API void AiNodeParamBool (AtList* params, int varoffset, const char* pname, bool pdefault);
199 AI_API void AiNodeParamFlt (AtList* params, int varoffset, const char* pname, float pdefault);
200 AI_API void AiNodeParamRGB (AtList* params, int varoffset, const char* pname, float r, float g, float b);
201 AI_API void AiNodeParamRGBA (AtList* params, int varoffset, const char* pname, float r, float g, float b, float a);
202 AI_API void AiNodeParamVec (AtList* params, int varoffset, const char* pname, float x, float y, float z);
203 AI_API void AiNodeParamPnt (AtList* params, int varoffset, const char* pname, float x, float y, float z);
204 AI_API void AiNodeParamPnt2 (AtList* params, int varoffset, const char* pname, float x, float y);
205 AI_API void AiNodeParamStr (AtList* params, int varoffset, const char* pname, const char* pdefault);
206 AI_API void AiNodeParamPtr (AtList* params, int varoffset, const char* pname, void* pdefault);
207 AI_API void AiNodeParamNode (AtList* params, int varoffset, const char* pname, AtNode* pdefault);
208 AI_API void AiNodeParamArray(AtList* params, int varoffset, const char* pname, AtArray* pdefault);
209 AI_API void AiNodeParamMtx (AtList* params, int varoffset, const char* pname, AtMatrix matrix);
210 AI_API void AiNodeParamEnum (AtList* params, int varoffset, const char* pname, int pdefault, AtEnum enum_type);

© 2009-2013 Solid Angle SL · all rights reserved · www.solidangle.com