#ifndef _dmsMaterial_h_
#define _dmsMaterial_h_

#include <GL/gl.h>
#include <dms/Vector4.h>

namespace dms
{

class Material
    {
    public:
        Material(void);
        Material(const Vector4& ambientAndDiffuse);
        Material(const Vector4& ambientAndDiffuse,
                 const Vector4& specular,GLfloat shininess);

        void apply(void);
        void disable(void);
        
        void setAmbient(const Vector4& color);
        void setDiffuse(const Vector4& color);
        void setAmbientAndDiffuse(const Vector4& color);
        void setSpecular(const Vector4& color);
        void setEmission(const Vector4& color);
        void setShininess(GLfloat shininess);
        
        Vector4& ambient(void) { return ambient_; }
        Vector4& diffuse(void) { return diffuse_; }
        Vector4& specular(void) { return specular_; }
        Vector4& emission(void) { return emission_; }
        GLfloat shininess(void) { return shininess_; }
    
    private:
        Vector4 ambient_, diffuse_, specular_, emission_;
        GLfloat shininess_;
    };

}

#endif
