// This file is auto-generated by alef — DO NOT EDIT.
// alef:hash:4e15143f4af1ae8bafbdb1506ef057da924484c66a19483966333558ad437e75
// To regenerate: alef generate
// To verify freshness: alef verify --exit-code
// Issues & docs: https://github.com/kreuzberg-dev/alef
package dev.kreuzberg;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;

/**
 * Heuristic classification of what an image likely depicts.
 */
public enum ImageKind {
    /** Photographic image (natural scene, photograph) */
    Photograph("photograph"),
    /** Technical or schematic diagram */
    Diagram("diagram"),
    /** Chart, graph, or plot */
    Chart("chart"),
    /** Freehand or technical drawing */
    Drawing("drawing"),
    /** Text-heavy image (scanned text, document) */
    TextBlock("text_block"),
    /** Decorative element or border */
    Decoration("decoration"),
    /** Logo or brand mark */
    Logo("logo"),
    /** Small icon */
    Icon("icon"),
    /** Fragment of a larger tiled image (tile of a technical drawing) */
    TileFragment("tile_fragment"),
    /** Mask or transparency map */
    Mask("mask"),
    /**
     * Full-page render produced during OCR preprocessing; used as a citation thumbnail.
     */
    PageRaster("page_raster"),
    /** Could not classify with reasonable confidence */
    Unknown("unknown");

    /** The string value. */
    private final String value;

    ImageKind(final String value) {
        this.value = value;
    }

    /** Returns the string value. */
    @JsonValue
    public String getValue() {
        return value;
    }

    /** Creates an instance from a string value. */
    @JsonCreator
    public static ImageKind fromValue(final String value) {
        for (ImageKind e : values()) {
            if (e.value.equalsIgnoreCase(value)) {
                return e;
            }
        }
        throw new IllegalArgumentException("Unknown value: " + value);
    }

    /** Returns the wire-format string value (matches JSON serialization). */
    @Override
    public String toString() {
        return value;
    }
}
