Files
mice-3ds/include/gui.h
2025-12-07 15:39:55 -06:00

127 lines
3.1 KiB
C

#ifndef mice_gui_h
#define mice_gui_h
#include <3ds.h>
#include <citro2d.h>
#include <stdbool.h>
#include "metadata.h"
/* GUI color definitions */
#define GUI_COLOR_BG_TOP C2D_Color32(20, 20, 30, 255)
#define GUI_COLOR_BG_BOTTOM C2D_Color32(15, 15, 25, 255)
#define GUI_COLOR_TEXT C2D_Color32(255, 255, 255, 255)
#define GUI_COLOR_TEXT_DIM C2D_Color32(180, 180, 180, 255)
#define GUI_COLOR_ACCENT C2D_Color32(100, 150, 255, 255)
#define GUI_COLOR_HIGHLIGHT C2D_Color32(50, 80, 150, 255)
/* Screen dimensions */
#define TOP_SCREEN_WIDTH 400
#define TOP_SCREEN_HEIGHT 240
#define BOTTOM_SCREEN_WIDTH 320
#define BOTTOM_SCREEN_HEIGHT 240
/**
* Initialize the GUI system
*
* \return 0 on success, -1 on failure
*/
int guiInit(void);
/**
* Clean up and exit the GUI system
*/
void guiExit(void);
/**
* Begin rendering a frame
*/
void guiBeginFrame(void);
/**
* End rendering a frame and display it
*/
void guiEndFrame(void);
/**
* Clear the top screen
*/
void guiClearTopScreen(void);
/**
* Clear the bottom screen
*/
void guiClearBottomScreen(void);
/**
* Display metadata on the top screen
*
* \param metadata Pointer to metadata structure
* \param filename Filename to display if no title is available
*/
void guiDisplayMetadata(struct metadata_t* metadata, const char* filename);
/**
* Display log messages on the top screen
*
* \param messages Array of message strings
* \param count Number of messages
* \param scroll Scroll offset for messages
*/
void guiDisplayLog(const char** messages, int count, int scroll);
/**
* Display file list on the bottom screen
*
* \param files Array of filenames
* \param count Number of files
* \param selected Index of selected file
* \param scroll Scroll offset
*/
void guiDisplayFileList(const char** files, int count, int selected, int scroll);
/**
* Display playback controls and status on the bottom screen
*
* \param isPlaying Whether playback is active
* \param isPaused Whether playback is paused
* \param position Current position in seconds
* \param duration Total duration in seconds
*/
void guiDisplayPlaybackStatus(bool isPlaying, bool isPaused, float position, float duration);
/**
* Display version text
*
* \param version Version string to display
*/
void guiDisplayVersion(const char* version);
/**
* Draw a simple text string at specified position
*
* \param screen Target screen (GFX_TOP or GFX_BOTTOM)
* \param x X coordinate
* \param y Y coordinate
* \param text Text to display
* \param color Text color
* \param scale Text scale (default 0.5f)
*/
void guiDrawText(gfxScreen_t screen, float x, float y, const char* text, u32 color, float scale);
/**
* Display progress bar on top screen
*
* \param position Current position in seconds
* \param duration Total duration in seconds
*/
void guiDisplayProgressBar(float position, float duration);
/**
* Display current directory path on bottom screen
*
* \param path Current directory path
*/
void guiDisplayCurrentPath(const char* path);
#endif