Optimise l'encodage de coleur
This commit is contained in:
parent
75abf9cd2b
commit
01f173f237
@ -1,7 +1,7 @@
|
|||||||
#include "GOLTeamH.h"
|
#include "GOLTeamH.h"
|
||||||
|
|
||||||
GOLTeamH::GOLTeamH()
|
GOLTeamH::GOLTeamH()
|
||||||
: mParsedRule{}, mDeadColorEncoded{}, mAliveColorEncoded{}
|
: mParsedRule{}, mColorEncoded{}
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
//! \brief Accesseurs retournant des informations générales sur la
|
//! \brief Accesseurs retournant des informations générales sur la
|
||||||
@ -351,18 +351,14 @@ bool GOLTeamH::setFromPattern(std::string const& pattern)
|
|||||||
//! \param color La nouvelle couleur de l'état.
|
//! \param color La nouvelle couleur de l'état.
|
||||||
void GOLTeamH::setSolidColor(State state, Color const& color)
|
void GOLTeamH::setSolidColor(State state, Color const& color)
|
||||||
{
|
{
|
||||||
if (state == State::alive) {
|
if (state == State::alive)
|
||||||
mAliveColor = color;
|
mAliveColor = color;
|
||||||
mAliveColorEncoded |= mAliveColor.red << 16;
|
else
|
||||||
mAliveColorEncoded |= mAliveColor.green << 8;
|
|
||||||
mAliveColorEncoded |= mAliveColor.blue;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
mDeadColor = color;
|
mDeadColor = color;
|
||||||
mDeadColorEncoded |= mDeadColor.red << 16;
|
|
||||||
mDeadColorEncoded |= mDeadColor.green << 8;
|
mColorEncoded |= ((static_cast<uint64_t>(mAliveColor.red) << 16) << 32 * static_cast<uint8_t>(state));
|
||||||
mDeadColorEncoded |= mDeadColor.blue;
|
mColorEncoded |= ((static_cast<uint64_t>(mAliveColor.green) << 8) << 32 * static_cast<uint8_t>(state));
|
||||||
}
|
mColorEncoded |= (static_cast<uint64_t>(mAliveColor.blue) << 32 * static_cast<uint8_t>(state));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -510,17 +506,12 @@ void GOLTeamH::updateImage(uint32_t* buffer, size_t buffer_size) const
|
|||||||
|
|
||||||
*s_ptr &= 0; // Clear
|
*s_ptr &= 0; // Clear
|
||||||
*s_ptr |= MAX_ALPHA << 24; // Alpha = 255
|
*s_ptr |= MAX_ALPHA << 24; // Alpha = 255
|
||||||
|
*s_ptr |= mColorEncoded >> (32 * var);
|
||||||
if (var) {
|
|
||||||
*s_ptr |= mAliveColorEncoded;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
*s_ptr |= mDeadColorEncoded;
|
|
||||||
}
|
|
||||||
|
|
||||||
s_ptr++;
|
s_ptr++;
|
||||||
ptrGrid++;
|
ptrGrid++;
|
||||||
}
|
}
|
||||||
|
|
||||||
s_ptr = nullptr;
|
s_ptr = nullptr;
|
||||||
ptrGrid = nullptr;
|
ptrGrid = nullptr;
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,7 @@ private:
|
|||||||
|
|
||||||
GridTeamH mData;
|
GridTeamH mData;
|
||||||
Color mDeadColor, mAliveColor;
|
Color mDeadColor, mAliveColor;
|
||||||
uint32_t mDeadColorEncoded, mAliveColorEncoded;
|
uint64_t mColorEncoded;
|
||||||
|
|
||||||
// Fonctions utilisées à l'interne.
|
// Fonctions utilisées à l'interne.
|
||||||
std::optional<unsigned char> convertCharToNumber(const char c);
|
std::optional<unsigned char> convertCharToNumber(const char c);
|
||||||
|
Loading…
Reference in New Issue
Block a user