{-# 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.Rekognition.Types.LandmarkType
-- 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.Rekognition.Types.LandmarkType
  ( LandmarkType
      ( ..,
        LandmarkType_ChinBottom,
        LandmarkType_EyeLeft,
        LandmarkType_EyeRight,
        LandmarkType_LeftEyeBrowLeft,
        LandmarkType_LeftEyeBrowRight,
        LandmarkType_LeftEyeBrowUp,
        LandmarkType_LeftEyeDown,
        LandmarkType_LeftEyeLeft,
        LandmarkType_LeftEyeRight,
        LandmarkType_LeftEyeUp,
        LandmarkType_LeftPupil,
        LandmarkType_MidJawlineLeft,
        LandmarkType_MidJawlineRight,
        LandmarkType_MouthDown,
        LandmarkType_MouthLeft,
        LandmarkType_MouthRight,
        LandmarkType_MouthUp,
        LandmarkType_Nose,
        LandmarkType_NoseLeft,
        LandmarkType_NoseRight,
        LandmarkType_RightEyeBrowLeft,
        LandmarkType_RightEyeBrowRight,
        LandmarkType_RightEyeBrowUp,
        LandmarkType_RightEyeDown,
        LandmarkType_RightEyeLeft,
        LandmarkType_RightEyeRight,
        LandmarkType_RightEyeUp,
        LandmarkType_RightPupil,
        LandmarkType_UpperJawlineLeft,
        LandmarkType_UpperJawlineRight
      ),
  )
where

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

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

pattern LandmarkType_ChinBottom :: LandmarkType
pattern $bLandmarkType_ChinBottom :: LandmarkType
$mLandmarkType_ChinBottom :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_ChinBottom = LandmarkType' "chinBottom"

pattern LandmarkType_EyeLeft :: LandmarkType
pattern $bLandmarkType_EyeLeft :: LandmarkType
$mLandmarkType_EyeLeft :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_EyeLeft = LandmarkType' "eyeLeft"

pattern LandmarkType_EyeRight :: LandmarkType
pattern $bLandmarkType_EyeRight :: LandmarkType
$mLandmarkType_EyeRight :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_EyeRight = LandmarkType' "eyeRight"

pattern LandmarkType_LeftEyeBrowLeft :: LandmarkType
pattern $bLandmarkType_LeftEyeBrowLeft :: LandmarkType
$mLandmarkType_LeftEyeBrowLeft :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_LeftEyeBrowLeft = LandmarkType' "leftEyeBrowLeft"

pattern LandmarkType_LeftEyeBrowRight :: LandmarkType
pattern $bLandmarkType_LeftEyeBrowRight :: LandmarkType
$mLandmarkType_LeftEyeBrowRight :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_LeftEyeBrowRight = LandmarkType' "leftEyeBrowRight"

pattern LandmarkType_LeftEyeBrowUp :: LandmarkType
pattern $bLandmarkType_LeftEyeBrowUp :: LandmarkType
$mLandmarkType_LeftEyeBrowUp :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_LeftEyeBrowUp = LandmarkType' "leftEyeBrowUp"

pattern LandmarkType_LeftEyeDown :: LandmarkType
pattern $bLandmarkType_LeftEyeDown :: LandmarkType
$mLandmarkType_LeftEyeDown :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_LeftEyeDown = LandmarkType' "leftEyeDown"

pattern LandmarkType_LeftEyeLeft :: LandmarkType
pattern $bLandmarkType_LeftEyeLeft :: LandmarkType
$mLandmarkType_LeftEyeLeft :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_LeftEyeLeft = LandmarkType' "leftEyeLeft"

pattern LandmarkType_LeftEyeRight :: LandmarkType
pattern $bLandmarkType_LeftEyeRight :: LandmarkType
$mLandmarkType_LeftEyeRight :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_LeftEyeRight = LandmarkType' "leftEyeRight"

pattern LandmarkType_LeftEyeUp :: LandmarkType
pattern $bLandmarkType_LeftEyeUp :: LandmarkType
$mLandmarkType_LeftEyeUp :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_LeftEyeUp = LandmarkType' "leftEyeUp"

pattern LandmarkType_LeftPupil :: LandmarkType
pattern $bLandmarkType_LeftPupil :: LandmarkType
$mLandmarkType_LeftPupil :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_LeftPupil = LandmarkType' "leftPupil"

pattern LandmarkType_MidJawlineLeft :: LandmarkType
pattern $bLandmarkType_MidJawlineLeft :: LandmarkType
$mLandmarkType_MidJawlineLeft :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_MidJawlineLeft = LandmarkType' "midJawlineLeft"

pattern LandmarkType_MidJawlineRight :: LandmarkType
pattern $bLandmarkType_MidJawlineRight :: LandmarkType
$mLandmarkType_MidJawlineRight :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_MidJawlineRight = LandmarkType' "midJawlineRight"

pattern LandmarkType_MouthDown :: LandmarkType
pattern $bLandmarkType_MouthDown :: LandmarkType
$mLandmarkType_MouthDown :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_MouthDown = LandmarkType' "mouthDown"

pattern LandmarkType_MouthLeft :: LandmarkType
pattern $bLandmarkType_MouthLeft :: LandmarkType
$mLandmarkType_MouthLeft :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_MouthLeft = LandmarkType' "mouthLeft"

pattern LandmarkType_MouthRight :: LandmarkType
pattern $bLandmarkType_MouthRight :: LandmarkType
$mLandmarkType_MouthRight :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_MouthRight = LandmarkType' "mouthRight"

pattern LandmarkType_MouthUp :: LandmarkType
pattern $bLandmarkType_MouthUp :: LandmarkType
$mLandmarkType_MouthUp :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_MouthUp = LandmarkType' "mouthUp"

pattern LandmarkType_Nose :: LandmarkType
pattern $bLandmarkType_Nose :: LandmarkType
$mLandmarkType_Nose :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_Nose = LandmarkType' "nose"

pattern LandmarkType_NoseLeft :: LandmarkType
pattern $bLandmarkType_NoseLeft :: LandmarkType
$mLandmarkType_NoseLeft :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_NoseLeft = LandmarkType' "noseLeft"

pattern LandmarkType_NoseRight :: LandmarkType
pattern $bLandmarkType_NoseRight :: LandmarkType
$mLandmarkType_NoseRight :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_NoseRight = LandmarkType' "noseRight"

pattern LandmarkType_RightEyeBrowLeft :: LandmarkType
pattern $bLandmarkType_RightEyeBrowLeft :: LandmarkType
$mLandmarkType_RightEyeBrowLeft :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_RightEyeBrowLeft = LandmarkType' "rightEyeBrowLeft"

pattern LandmarkType_RightEyeBrowRight :: LandmarkType
pattern $bLandmarkType_RightEyeBrowRight :: LandmarkType
$mLandmarkType_RightEyeBrowRight :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_RightEyeBrowRight = LandmarkType' "rightEyeBrowRight"

pattern LandmarkType_RightEyeBrowUp :: LandmarkType
pattern $bLandmarkType_RightEyeBrowUp :: LandmarkType
$mLandmarkType_RightEyeBrowUp :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_RightEyeBrowUp = LandmarkType' "rightEyeBrowUp"

pattern LandmarkType_RightEyeDown :: LandmarkType
pattern $bLandmarkType_RightEyeDown :: LandmarkType
$mLandmarkType_RightEyeDown :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_RightEyeDown = LandmarkType' "rightEyeDown"

pattern LandmarkType_RightEyeLeft :: LandmarkType
pattern $bLandmarkType_RightEyeLeft :: LandmarkType
$mLandmarkType_RightEyeLeft :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_RightEyeLeft = LandmarkType' "rightEyeLeft"

pattern LandmarkType_RightEyeRight :: LandmarkType
pattern $bLandmarkType_RightEyeRight :: LandmarkType
$mLandmarkType_RightEyeRight :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_RightEyeRight = LandmarkType' "rightEyeRight"

pattern LandmarkType_RightEyeUp :: LandmarkType
pattern $bLandmarkType_RightEyeUp :: LandmarkType
$mLandmarkType_RightEyeUp :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_RightEyeUp = LandmarkType' "rightEyeUp"

pattern LandmarkType_RightPupil :: LandmarkType
pattern $bLandmarkType_RightPupil :: LandmarkType
$mLandmarkType_RightPupil :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_RightPupil = LandmarkType' "rightPupil"

pattern LandmarkType_UpperJawlineLeft :: LandmarkType
pattern $bLandmarkType_UpperJawlineLeft :: LandmarkType
$mLandmarkType_UpperJawlineLeft :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_UpperJawlineLeft = LandmarkType' "upperJawlineLeft"

pattern LandmarkType_UpperJawlineRight :: LandmarkType
pattern $bLandmarkType_UpperJawlineRight :: LandmarkType
$mLandmarkType_UpperJawlineRight :: forall r. LandmarkType -> (Void# -> r) -> (Void# -> r) -> r
LandmarkType_UpperJawlineRight = LandmarkType' "upperJawlineRight"

{-# COMPLETE
  LandmarkType_ChinBottom,
  LandmarkType_EyeLeft,
  LandmarkType_EyeRight,
  LandmarkType_LeftEyeBrowLeft,
  LandmarkType_LeftEyeBrowRight,
  LandmarkType_LeftEyeBrowUp,
  LandmarkType_LeftEyeDown,
  LandmarkType_LeftEyeLeft,
  LandmarkType_LeftEyeRight,
  LandmarkType_LeftEyeUp,
  LandmarkType_LeftPupil,
  LandmarkType_MidJawlineLeft,
  LandmarkType_MidJawlineRight,
  LandmarkType_MouthDown,
  LandmarkType_MouthLeft,
  LandmarkType_MouthRight,
  LandmarkType_MouthUp,
  LandmarkType_Nose,
  LandmarkType_NoseLeft,
  LandmarkType_NoseRight,
  LandmarkType_RightEyeBrowLeft,
  LandmarkType_RightEyeBrowRight,
  LandmarkType_RightEyeBrowUp,
  LandmarkType_RightEyeDown,
  LandmarkType_RightEyeLeft,
  LandmarkType_RightEyeRight,
  LandmarkType_RightEyeUp,
  LandmarkType_RightPupil,
  LandmarkType_UpperJawlineLeft,
  LandmarkType_UpperJawlineRight,
  LandmarkType'
  #-}