#pragma once

#include <AK/Utf16String.h>
#include <LibJS/Forward.h>
#include <LibJS/Runtime/Value.h>

namespace Web::Bindings {

enum class CanvasFontKerning : u8 {
    Auto,
    Normal,
    None,
};

JS::ThrowCompletionOr<CanvasFontKerning> convert_to_idl_value_for_canvas_font_kerning(JS::VM&, JS::Value);

Utf16String idl_enum_to_string(CanvasFontKerning);

enum class CanvasFontStretch : u8 {
    UltraCondensed,
    ExtraCondensed,
    Condensed,
    SemiCondensed,
    Normal,
    SemiExpanded,
    Expanded,
    ExtraExpanded,
    UltraExpanded,
};

JS::ThrowCompletionOr<CanvasFontStretch> convert_to_idl_value_for_canvas_font_stretch(JS::VM&, JS::Value);

Utf16String idl_enum_to_string(CanvasFontStretch);

enum class CanvasFontVariantCaps : u8 {
    Normal,
    SmallCaps,
    AllSmallCaps,
    PetiteCaps,
    AllPetiteCaps,
    Unicase,
    TitlingCaps,
};

JS::ThrowCompletionOr<CanvasFontVariantCaps> convert_to_idl_value_for_canvas_font_variant_caps(JS::VM&, JS::Value);

Utf16String idl_enum_to_string(CanvasFontVariantCaps);

enum class CanvasTextRendering : u8 {
    Auto,
    Optimizespeed,
    Optimizelegibility,
    Geometricprecision,
};

JS::ThrowCompletionOr<CanvasTextRendering> convert_to_idl_value_for_canvas_text_rendering(JS::VM&, JS::Value);

Utf16String idl_enum_to_string(CanvasTextRendering);

} // namespace Web::Bindings
