You've already forked BKRecompModTemplate
mirror of
https://github.com/BanjoRecomp/BKRecompModTemplate.git
synced 2026-02-02 12:22:19 -08:00
298 lines
14 KiB
C
298 lines
14 KiB
C
#ifndef __RECOMPUI_H__
|
|
#define __RECOMPUI_H__
|
|
|
|
#include "modding.h"
|
|
#include "recompui_event_structs.h"
|
|
|
|
typedef unsigned long RecompuiContext;
|
|
typedef unsigned long RecompuiResource;
|
|
typedef unsigned long RecompuiTextureHandle;
|
|
|
|
// Height of the window in DP units. This is fixed regardless of window size and aspect ratio.
|
|
#define RECOMPUI_TOTAL_HEIGHT 1080.0f
|
|
|
|
typedef enum {
|
|
CURSOR_NONE,
|
|
CURSOR_POINTER
|
|
} RecompuiCursor;
|
|
|
|
typedef enum {
|
|
DISPLAY_NONE,
|
|
DISPLAY_BLOCK,
|
|
DISPLAY_INLINE,
|
|
DISPLAY_INLINE_BLOCK,
|
|
DISPLAY_FLOW_ROOT,
|
|
DISPLAY_FLEX,
|
|
DISPLAY_INLINE_FLEX,
|
|
DISPLAY_TABLE,
|
|
DISPLAY_INLINE_TABLE,
|
|
DISPLAY_TABLE_ROW,
|
|
DISPLAY_TABLE_ROW_GROUP,
|
|
DISPLAY_TABLE_COLUMN,
|
|
DISPLAY_TABLE_COLUMN_GROUP,
|
|
DISPLAY_TABLE_CELL
|
|
} RecompuiDisplay;
|
|
|
|
typedef enum {
|
|
VISIBILITY_VISIBLE,
|
|
VISIBILITY_HIDDEN
|
|
} RecompuiVisibility;
|
|
|
|
typedef enum {
|
|
POSITION_ABSOLUTE,
|
|
POSITION_RELATIVE
|
|
} RecompuiPosition;
|
|
|
|
typedef enum {
|
|
JUSTIFY_CONTENT_FLEX_START,
|
|
JUSTIFY_CONTENT_FLEX_END,
|
|
JUSTIFY_CONTENT_CENTER,
|
|
JUSTIFY_CONTENT_SPACE_BETWEEN,
|
|
JUSTIFY_CONTENT_SPACE_AROUND,
|
|
JUSTIFY_CONTENT_SPACE_EVENLY
|
|
} RecompuiJustifyContent;
|
|
|
|
typedef enum {
|
|
FLEX_DIRECTION_ROW,
|
|
FLEX_DIRECTION_COLUMN,
|
|
FLEX_DIRECTION_ROW_REVERSE,
|
|
FLEX_DIRECTION_COLUMN_REVERSE
|
|
} RecompuiFlexDirection;
|
|
|
|
typedef enum {
|
|
ALIGN_ITEMS_FLEX_START,
|
|
ALIGN_ITEMS_FLEX_END,
|
|
ALIGN_ITEMS_CENTER,
|
|
ALIGN_ITEMS_BASELINE,
|
|
ALIGN_ITEMS_STRETCH
|
|
} RecompuiAlignItems;
|
|
|
|
typedef enum {
|
|
OVERFLOW_VISIBLE,
|
|
OVERFLOW_HIDDEN,
|
|
OVERFLOW_AUTO,
|
|
OVERFLOW_SCROLL
|
|
} RecompuiOverflow;
|
|
|
|
typedef enum {
|
|
UNIT_PX,
|
|
UNIT_DP,
|
|
UNIT_PERCENT
|
|
} RecompuiUnit;
|
|
|
|
typedef enum {
|
|
FONT_STYLE_NORMAL,
|
|
FONT_STYLE_ITALIC
|
|
} RecompuiFontStyle;
|
|
|
|
typedef enum {
|
|
TEXT_ALIGN_LEFT,
|
|
TEXT_ALIGN_RIGHT,
|
|
TEXT_ALIGN_CENTER,
|
|
TEXT_ALIGN_JUSTIFY
|
|
} RecompuiTextAlign;
|
|
|
|
typedef enum {
|
|
TEXT_TRANSFORM_NONE,
|
|
TEXT_TRANSFORM_CAPITALIZE,
|
|
TEXT_TRANSFORM_UPPERCASE,
|
|
TEXT_TRANSFORM_LOWERCASE
|
|
} RecompuiTextTransform;
|
|
|
|
typedef enum {
|
|
DRAG_NONE,
|
|
DRAG_DRAG,
|
|
DRAG_DRAG_DROP,
|
|
DRAG_BLOCK,
|
|
DRAG_CLONE
|
|
} RecompuiDrag;
|
|
|
|
typedef enum {
|
|
TAB_INDEX_NONE,
|
|
TAB_INDEX_AUTO
|
|
} RecompuiTabIndex;
|
|
|
|
typedef enum {
|
|
BUTTONSTYLE_PRIMARY,
|
|
BUTTONSTYLE_SECONDARY,
|
|
} RecompuiButtonStyle;
|
|
|
|
typedef enum {
|
|
LABELSTYLE_ANNOTATION,
|
|
LABELSTYLE_SMALL,
|
|
LABELSTYLE_NORMAL,
|
|
LABELSTYLE_LARGE
|
|
} RecompuiLabelStyle;
|
|
|
|
typedef enum {
|
|
SLIDERTYPE_NUMBER,
|
|
SLIDERTYPE_PERCENT,
|
|
SLIDERTYPE_INTEGER
|
|
} RecompuiSliderType;
|
|
|
|
typedef enum {
|
|
NAVDIRECTION_UP,
|
|
NAVDIRECTION_RIGHT,
|
|
NAVDIRECTION_DOWN,
|
|
NAVDIRECTION_LEFT,
|
|
} RecompuiNavDirection;
|
|
|
|
typedef struct {
|
|
unsigned long type;
|
|
float duration;
|
|
} RecompuiAnimation;
|
|
|
|
typedef struct {
|
|
unsigned char r;
|
|
unsigned char g;
|
|
unsigned char b;
|
|
unsigned char a;
|
|
} RecompuiColor;
|
|
|
|
#define RECOMPUI_NULL_CONTEXT (0xFFFFFFFFUL)
|
|
#define RECOMPUI_NULL_RESOURCE (0xFFFFFFFFUL)
|
|
|
|
// Contexts
|
|
RECOMP_IMPORT("*", RecompuiContext recompui_create_context());
|
|
RECOMP_IMPORT("*", void recompui_open_context(RecompuiContext context));
|
|
RECOMP_IMPORT("*", void recompui_close_context(RecompuiContext context));
|
|
RECOMP_IMPORT("*", RecompuiResource recompui_context_root(RecompuiContext context));
|
|
RECOMP_IMPORT("*", void recompui_show_context(RecompuiContext context));
|
|
RECOMP_IMPORT("*", void recompui_hide_context(RecompuiContext context));
|
|
RECOMP_IMPORT("*", void recompui_set_context_captures_input(RecompuiContext context, int captures_input));
|
|
RECOMP_IMPORT("*", void recompui_set_context_captures_mouse(RecompuiContext context, int captures_mouse));
|
|
|
|
// Resources
|
|
RECOMP_IMPORT("*", RecompuiResource recompui_create_style(RecompuiContext context));
|
|
RECOMP_IMPORT("*", RecompuiResource recompui_create_element(RecompuiContext context, RecompuiResource parent));
|
|
RECOMP_IMPORT("*", RecompuiResource recompui_destroy_element(RecompuiResource parent, RecompuiResource element));
|
|
RECOMP_IMPORT("*", RecompuiResource recompui_create_button(RecompuiContext context, RecompuiResource parent, const char* text, RecompuiButtonStyle style));
|
|
RECOMP_IMPORT("*", RecompuiResource recompui_create_label(RecompuiContext context, RecompuiResource parent, const char* text, RecompuiLabelStyle label_style));
|
|
RECOMP_IMPORT("*", RecompuiResource recompui_create_textinput(RecompuiContext context, RecompuiResource parent));
|
|
RECOMP_IMPORT("*", RecompuiResource recompui_create_passwordinput(RecompuiContext context, RecompuiResource parent));
|
|
RECOMP_IMPORT("*", RecompuiResource recompui_create_labelradio(RecompuiContext context, RecompuiResource parent,
|
|
const char** options, unsigned long num_options));
|
|
RECOMP_IMPORT("*", RecompuiResource recompui_create_slider(RecompuiContext context, RecompuiResource parent,
|
|
RecompuiSliderType type, float min_value, float max_value, float step, float initial_value));
|
|
RECOMP_IMPORT("*", RecompuiResource recompui_create_imageview(RecompuiContext context, RecompuiResource parent, RecompuiTextureHandle texture));
|
|
|
|
// Position and Layout
|
|
RECOMP_IMPORT("*", void recompui_set_visibility(RecompuiResource id, RecompuiVisibility visibility));
|
|
RECOMP_IMPORT("*", void recompui_set_position(RecompuiResource id, RecompuiPosition position));
|
|
RECOMP_IMPORT("*", void recompui_set_left(RecompuiResource id, float left, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_top(RecompuiResource id, float top, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_right(RecompuiResource id, float right, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_bottom(RecompuiResource id, float bottom, RecompuiUnit unit));
|
|
|
|
// Sizing
|
|
RECOMP_IMPORT("*", void recompui_set_width(RecompuiResource id, float width, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_width_auto(RecompuiResource id));
|
|
RECOMP_IMPORT("*", void recompui_set_height(RecompuiResource id, float height, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_height_auto(RecompuiResource id));
|
|
RECOMP_IMPORT("*", void recompui_set_min_width(RecompuiResource id, float width, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_min_height(RecompuiResource id, float height, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_max_width(RecompuiResource id, float width, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_max_height(RecompuiResource id, float height, RecompuiUnit unit));
|
|
|
|
// Padding
|
|
RECOMP_IMPORT("*", void recompui_set_padding(RecompuiResource id, float padding, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_padding_left(RecompuiResource id, float padding, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_padding_top(RecompuiResource id, float padding, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_padding_right(RecompuiResource id, float padding, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_padding_bottom(RecompuiResource id, float padding, RecompuiUnit unit));
|
|
|
|
// Margins
|
|
RECOMP_IMPORT("*", void recompui_set_margin(RecompuiResource id, float margin, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_margin_left(RecompuiResource id, float margin, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_margin_top(RecompuiResource id, float margin, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_margin_right(RecompuiResource id, float margin, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_margin_bottom(RecompuiResource id, float margin, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_margin_auto(RecompuiResource id));
|
|
RECOMP_IMPORT("*", void recompui_set_margin_left_auto(RecompuiResource id));
|
|
RECOMP_IMPORT("*", void recompui_set_margin_top_auto(RecompuiResource id));
|
|
RECOMP_IMPORT("*", void recompui_set_margin_right_auto(RecompuiResource id));
|
|
RECOMP_IMPORT("*", void recompui_set_margin_bottom_auto(RecompuiResource id));
|
|
|
|
// Borders
|
|
RECOMP_IMPORT("*", void recompui_set_border_width(RecompuiResource id, float width, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_border_left_width(RecompuiResource id, float width, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_border_top_width(RecompuiResource id, float width, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_border_right_width(RecompuiResource id, float width, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_border_bottom_width(RecompuiResource id, float width, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_border_radius(RecompuiResource id, float radius, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_border_top_left_radius(RecompuiResource id, float radius, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_border_top_right_radius(RecompuiResource id, float radius, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_border_bottom_left_radius(RecompuiResource id, float radius, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_border_bottom_right_radius(RecompuiResource id, float radius, RecompuiUnit unit));
|
|
|
|
// Colors
|
|
RECOMP_IMPORT("*", void recompui_set_background_color(RecompuiResource id, const RecompuiColor* color));
|
|
RECOMP_IMPORT("*", void recompui_set_border_color(RecompuiResource id, const RecompuiColor* color));
|
|
RECOMP_IMPORT("*", void recompui_set_border_left_color(RecompuiResource id, const RecompuiColor* color));
|
|
RECOMP_IMPORT("*", void recompui_set_border_top_color(RecompuiResource id, const RecompuiColor* color));
|
|
RECOMP_IMPORT("*", void recompui_set_border_right_color(RecompuiResource id, const RecompuiColor* color));
|
|
RECOMP_IMPORT("*", void recompui_set_border_bottom_color(RecompuiResource id, const RecompuiColor* color));
|
|
RECOMP_IMPORT("*", void recompui_set_color(RecompuiResource id, const RecompuiColor* color));
|
|
|
|
// Cursor and Display
|
|
RECOMP_IMPORT("*", void recompui_set_cursor(RecompuiResource id, RecompuiCursor cursor));
|
|
RECOMP_IMPORT("*", void recompui_set_opacity(RecompuiResource id, float opacity));
|
|
RECOMP_IMPORT("*", void recompui_set_display(RecompuiResource id, RecompuiDisplay display));
|
|
|
|
// Flexbox
|
|
RECOMP_IMPORT("*", void recompui_set_justify_content(RecompuiResource id, RecompuiJustifyContent justify_content));
|
|
RECOMP_IMPORT("*", void recompui_set_flex_grow(RecompuiResource id, float grow));
|
|
RECOMP_IMPORT("*", void recompui_set_flex_shrink(RecompuiResource id, float shrink));
|
|
RECOMP_IMPORT("*", void recompui_set_flex_basis_auto(RecompuiResource id));
|
|
RECOMP_IMPORT("*", void recompui_set_flex_basis(RecompuiResource id, float basis, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_flex_direction(RecompuiResource id, RecompuiFlexDirection flex_direction));
|
|
RECOMP_IMPORT("*", void recompui_set_align_items(RecompuiResource id, RecompuiAlignItems align_items));
|
|
|
|
// Overflow
|
|
RECOMP_IMPORT("*", void recompui_set_overflow(RecompuiResource id, RecompuiOverflow overflow));
|
|
RECOMP_IMPORT("*", void recompui_set_overflow_x(RecompuiResource id, RecompuiOverflow overflow));
|
|
RECOMP_IMPORT("*", void recompui_set_overflow_y(RecompuiResource id, RecompuiOverflow overflow));
|
|
|
|
// Text and Fonts
|
|
RECOMP_IMPORT("*", void recompui_set_text(RecompuiResource id, const char* text));
|
|
RECOMP_IMPORT("*", void recompui_set_font_size(RecompuiResource id, float size, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_letter_spacing(RecompuiResource id, float spacing, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_line_height(RecompuiResource id, float height, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_font_style(RecompuiResource id, RecompuiFontStyle style));
|
|
RECOMP_IMPORT("*", void recompui_set_font_weight(RecompuiResource id, unsigned long weight));
|
|
RECOMP_IMPORT("*", void recompui_set_text_align(RecompuiResource id, RecompuiTextAlign text_align));
|
|
|
|
// Gaps
|
|
RECOMP_IMPORT("*", void recompui_set_gap(RecompuiResource id, float size, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_row_gap(RecompuiResource id, float size, RecompuiUnit unit));
|
|
RECOMP_IMPORT("*", void recompui_set_column_gap(RecompuiResource id, float size, RecompuiUnit unit));
|
|
|
|
// Drag and Focus
|
|
RECOMP_IMPORT("*", void recompui_set_drag(RecompuiResource id, RecompuiDrag drag));
|
|
RECOMP_IMPORT("*", void recompui_set_tab_index(RecompuiResource id, RecompuiTabIndex focus));
|
|
|
|
// Values
|
|
RECOMP_IMPORT("*", unsigned long recompui_get_input_value_u32(RecompuiResource id));
|
|
RECOMP_IMPORT("*", float recompui_get_input_value_float(RecompuiResource id));
|
|
// !! You must call `recomp_free` on the return value of `recompui_get_input_text` when you're finished with it!
|
|
RECOMP_IMPORT("*", char* recompui_get_input_text(RecompuiResource id));
|
|
RECOMP_IMPORT("*", void recompui_set_input_value_u32(RecompuiResource id, unsigned long val));
|
|
RECOMP_IMPORT("*", void recompui_set_input_value_float(RecompuiResource id, float val));
|
|
RECOMP_IMPORT("*", void recompui_set_input_text(RecompuiResource id, const char* text));
|
|
|
|
// Navigation
|
|
RECOMP_IMPORT("*", void recompui_set_nav_auto(RecompuiResource id, RecompuiNavDirection direction));
|
|
RECOMP_IMPORT("*", void recompui_set_nav_none(RecompuiResource id, RecompuiNavDirection direction));
|
|
RECOMP_IMPORT("*", void recompui_set_nav(RecompuiResource id, RecompuiNavDirection direction, RecompuiResource target_id));
|
|
|
|
// Images
|
|
RECOMP_IMPORT("*", RecompuiTextureHandle recompui_create_texture_rgba32(void* data, unsigned long width, unsigned long height));
|
|
RECOMP_IMPORT("*", void recompui_destroy_texture(RecompuiTextureHandle texture));
|
|
RECOMP_IMPORT("*", void recompui_set_imageview_texture(RecompuiResource id, RecompuiTextureHandle texture));
|
|
|
|
// Callbacks
|
|
typedef void RecompuiEventHandler(RecompuiResource resource, const RecompuiEventData* event, void* userdata);
|
|
RECOMP_IMPORT("*", void recompui_register_callback(RecompuiResource id, RecompuiEventHandler* handler, void* userdata));
|
|
|
|
#endif
|