X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fmatrix.h;h=cb61e292f0eaad46a195995f6c92a5bbf7c1afe8;hp=2e1096f5f4586d7f6c05ea0620f59a5425b4b450;hb=bec07999d95b76f4b47cffcc564d0cd0afc0435e;hpb=856ed578b7b7b79f2156b3e2b94bdea31d8fe2db diff --git a/source/matrix.h b/source/matrix.h index 2e1096f5..cb61e292 100644 --- a/source/matrix.h +++ b/source/matrix.h @@ -38,6 +38,8 @@ public: Matrix operator*(const Matrix &m) const { return static_cast(*this)*static_cast(m); } Matrix &operator*=(const Matrix &m) { Base::operator*=(m); return *this; } + Matrix operator*(float s) const { return static_cast(*this)*s; } + Matrix &operator*=(float s) { Base::operator*=(s); return *this; } Vector4 operator*(const Vector4 &v) const { return static_cast(*this)*v; } Vector3 operator*(const Vector3 &v) const { return ((*this)*compose(v, 1.0f)).slice<3>(0); } float operator[](unsigned) const; @@ -63,47 +65,6 @@ public: static Matrix perspective(const Angle &, float, float, float); }; -class MatrixStack -{ -public: - class Push - { - private: - MatrixStack &stack; - - public: - Push(MatrixStack &s): stack(s) { stack.push(); } - ~Push() { stack.pop(); } - }; - -private: - GLenum mode; - std::vector matrices; - - static GLenum current_mode; - - MatrixStack(const MatrixStack &); - MatrixStack &operator=(const MatrixStack &); - MatrixStack(GLenum); -public: - MatrixStack(); - - const Matrix &top() const; - void load(const Matrix &); - void multiply(const Matrix &); - void push(); - void pop(); -private: - virtual void update(); - -public: - MatrixStack &operator=(const Matrix &); - MatrixStack &operator*=(const Matrix &); - - static MatrixStack &modelview(); - static MatrixStack &projection(); -}; - } // namespace GL } // namespace Msp