ai_nodes.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_node_entry.h"
13 #include "ai_params.h"
14 #include "ai_api.h"
15 
16 // forward declarations
17 struct AtList;
18 struct AtMetaDataStore;
19 struct AtNodeEntry;
20 struct AtUserParamEntry;
21 struct AtUserParamIterator;
22 
52 struct AtNode;
53 
60 #define node_parameters \
61 static void Parameters(AtList* params, AtMetaDataStore* mds)
62 
64 #define node_initialize \
65 static void Initialize(AtNode* node, AtParamValue* params)
66 
68 #define node_update \
69 static void Update(AtNode* node, AtParamValue* params)
70 
72 #define node_finish \
73 static void Finish(AtNode* node)
74 
76 #define node_loader \
77  AI_EXPORT_LIB bool NodeLoader(int i, AtNodeLib* node)
78 /* \}*/
79 
81 #define AI_INSTANCE_COMMON_METHODS \
82 node_parameters; \
83 node_initialize; \
84 node_update; \
85 node_finish; \
86 static AtCommonMethods ai_common_mtds = { \
87  Parameters, \
88  Initialize, \
89  Update, \
90  Finish \
91 };
92 
97 AI_API AtNode* AiNode (const char* name);
98 AI_API AtNode* AiNodeLookUpByName (const char* name);
99 AI_API void AiNodeReset (AtNode* node);
100 AI_API AtNode* AiNodeClone (const AtNode* node);
101 AI_API bool AiNodeDestroy (AtNode* node);
102 AI_API bool AiNodeIs (const AtNode* node, const char* str);
103 AI_API bool AiNodeDeclare (AtNode* node, const char* param, const char* declaration);
104 AI_API bool AiNodeLink (AtNode* src, const char* input, AtNode* target);
105 AI_API bool AiNodeLinkOutput (AtNode* src, const char* output, AtNode* target, const char* input);
106 AI_API bool AiNodeUnlink (AtNode* node, const char* input);
107 AI_API bool AiNodeIsLinked (const AtNode* node, const char* input);
108 AI_API AtNode* AiNodeGetLink (const AtNode* node, const char* input, int* comp = NULL);
109 AI_API const char* AiNodeGetName (const AtNode* node);
110 AI_API const AtNodeEntry* AiNodeGetNodeEntry (const AtNode* node);
111 AI_API AtParamValue* AiNodeGetParams (const AtNode* node);
112 AI_API void* AiNodeGetLocalData (const AtNode* node);
113 AI_API void AiNodeSetLocalData (AtNode* node, void* data);
114 AI_API const AtUserParamEntry* AiNodeLookUpUserParameter(const AtNode* node, const char* param);
115 AI_API AtUserParamIterator* AiNodeGetUserParamIterator(const AtNode* node);
116 /* \}*/
117 
122 AI_API void AiUserParamIteratorDestroy(AtUserParamIterator* iter);
123 AI_API const AtUserParamEntry* AiUserParamIteratorGetNext(AtUserParamIterator* iter);
124 AI_API bool AiUserParamIteratorFinished(const AtUserParamIterator* iter);
125 /* \}*/
126 
131 AI_API void AiNodeSetByte (AtNode* node, const char* param, AtByte val);
132 AI_API void AiNodeSetInt (AtNode* node, const char* param, int val);
133 AI_API void AiNodeSetUInt (AtNode* node, const char* param, unsigned int val);
134 AI_API void AiNodeSetBool (AtNode* node, const char* param, bool val);
135 AI_API void AiNodeSetFlt (AtNode* node, const char* param, float val);
136 AI_API void AiNodeSetRGB (AtNode* node, const char* param, float r, float g, float b);
137 AI_API void AiNodeSetRGBA (AtNode* node, const char* param, float r, float g, float b, float a);
138 AI_API void AiNodeSetVec (AtNode* node, const char* param, float x, float y, float z);
139 AI_API void AiNodeSetPnt (AtNode* node, const char* param, float x, float y, float z);
140 AI_API void AiNodeSetPnt2 (AtNode* node, const char* param, float x, float y);
141 AI_API void AiNodeSetStr (AtNode* node, const char* param, const char* str);
142 AI_API void AiNodeSetPtr (AtNode* node, const char* param, void* ptr);
143 AI_API void AiNodeSetArray (AtNode* node, const char* param, AtArray* array);
144 AI_API void AiNodeSetMatrix(AtNode* node, const char* param, AtMatrix matrix);
145 AI_API void AiNodeSetAttributes(AtNode *node, const char* attributes);
146 /* \}*/
147 
152 AI_API AtByte AiNodeGetByte (const AtNode* node, const char* param);
153 AI_API int AiNodeGetInt (const AtNode* node, const char* param);
154 AI_API unsigned int AiNodeGetUInt (const AtNode* node, const char* param);
155 AI_API bool AiNodeGetBool (const AtNode* node, const char* param);
156 AI_API float AiNodeGetFlt (const AtNode* node, const char* param);
157 AI_API AtRGB AiNodeGetRGB (const AtNode* node, const char* param);
158 AI_API AtRGBA AiNodeGetRGBA (const AtNode* node, const char* param);
159 AI_API AtVector AiNodeGetVec (const AtNode* node, const char* param);
160 AI_API AtPoint AiNodeGetPnt (const AtNode* node, const char* param);
161 AI_API AtPoint2 AiNodeGetPnt2 (const AtNode* node, const char* param);
162 AI_API const char* AiNodeGetStr (const AtNode* node, const char* param);
163 AI_API void* AiNodeGetPtr (const AtNode* node, const char* param);
164 AI_API AtArray* AiNodeGetArray (const AtNode* node, const char* param);
165 AI_API void AiNodeGetMatrix(const AtNode* node, const char* param, AtMatrix matrix);
166 /* \}*/
167 
168 /*\}*/

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