/*
 * Copyright (c) 2026, Chloe M.
 * Provided under the BSD-3 clause.
 *
 * Description: Bootvid driver
 * Author:      Chloe M.
 */

#ifndef _BOOTVID_FBIO_H_
#define _BOOTVID_FBIO_H_ 1

#include <stdef.h>

/*
 * Boot console attributes
 *
 * @Background: Console background color
 * @Foreground: Console foreground color
 */
typedef struct {
    ULONG Background;
    ULONG Foreground;
} BOOTCONS_ATTR;

/*
 * Initialize the boot video driver
 */
VOID BootVidInit(VOID);

/*
 * Initialize the boot console
 *
 * @Attr: Attributes to set [NULL for default]
 */
VOID BootVidInitCons(BOOTCONS_ATTR *Attr);

/*
 * Turn off the boot console
 */
VOID BootVidDeInitCons(VOID);

/*
 * Write a string to the boot console
 *
 * @String: String to write
 * @Length: Length of string to write
 */
VOID BootVidConsWrite(const CHAR *String, USIZE Length);

/*
 * Draw a splash screen
 */
VOID BootVidSplash(VOID);

/*
 * Clear the screen with a background color
 *
 * @Color: Color to fill
 */
VOID BootVidClear(ULONG Color);

/*
 * Returns true if the boot console is enabled
 */
BOOLEAN BootVidConsEn(VOID);

#endif  /* !_BOOTVID_FBIO_H_ */
