2017-03-30 02:02:15 +02:00
|
|
|
#ifndef GUARD_WINDOW_H
|
|
|
|
#define GUARD_WINDOW_H
|
|
|
|
|
2017-09-01 16:53:06 +02:00
|
|
|
enum
|
|
|
|
{
|
|
|
|
WINDOW_PRIORITY,
|
|
|
|
WINDOW_TILEMAP_LEFT,
|
|
|
|
WINDOW_TILEMAP_TOP,
|
|
|
|
WINDOW_WIDTH,
|
|
|
|
WINDOW_HEIGHT,
|
|
|
|
WINDOW_PALETTE_NUM,
|
|
|
|
WINDOW_BASE_BLOCK,
|
|
|
|
WINDOW_TILE_DATA
|
|
|
|
};
|
|
|
|
|
2017-03-30 02:02:15 +02:00
|
|
|
struct WindowTemplate
|
|
|
|
{
|
|
|
|
u8 priority;
|
|
|
|
u8 tilemapLeft;
|
|
|
|
u8 tilemapTop;
|
|
|
|
u8 width;
|
|
|
|
u8 height;
|
|
|
|
u8 paletteNum;
|
|
|
|
u16 baseBlock;
|
|
|
|
};
|
|
|
|
|
2017-09-19 14:27:46 +02:00
|
|
|
#define DUMMY_WIN_TEMPLATE \
|
|
|
|
{ \
|
|
|
|
0xFF, \
|
|
|
|
0, \
|
|
|
|
0, \
|
|
|
|
0, \
|
|
|
|
0, \
|
|
|
|
0, \
|
|
|
|
0, \
|
|
|
|
}
|
|
|
|
|
2017-03-30 02:02:15 +02:00
|
|
|
struct Window
|
|
|
|
{
|
|
|
|
struct WindowTemplate window;
|
|
|
|
u8 *tileData;
|
|
|
|
};
|
|
|
|
|
2017-09-18 18:36:05 +02:00
|
|
|
bool16 InitWindows(const struct WindowTemplate *templates);
|
2017-09-05 13:01:24 +02:00
|
|
|
u16 AddWindow(const struct WindowTemplate *template);
|
2017-10-07 03:59:47 +02:00
|
|
|
int AddWindowWithoutTileMap(const struct WindowTemplate *template);
|
2017-09-01 17:38:28 +02:00
|
|
|
void RemoveWindow(u8 windowId);
|
|
|
|
void FreeAllWindowBuffers(void);
|
|
|
|
void CopyWindowToVram(u8 windowId, u8 mode);
|
|
|
|
void CopyWindowRectToVram(u32 windowId, u32 mode, u32 x, u32 y, u32 w, u32 h);
|
|
|
|
void PutWindowTilemap(u8 windowId);
|
|
|
|
void PutWindowRectTilemapOverridePalette(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 palette);
|
|
|
|
void ClearWindowTilemap(u8 windowId);
|
|
|
|
void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height);
|
|
|
|
void BlitBitmapToWindow(u8 windowId, u8 *pixels, u16 x, u16 y, u16 width, u16 height);
|
|
|
|
void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight);
|
|
|
|
void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height);
|
2017-09-26 22:39:59 +02:00
|
|
|
void CopyToWindowPixelBuffer(u8 windowId, const u8 *src, u16 size, u16 tileOffset);
|
2017-09-01 17:38:28 +02:00
|
|
|
void FillWindowPixelBuffer(u8 windowId, u8 fillValue);
|
|
|
|
void ScrollWindow(u8 windowId, u8 direction, u8 distance, u8 fillValue);
|
|
|
|
void CallWindowFunction(u8 windowId, void ( *func)(u8, u8, u8, u8, u8, u8));
|
|
|
|
bool8 SetWindowAttribute(u8 windowId, u8 attributeId, u32 value);
|
|
|
|
u32 GetWindowAttribute(u8 windowId, u8 attributeId);
|
|
|
|
u16 AddWindow8Bit(struct WindowTemplate *template);
|
|
|
|
u16 AddWindow8Bit(struct WindowTemplate *template);
|
|
|
|
void FillWindowPixelRect8Bit(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height);
|
|
|
|
void BlitBitmapRectToWindow4BitTo8Bit(u8 windowId, u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 paletteNum);
|
|
|
|
void CopyWindowToVram8Bit(u8 windowId, u8 mode);
|
|
|
|
|
|
|
|
extern struct Window gWindows[];
|
2017-09-01 16:53:06 +02:00
|
|
|
|
2017-03-30 02:02:15 +02:00
|
|
|
#endif // GUARD_WINDOW_H
|