{-# 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.MediaLive.Types.InputDeviceScanType
-- 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.MediaLive.Types.InputDeviceScanType
  ( InputDeviceScanType
      ( ..,
        InputDeviceScanType_INTERLACED,
        InputDeviceScanType_PROGRESSIVE
      ),
  )
where

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

-- | The scan type of the video source.
newtype InputDeviceScanType = InputDeviceScanType'
  { InputDeviceScanType -> Text
fromInputDeviceScanType ::
      Core.Text
  }
  deriving stock
    ( Int -> InputDeviceScanType -> ShowS
[InputDeviceScanType] -> ShowS
InputDeviceScanType -> String
(Int -> InputDeviceScanType -> ShowS)
-> (InputDeviceScanType -> String)
-> ([InputDeviceScanType] -> ShowS)
-> Show InputDeviceScanType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [InputDeviceScanType] -> ShowS
$cshowList :: [InputDeviceScanType] -> ShowS
show :: InputDeviceScanType -> String
$cshow :: InputDeviceScanType -> String
showsPrec :: Int -> InputDeviceScanType -> ShowS
$cshowsPrec :: Int -> InputDeviceScanType -> ShowS
Prelude.Show,
      ReadPrec [InputDeviceScanType]
ReadPrec InputDeviceScanType
Int -> ReadS InputDeviceScanType
ReadS [InputDeviceScanType]
(Int -> ReadS InputDeviceScanType)
-> ReadS [InputDeviceScanType]
-> ReadPrec InputDeviceScanType
-> ReadPrec [InputDeviceScanType]
-> Read InputDeviceScanType
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [InputDeviceScanType]
$creadListPrec :: ReadPrec [InputDeviceScanType]
readPrec :: ReadPrec InputDeviceScanType
$creadPrec :: ReadPrec InputDeviceScanType
readList :: ReadS [InputDeviceScanType]
$creadList :: ReadS [InputDeviceScanType]
readsPrec :: Int -> ReadS InputDeviceScanType
$creadsPrec :: Int -> ReadS InputDeviceScanType
Prelude.Read,
      InputDeviceScanType -> InputDeviceScanType -> Bool
(InputDeviceScanType -> InputDeviceScanType -> Bool)
-> (InputDeviceScanType -> InputDeviceScanType -> Bool)
-> Eq InputDeviceScanType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: InputDeviceScanType -> InputDeviceScanType -> Bool
$c/= :: InputDeviceScanType -> InputDeviceScanType -> Bool
== :: InputDeviceScanType -> InputDeviceScanType -> Bool
$c== :: InputDeviceScanType -> InputDeviceScanType -> Bool
Prelude.Eq,
      Eq InputDeviceScanType
Eq InputDeviceScanType
-> (InputDeviceScanType -> InputDeviceScanType -> Ordering)
-> (InputDeviceScanType -> InputDeviceScanType -> Bool)
-> (InputDeviceScanType -> InputDeviceScanType -> Bool)
-> (InputDeviceScanType -> InputDeviceScanType -> Bool)
-> (InputDeviceScanType -> InputDeviceScanType -> Bool)
-> (InputDeviceScanType
    -> InputDeviceScanType -> InputDeviceScanType)
-> (InputDeviceScanType
    -> InputDeviceScanType -> InputDeviceScanType)
-> Ord InputDeviceScanType
InputDeviceScanType -> InputDeviceScanType -> Bool
InputDeviceScanType -> InputDeviceScanType -> Ordering
InputDeviceScanType -> InputDeviceScanType -> InputDeviceScanType
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 :: InputDeviceScanType -> InputDeviceScanType -> InputDeviceScanType
$cmin :: InputDeviceScanType -> InputDeviceScanType -> InputDeviceScanType
max :: InputDeviceScanType -> InputDeviceScanType -> InputDeviceScanType
$cmax :: InputDeviceScanType -> InputDeviceScanType -> InputDeviceScanType
>= :: InputDeviceScanType -> InputDeviceScanType -> Bool
$c>= :: InputDeviceScanType -> InputDeviceScanType -> Bool
> :: InputDeviceScanType -> InputDeviceScanType -> Bool
$c> :: InputDeviceScanType -> InputDeviceScanType -> Bool
<= :: InputDeviceScanType -> InputDeviceScanType -> Bool
$c<= :: InputDeviceScanType -> InputDeviceScanType -> Bool
< :: InputDeviceScanType -> InputDeviceScanType -> Bool
$c< :: InputDeviceScanType -> InputDeviceScanType -> Bool
compare :: InputDeviceScanType -> InputDeviceScanType -> Ordering
$ccompare :: InputDeviceScanType -> InputDeviceScanType -> Ordering
$cp1Ord :: Eq InputDeviceScanType
Prelude.Ord,
      (forall x. InputDeviceScanType -> Rep InputDeviceScanType x)
-> (forall x. Rep InputDeviceScanType x -> InputDeviceScanType)
-> Generic InputDeviceScanType
forall x. Rep InputDeviceScanType x -> InputDeviceScanType
forall x. InputDeviceScanType -> Rep InputDeviceScanType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep InputDeviceScanType x -> InputDeviceScanType
$cfrom :: forall x. InputDeviceScanType -> Rep InputDeviceScanType x
Prelude.Generic
    )
  deriving newtype
    ( Int -> InputDeviceScanType -> Int
InputDeviceScanType -> Int
(Int -> InputDeviceScanType -> Int)
-> (InputDeviceScanType -> Int) -> Hashable InputDeviceScanType
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: InputDeviceScanType -> Int
$chash :: InputDeviceScanType -> Int
hashWithSalt :: Int -> InputDeviceScanType -> Int
$chashWithSalt :: Int -> InputDeviceScanType -> Int
Prelude.Hashable,
      InputDeviceScanType -> ()
(InputDeviceScanType -> ()) -> NFData InputDeviceScanType
forall a. (a -> ()) -> NFData a
rnf :: InputDeviceScanType -> ()
$crnf :: InputDeviceScanType -> ()
Prelude.NFData,
      Text -> Either String InputDeviceScanType
(Text -> Either String InputDeviceScanType)
-> FromText InputDeviceScanType
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String InputDeviceScanType
$cfromText :: Text -> Either String InputDeviceScanType
Core.FromText,
      InputDeviceScanType -> Text
(InputDeviceScanType -> Text) -> ToText InputDeviceScanType
forall a. (a -> Text) -> ToText a
toText :: InputDeviceScanType -> Text
$ctoText :: InputDeviceScanType -> Text
Core.ToText,
      InputDeviceScanType -> ByteString
(InputDeviceScanType -> ByteString)
-> ToByteString InputDeviceScanType
forall a. (a -> ByteString) -> ToByteString a
toBS :: InputDeviceScanType -> ByteString
$ctoBS :: InputDeviceScanType -> ByteString
Core.ToByteString,
      InputDeviceScanType -> ByteStringBuilder
(InputDeviceScanType -> ByteStringBuilder)
-> ToLog InputDeviceScanType
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: InputDeviceScanType -> ByteStringBuilder
$cbuild :: InputDeviceScanType -> ByteStringBuilder
Core.ToLog,
      HeaderName -> InputDeviceScanType -> [Header]
(HeaderName -> InputDeviceScanType -> [Header])
-> ToHeader InputDeviceScanType
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> InputDeviceScanType -> [Header]
$ctoHeader :: HeaderName -> InputDeviceScanType -> [Header]
Core.ToHeader,
      InputDeviceScanType -> QueryString
(InputDeviceScanType -> QueryString) -> ToQuery InputDeviceScanType
forall a. (a -> QueryString) -> ToQuery a
toQuery :: InputDeviceScanType -> QueryString
$ctoQuery :: InputDeviceScanType -> QueryString
Core.ToQuery,
      Value -> Parser [InputDeviceScanType]
Value -> Parser InputDeviceScanType
(Value -> Parser InputDeviceScanType)
-> (Value -> Parser [InputDeviceScanType])
-> FromJSON InputDeviceScanType
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [InputDeviceScanType]
$cparseJSONList :: Value -> Parser [InputDeviceScanType]
parseJSON :: Value -> Parser InputDeviceScanType
$cparseJSON :: Value -> Parser InputDeviceScanType
Core.FromJSON,
      FromJSONKeyFunction [InputDeviceScanType]
FromJSONKeyFunction InputDeviceScanType
FromJSONKeyFunction InputDeviceScanType
-> FromJSONKeyFunction [InputDeviceScanType]
-> FromJSONKey InputDeviceScanType
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [InputDeviceScanType]
$cfromJSONKeyList :: FromJSONKeyFunction [InputDeviceScanType]
fromJSONKey :: FromJSONKeyFunction InputDeviceScanType
$cfromJSONKey :: FromJSONKeyFunction InputDeviceScanType
Core.FromJSONKey,
      [InputDeviceScanType] -> Encoding
[InputDeviceScanType] -> Value
InputDeviceScanType -> Encoding
InputDeviceScanType -> Value
(InputDeviceScanType -> Value)
-> (InputDeviceScanType -> Encoding)
-> ([InputDeviceScanType] -> Value)
-> ([InputDeviceScanType] -> Encoding)
-> ToJSON InputDeviceScanType
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [InputDeviceScanType] -> Encoding
$ctoEncodingList :: [InputDeviceScanType] -> Encoding
toJSONList :: [InputDeviceScanType] -> Value
$ctoJSONList :: [InputDeviceScanType] -> Value
toEncoding :: InputDeviceScanType -> Encoding
$ctoEncoding :: InputDeviceScanType -> Encoding
toJSON :: InputDeviceScanType -> Value
$ctoJSON :: InputDeviceScanType -> Value
Core.ToJSON,
      ToJSONKeyFunction [InputDeviceScanType]
ToJSONKeyFunction InputDeviceScanType
ToJSONKeyFunction InputDeviceScanType
-> ToJSONKeyFunction [InputDeviceScanType]
-> ToJSONKey InputDeviceScanType
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [InputDeviceScanType]
$ctoJSONKeyList :: ToJSONKeyFunction [InputDeviceScanType]
toJSONKey :: ToJSONKeyFunction InputDeviceScanType
$ctoJSONKey :: ToJSONKeyFunction InputDeviceScanType
Core.ToJSONKey,
      [Node] -> Either String InputDeviceScanType
([Node] -> Either String InputDeviceScanType)
-> FromXML InputDeviceScanType
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String InputDeviceScanType
$cparseXML :: [Node] -> Either String InputDeviceScanType
Core.FromXML,
      InputDeviceScanType -> XML
(InputDeviceScanType -> XML) -> ToXML InputDeviceScanType
forall a. (a -> XML) -> ToXML a
toXML :: InputDeviceScanType -> XML
$ctoXML :: InputDeviceScanType -> XML
Core.ToXML
    )

pattern InputDeviceScanType_INTERLACED :: InputDeviceScanType
pattern $bInputDeviceScanType_INTERLACED :: InputDeviceScanType
$mInputDeviceScanType_INTERLACED :: forall r. InputDeviceScanType -> (Void# -> r) -> (Void# -> r) -> r
InputDeviceScanType_INTERLACED = InputDeviceScanType' "INTERLACED"

pattern InputDeviceScanType_PROGRESSIVE :: InputDeviceScanType
pattern $bInputDeviceScanType_PROGRESSIVE :: InputDeviceScanType
$mInputDeviceScanType_PROGRESSIVE :: forall r. InputDeviceScanType -> (Void# -> r) -> (Void# -> r) -> r
InputDeviceScanType_PROGRESSIVE = InputDeviceScanType' "PROGRESSIVE"

{-# COMPLETE
  InputDeviceScanType_INTERLACED,
  InputDeviceScanType_PROGRESSIVE,
  InputDeviceScanType'
  #-}