#ifndef _dmsTexture_h_
#define _dmsTexture_h_

#include <GL/gl.h>

namespace dms
{

class Texture
    {
    public:
        Texture(GLint wrap=GL_REPEAT, GLint min=GL_LINEAR, GLint mag=GL_LINEAR);
        virtual ~Texture(void);
        virtual void apply(void) = 0;
        virtual void disable(void) = 0;

        void setMinFilter(GLint);
        void setMagFilter(GLint);
        void setWrapS(GLint);
        void setWrapT(GLint);
        void setWrapR(GLint);
        void setWrap(GLint v) { setWrapS(v); setWrapT(v); setWrapR(v); }
        GLint minFilter(void) const { return minFilter_; }
        GLint magFilter(void) const { return magFilter_; }
        GLint wrapS(void) const { return wrapS_; }
        GLint wrapT(void) const { return wrapT_; }
        GLint wrapR(void) const { return wrapR_; }

    private:
        GLint minFilter_, magFilter_, wrapS_, wrapT_, wrapR_;
    };

}

#endif
