    /***************************************************************************
                              material.h  -  description
                                 -------------------
        begin                : Thu Dec 7 2000
        copyright            : (C) 2000 by Jan Walter
        email                : jan@blender.nl
     ***************************************************************************/

    /***************************************************************************
     *                                                                         *
     *   This program is free software; you can redistribute it and/or modify  *
     *   it under the terms of the GNU General Public License as published by  *
     *   the Free Software Foundation; either version 2 of the License, or     *
     *   (at your option) any later version.                                   *
     *                                                                         *
     ***************************************************************************/

    #ifndef MATERIAL_H
    #define MATERIAL_H

    #include <blender.h>

    struct PyObject;

    /**Blender materials can be seen in the OOPS window as cyan rectangles. I decided that a list of materials (only their names) are hold by the objects. This is a bit inconsistent with the OOPS window where materials can be connected with objects or meshes for example.
      *@author Jan Walter
      */

    class Material : public Blender {
    public:
    	Material();
    	~Material();
    	/** A Blender material has always a unique name. The name you give as an argument is only a proposal for the real name. Blender will check if this name is already used and rename the material if necessary. */
      Material(const char* name = "Material");
    private: // Private attributes
      /** All rectangles you can see in the OOPS window are instances of classes with an unique name for all instances of this class. Nevertheless the name of two instances of different classes can be the same. */
      char* name;
      /** Red part of color */
      PyObject* R;
      /** Green part of color */
      PyObject* G;
      /** Blue part of color */
      PyObject* B;
      /** Red part of the specular highlight color */
      PyObject* SpecR;
      /** Green part of the specular highlight color */
      PyObject* SpecG;
      /** Blue part of the specular highlight color */
      PyObject* SpecB;
      /** Red part of the mirror color */
      PyObject* MirR;
      /** Green part of the mirror color */
      PyObject* MirG;
      /** Blue part of the mirror color */
      PyObject* MirB;
      /** Reflectivity. The degree to which the material reflects the basic color when light falls on it */
      PyObject* Ref;
      /** The degree of coverage, which can be used to make materials transparent */
      PyObject* Alpha;
      /** This setting is used for radiosity calculations or light emitting materials (no need to be illuminated by a light source) */
      PyObject* Emit;
      /** Influence of the ambient light settings (world) */
      PyObject* Amb;
      /** Degree of sheen (specularity) */
      PyObject* Spec;
      /** Hardness of the specularity */
      PyObject* Hard;
      /** Halo Size */
    	PyObject* HaSize;
    };

    #endif