LightWrap++
AC++wrapperfortheLightWave3DSDK
envelope.h
Go to the documentation of this file.
1 #ifndef LWPP_ENVELOPE_H
2 #define LWPP_ENVELOPE_H
3 #include <lwpp/global.h>
4 #include <lwenvel.h>
5 
6 namespace lwpp
7 {
9  class Envelopes : public GlobalBase<LWEnvelopeFuncs>
10  {
11  public:
12  Envelopes( ) {;}
13 
14  LWEnvelopeID Create ( LWChanGroupID group, const char *name, int type )
15  {
16  return globPtr->create(group, name, type);
17  }
18 
19  void Destroy ( LWEnvelopeID env )
20  {
21  globPtr->destroy (env);
22  }
23 
24  LWChanGroupID createGroup ( LWChanGroupID parent, const char *name )
25  {
26  return globPtr->createGroup(parent, name);
27  }
28 
29  void destroyGroup ( LWChanGroupID group)
30  {
31  globPtr->destroyGroup(group);
32  }
33 
34  LWError Copy ( LWEnvelopeID to, LWEnvelopeID from)
35  {
36  return globPtr->copy(to, from);
37  }
38 
39  LWError Load ( LWEnvelopeID env, const LWLoadState *load)
40  {
41  return globPtr->load(env, load);
42  }
43 
44  LWError Save ( LWEnvelopeID env, const LWSaveState *save)
45  {
46  return globPtr->save(env, save);
47  }
48 
49  double Evaluate ( LWEnvelopeID env, LWTime attime)
50  {
51  return globPtr->evaluate(env, attime);
52  }
53 
54  int Edit ( LWChanGroupID group, LWEnvelopeID env, int flags, void *data)
55  {
56  return globPtr->edit(group, env, flags, data);
57  }
58 
59  int envAge ( LWEnvelopeID env )
60  {
61  return globPtr->envAge(env);
62  }
63 
64  LWEnvKeyframeID CreateKey ( LWEnvelopeID env, LWTime keytime, double value)
65  {
66  return globPtr->createKey(env, keytime, value);
67  }
68 
69  void DestroyKey ( LWEnvelopeID env, LWEnvKeyframeID key)
70  {
71  globPtr->destroyKey(env, key);
72  }
73 
74  LWEnvKeyframeID FindKey ( LWEnvelopeID env, LWTime keytime)
75  {
76  return globPtr->findKey(env, keytime);
77  }
78 
79  LWEnvKeyframeID NextKey ( LWEnvelopeID env, LWEnvKeyframeID key)
80  {
81  return globPtr->nextKey(env, key);
82  }
83 
84  LWEnvKeyframeID PrevKey ( LWEnvelopeID env, LWEnvKeyframeID key)
85  {
86  return globPtr->prevKey(env, key);
87  }
88 
89  int KeySet ( LWEnvelopeID env, LWEnvKeyframeID key, LWKeyTag tag, void *value)
90  {
91  return globPtr->keySet(env, key, tag, value);
92  }
93 
94  int KeyGet ( LWEnvelopeID env, LWEnvKeyframeID key, LWKeyTag tag, void *value)
95  {
96  return globPtr->keyGet(env, key, tag, value);
97  }
98 
99  int SetEnvEvent ( LWEnvelopeID env, LWEnvEventFunc ev, void *data)
100  {
101  return globPtr->setEnvEvent(env, ev, data);
102  }
103 
104  int EgSet ( LWEnvelopeID env, LWChanGroupID group, int tag, void *value)
105  {
106  return globPtr->egSet(env, group, tag, value);
107  }
108  int EgGet ( LWEnvelopeID env, LWChanGroupID group, int tag, void *value)
109  {
110  return globPtr->egGet(env, group, tag, value);
111  }
112  };
113 
115  class Envelope : public GlobalBase<LWEnvelopeFuncs>
116  {
117  LWEnvelopeID env;
118  bool close_on_destroy;
119  public:
120  Envelope(LWEnvelopeID _env = 0 )
121  : env(_env),
122  close_on_destroy(false)
123  {;}
124 
126  {
127  if (close_on_destroy) Destroy();
128  }
129 
130  Envelope &operator=(LWEnvelopeID from)
131  {
132  close_on_destroy = false;
133  env = from;
134  return *this;
135  }
136 
137  bool isValid() {return env != 0;}
138 
139  LWEnvelopeID Create ( LWChanGroupID group, const char *name, int type )
140  {
141  env = globPtr->create(group, name, type);
142  return env;
143  }
144 
145  void Destroy ()
146  {
147  globPtr->destroy (env);
148  }
149 
150  LWError Copy ( LWEnvelopeID to, LWEnvelopeID from)
151  {
152  return globPtr->copy(to, from);
153  }
154 
155  LWError Load ( const LWLoadState *load)
156  {
157  return globPtr->load(env, load);
158  }
159 
160  LWError Save ( const LWSaveState *save)
161  {
162  return globPtr->save(env, save);
163  }
164 
165  double Evaluate ( LWTime attime)
166  {
167  return globPtr->evaluate(env, attime);
168  }
169 
170  int Edit ( LWChanGroupID group, int flags, void *data)
171  {
172  return globPtr->edit(group, env, flags, data);
173  }
174 
175  int envAge ( )
176  {
177  return globPtr->envAge(env);
178  }
179 
180  LWEnvKeyframeID CreateKey ( LWTime keytime, double value)
181  {
182  return globPtr->createKey(env, keytime, value);
183  }
184 
185  void DestroyKey ( LWEnvKeyframeID key)
186  {
187  globPtr->destroyKey(env, key);
188  }
189 
190  LWEnvKeyframeID FindKey ( LWTime keytime)
191  {
192  return globPtr->findKey(env, keytime);
193  }
194 
195  LWEnvKeyframeID NextKey ( LWEnvKeyframeID key)
196  {
197  return globPtr->nextKey(env, key);
198  }
199 
200  LWEnvKeyframeID PrevKey ( LWEnvKeyframeID key)
201  {
202  return globPtr->prevKey(env, key);
203  }
204 
205  bool KeySet ( LWEnvKeyframeID key, LWKeyTag tag, void *value)
206  {
207  return (globPtr->keySet(env, key, tag, value) == 0);
208  }
209 
210  bool KeyGet ( LWEnvKeyframeID key, LWKeyTag tag, void *value)
211  {
212  return (globPtr->keyGet(env, key, tag, value) == 0);
213  }
214 
215  int SetEnvEvent ( LWEnvEventFunc ev, void *data)
216  {
217  return globPtr->setEnvEvent(env, ev, data);
218  }
219 
220  int EgSet ( LWChanGroupID group, int tag, void *value)
221  {
222  return globPtr->egSet(env, group, tag, value);
223  }
224  int EgGet ( LWChanGroupID group, int tag, void *value)
225  {
226  return globPtr->egGet(env, group, tag, value);
227  }
228  };
229 
230  class Channel : public GlobalBase<LWChannelInfo>
231  {
232  LWChannelID chanID;
233  public:
234  Channel (LWChannelID chan = 0)
235  : chanID(chan)
236  {
237  ;
238  }
239  bool next(LWChanGroupID cgroup)
240  {
241  chanID = globPtr->nextChannel(cgroup, chanID);
242  return (chanID != 0);
243  }
245  {
246  return Envelope(globPtr->channelEnvelope(chanID));
247  }
248  const char *getName()
249  {
250  return globPtr->channelName(chanID);
251  }
252  };
253  /*
254 typedef struct st_LWChannelInfo {
255  // next group, first on NULL in parent group or root on NULL
256  LWChanGroupID (*nextGroup) ( LWChanGroupID parent,
257  LWChanGroupID group);
258  // next channel, first on NULL in parent group or root on NULL
259  LWChannelID (*nextChannel) ( LWChanGroupID parent,
260  LWChannelID chan);
261  const char *(*groupName) ( LWChanGroupID group);
262  const char *(*channelName) ( LWChannelID chan);
263  LWChanGroupID (*groupParent) ( LWChanGroupID group);
264  LWChanGroupID (*channelParent) ( LWChannelID chan);
265  int (*channelType) ( LWChannelID chan);
266  double (*channelEvaluate) ( LWChannelID chan, LWTime chantime);
267  LWEnvelopeID (*channelEnvelope) ( LWChannelID chan);
268  int (*setChannelEvent) ( LWChannelID chan,
269  LWChanEventFunc ev, void *data );
270  const char *(*server) ( LWChannelID chan,
271  const char *cls, int idx );
272 
273  // Version 2 additions, all index arg.s are 1-based, matching layout
274  unsigned int (*serverFlags) ( LWChannelID chan,
275  const char *cls, int idx );
276  LWInstance (*serverInstance) ( LWChannelID chan,
277  const char *cls, int idx );
278  // Return 1-based index, or 0 on failure
279  int (*serverApply) ( LWChannelID chan, const char *cls,
280  const char *name, int flags );
281  void (*serverRemove) ( LWChannelID chan, const char *cls,
282  const char *name, LWInstance inst );
283 } LWChannelInfo;
284 
285  */
286 }
287 
288 #endif // LWPP_ENVELOPE_H