/*
 * Display_Shapes.h
 *
 * Created: Mon Jul 19 2021 17:55:37
 *  Author Chris
 */
#ifndef DISPLAY_SHAPES_H_
#define DISPLAY_SHAPES_H_

// ============================================================================================
// Includes
#include "Display_Config.h"
#include "Display_Objects_Datatypes.h"


// ============================================================================================
// Defines
#define ARC_FRAME_AUTO_STEPS        0


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


// ============================================================================================
// Function Declarations
void Display_Shapes_Init					(Display_Image_Buffer** current_buffer);
void Display_Shapes_Fill_Screen				(Display_Color color);
void Display_Shapes_Draw_Pixel_Safe			(int16_t x, int16_t y, Display_Color color);
void Display_Shapes_Draw_HLine				(int16_t x, int16_t y, uint16_t width, uint16_t thickness, Display_Color color);
void Display_Shapes_Draw_VLine				(int16_t x, int16_t y, uint16_t height, uint16_t thickness, Display_Color color);
void Display_Shapes_Draw_Line_XY			(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t thickness, Display_Color color);
void Display_Shapes_Draw_Line_Rad			(int16_t x, int16_t y, float angle, uint16_t radius_start, uint16_t radius_end, uint16_t thickness, Display_Color color);
void Display_Shapes_Draw_Rect_Frame			(int16_t x, int16_t y, uint16_t width, uint16_t height, uint16_t thickness, Display_Color color);
void Display_Shapes_Draw_Rect_Filled		(int16_t x, int16_t y, uint16_t width, uint16_t height, Display_Color color);
void Display_Shapes_Draw_Circle_Frame		(int16_t center_x, int16_t center_y, uint16_t radius, uint16_t thickness, Display_Color color);
void Display_Shapes_Draw_Circle_Filled		(int16_t center_x, int16_t center_y, uint16_t radius, Display_Color color);
void Display_Shapes_Draw_Round_Rect_Frame	(int16_t x, int16_t y, uint16_t width, uint16_t height, uint16_t radius, uint16_t thickness, Display_Color color);
void Display_Shapes_Draw_Round_Rect_Filled	(int16_t x, int16_t y, uint16_t width, uint16_t height, uint16_t radius, Display_Color color);
void Display_Shapes_Draw_Arc_Frame          (int16_t center_x, int16_t center_y, int16_t radius, uint16_t thickness, float angle_start, float angle_end, uint16_t steps, Display_Color color);

void Display_Shapes_Draw_Glow_Circle        (int16_t center_x, int16_t center_y, uint16_t radius, Display_Color core_color, Display_Color glow_color);

Coordinates Display_Shapes_Polar_To_XY      (int16_t origin_x, int16_t origin_y, float angle, uint16_t radius);


#endif /* DISPLAY_SHAPES_H_ */
