//
//  Vrml 97 library
//  Copyright (C) 1998 Chris Morley
//
//  %W% %G%
//  VrmlNodeAudioClip.h
//    contributed by Kumaran Santhanam

#ifndef  _VRMLNODEAUDIOCLIP_
#define  _VRMLNODEAUDIOCLIP_

#include "VrmlNode.h"
#include "VrmlMFString.h"
#include "VrmlSFBool.h"
#include "VrmlSFFloat.h"
#include "VrmlSFString.h"
#include "VrmlSFTime.h"

class Audio;

class VrmlNodeAudioClip : public VrmlNode {

public:

  // Define the fields of AudioClip nodes
  static VrmlNodeType *defineType(VrmlNodeType *t = 0);
  virtual VrmlNodeType *nodeType() const;

  VrmlNodeAudioClip(VrmlScene *);
  VrmlNodeAudioClip(const VrmlNodeAudioClip&);
  virtual ~VrmlNodeAudioClip();

  // Copy the node.
  virtual VrmlNode *cloneMe() const;

  virtual void addToScene(VrmlScene *s, const char *relativeUrl);

  void update (VrmlSFTime &now);

  virtual VrmlNodeAudioClip* toAudioClip() const;

  virtual ostream& printFields(ostream& os, int indent);

  virtual void setField(const char *fieldName, const VrmlField &fieldValue);

private:

  VrmlSFString d_description;
  VrmlSFBool d_loop;
  VrmlSFFloat d_pitch;
  VrmlSFTime d_startTime;
  VrmlSFTime d_stopTime;
  VrmlMFString d_url;

  VrmlSFString d_relativeUrl;

  VrmlSFTime d_duration;
  VrmlSFBool d_isActive;

  Audio *d_audio;
  bool   d_url_modified;
  int    _audio_index;
  double _audio_intensity;
  int    _audio_fd;
};

#endif // _VRMLNODEAUDIOCLIP_

