#ifndef VRMLSHAPERAW_H
#define VRMLSHAPERAW_H

#include <cassert>
#include <iostream>
#include <vector>
using namespace std;


/*! 
\brief A limited subset of the VRML Shape node 
 is representated. 

This is an expensive data structure because all the
 supported VRML attributes are allocated for.  However
 because of the flat structure it is easy to use. 

The parser simply writes in the values which it wants
 to and leaves the others unchanged.

The real numbers are set to negative values to indicate
 that the data was not set. Booleans are set to false.
*/
class vrmlshaperaw
{
public:

  // Geometry identification. 
  /** Is this a line? */
  bool isline;
  /** Is this shape a triangle mesh? */
  bool istriangles;

  // VRML attributes. 
  /** The point[] vector data. */
  vector<double> point;
  /** The normal[] vector data. */
  vector<double> normal;
  /** The color vector data. */
  vector<double> color;
  /** The indexes that define the shapses. */
  vector<int> coordIndex;

  /** The diffuse color. */
  double diffuseColor[3];
  /** The emissive color. */
  double emissiveColor[3];
  /** The ambient/background light. */
  double ambientIntensity;

  /** The default initializes memory to not being used. */
  vrmlshaperaw();

  /** For debugging purposes the VRML node interpretation
      can be printed. */
  ostream & print( ostream & os ) const;
};




#endif



