{-# 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-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- 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.Data as Data
import qualified Amazonka.Prelude as Prelude

newtype LandmarkType = LandmarkType'
  { LandmarkType -> Text
fromLandmarkType ::
      Data.Text
  }
  deriving stock
    ( Int -> LandmarkType -> ShowS
[LandmarkType] -> ShowS
LandmarkType -> String
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]
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
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
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
Prelude.Ord,
      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
    ( Eq LandmarkType
Int -> LandmarkType -> Int
LandmarkType -> Int
forall a. Eq 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 -> ()
forall a. (a -> ()) -> NFData a
rnf :: LandmarkType -> ()
$crnf :: LandmarkType -> ()
Prelude.NFData,
      Text -> Either String LandmarkType
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String LandmarkType
$cfromText :: Text -> Either String LandmarkType
Data.FromText,
      LandmarkType -> Text
forall a. (a -> Text) -> ToText a
toText :: LandmarkType -> Text
$ctoText :: LandmarkType -> Text
Data.ToText,
      LandmarkType -> ByteString
forall a. (a -> ByteString) -> ToByteString a
toBS :: LandmarkType -> ByteString
$ctoBS :: LandmarkType -> ByteString
Data.ToByteString,
      LandmarkType -> ByteStringBuilder
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: LandmarkType -> ByteStringBuilder
$cbuild :: LandmarkType -> ByteStringBuilder
Data.ToLog,
      HeaderName -> LandmarkType -> [Header]
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> LandmarkType -> [Header]
$ctoHeader :: HeaderName -> LandmarkType -> [Header]
Data.ToHeader,
      LandmarkType -> QueryString
forall a. (a -> QueryString) -> ToQuery a
toQuery :: LandmarkType -> QueryString
$ctoQuery :: LandmarkType -> QueryString
Data.ToQuery,
      Value -> Parser [LandmarkType]
Value -> Parser 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
Data.FromJSON,
      FromJSONKeyFunction [LandmarkType]
FromJSONKeyFunction LandmarkType
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [LandmarkType]
$cfromJSONKeyList :: FromJSONKeyFunction [LandmarkType]
fromJSONKey :: FromJSONKeyFunction LandmarkType
$cfromJSONKey :: FromJSONKeyFunction LandmarkType
Data.FromJSONKey,
      [LandmarkType] -> Encoding
[LandmarkType] -> Value
LandmarkType -> Encoding
LandmarkType -> Value
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
Data.ToJSON,
      ToJSONKeyFunction [LandmarkType]
ToJSONKeyFunction LandmarkType
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [LandmarkType]
$ctoJSONKeyList :: ToJSONKeyFunction [LandmarkType]
toJSONKey :: ToJSONKeyFunction LandmarkType
$ctoJSONKey :: ToJSONKeyFunction LandmarkType
Data.ToJSONKey,
      [Node] -> Either String LandmarkType
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String LandmarkType
$cparseXML :: [Node] -> Either String LandmarkType
Data.FromXML,
      LandmarkType -> XML
forall a. (a -> XML) -> ToXML a
toXML :: LandmarkType -> XML
$ctoXML :: LandmarkType -> XML
Data.ToXML
    )

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

pattern LandmarkType_UpperJawlineRight :: LandmarkType
pattern $bLandmarkType_UpperJawlineRight :: LandmarkType
$mLandmarkType_UpperJawlineRight :: forall {r}. LandmarkType -> ((# #) -> r) -> ((# #) -> 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'
  #-}