{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.MediaConvert.Types.ColorSpaceUsage
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.MediaConvert.Types.ColorSpaceUsage
  ( ColorSpaceUsage
      ( ..,
        ColorSpaceUsage_FALLBACK,
        ColorSpaceUsage_FORCE
      ),
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Prelude as Prelude

-- | There are two sources for color metadata, the input file and the job
-- input settings Color space (ColorSpace) and HDR master display
-- information settings(Hdr10Metadata). The Color space usage setting
-- determines which takes precedence. Choose Force (FORCE) to use color
-- metadata from the input job settings. If you don\'t specify values for
-- those settings, the service defaults to using metadata from your input.
-- FALLBACK - Choose Fallback (FALLBACK) to use color metadata from the
-- source when it is present. If there\'s no color metadata in your input
-- file, the service defaults to using values you specify in the input
-- settings.
newtype ColorSpaceUsage = ColorSpaceUsage'
  { ColorSpaceUsage -> Text
fromColorSpaceUsage ::
      Core.Text
  }
  deriving stock
    ( Int -> ColorSpaceUsage -> ShowS
[ColorSpaceUsage] -> ShowS
ColorSpaceUsage -> String
(Int -> ColorSpaceUsage -> ShowS)
-> (ColorSpaceUsage -> String)
-> ([ColorSpaceUsage] -> ShowS)
-> Show ColorSpaceUsage
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ColorSpaceUsage] -> ShowS
$cshowList :: [ColorSpaceUsage] -> ShowS
show :: ColorSpaceUsage -> String
$cshow :: ColorSpaceUsage -> String
showsPrec :: Int -> ColorSpaceUsage -> ShowS
$cshowsPrec :: Int -> ColorSpaceUsage -> ShowS
Prelude.Show,
      ReadPrec [ColorSpaceUsage]
ReadPrec ColorSpaceUsage
Int -> ReadS ColorSpaceUsage
ReadS [ColorSpaceUsage]
(Int -> ReadS ColorSpaceUsage)
-> ReadS [ColorSpaceUsage]
-> ReadPrec ColorSpaceUsage
-> ReadPrec [ColorSpaceUsage]
-> Read ColorSpaceUsage
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ColorSpaceUsage]
$creadListPrec :: ReadPrec [ColorSpaceUsage]
readPrec :: ReadPrec ColorSpaceUsage
$creadPrec :: ReadPrec ColorSpaceUsage
readList :: ReadS [ColorSpaceUsage]
$creadList :: ReadS [ColorSpaceUsage]
readsPrec :: Int -> ReadS ColorSpaceUsage
$creadsPrec :: Int -> ReadS ColorSpaceUsage
Prelude.Read,
      ColorSpaceUsage -> ColorSpaceUsage -> Bool
(ColorSpaceUsage -> ColorSpaceUsage -> Bool)
-> (ColorSpaceUsage -> ColorSpaceUsage -> Bool)
-> Eq ColorSpaceUsage
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ColorSpaceUsage -> ColorSpaceUsage -> Bool
$c/= :: ColorSpaceUsage -> ColorSpaceUsage -> Bool
== :: ColorSpaceUsage -> ColorSpaceUsage -> Bool
$c== :: ColorSpaceUsage -> ColorSpaceUsage -> Bool
Prelude.Eq,
      Eq ColorSpaceUsage
Eq ColorSpaceUsage
-> (ColorSpaceUsage -> ColorSpaceUsage -> Ordering)
-> (ColorSpaceUsage -> ColorSpaceUsage -> Bool)
-> (ColorSpaceUsage -> ColorSpaceUsage -> Bool)
-> (ColorSpaceUsage -> ColorSpaceUsage -> Bool)
-> (ColorSpaceUsage -> ColorSpaceUsage -> Bool)
-> (ColorSpaceUsage -> ColorSpaceUsage -> ColorSpaceUsage)
-> (ColorSpaceUsage -> ColorSpaceUsage -> ColorSpaceUsage)
-> Ord ColorSpaceUsage
ColorSpaceUsage -> ColorSpaceUsage -> Bool
ColorSpaceUsage -> ColorSpaceUsage -> Ordering
ColorSpaceUsage -> ColorSpaceUsage -> ColorSpaceUsage
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ColorSpaceUsage -> ColorSpaceUsage -> ColorSpaceUsage
$cmin :: ColorSpaceUsage -> ColorSpaceUsage -> ColorSpaceUsage
max :: ColorSpaceUsage -> ColorSpaceUsage -> ColorSpaceUsage
$cmax :: ColorSpaceUsage -> ColorSpaceUsage -> ColorSpaceUsage
>= :: ColorSpaceUsage -> ColorSpaceUsage -> Bool
$c>= :: ColorSpaceUsage -> ColorSpaceUsage -> Bool
> :: ColorSpaceUsage -> ColorSpaceUsage -> Bool
$c> :: ColorSpaceUsage -> ColorSpaceUsage -> Bool
<= :: ColorSpaceUsage -> ColorSpaceUsage -> Bool
$c<= :: ColorSpaceUsage -> ColorSpaceUsage -> Bool
< :: ColorSpaceUsage -> ColorSpaceUsage -> Bool
$c< :: ColorSpaceUsage -> ColorSpaceUsage -> Bool
compare :: ColorSpaceUsage -> ColorSpaceUsage -> Ordering
$ccompare :: ColorSpaceUsage -> ColorSpaceUsage -> Ordering
$cp1Ord :: Eq ColorSpaceUsage
Prelude.Ord,
      (forall x. ColorSpaceUsage -> Rep ColorSpaceUsage x)
-> (forall x. Rep ColorSpaceUsage x -> ColorSpaceUsage)
-> Generic ColorSpaceUsage
forall x. Rep ColorSpaceUsage x -> ColorSpaceUsage
forall x. ColorSpaceUsage -> Rep ColorSpaceUsage x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ColorSpaceUsage x -> ColorSpaceUsage
$cfrom :: forall x. ColorSpaceUsage -> Rep ColorSpaceUsage x
Prelude.Generic
    )
  deriving newtype
    ( Int -> ColorSpaceUsage -> Int
ColorSpaceUsage -> Int
(Int -> ColorSpaceUsage -> Int)
-> (ColorSpaceUsage -> Int) -> Hashable ColorSpaceUsage
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: ColorSpaceUsage -> Int
$chash :: ColorSpaceUsage -> Int
hashWithSalt :: Int -> ColorSpaceUsage -> Int
$chashWithSalt :: Int -> ColorSpaceUsage -> Int
Prelude.Hashable,
      ColorSpaceUsage -> ()
(ColorSpaceUsage -> ()) -> NFData ColorSpaceUsage
forall a. (a -> ()) -> NFData a
rnf :: ColorSpaceUsage -> ()
$crnf :: ColorSpaceUsage -> ()
Prelude.NFData,
      Text -> Either String ColorSpaceUsage
(Text -> Either String ColorSpaceUsage) -> FromText ColorSpaceUsage
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String ColorSpaceUsage
$cfromText :: Text -> Either String ColorSpaceUsage
Core.FromText,
      ColorSpaceUsage -> Text
(ColorSpaceUsage -> Text) -> ToText ColorSpaceUsage
forall a. (a -> Text) -> ToText a
toText :: ColorSpaceUsage -> Text
$ctoText :: ColorSpaceUsage -> Text
Core.ToText,
      ColorSpaceUsage -> ByteString
(ColorSpaceUsage -> ByteString) -> ToByteString ColorSpaceUsage
forall a. (a -> ByteString) -> ToByteString a
toBS :: ColorSpaceUsage -> ByteString
$ctoBS :: ColorSpaceUsage -> ByteString
Core.ToByteString,
      ColorSpaceUsage -> ByteStringBuilder
(ColorSpaceUsage -> ByteStringBuilder) -> ToLog ColorSpaceUsage
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: ColorSpaceUsage -> ByteStringBuilder
$cbuild :: ColorSpaceUsage -> ByteStringBuilder
Core.ToLog,
      HeaderName -> ColorSpaceUsage -> [Header]
(HeaderName -> ColorSpaceUsage -> [Header])
-> ToHeader ColorSpaceUsage
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> ColorSpaceUsage -> [Header]
$ctoHeader :: HeaderName -> ColorSpaceUsage -> [Header]
Core.ToHeader,
      ColorSpaceUsage -> QueryString
(ColorSpaceUsage -> QueryString) -> ToQuery ColorSpaceUsage
forall a. (a -> QueryString) -> ToQuery a
toQuery :: ColorSpaceUsage -> QueryString
$ctoQuery :: ColorSpaceUsage -> QueryString
Core.ToQuery,
      Value -> Parser [ColorSpaceUsage]
Value -> Parser ColorSpaceUsage
(Value -> Parser ColorSpaceUsage)
-> (Value -> Parser [ColorSpaceUsage]) -> FromJSON ColorSpaceUsage
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [ColorSpaceUsage]
$cparseJSONList :: Value -> Parser [ColorSpaceUsage]
parseJSON :: Value -> Parser ColorSpaceUsage
$cparseJSON :: Value -> Parser ColorSpaceUsage
Core.FromJSON,
      FromJSONKeyFunction [ColorSpaceUsage]
FromJSONKeyFunction ColorSpaceUsage
FromJSONKeyFunction ColorSpaceUsage
-> FromJSONKeyFunction [ColorSpaceUsage]
-> FromJSONKey ColorSpaceUsage
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [ColorSpaceUsage]
$cfromJSONKeyList :: FromJSONKeyFunction [ColorSpaceUsage]
fromJSONKey :: FromJSONKeyFunction ColorSpaceUsage
$cfromJSONKey :: FromJSONKeyFunction ColorSpaceUsage
Core.FromJSONKey,
      [ColorSpaceUsage] -> Encoding
[ColorSpaceUsage] -> Value
ColorSpaceUsage -> Encoding
ColorSpaceUsage -> Value
(ColorSpaceUsage -> Value)
-> (ColorSpaceUsage -> Encoding)
-> ([ColorSpaceUsage] -> Value)
-> ([ColorSpaceUsage] -> Encoding)
-> ToJSON ColorSpaceUsage
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [ColorSpaceUsage] -> Encoding
$ctoEncodingList :: [ColorSpaceUsage] -> Encoding
toJSONList :: [ColorSpaceUsage] -> Value
$ctoJSONList :: [ColorSpaceUsage] -> Value
toEncoding :: ColorSpaceUsage -> Encoding
$ctoEncoding :: ColorSpaceUsage -> Encoding
toJSON :: ColorSpaceUsage -> Value
$ctoJSON :: ColorSpaceUsage -> Value
Core.ToJSON,
      ToJSONKeyFunction [ColorSpaceUsage]
ToJSONKeyFunction ColorSpaceUsage
ToJSONKeyFunction ColorSpaceUsage
-> ToJSONKeyFunction [ColorSpaceUsage] -> ToJSONKey ColorSpaceUsage
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [ColorSpaceUsage]
$ctoJSONKeyList :: ToJSONKeyFunction [ColorSpaceUsage]
toJSONKey :: ToJSONKeyFunction ColorSpaceUsage
$ctoJSONKey :: ToJSONKeyFunction ColorSpaceUsage
Core.ToJSONKey,
      [Node] -> Either String ColorSpaceUsage
([Node] -> Either String ColorSpaceUsage)
-> FromXML ColorSpaceUsage
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String ColorSpaceUsage
$cparseXML :: [Node] -> Either String ColorSpaceUsage
Core.FromXML,
      ColorSpaceUsage -> XML
(ColorSpaceUsage -> XML) -> ToXML ColorSpaceUsage
forall a. (a -> XML) -> ToXML a
toXML :: ColorSpaceUsage -> XML
$ctoXML :: ColorSpaceUsage -> XML
Core.ToXML
    )

pattern ColorSpaceUsage_FALLBACK :: ColorSpaceUsage
pattern $bColorSpaceUsage_FALLBACK :: ColorSpaceUsage
$mColorSpaceUsage_FALLBACK :: forall r. ColorSpaceUsage -> (Void# -> r) -> (Void# -> r) -> r
ColorSpaceUsage_FALLBACK = ColorSpaceUsage' "FALLBACK"

pattern ColorSpaceUsage_FORCE :: ColorSpaceUsage
pattern $bColorSpaceUsage_FORCE :: ColorSpaceUsage
$mColorSpaceUsage_FORCE :: forall r. ColorSpaceUsage -> (Void# -> r) -> (Void# -> r) -> r
ColorSpaceUsage_FORCE = ColorSpaceUsage' "FORCE"

{-# COMPLETE
  ColorSpaceUsage_FALLBACK,
  ColorSpaceUsage_FORCE,
  ColorSpaceUsage'
  #-}