#pragma once

#include <stdint.h>
#include <stddef.h>
#define MAX_STRING_LENGTH 100

typedef struct {
    int x;
    int y;
} CursorPosition;

enum {
    PRINT_COLOR_BLACK = 0,
    PRINT_COLOR_BLUE = 1,
    PRINT_COLOR_GREEN = 2,
    PRINT_COLOR_CYAN = 3,
    PRINT_COLOR_RED = 4,
    PRINT_COLOR_MAGENTA = 5,
    PRINT_COLOR_BROWN = 6,
    PRINT_COLOR_LIGHT_GRAY = 7,
    PRINT_COLOR_DARK_GRAY = 8,
    PRINT_COLOR_LIGHT_BLUE = 9,
    PRINT_COLOR_LIGHT_GREEN = 10,
    PRINT_COLOR_LIGHT_CYAN = 11,
    PRINT_COLOR_LIGHT_RED = 12,
    PRINT_COLOR_PINK = 13,
    PRINT_COLOR_YELLOW = 14,
    PRINT_COLOR_WHITE = 15,
};

void sscanf(const char *str, const char *format, char *filename, char *content);
snprintf(char* buffer, size_t size, const char* format, ...);
int my_sscanf(const char *input, const char *format, char *output);
void print_clear();
void print_char(char character);
void print_str(char* string);
void printf(const char* format, ...);
void print_set_color(uint8_t foreground, uint8_t background);
void move_print_cursor(int x, int y);
void offset_print_cursor(int x, int y);
void print_hex(unsigned int num);
CursorPosition get_print_cursor_pos();
