This commit is contained in:
robojumper
2024-06-16 11:56:52 +02:00
parent a1871d7d94
commit 22edfeae16
10 changed files with 357 additions and 17 deletions
+35
View File
@@ -0,0 +1,35 @@
#ifndef M_COLOR_H
#define M_COLOR_H
#include <rvl/GX.h>
struct mColor {
mColor() {
rgba = 0xFFFFFFFF;
}
mColor(u8 red, u8 green, u8 blue, u8 alpha) {
r = red;
g = green;
b = blue;
a = alpha;
}
mColor(u32 color) {
rgba = color;
}
// The alternative is that GXColor is a union and this extends GXColor?
operator GXColor &() {
return reinterpret_cast<GXColor &>(*this);
}
union {
struct {
u8 r;
u8 g;
u8 b;
u8 a;
};
u32 rgba;
};
};
#endif
+21
View File
@@ -0,0 +1,21 @@
#ifndef M_COLOR_FADER_H
#define M_COLOR_FADER_H
#include <common.h>
#include <m/m_color.h>
#include <m/m_fader_base.h>
class mColorFader_c : public mFaderBase_c {
public:
mColorFader_c(const mColor &color, EStatus status);
virtual ~mColorFader_c();
virtual void setStatus(EStatus status) override;
virtual u8 calc() override;
virtual void draw() override;
u8 mAspectRatio;
};
#endif
+18
View File
@@ -0,0 +1,18 @@
#ifndef M_FADER_H
#define M_FADER_H
#include <m/m_fader_base.h>
class mFader_c {
public:
void draw();
bool setFader(mFaderBase_c *fader);
bool isStatus(mFaderBase_c::EStatus status) {
return mpFader->getStatus() == status;
}
mFaderBase_c *mpFader;
};
#endif
+42
View File
@@ -0,0 +1,42 @@
#ifndef M_FADER_BASE_H
#define M_FADER_BASE_H
#include <common.h>
#include <m/m_color.h>
class mFaderBase_c {
public:
enum EStatus {
FADED_OUT = 0,
FADED_IN = 1,
FADING_IN = 2,
FADING_OUT = 3,
};
enum EFlag {
FLAG_1 = 1,
FLAG_2 = 2,
};
mFaderBase_c(const mColor &color, EStatus status);
virtual ~mFaderBase_c();
virtual void setStatus(EStatus status) = 0;
virtual EStatus getStatus() const;
virtual bool fadeIn();
virtual bool fadeOut();
virtual u8 calc();
virtual void draw() = 0;
void setFrame(u16 frame);
void setColor(const mColor &color);
EStatus mStatus;
u8 mFlag;
u16 mFrame;
u16 mElapsed;
mColor mFaderColor;
};
#endif