Support GPU Primitives as constexpr
This commit is contained in:
parent
a16f12a5ce
commit
6d6396ad16
|
@ -7,6 +7,7 @@ include $(JABY_ENGINE_DIR)/lib/Wildcard.mk
|
|||
SRCS = $(call rwildcard, src, c cpp)
|
||||
|
||||
INCLUDES += -I$(JABY_ENGINE_DIR)/include
|
||||
#CCFLAGS += -save-temps=obj
|
||||
|
||||
include $(JABY_ENGINE_DIR)/lib/Makefile
|
||||
include $(JABY_ENGINE_DIR)/lib/PSEXETarget.mk
|
||||
|
|
|
@ -11,6 +11,71 @@ enum LBA {
|
|||
__jabyengine_end_lba_request
|
||||
};
|
||||
|
||||
// Some default values for the objects
|
||||
static constexpr auto TriangleColor = JabyEngine::GPU::Color24(0x0, 0xFF, 0xFF);
|
||||
static constexpr auto TriangleArea = JabyEngine::GPU::AreaI16({0, 0}, {64, 64});
|
||||
static constexpr auto TriangleTPage = JabyEngine::GPU::TPage(320, 0, JabyEngine::GPU::SemiTransparency::B_Half_add_F_Half, JabyEngine::GPU::TexturePageColor::$4bit);
|
||||
static constexpr auto TriangleClut = JabyEngine::GPU::PageClut(320, 511);
|
||||
|
||||
static constexpr auto RectangleColor = JabyEngine::GPU::Color24(0x80, 0x80, 0xFF);
|
||||
static constexpr auto RectangleArea = JabyEngine::GPU::AreaI16({0, TriangleArea.size.height}, {80, 80});
|
||||
static constexpr auto RectangleTPage = JabyEngine::GPU::TPage(320, 256, JabyEngine::GPU::SemiTransparency::B_Half_add_F_Half, JabyEngine::GPU::TexturePageColor::$4bit);
|
||||
static constexpr auto RectangleClut = JabyEngine::GPU::PageClut(320, 510);
|
||||
|
||||
static constexpr const JabyEngine::GPU::POLY_F3 triangle1({
|
||||
{TriangleArea.position.x, TriangleArea.position.y},
|
||||
{TriangleArea.size.width, TriangleArea.size.height},
|
||||
{TriangleArea.position.x, TriangleArea.size.height}},
|
||||
TriangleColor
|
||||
);
|
||||
static constexpr const JabyEngine::GPU::POLY_FT3 triangle2({
|
||||
{TriangleArea.position.x, TriangleArea.position.y},
|
||||
{TriangleArea.size.width, TriangleArea.position.y},
|
||||
{TriangleArea.size.width, TriangleArea.size.height}},{
|
||||
// Texture
|
||||
{TriangleArea.position.x, TriangleArea.position.y},
|
||||
{TriangleArea.size.width, TriangleArea.position.y},
|
||||
{TriangleArea.size.width, TriangleArea.size.height}},
|
||||
TriangleTPage,
|
||||
TriangleClut,
|
||||
JabyEngine::GPU::Color24::Grey()
|
||||
);
|
||||
static constexpr const JabyEngine::GPU::POLY_G3 triangle3({
|
||||
{triangle1.vertex0.move(TriangleArea.size.width, 0), JabyEngine::GPU::Color24::Red()},
|
||||
{triangle1.vertex1.move(TriangleArea.size.width, 0), JabyEngine::GPU::Color24::Green()},
|
||||
{triangle1.vertex2.move(TriangleArea.size.width, 0), JabyEngine::GPU::Color24::Blue()}}
|
||||
);
|
||||
static constexpr const JabyEngine::GPU::POLY_GT3 triangle4({
|
||||
{triangle2.vertex0.move(TriangleArea.size.width, 0), triangle2.page0, JabyEngine::GPU::Color24::Red()},
|
||||
{triangle2.vertex1.move(TriangleArea.size.width, 0), triangle2.page1, JabyEngine::GPU::Color24::Blue()},
|
||||
{triangle2.vertex2.move(TriangleArea.size.width, 0), triangle2.page2, JabyEngine::GPU::Color24::Green()}},
|
||||
TriangleTPage,
|
||||
TriangleClut
|
||||
);
|
||||
|
||||
static constexpr const JabyEngine::GPU::POLY_F4 rectangle1(RectangleArea, RectangleColor);
|
||||
static constexpr const JabyEngine::GPU::POLY_FT4 rectangle2({
|
||||
RectangleArea.position.move(RectangleArea.size.width, 0), RectangleArea.size}, {0, 0},
|
||||
RectangleTPage,
|
||||
RectangleClut,
|
||||
JabyEngine::GPU::Color24::Grey()
|
||||
);
|
||||
static constexpr const JabyEngine::GPU::POLY_G4 rectangle3(
|
||||
{RectangleArea.position.move(RectangleArea.size.width*2, 0), RectangleArea.size}, {
|
||||
JabyEngine::GPU::Color24::Red(),
|
||||
JabyEngine::GPU::Color24::Blue(),
|
||||
JabyEngine::GPU::Color24::Green(),
|
||||
JabyEngine::GPU::Color24::White()});
|
||||
static constexpr const JabyEngine::GPU::POLY_GT4 rectangle4(
|
||||
{RectangleArea.position.move(RectangleArea.size.width*3, 0), RectangleArea.size}, {0, 0},
|
||||
RectangleTPage,
|
||||
RectangleClut, {
|
||||
JabyEngine::GPU::Color24::Red(),
|
||||
JabyEngine::GPU::Color24::Blue(),
|
||||
JabyEngine::GPU::Color24::Green(),
|
||||
JabyEngine::GPU::Color24::White()}
|
||||
);
|
||||
|
||||
static void load_assets() {
|
||||
static const JabyEngine::CDFile Assets[] = {
|
||||
JabyEngine::CDFileBuilder::simple_tim(LBA::FONT, JabyEngine::SimpleTIM(320, 0, 320, 511)),
|
||||
|
@ -41,70 +106,6 @@ static void load_assets() {
|
|||
}
|
||||
|
||||
void main() {
|
||||
static constexpr auto TriangleColor = JabyEngine::GPU::Color24(0x0, 0xFF, 0xFF);
|
||||
static constexpr auto TriangleArea = JabyEngine::GPU::AreaI16({0, 0}, {64, 64});
|
||||
static constexpr auto TriangleTPage = JabyEngine::GPU::TPage(320, 0, JabyEngine::GPU::SemiTransparency::B_Half_add_F_Half, JabyEngine::GPU::TexturePageColor::$4bit);
|
||||
static constexpr auto TriangleClut = JabyEngine::GPU::PageClut(320, 511);
|
||||
|
||||
static constexpr auto RectangleColor = JabyEngine::GPU::Color24(0x80, 0x80, 0xFF);
|
||||
static constexpr auto RectangleArea = JabyEngine::GPU::AreaI16({0, TriangleArea.size.height}, {80, 80});
|
||||
static constexpr auto RectangleTPage = JabyEngine::GPU::TPage(320, 256, JabyEngine::GPU::SemiTransparency::B_Half_add_F_Half, JabyEngine::GPU::TexturePageColor::$4bit);
|
||||
static constexpr auto RectangleClut = JabyEngine::GPU::PageClut(320, 510);
|
||||
|
||||
const JabyEngine::GPU::POLY_F3 triangle1({
|
||||
{TriangleArea.position.x, TriangleArea.position.y},
|
||||
{TriangleArea.size.width, TriangleArea.size.height},
|
||||
{TriangleArea.position.x, TriangleArea.size.height}},
|
||||
TriangleColor
|
||||
);
|
||||
const JabyEngine::GPU::POLY_FT3 triangle2({
|
||||
{TriangleArea.position.x, TriangleArea.position.y},
|
||||
{TriangleArea.size.width, TriangleArea.position.y},
|
||||
{TriangleArea.size.width, TriangleArea.size.height}},{
|
||||
// Texture
|
||||
{TriangleArea.position.x, TriangleArea.position.y},
|
||||
{TriangleArea.size.width, TriangleArea.position.y},
|
||||
{TriangleArea.size.width, TriangleArea.size.height}},
|
||||
TriangleTPage,
|
||||
TriangleClut,
|
||||
JabyEngine::GPU::Color24::Grey()
|
||||
);
|
||||
const JabyEngine::GPU::POLY_G3 triangle3({
|
||||
{triangle1.vertex0.move(TriangleArea.size.width, 0), JabyEngine::GPU::Color24::Red()},
|
||||
{triangle1.vertex1.move(TriangleArea.size.width, 0), JabyEngine::GPU::Color24::Green()},
|
||||
{triangle1.vertex2.move(TriangleArea.size.width, 0), JabyEngine::GPU::Color24::Blue()}}
|
||||
);
|
||||
const JabyEngine::GPU::POLY_GT3 triangle4({
|
||||
{triangle2.vertex0.move(TriangleArea.size.width, 0), triangle2.page0, JabyEngine::GPU::Color24::Red()},
|
||||
{triangle2.vertex1.move(TriangleArea.size.width, 0), triangle2.page1, JabyEngine::GPU::Color24::Blue()},
|
||||
{triangle2.vertex2.move(TriangleArea.size.width, 0), triangle2.page2, JabyEngine::GPU::Color24::Green()}},
|
||||
TriangleTPage,
|
||||
TriangleClut
|
||||
);
|
||||
|
||||
const JabyEngine::GPU::POLY_F4 rectangle1(RectangleArea, RectangleColor);
|
||||
const JabyEngine::GPU::POLY_FT4 rectangle2({
|
||||
RectangleArea.position.move(RectangleArea.size.width, 0), RectangleArea.size}, {0, 0},
|
||||
RectangleTPage,
|
||||
RectangleClut,
|
||||
JabyEngine::GPU::Color24::Grey()
|
||||
);
|
||||
const JabyEngine::GPU::POLY_G4 rectangle3(
|
||||
{RectangleArea.position.move(RectangleArea.size.width*2, 0), RectangleArea.size}, {
|
||||
JabyEngine::GPU::Color24::Red(),
|
||||
JabyEngine::GPU::Color24::Blue(),
|
||||
JabyEngine::GPU::Color24::Green(),
|
||||
JabyEngine::GPU::Color24::White()});
|
||||
const JabyEngine::GPU::POLY_GT4 rectangle4(
|
||||
{RectangleArea.position.move(RectangleArea.size.width*3, 0), RectangleArea.size}, {0, 0},
|
||||
RectangleTPage,
|
||||
RectangleClut, {
|
||||
JabyEngine::GPU::Color24::Red(),
|
||||
JabyEngine::GPU::Color24::Blue(),
|
||||
JabyEngine::GPU::Color24::Green(),
|
||||
JabyEngine::GPU::Color24::White()}
|
||||
);
|
||||
|
||||
load_assets();
|
||||
|
||||
while(true) {
|
||||
|
|
|
@ -145,16 +145,15 @@ namespace JabyEngine {
|
|||
uint16_t padded2; // g
|
||||
|
||||
constexpr POLY_FT3() = default;
|
||||
constexpr POLY_FT3(const Vertex (&verticies)[3], const PagePosition (&page_pos)[3], TPage tpage, PageClut clut, Color24 color = Color24::Grey()) :
|
||||
color(color), code(IdentityCode),
|
||||
vertex0(verticies[0]), page0(page_pos[0]), page_clut(clut),
|
||||
vertex1(verticies[1]), page1(page_pos[1]), tpage(tpage),
|
||||
vertex2(verticies[2]), page2(page_pos[2]) {}
|
||||
constexpr POLY_FT3(const Vertex (&verticies)[3], const PagePosition (&page_pos)[3], TPage tpage, PageClut clut, Color24 color = Color24::Grey()) : POLY_FT3({
|
||||
{verticies[0], page_pos[0]},
|
||||
{verticies[1], page_pos[1]},
|
||||
{verticies[2], page_pos[2]}}, tpage, clut, color) {}
|
||||
constexpr POLY_FT3(const VertexEx (&vertices_ex)[3], TPage tpage, PageClut clut, Color24 color) :
|
||||
color(color), code(IdentityCode),
|
||||
vertex0(vertices_ex[0].position), page0(vertices_ex[0].page), page_clut(clut),
|
||||
vertex1(vertices_ex[1].position), page1(vertices_ex[1].page), tpage(tpage),
|
||||
vertex2(vertices_ex[2].position), page2(vertices_ex[2].page) {}
|
||||
vertex2(vertices_ex[2].position), page2(vertices_ex[2].page), padded2(0) {}
|
||||
};
|
||||
|
||||
struct POLY_G3 : public internal::IsPrimitive, public internal::CodeInterface<POLY_G3> {
|
||||
|
@ -175,14 +174,14 @@ namespace JabyEngine {
|
|||
Vertex vertex2; // f
|
||||
|
||||
constexpr POLY_G3() = default;
|
||||
constexpr POLY_G3(const Vertex (&verticies)[3], const Color24 (&color)[3]) :
|
||||
color0(color[0]), code(IdentityCode), vertex0(verticies[0]),
|
||||
color1(color[1]), vertex1(verticies[1]),
|
||||
color2(color[2]), vertex2(verticies[2]) {}
|
||||
constexpr POLY_G3(const Vertex (&verticies)[3], const Color24 (&color)[3]) : POLY_G3({
|
||||
{verticies[0], color[0]},
|
||||
{verticies[1], color[1]},
|
||||
{verticies[2], color[2]}}) {}
|
||||
constexpr POLY_G3(const VertexEx (&verticies_ex)[3]) :
|
||||
color0(verticies_ex[0].color), code(IdentityCode), vertex0(verticies_ex[0].position),
|
||||
color1(verticies_ex[1].color), vertex1(verticies_ex[1].position),
|
||||
color2(verticies_ex[2].color), vertex2(verticies_ex[2].position) {}
|
||||
color1(verticies_ex[1].color), pad1(0), vertex1(verticies_ex[1].position),
|
||||
color2(verticies_ex[2].color), pad2(0), vertex2(verticies_ex[2].position) {}
|
||||
};
|
||||
|
||||
struct POLY_GT3 : public internal::IsPrimitive, public internal::CodeInterface<POLY_GT3> {
|
||||
|
@ -199,25 +198,25 @@ namespace JabyEngine {
|
|||
PagePosition page0; // c
|
||||
PageClut page_clut; // c
|
||||
Color24 color1; // d
|
||||
uint8_t padded1; // d
|
||||
uint8_t pad1; // d
|
||||
Vertex vertex1; // e
|
||||
PagePosition page1; // f
|
||||
TPage tpage; // f
|
||||
Color24 color2; // g
|
||||
uint8_t padded2; // g
|
||||
uint8_t pad2; // g
|
||||
Vertex vertex2; // h
|
||||
PagePosition page2; // i
|
||||
uint16_t padded3; // i
|
||||
uint16_t pad3; // i
|
||||
|
||||
constexpr POLY_GT3() = default;
|
||||
constexpr POLY_GT3(const Vertex (&verticies)[3], const PagePosition (&page_pos)[3], const Color24 (&color)[3], TPage tpage, PageClut clut) :
|
||||
color0(color[0]), code(IdentityCode), vertex0(verticies[0]), page0(page_pos[0]), page_clut(clut),
|
||||
color1(color[1]), vertex1(verticies[1]), page1(page_pos[1]), tpage(tpage),
|
||||
color2(color[2]), vertex2(verticies[2]), page2(page_pos[2]) {}
|
||||
constexpr POLY_GT3(const Vertex (&verticies)[3], const PagePosition (&page_pos)[3], const Color24 (&color)[3], TPage tpage, PageClut clut) : POLY_GT3({
|
||||
{verticies[0], page_pos[0], color[0]},
|
||||
{verticies[1], page_pos[1], color[1]},
|
||||
{verticies[2], page_pos[2], color[2]}}, tpage, clut) {}
|
||||
constexpr POLY_GT3(const VertexEx (&verticies_ex)[3], TPage tpage, PageClut clut) :
|
||||
color0(verticies_ex[0].color), code(IdentityCode), vertex0(verticies_ex[0].position), page0(verticies_ex[0].page), page_clut(clut),
|
||||
color1(verticies_ex[1].color), vertex1(verticies_ex[1].position), page1(verticies_ex[1].page), tpage(tpage),
|
||||
color2(verticies_ex[2].color), vertex2(verticies_ex[2].position), page2(verticies_ex[2].page) {}
|
||||
color1(verticies_ex[1].color), pad1(0), vertex1(verticies_ex[1].position), page1(verticies_ex[1].page), tpage(tpage),
|
||||
color2(verticies_ex[2].color), pad2(0), vertex2(verticies_ex[2].position), page2(verticies_ex[2].page), pad3(0) {}
|
||||
};
|
||||
|
||||
|
||||
|
@ -266,24 +265,23 @@ namespace JabyEngine {
|
|||
TPage tpage; // e
|
||||
Vertex vertex2; // f
|
||||
PagePosition page2; // g
|
||||
uint16_t padded2; // g
|
||||
uint16_t pad2; // g
|
||||
Vertex vertex3; // h
|
||||
PagePosition page3; // i
|
||||
uint16_t padded3; // i
|
||||
uint16_t pad3; // i
|
||||
|
||||
constexpr POLY_FT4() = default;
|
||||
constexpr POLY_FT4(const Vertex (&verticies)[4], const PagePosition (&page_pos)[4], TPage tpage, PageClut clut, Color24 color) :
|
||||
color(color), code(IdentityCode),
|
||||
vertex0(verticies[0]), page0(page_pos[0]), page_clut(clut),
|
||||
vertex1(verticies[1]), page1(page_pos[1]), tpage(tpage),
|
||||
vertex2(verticies[2]), page2(page_pos[2]),
|
||||
vertex3(verticies[3]), page3(page_pos[3]) {}
|
||||
constexpr POLY_FT4(const Vertex (&verticies)[4], const PagePosition (&page_pos)[4], TPage tpage, PageClut clut, Color24 color) : POLY_FT4({
|
||||
{verticies[0], page_pos[0]},
|
||||
{verticies[1], page_pos[1]},
|
||||
{verticies[2], page_pos[2]},
|
||||
{verticies[3], page_pos[3]}}, tpage, clut, color) {}
|
||||
constexpr POLY_FT4(const VertexEx (&vertices_ex)[4], TPage tpage, PageClut clut, Color24 color = Color24::Grey()) :
|
||||
color(color), code(IdentityCode),
|
||||
vertex0(vertices_ex[0].position), page0(vertices_ex[0].page), page_clut(clut),
|
||||
vertex1(vertices_ex[1].position), page1(vertices_ex[1].page), tpage(tpage),
|
||||
vertex2(vertices_ex[2].position), page2(vertices_ex[2].page),
|
||||
vertex3(vertices_ex[3].position), page3(vertices_ex[3].page) {}
|
||||
vertex2(vertices_ex[2].position), page2(vertices_ex[2].page), pad2(0),
|
||||
vertex3(vertices_ex[3].position), page3(vertices_ex[3].page), pad3(0) {}
|
||||
constexpr POLY_FT4(const AreaI16& area, const PagePosition& texture_pos, TPage tpage, PageClut clut, Color24 color) : POLY_FT4({
|
||||
{area.position, texture_pos},
|
||||
{area.position.move(area.size.width, 0), texture_pos.move(area.size.width, 0)},
|
||||
|
@ -311,16 +309,17 @@ namespace JabyEngine {
|
|||
Vertex vertex3; // h
|
||||
|
||||
constexpr POLY_G4() = default;
|
||||
constexpr POLY_G4(const Vertex (&verticies)[4], const Color24 (&color)[4]) :
|
||||
color0(color[0]), code(IdentityCode), vertex0(verticies[0]),
|
||||
color1(color[1]), vertex1(verticies[1]),
|
||||
color2(color[2]), vertex2(verticies[2]),
|
||||
color3(color[3]), vertex3(verticies[3]) {}
|
||||
constexpr POLY_G4(const Vertex (&verticies)[4], const Color24 (&color)[4]) : POLY_G4({
|
||||
{verticies[0], color[0]},
|
||||
{verticies[1], color[1]},
|
||||
{verticies[2], color[2]},
|
||||
{verticies[3], color[3]}
|
||||
}) {}
|
||||
constexpr POLY_G4(const VertexEx (&verticies_ex)[4]) :
|
||||
color0(verticies_ex[0].color), code(IdentityCode), vertex0(verticies_ex[0].position),
|
||||
color1(verticies_ex[1].color), vertex1(verticies_ex[1].position),
|
||||
color2(verticies_ex[2].color), vertex2(verticies_ex[2].position),
|
||||
color3(verticies_ex[3].color), vertex3(verticies_ex[3].position) {}
|
||||
color1(verticies_ex[1].color), pad1(0), vertex1(verticies_ex[1].position),
|
||||
color2(verticies_ex[2].color), pad2(0), vertex2(verticies_ex[2].position),
|
||||
color3(verticies_ex[3].color), pad3(0), vertex3(verticies_ex[3].position) {}
|
||||
constexpr POLY_G4(const AreaI16& area, const Color24 (&color)[4]) : POLY_G4({
|
||||
{area.position, color[0]},
|
||||
{area.position.move(area.size.width, 0), color[1]},
|
||||
|
@ -339,32 +338,33 @@ namespace JabyEngine {
|
|||
PagePosition page0; // c
|
||||
PageClut page_clut; // c
|
||||
Color24 color1; // d
|
||||
uint8_t padded1; // d
|
||||
uint8_t pad1; // d
|
||||
Vertex vertex1; // e
|
||||
PagePosition page1; // f
|
||||
TPage tpage; // f
|
||||
Color24 color2; // g
|
||||
uint8_t padded2; // g
|
||||
uint8_t pad2; // g
|
||||
Vertex vertex2; // h
|
||||
PagePosition page2; // i
|
||||
uint16_t padded3; // i
|
||||
uint16_t pad3; // i
|
||||
Color24 color3; // j
|
||||
uint8_t padded4; // j
|
||||
uint8_t pad4; // j
|
||||
Vertex vertex3; // k
|
||||
PagePosition page3; // l
|
||||
uint16_t padded5; // l
|
||||
uint16_t pad5; // l
|
||||
|
||||
constexpr POLY_GT4() = default;
|
||||
constexpr POLY_GT4(const Vertex (&verticies)[4], const PagePosition (&page_pos)[4], const Color24 (&color)[4], TPage tpage, PageClut clut) :
|
||||
color0(color[0]), code(IdentityCode), vertex0(verticies[0]), page0(page_pos[0]), page_clut(clut),
|
||||
color1(color[1]), vertex1(verticies[1]), page1(page_pos[1]), tpage(tpage),
|
||||
color2(color[2]), vertex2(verticies[2]), page2(page_pos[2]),
|
||||
color3(color[3]), vertex3(verticies[3]), page3(page_pos[3]) {}
|
||||
constexpr POLY_GT4(const Vertex (&verticies)[4], const PagePosition (&page_pos)[4], const Color24 (&color)[4], TPage tpage, PageClut clut) : POLY_GT4({
|
||||
{verticies[0], page_pos[0], color[0]},
|
||||
{verticies[1], page_pos[1], color[1]},
|
||||
{verticies[2], page_pos[2], color[2]},
|
||||
{verticies[3], page_pos[3], color[3]},
|
||||
}, tpage, clut) {}
|
||||
constexpr POLY_GT4(const VertexEx (&verticies_ex)[4], TPage tpage, PageClut clut) :
|
||||
color0(verticies_ex[0].color), code(IdentityCode), vertex0(verticies_ex[0].position), page0(verticies_ex[0].page), page_clut(clut),
|
||||
color1(verticies_ex[1].color), vertex1(verticies_ex[1].position), page1(verticies_ex[1].page), tpage(tpage),
|
||||
color2(verticies_ex[2].color), vertex2(verticies_ex[2].position), page2(verticies_ex[2].page),
|
||||
color3(verticies_ex[3].color), vertex3(verticies_ex[3].position), page3(verticies_ex[3].page) {}
|
||||
color1(verticies_ex[1].color), pad1(0), vertex1(verticies_ex[1].position), page1(verticies_ex[1].page), tpage(tpage),
|
||||
color2(verticies_ex[2].color), pad2(0), vertex2(verticies_ex[2].position), page2(verticies_ex[2].page), pad3(0),
|
||||
color3(verticies_ex[3].color), pad4(0), vertex3(verticies_ex[3].position), page3(verticies_ex[3].page), pad5(0) {}
|
||||
constexpr POLY_GT4(const AreaI16& area, const PagePosition& texture_pos, TPage tpage, PageClut clut, const Color24 (&color)[4]) : POLY_GT4({
|
||||
{area.position, texture_pos, color[0]},
|
||||
{area.position.move(area.size.width, 0), texture_pos.move(area.size.width, 0), color[1]},
|
||||
|
|
|
@ -139,16 +139,17 @@ namespace JabyEngine {
|
|||
// Type used for primitives
|
||||
struct PagePosition : public internal::XYMovement<PagePosition, uint8_t> {
|
||||
union {
|
||||
uint8_t u = 0;
|
||||
uint8_t x;
|
||||
uint8_t x = 0;
|
||||
uint8_t u;
|
||||
};
|
||||
|
||||
union {
|
||||
uint8_t v = 0;
|
||||
uint8_t y;
|
||||
uint8_t y = 0;
|
||||
uint8_t v;
|
||||
};
|
||||
|
||||
constexpr PagePosition() = default;
|
||||
constexpr PagePosition(uint8_t u, uint8_t v) : u(u), v(v) {
|
||||
constexpr PagePosition(uint8_t u, uint8_t v) : x(u), y(v) { //< Activate x and y to use XYMovement during constexpr
|
||||
}
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue