This commit is contained in:
2025-12-06 22:42:06 -06:00
parent ab9b766be3
commit e491cddfcb
8 changed files with 615 additions and 255 deletions

111
include/gui.h Normal file
View File

@@ -0,0 +1,111 @@
#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);
#endif

View File

@@ -13,7 +13,7 @@
#define mice_main_h
/* Application version */
#define MICE_VERSION "dev28"
#define MICE_VERSION "dev36"
/* Default folder */
#define DEFAULT_DIR "sdmc:/"

View File

@@ -80,6 +80,11 @@ void stopPlayback(void);
*/
bool isPlaying(void);
/**
* Returns whether playback is currently paused.
*/
bool isPaused(void);
/**
* Should only be called from a new thread only, and have only one playback
* thread at time. This function has not been written for more than one