/*
 * File: Display_Render_Complex.h
 * Created: Created: Saturday September 2025 09:22:17
 * Author: Chris
 */
#ifndef DISPLAY_RENDER_COMPLEX_H
#define DISPLAY_RENDER_COMPLEX_H

// ============================================================================================
// Includes
#include <math.h>
#include <string.h>

#include "Display_Shapes.h"
#include "Display_Objects.h"


// ============================================================================================
// Defines


// ============================================================================================
// Datatypes


// ============================================================================================
// Function Declarations
void Display_Render_Complex_Value_Bar_Rect		(Coordinates* coordinates, Object_Value_Bar_Rect* value_bar);
void Display_Render_Complex_Value_Bar_Arc       (Coordinates* coordinates, Object_Value_Bar_Arc* value_bar);
void Display_Render_Complex_Graph               (Coordinates* coordinates, Object_Graph* graph);
void Display_Render_Complex_Button				(Coordinates* coordinates, Object_Button* button);
void Display_Render_Complex_Canvas				(Coordinates* coordinates, Object_Canvas* canvas);
void Display_Render_Complex_Message_Box			(Coordinates* coordinates, Object_Message_Box* message_box, int16_t width, int16_t height);
void Display_Render_Complex_Menu_Select			(Coordinates* coordinates, char* menu_titles, uint32_t menu_entry_count, uint32_t title_char_length, uint32_t selected_entry, Configuration_Menu_Select* config);
void Display_Render_Complex_Menu_Icon_Row_Set   (uint32_t initially_selected_item, uint32_t icon_space_width);
void Display_Render_Complex_Menu_Icon_Row       (Coordinates* coordinates, Icon_Row_Item* items, uint32_t item_count, uint32_t selected_item, const Configuration_Menu_Icon_Row* config);
void Display_Render_Complex_Menu_Ring           (Coordinates* coordinates, Object_Menu_Ring* ring_menu);
void Display_Render_Complex_Menu_Hierarchical   (Coordinates* coordinates, Object_Menu_Hierarchical* menu_hierarchical);
void Display_Render_Complex_Select_YesNo_Set    (bool value, const Configuration_Select_YesNo* config);
void Display_Render_Complex_Select_YesNo        (Coordinates* coordinates, char* title, uint32_t title_length, bool value, const Configuration_Select_YesNo* config);
void Display_Render_Complex_Select_List			(Coordinates* coordinates, char* list_titles, uint32_t list_entry_count, uint32_t list_char_length, uint32_t selected_entry, uint32_t initial_entry, const Configuration_Select_List* config);
void Display_Render_Complex_Select_Value        (Coordinates* coordinates, char* title, uint32_t title_length, int32_t value, int32_t max, int32_t min, char* format, const Configuration_Select_Value* config);
void Display_Render_Complex_Select_RGB			(Coordinates* coordinates, Object_Select_RGB* rgb_selector);
void Display_Render_Complex_Entry_Indicator		(Coordinates* coordinates, uint32_t entry_count, int32_t entry_value, const Configuration_Entry_Indicator* config);


#endif // DISPLAY_RENDER_COMPLEX_H