This repository has been archived on 2022-05-21. You can view files and clone it, but cannot push or open issues or pull requests.
glyphs-juke/src/iDrawable.h

49 lines
961 B
C++

#pragma once
#include "common.h"
#include "Rasterbuffer.h"
namespace gj {
class iDrawable {
public:
iDrawable(iDrawable&&) = default;
iDrawable(const iDrawable&) = default;
iDrawable& operator=(iDrawable&&) = default;
iDrawable& operator=(const iDrawable&) = default;
iDrawable() = default;
virtual ~iDrawable() = default;
virtual void Draw(Colorbuffer& buf) const = 0;
};
class DrawableBase : public iDrawable {
public:
DrawableBase() = default;
~DrawableBase() = default;
DrawableBase(DrawableBase&&) = default;
DrawableBase(const DrawableBase&) = default;
DrawableBase& operator=(DrawableBase&&) = default;
DrawableBase& operator=(const DrawableBase&) = default;
void SetMatrix(const mat3& m) {
SetMatrix(mat3(m));
}
void SetMatrix(mat3&& m) {
mat_ = std::move(m);
invmat_ = ::linalg::inverse(mat_);
}
protected:
mat3 mat_ = ::linalg::identity;
mat3 invmat_ = ::linalg::identity;
};
}