pokeemerald/gflib/window.h

82 lines
2.7 KiB
C
Raw Normal View History

2017-03-30 00:02:15 +00:00
#ifndef GUARD_WINDOW_H
#define GUARD_WINDOW_H
#define PIXEL_FILL(num) ((num) | ((num) << 4))
2021-11-03 19:29:18 +00:00
enum {
2018-10-26 22:53:07 +00:00
WINDOW_BG,
2017-09-01 14:53:06 +00:00
WINDOW_TILEMAP_LEFT,
WINDOW_TILEMAP_TOP,
WINDOW_WIDTH,
WINDOW_HEIGHT,
WINDOW_PALETTE_NUM,
WINDOW_BASE_BLOCK,
WINDOW_TILE_DATA
};
2021-11-03 19:29:18 +00:00
// Mode for CopyWindowToVram, CopyWindowRectToVram and CopyWindowToVram8Bit
enum {
COPYWIN_NONE,
COPYWIN_MAP,
COPYWIN_GFX,
COPYWIN_FULL,
};
2017-03-30 00:02:15 +00:00
struct WindowTemplate
{
2018-10-26 22:53:07 +00:00
u8 bg;
2017-03-30 00:02:15 +00:00
u8 tilemapLeft;
u8 tilemapTop;
u8 width;
u8 height;
u8 paletteNum;
u16 baseBlock;
};
2017-09-19 12:27:46 +00:00
#define DUMMY_WIN_TEMPLATE \
{ \
2021-11-03 19:29:18 +00:00
.bg = 0xFF, \
2017-09-19 12:27:46 +00:00
}
2021-02-18 20:01:18 +00:00
#define WINDOW_NONE 0xFF
2017-03-30 00:02:15 +00:00
struct Window
{
struct WindowTemplate window;
u8 *tileData;
};
bool16 InitWindows(const struct WindowTemplate *templates);
2017-09-05 11:01:24 +00:00
u16 AddWindow(const struct WindowTemplate *template);
2017-10-07 01:59:47 +00:00
int AddWindowWithoutTileMap(const struct WindowTemplate *template);
2017-09-01 15:38:28 +00: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);
2018-02-06 20:35:23 +00:00
void BlitBitmapToWindow(u8 windowId, const u8 *pixels, u16 x, u16 y, u16 width, u16 height);
2017-09-01 15:38:28 +00:00
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);
2018-10-21 07:24:57 +00:00
void CopyToWindowPixelBuffer(u8 windowId, const void *src, u16 size, u16 tileOffset);
2017-09-01 15:38:28 +00: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);
2018-12-17 22:00:08 +00:00
u16 AddWindow8Bit(const struct WindowTemplate *template);
void FillWindowPixelBuffer8Bit(u8 windowId, u8 fillValue);
2017-09-01 15:38:28 +00:00
void FillWindowPixelRect8Bit(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height);
2018-12-17 22:00:08 +00:00
void BlitBitmapRectToWindow4BitTo8Bit(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight, u8 paletteNum);
2017-09-01 15:38:28 +00:00
void CopyWindowToVram8Bit(u8 windowId, u8 mode);
extern struct Window gWindows[];
2022-07-29 14:52:35 +00:00
extern void *gWindowBgTilemapBuffers[];
2021-02-18 15:00:07 +00:00
extern u32 gUnusedWindowVar1;
extern u32 gUnusedWindowVar2;
extern u32 gUnusedWindowVar3;
2017-03-30 00:02:15 +00:00
#endif // GUARD_WINDOW_H