#ifndef EGG_XFB_H
#define EGG_XFB_H

#include "common.h"
#include "egg/core/eggHeap.h"


namespace EGG {

class Xfb {
public:
    // Non-Official assumed based on actions
    enum XFBState {
        XFB_UNPROCESSED,
        XFB_COPIED,
        XFB_SHOWN,
    };

public:
    /* 0x00 */ u16 mWidth;
    /* 0x02 */ u16 mHeight;
    /* 0x04 */ u8 *mBuffer;
    /* 0x08 */ XFBState mState;
    /* 0x0C */ Xfb *mNext; // idk the actual order, but they always link to each other
    /* 0x10 */ Xfb *mPrev; // idk the actual order, but they always link to each other
public:
    Xfb(Heap *heap);
    void init(u16 width, u16 height, Heap *heap);

    static u32 calcBufferSize(u16 width, u16 height);
};

} // namespace EGG

#endif
