/*
 * Display_Default_Configurations.c
 *
 * Created: Sun Jul 06 2025 15:52:12
 *  Author Chris
 */
#include "Display_Default_Configurations.h"

// ============================================================================================
// Defines
#define MODERN_PRIMARY_DARK     DISPLAY_COLOR_FROM_RGB888(28, 28, 30)    // Dark charcoal
#define MODERN_PRIMARY_LIGHT    DISPLAY_COLOR_FROM_RGB888(242, 242, 247) // Light gray
#define MODERN_ACCENT_BLUE      DISPLAY_COLOR_FROM_RGB888(0, 122, 255)   // System blue
#define MODERN_ACCENT_GREEN     DISPLAY_COLOR_FROM_RGB888(48, 209, 88)   // System green
#define MODERN_ACCENT_ORANGE    DISPLAY_COLOR_FROM_RGB888(255, 149, 0)   // System orange
#define MODERN_ACCENT_RED       DISPLAY_COLOR_FROM_RGB888(255, 69, 58)   // System red
#define MODERN_SHADOW           DISPLAY_COLOR_FROM_RGB888(0, 0, 0)       // True black shadow
#define MODERN_GLASS_OVERLAY    DISPLAY_COLOR_FROM_RGB888(255, 255, 255) // White overlay for glass effect


// ============================================================================================
// Variables
extern const unsigned char 	_Font_DejaVu_Sans_Mono_Bold_7x15[];
extern const unsigned char 	_Font_DejaVu_Sans_Mono_Bold_11x17[];
extern const unsigned char 	_Font_DejaVu_Sans_Mono_6x12[];
extern const unsigned char 	_Font_DejaVu_Sans_Mono_7x15[];
extern const unsigned char 	_Font_DejaVu_Sans_Mono_10x17[];


const Message_Box_Style _Message_Box_Style_Regular = {
    .Font = _Font_DejaVu_Sans_Mono_10x17,

    .Background_Color   = MODERN_PRIMARY_DARK,
    .Border_Color       = DISPLAY_COLOR_FROM_RGB888(58, 58, 60),
    .Text_Color         = MODERN_PRIMARY_LIGHT,
    .Accent_Color       = MODERN_ACCENT_BLUE,

    .Border_Radius      = 15,
    .Border_Thickness   = 1,

    .Padding[PADDING_LEFT]      = 20,
    .Padding[PADDING_TOP]       = 20,
    .Padding[PADDING_RIGHT]     = 20,
    .Padding[PADDING_BOTTOM]    = 25
};



Configuration_Menu_Select _Configuration_Default_Select_Menu = {
	.X_Offset 	= 70,
	.X_Indent 	= -6,
	.Font 		= { _Font_DejaVu_Sans_Mono_10x17, _Font_DejaVu_Sans_Mono_7x15, _Font_DejaVu_Sans_Mono_6x12 },
	.Color 		= { DISPLAY_COLOR_WHITE, DISPLAY_COLOR_LIGHTGREY, DISPLAY_COLOR_DARKGREY }
};

Configuration_Menu_Hierarchical _Configuration_Menu_Hierarchical_Default = {
    // Fonts
    .Title_Font = _Font_DejaVu_Sans_Mono_Bold_11x17,
    .Item_Font = _Font_DejaVu_Sans_Mono_7x15,
    .Back_Font = _Font_DejaVu_Sans_Mono_6x12,
    
    // Colors
    .Title_Color = DISPLAY_COLOR_WHITE,
    .Item_Selected_Color = DISPLAY_COLOR_CYAN,
    .Item_Normal_Color = DISPLAY_COLOR_LIGHTGREY,
    .Item_Back_Color = DISPLAY_COLOR_YELLOW,
    .Background_Color = DISPLAY_COLOR_BLACK,
    .Border_Color = DISPLAY_COLOR_DARKGREY,
    .Indicator_Color = DISPLAY_COLOR_BLUE,
    
    // Layout
    .Title_Y_Offset = 25,
    .Menu_Start_Y = 60,
    .Item_Height = 20,
    .Item_Spacing = 4,
    .Item_Alignment = CENTER,
    .Side_Padding = 30,
    .Visible_Items = 6,
    
    // Animation
    .Animation_Speed = 8,
    .Transition_Frames = 12,
    
    // Visual indicators
    .Show_Scroll_Indicators = true,
    .Show_Item_Icons = false,
    .Show_Sub_Menu_Indicators = true,
    .Show_Selection_Box = true,
    .Selection_Box_Padding = 4
};

// Configuration_Menu_Icon_Row

Configuration_Select_YesNo _Configuration_Default_Select_YesNo = {
	.Title_Font = _Font_DejaVu_Sans_Mono_10x17,
	.Title_Color = DISPLAY_COLOR_LIGHTGREY,
	.Title_Y_Center = DISPLAY_Y_CENTER-20,

	.Value_Font = _Font_DejaVu_Sans_Mono_10x17,
	.Value_Center_X_Offset = 20,
	.Value_Y_Center = DISPLAY_Y_CENTER+20,
	.Animation_Speed = 20
};

Configuration_Select_List _Configuration_Default_Select_List = {
	.Font = _Font_DejaVu_Sans_Mono_10x17,
	.Color_Selected = DISPLAY_COLOR_WHITE,
	.Color_Not_Selected = DISPLAY_COLOR_DARKGREY,

    .Y_Top = 80,
	.List_Entry_Y_Gap = 10,
    .Visible_Items = 5,  // Show 5 items on screen
    
    .Show_Selection_Box = true,
    .Selection_Box_Padding = 4,
    .Selection_Box_Min_Width = 120,
    .Selection_Box_Color = DISPLAY_COLOR_CYAN,

    .Mark_Initial_Entry = true
};

Configuration_Select_Value _Configuration_Default_Select_Value = {
	.Title_Font = _Font_DejaVu_Sans_Mono_Bold_7x15,
	.Title_Color = DISPLAY_COLOR_WHITE,
	.Title_Y_Center = DISPLAY_Y_CENTER-50,

	.Value_Font = _Font_DejaVu_Sans_Mono_10x17,
	.Value_Color = DISPLAY_COLOR_LIGHTGREY,
	.Value_Y_Center = DISPLAY_Y_CENTER+20,

	.Show_Arc = true,
	.Arc_Color = DISPLAY_COLOR_WHITE
};

Configuration_Select_RGB _Configuration_Default_Select_RGB = {
	// Ring colors for each RGB component - vibrant but not overwhelming
	.Ring_Color_Red   = DISPLAY_COLOR_FROM_RGB888(255, 68, 68),    // Bright red #ff4444
	.Ring_Color_Green = DISPLAY_COLOR_FROM_RGB888(68, 255, 68),    // Bright green #44ff44
	.Ring_Color_Blue  = DISPLAY_COLOR_FROM_RGB888(68, 68, 255),    // Bright blue #4444ff
	
	// Geometry settings optimized for 240x240 circular display
	.Center_Preview_Radius     = 40,    // 140px diameter color preview (leaves 50px margin)
	.Progress_Ring_Radius      = 100,   // 200px diameter progress ring (20px from edge)
	.Progress_Ring_Thickness   = 8,     // Substantial ring thickness for visibility
	.Indicator_Radius          = 8,     // 16px diameter indicator dot
	
	// Colors for UI elements - clean monochrome scheme
	.Preview_Border_Color      = DISPLAY_COLOR_WHITE,                       // White border for contrast
	.Preview_Border_Thickness  = 3,                                         // Visible but not thick border
	.Indicator_Core_Color      = DISPLAY_COLOR_WHITE,                       // White indicator core
	.Indicator_Glow_Color      = DISPLAY_COLOR_FROM_RGB888(200, 200, 255),  // Subtle blue glow
	.Background_Ring_Color     = DISPLAY_COLOR_FROM_RGB888(64, 64, 64),     // Dark gray background ring
	.Background_Ring_Thickness = 2,                                         // Thin background ring
	
	// Previous marker settings
    .Previous_Marker_Color = DISPLAY_COLOR_WHITE,
    .Previous_Marker_Radius = 3,
    .Previous_Marker_Ring_Offset = 15,         // 15 pixels inside the main ring
    .Show_Previous_Markers = true,

	// Text display settings - clear hierarchy
	.Component_Font             = _Font_DejaVu_Sans_Mono_Bold_11x17,    // Bold for component labels (RED/GREEN/BLUE)
	.Value_Font                 = _Font_DejaVu_Sans_Mono_10x17,         // Large readable font for values
	.Text_Color                 = DISPLAY_COLOR_WHITE,                  // High contrast white text
	.Component_Text_Y_Offset    = DISPLAY_Y_CENTER - 60,
	.Value_Text_Y_Offset        = DISPLAY_Y_CENTER + 60,
	
	// Animation and interaction settings
	.Smooth_Animation_Steps    = 8,         // Smooth but not too slow transitions
	.Enable_Encoder_Acceleration = true,    // Enable fast value changes
	.Acceleration_Threshold    = 3,         // Trigger acceleration after 3 fast steps
	.Acceleration_Multiplier   = 5          // 5x speed during fast rotation
};

Configuration_Entry_Indicator _Configuration_Default_Entry_Indicator_Arc = {
	.Type = INDICATOR_ARC,
	
	.Color_Selected = DISPLAY_COLOR_WHITE,
	.Color_Unselected = DISPLAY_COLOR_DARKGREY,

	.Options.Arc.Angle_Span = 120,
	.Options.Arc.Thickness = 4,
	.Options.Arc.Radius = 100
};

Configuration_Entry_Indicator _Configuration_Default_Entry_Indicator_Dot = {
	.Type = INDICATOR_DOT,
	
	.Color_Selected = DISPLAY_COLOR_WHITE,
	.Color_Unselected = DISPLAY_COLOR_DARKGREY,

	.Options.Dot.Dot_Distance = 20,
	.Options.Dot.Dot_Size = 5,
	.Options.Dot.Y = 200,
	.Options.Dot.Unselected_Frame_Only = true
};


// ============================================================================================
// Function Declarations


/*******************************************************************
	Functions
*******************************************************************/


/*******************************************************************
	Internal Functions
*******************************************************************/