#ifndef _dmsSimpleTransform_h_
#define _dmsSimpleTransform_h_

#include <GL/gl.h>
#include <dms/Transform.h>
#include <dms/Vector3.h>

namespace dms
{

class SimpleTransform : public Transform
    {
    public:
        SimpleTransform(void);
        virtual void apply(void);
        
        void setTranslation(const Vector3& trans) { setTranslation(trans[0],trans[1],trans[2]); }
        void setTranslation(GLfloat x,GLfloat y,GLfloat z);
        void setRotation(GLfloat angle,const Vector3& axis) { setRotation(angle,axis[0],axis[1],axis[2]); }
        void setRotation(GLfloat angle,GLfloat x,GLfloat y,GLfloat z);
        void setScaling(GLfloat s) { setScaling(s,s,s); }
        void setScaling(const Vector3& s) { setScaling(s[0],s[1],s[2]); }
        void setScaling(GLfloat x,GLfloat y,GLfloat z);
        
        Vector3 translation(void) { return translate_; }
        GLfloat rotationAngle(void) { return rotateAngle_; }
        Vector3 rotationAxis(void) { return rotateAxis_; }
        Vector3 scaling(void) { return scale_; }

    private:
        Vector3 translate_;
        GLfloat rotateAngle_;
        Vector3 rotateAxis_;
        Vector3 scale_;
    };

}

#endif
