import os

from UniTAP.common import VideoFrame, ColorInfo, DataInfo, get_vf_from_image
from UniTAP.utils import video_frame_to_ci
from .pdl_types import *

UNIGRAF_IMAGE_PATH = os.path.join(os.path.dirname(__file__), "Default_16K.png")


def generate_pattern_as_vf(pattern_type: PatternType, width: int, height: int,
                           color_info: ColorInfo, data_info: DataInfo) -> VideoFrame:
    if pattern_type != PatternType.Unigraf:
        raise NotImplementedError("Generating ColorRamp and ColorSquares not supported yet.")

    if pattern_type == PatternType.Unigraf:
        if not os.path.exists(UNIGRAF_IMAGE_PATH):
            raise FileNotFoundError("Unigraf default image not found. Not possible to generate "
                                    "Unigraf pattern.")
        vf = get_vf_from_image(UNIGRAF_IMAGE_PATH, width, height)

        return video_frame_to_ci(vf, color_info, data_info)
