mgba/include/mgba-util/gui.h

93 lines
1.9 KiB
C
Raw Normal View History

2015-08-23 06:20:21 +00:00
/* Copyright (c) 2013-2015 Jeffrey Pfau
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef GUI_H
#define GUI_H
#include <mgba-util/common.h>
2015-08-23 06:20:21 +00:00
2016-12-27 05:01:55 +00:00
CXX_GUARD_START
// TODO: Fix layering violation
#include <mgba/core/input.h>
#include <mgba-util/vector.h>
2015-08-23 06:20:21 +00:00
struct GUIFont;
enum GUIInput {
GUI_INPUT_NONE = -1,
GUI_INPUT_SELECT = 0,
GUI_INPUT_BACK,
GUI_INPUT_CANCEL,
GUI_INPUT_UP,
GUI_INPUT_DOWN,
GUI_INPUT_LEFT,
GUI_INPUT_RIGHT,
2015-08-25 05:11:12 +00:00
2016-08-16 05:15:45 +00:00
GUI_INPUT_USER_START = 0x8,
GUI_INPUT_MAX = 0x20
2015-08-23 06:20:21 +00:00
};
2015-09-05 05:50:20 +00:00
enum GUICursorState {
GUI_CURSOR_NOT_PRESENT = 0,
2015-09-05 05:50:20 +00:00
GUI_CURSOR_UP,
GUI_CURSOR_DOWN,
GUI_CURSOR_CLICKED,
GUI_CURSOR_DRAGGING
};
enum {
BATTERY_EMPTY = 0,
2020-08-10 00:56:26 +00:00
BATTERY_LOW = 25,
BATTERY_HALF = 50,
BATTERY_HIGH = 75,
BATTERY_FULL = 100,
BATTERY_VALUE = 0x7F,
BATTERY_PERCENTAGE_VALID = 0x80,
BATTERY_CHARGING = 0x100,
BATTERY_NOT_PRESENT = 0x200,
};
2015-09-02 04:51:14 +00:00
struct GUIBackground {
void (*draw)(struct GUIBackground*, void* context);
2015-09-02 04:51:14 +00:00
};
2015-08-23 06:20:21 +00:00
struct GUIParams {
2015-08-27 03:11:51 +00:00
unsigned width;
unsigned height;
2015-08-23 06:20:21 +00:00
const struct GUIFont* font;
const char* basePath;
2015-08-23 06:20:21 +00:00
void (*drawStart)(void);
void (*drawEnd)(void);
2016-08-16 05:15:45 +00:00
uint32_t (*pollInput)(const struct mInputMap*);
enum GUICursorState (*pollCursor)(unsigned* x, unsigned* y);
int (*batteryState)(void);
void (*guiPrepare)(void);
void (*guiFinish)(void);
2015-08-30 06:21:41 +00:00
// State
2016-08-16 05:15:45 +00:00
struct mInputMap keyMap;
2015-08-30 06:21:41 +00:00
int inputHistory[GUI_INPUT_MAX];
2015-09-05 05:50:20 +00:00
enum GUICursorState cursorState;
int cx, cy;
// Directories
char currentPath[PATH_MAX];
size_t fileIndex;
2015-08-23 06:20:21 +00:00
};
void GUIInit(struct GUIParams* params);
void GUIPollInput(struct GUIParams* params, uint32_t* newInput, uint32_t* heldInput);
enum GUICursorState GUIPollCursor(struct GUIParams* params, unsigned* x, unsigned* y);
void GUIInvalidateKeys(struct GUIParams* params);
2015-08-30 06:21:41 +00:00
2016-12-27 05:01:55 +00:00
CXX_GUARD_END
2015-08-23 06:20:21 +00:00
#endif