Open Inventor Release 2024.2.1
 
Loading...
Searching...
No Matches
SoTimeCounter.h
1/*=======================================================================
2 * Copyright 1991-1996, Silicon Graphics, Inc.
3 * ALL RIGHTS RESERVED
4 *
5 * UNPUBLISHED -- Rights reserved under the copyright laws of the United
6 * States. Use of a copyright notice is precautionary only and does not
7 * imply publication or disclosure.
8 *
9 * U.S. GOVERNMENT RESTRICTED RIGHTS LEGEND:
10 * Use, duplication or disclosure by the Government is subject to restrictions
11 * as set forth in FAR 52.227.19(c)(2) or subparagraph (c)(1)(ii) of the Rights
12 * in Technical Data and Computer Software clause at DFARS 252.227-7013 and/or
13 * in similar or successor clauses in the FAR, or the DOD or NASA FAR
14 * Supplement. Contractor/manufacturer is Silicon Graphics, Inc.,
15 * 2011 N. Shoreline Blvd. Mountain View, CA 94039-7311.
16 *
17 * THE CONTENT OF THIS WORK CONTAINS CONFIDENTIAL AND PROPRIETARY
18 * INFORMATION OF SILICON GRAPHICS, INC. ANY DUPLICATION, MODIFICATION,
19 * DISTRIBUTION, OR DISCLOSURE IN ANY FORM, IN WHOLE, OR IN PART, IS STRICTLY
20 * PROHIBITED WITHOUT THE PRIOR EXPRESS WRITTEN PERMISSION OF SILICON
21 * GRAPHICS, INC.
22**=======================================================================*/
23/*=======================================================================
24** Author : Ronen Barzel (MMM yyyy)
25**=======================================================================*/
26/*=======================================================================
27 *** THE CONTENT OF THIS WORK IS PROPRIETARY TO FEI S.A.S, (FEI S.A.S.), ***
28 *** AND IS DISTRIBUTED UNDER A LICENSE AGREEMENT. ***
29 *** ***
30 *** REPRODUCTION, DISCLOSURE, OR USE, IN WHOLE OR IN PART, OTHER THAN AS ***
31 *** SPECIFIED IN THE LICENSE ARE NOT TO BE UNDERTAKEN EXCEPT WITH PRIOR ***
32 *** WRITTEN AUTHORIZATION OF FEI S.A.S. ***
33 *** ***
34 *** RESTRICTED RIGHTS LEGEND ***
35 *** USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT OF THE CONTENT OF THIS ***
36 *** WORK OR RELATED DOCUMENTATION IS SUBJECT TO RESTRICTIONS AS SET FORTH IN ***
37 *** SUBPARAGRAPH (C)(1) OF THE COMMERCIAL COMPUTER SOFTWARE RESTRICTED RIGHT ***
38 *** CLAUSE AT FAR 52.227-19 OR SUBPARAGRAPH (C)(1)(II) OF THE RIGHTS IN ***
39 *** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 52.227-7013. ***
40 *** ***
41 *** COPYRIGHT (C) 1996-2014 BY FEI S.A.S, ***
42 *** BORDEAUX, FRANCE ***
43 *** ALL RIGHTS RESERVED ***
44**=======================================================================*/
45/*=======================================================================
46** Modified by : VSG (MMM YYYY)
47**=======================================================================*/
48
49
50#ifndef _SO_TIME_COUNTER_
51#define _SO_TIME_COUNTER_
52
53#include <Inventor/engines/SoSubEngine.h>
54#include <Inventor/fields/SoSFShort.h>
55#include <Inventor/fields/SoSFFloat.h>
56#include <Inventor/fields/SoMFFloat.h>
57#include <Inventor/fields/SoSFTime.h>
58#include <Inventor/fields/SoSFBool.h>
59#include <Inventor/fields/SoSFTrigger.h>
60
133class SoTimeCounter : public SoEngine {
134
135 SO_ENGINE_HEADER(SoTimeCounter);
136
137 public:
174
183
188
189 private:
190
191 static void initClass();
192 static void exitClass();
193
194 // Writes instance to SoOutput. Takes care of not writing out
195 // connection to realTime that is created in constructor.
196 virtual void writeInstance(SoOutput *out);
197
198 private:
199 virtual void inputChanged(SoField *whichInput);
200
201 // Evaluation method
202 virtual void evaluate();
203
204 // Reads stuff into instance. Works around a problem with old
205 // files that contain explicit references to the default
206 // connection to realTime.
207 virtual SbBool readInstance(SoInput *in, unsigned short flags);
208
209 // Destructor
211 private:
212 enum State {
213 ON, // counting
214 PAUSED // holding
215 } state;
216 enum Todo {
217 RECALC = (1<<0),
218 RESET = (1<<1),
219 SYNC = (1<<2),
220 PAUSE = (1<<3),
221 UNPAUSE = (1<<4)
222 };
223 unsigned int todo;
224 SbTime period; // total cycle time
225 int nStages;
226 int curStage;
227 int prevStage;
228 struct Stage {
229 int val; // counter value for stage
230 float duty; // normalized fraction of cycle
231 SbTime offset; // time from start of cycle
232 } *stages;
233 SbTime baseTime; // Starting time for cycle
234 SbTime pauseOffset; // Starting time for cycle
235};
236
237#endif /* _SO_TIME_COUNTER_ */
238
Class for representation of a time.
Definition SbTime.h:91
Base class for all engines.
Definition SoEngine.h:133
Class for all engine outputs.
Definition SoEngine.h:279
Base class for all fields.
Definition SoField.h:234
Used to read Open Inventor data files.
Definition SoInput.h:363
Multiple-value field containing any number of floating point values.
Definition SoMFFloat.h:90
Used to write Open Inventor data files.
Definition SoOutput.h:186
Field containing a single Boolean value.
Definition SoSFBool.h:79
Field containing a floating-point value.
Definition SoSFFloat.h:78
Field containing a short integer.
Definition SoSFShort.h:81
Field containing an SbTime.
Definition SoSFTime.h:82
Field used to trigger engines or connection networks.
Definition SoSFTrigger.h:85
Timed integer counter.
SoEngineOutput output
( SoSFShort ) Counts min-to-max, in step increments.
SoSFShort max
Maximum value for the counter.
SoSFTrigger syncIn
Restart at the beginning of the cycle.
SoSFFloat frequency
Number of min-to-max cycles per second.
SoSFShort reset
Reset the counter to the specified value.
SoSFTime timeIn
Running time.
SoSFBool on
Counter pauses if this is set to FALSE.
SoTimeCounter()
Constructor.
SoSFShort step
Counter step value.
SoSFShort min
Minimum value for the counter.
SoMFFloat duty
Duty cycle values.
SoEngineOutput syncOut
( SoSFTrigger ) Triggers at cycle start.
int SbBool
Boolean type.
Definition SbBase.h:87