feat(vector): add CImVector

This commit is contained in:
fallenoak 2022-12-24 17:04:44 -06:00 committed by GitHub
parent 785c612610
commit e960598699
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 48 additions and 0 deletions

View file

@ -0,0 +1,19 @@
#include "tempest/vector/CImVector.hpp"
#include "tempest/Math.hpp"
uint32_t CImVector::MakeARGB(uint8_t a, uint8_t r, uint8_t g, uint8_t b) {
return a << 24 | r << 16 | g << 8 | b;
}
bool CImVector::operator==(const CImVector& color) {
return this->value == color.value;
}
void CImVector::Set(float a, float r, float g, float b) {
uint8_t a_ = CMath::fuint_n(a * 255.0f);
uint8_t r_ = CMath::fuint_n(r * 255.0f);
uint8_t g_ = CMath::fuint_n(g * 255.0f);
uint8_t b_ = CMath::fuint_n(b * 255.0f);
this->value = CImVector::MakeARGB(a_, r_, g_, b_);
}

View file

@ -0,0 +1,28 @@
#ifndef TEMPEST_VECTOR_C_IMVECTOR_HPP
#define TEMPEST_VECTOR_C_IMVECTOR_HPP
#include <cstdint>
class CImVector {
public:
// Static functions
static uint32_t MakeARGB(uint8_t a, uint8_t r, uint8_t g, uint8_t b);
// Member variables
union {
struct {
uint8_t b;
uint8_t g;
uint8_t r;
uint8_t a;
};
uint32_t value;
};
// Member functions
bool operator==(const CImVector& color);
void Set(float a, float r, float g, float b);
};
#endif