    {-# OPTIONS_HADDOCK hide #-}
    module Graphics.Vty.Debug.Image where

    import Graphics.Vty.Image

    type ImageConstructLog = [ImageConstructEvent]
    data ImageConstructEvent = ImageConstructEvent
        deriving ( Int -> ImageConstructEvent -> ShowS
    [ImageConstructEvent] -> ShowS
    ImageConstructEvent -> String
    (Int -> ImageConstructEvent -> ShowS)
    -> (ImageConstructEvent -> String)
    -> ([ImageConstructEvent] -> ShowS)
    -> Show ImageConstructEvent
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    showList :: [ImageConstructEvent] -> ShowS
    $cshowList :: [ImageConstructEvent] -> ShowS
    show :: ImageConstructEvent -> String
    $cshow :: ImageConstructEvent -> String
    showsPrec :: Int -> ImageConstructEvent -> ShowS
    $cshowsPrec :: Int -> ImageConstructEvent -> ShowS
    Show, ImageConstructEvent -> ImageConstructEvent -> Bool
    (ImageConstructEvent -> ImageConstructEvent -> Bool)
    -> (ImageConstructEvent -> ImageConstructEvent -> Bool)
    -> Eq ImageConstructEvent
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    /= :: ImageConstructEvent -> ImageConstructEvent -> Bool
    $c/= :: ImageConstructEvent -> ImageConstructEvent -> Bool
    == :: ImageConstructEvent -> ImageConstructEvent -> Bool
    $c== :: ImageConstructEvent -> ImageConstructEvent -> Bool
    Eq )

    forwardImageOps :: [Image -> Image]
    forwardImageOps :: [Image -> Image]
    forwardImageOps = (ImageOp -> Image -> Image) -> [ImageOp] -> [Image -> Image]
    forall a b. (a -> b) -> [a] -> [b]
    map ImageOp -> Image -> Image
    forwardTransform [ImageOp]
    debugImageOps

    forwardTransform, reverseTransform :: ImageOp -> (Image -> Image)

    forwardTransform :: ImageOp -> Image -> Image
    forwardTransform (ImageOp f :: Image -> Image
    f _) = Image -> Image
    f
    reverseTransform :: ImageOp -> Image -> Image
    reverseTransform (ImageOp _ r :: Image -> Image
    r) = Image -> Image
    r

    data ImageOp = ImageOp ImageEndo ImageEndo
    type ImageEndo = Image -> Image

    debugImageOps :: [ImageOp]
    debugImageOps :: [ImageOp]
    debugImageOps =
        [ ImageOp
    idImageOp
        -- , renderSingleColumnCharOp
        -- , renderDoubleColumnCharOp
        ]

    idImageOp :: ImageOp
    idImageOp :: ImageOp
    idImageOp = (Image -> Image) -> (Image -> Image) -> ImageOp
    ImageOp Image -> Image
    forall a. a -> a
    id Image -> Image
    forall a. a -> a
    id

    -- renderCharOp :: ImageOp
    -- renderCharOp = ImageOp id id