packages feed

vulkan-3.13: src/Vulkan/Core10/Enums/BlendOp.hs

{-# language CPP #-}
-- No documentation found for Chapter "BlendOp"
module Vulkan.Core10.Enums.BlendOp  (BlendOp( BLEND_OP_ADD
                                            , BLEND_OP_SUBTRACT
                                            , BLEND_OP_REVERSE_SUBTRACT
                                            , BLEND_OP_MIN
                                            , BLEND_OP_MAX
                                            , BLEND_OP_BLUE_EXT
                                            , BLEND_OP_GREEN_EXT
                                            , BLEND_OP_RED_EXT
                                            , BLEND_OP_INVERT_OVG_EXT
                                            , BLEND_OP_CONTRAST_EXT
                                            , BLEND_OP_MINUS_CLAMPED_EXT
                                            , BLEND_OP_MINUS_EXT
                                            , BLEND_OP_PLUS_DARKER_EXT
                                            , BLEND_OP_PLUS_CLAMPED_ALPHA_EXT
                                            , BLEND_OP_PLUS_CLAMPED_EXT
                                            , BLEND_OP_PLUS_EXT
                                            , BLEND_OP_HSL_LUMINOSITY_EXT
                                            , BLEND_OP_HSL_COLOR_EXT
                                            , BLEND_OP_HSL_SATURATION_EXT
                                            , BLEND_OP_HSL_HUE_EXT
                                            , BLEND_OP_HARDMIX_EXT
                                            , BLEND_OP_PINLIGHT_EXT
                                            , BLEND_OP_LINEARLIGHT_EXT
                                            , BLEND_OP_VIVIDLIGHT_EXT
                                            , BLEND_OP_LINEARBURN_EXT
                                            , BLEND_OP_LINEARDODGE_EXT
                                            , BLEND_OP_INVERT_RGB_EXT
                                            , BLEND_OP_INVERT_EXT
                                            , BLEND_OP_EXCLUSION_EXT
                                            , BLEND_OP_DIFFERENCE_EXT
                                            , BLEND_OP_SOFTLIGHT_EXT
                                            , BLEND_OP_HARDLIGHT_EXT
                                            , BLEND_OP_COLORBURN_EXT
                                            , BLEND_OP_COLORDODGE_EXT
                                            , BLEND_OP_LIGHTEN_EXT
                                            , BLEND_OP_DARKEN_EXT
                                            , BLEND_OP_OVERLAY_EXT
                                            , BLEND_OP_SCREEN_EXT
                                            , BLEND_OP_MULTIPLY_EXT
                                            , BLEND_OP_XOR_EXT
                                            , BLEND_OP_DST_ATOP_EXT
                                            , BLEND_OP_SRC_ATOP_EXT
                                            , BLEND_OP_DST_OUT_EXT
                                            , BLEND_OP_SRC_OUT_EXT
                                            , BLEND_OP_DST_IN_EXT
                                            , BLEND_OP_SRC_IN_EXT
                                            , BLEND_OP_DST_OVER_EXT
                                            , BLEND_OP_SRC_OVER_EXT
                                            , BLEND_OP_DST_EXT
                                            , BLEND_OP_SRC_EXT
                                            , BLEND_OP_ZERO_EXT
                                            , ..
                                            )) where

import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import GHC.Show (showsPrec)
import Vulkan.Zero (Zero)
import Foreign.Storable (Storable)
import Data.Int (Int32)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))

-- | VkBlendOp - Framebuffer blending operations
--
-- = Description
--
-- The semantics of the basic blend operations are described in the table
-- below:
--
-- +-------------------------------+--------------------+-----------------+
-- | 'BlendOp'                     | RGB Components     | Alpha Component |
-- +===============================+====================+=================+
-- | 'BLEND_OP_ADD'                | R = Rs0 × Sr + Rd  | A = As0 × Sa +  |
-- |                               | × Dr               | Ad × Da         |
-- |                               | G = Gs0 × Sg + Gd  |                 |
-- |                               | × Dg               |                 |
-- |                               | B = Bs0 × Sb + Bd  |                 |
-- |                               | × Db               |                 |
-- +-------------------------------+--------------------+-----------------+
-- | 'BLEND_OP_SUBTRACT'           | R = Rs0 × Sr - Rd  | A = As0 × Sa -  |
-- |                               | × Dr               | Ad × Da         |
-- |                               | G = Gs0 × Sg - Gd  |                 |
-- |                               | × Dg               |                 |
-- |                               | B = Bs0 × Sb - Bd  |                 |
-- |                               | × Db               |                 |
-- +-------------------------------+--------------------+-----------------+
-- | 'BLEND_OP_REVERSE_SUBTRACT'   | R = Rd × Dr - Rs0  | A = Ad × Da -   |
-- |                               | × Sr               | As0 × Sa        |
-- |                               | G = Gd × Dg - Gs0  |                 |
-- |                               | × Sg               |                 |
-- |                               | B = Bd × Db - Bs0  |                 |
-- |                               | × Sb               |                 |
-- +-------------------------------+--------------------+-----------------+
-- | 'BLEND_OP_MIN'                | R = min(Rs0,Rd)    | A = min(As0,Ad) |
-- |                               | G = min(Gs0,Gd)    |                 |
-- |                               | B = min(Bs0,Bd)    |                 |
-- +-------------------------------+--------------------+-----------------+
-- | 'BLEND_OP_MAX'                | R = max(Rs0,Rd)    | A = max(As0,Ad) |
-- |                               | G = max(Gs0,Gd)    |                 |
-- |                               | B = max(Bs0,Bd)    |                 |
-- +-------------------------------+--------------------+-----------------+
--
-- Basic Blend Operations
--
-- In this table, the following conventions are used:
--
-- -   Rs0, Gs0, Bs0 and As0 represent the first source color R, G, B, and
--     A components, respectively.
--
-- -   Rd, Gd, Bd and Ad represent the R, G, B, and A components of the
--     destination color. That is, the color currently in the corresponding
--     color attachment for this fragment\/sample.
--
-- -   Sr, Sg, Sb and Sa represent the source blend factor R, G, B, and A
--     components, respectively.
--
-- -   Dr, Dg, Db and Da represent the destination blend factor R, G, B,
--     and A components, respectively.
--
-- The blending operation produces a new set of values R, G, B and A, which
-- are written to the framebuffer attachment. If blending is not enabled
-- for this attachment, then R, G, B and A are assigned Rs0, Gs0, Bs0 and
-- As0, respectively.
--
-- If the color attachment is fixed-point, the components of the source and
-- destination values and blend factors are each clamped to [0,1] or [-1,1]
-- respectively for an unsigned normalized or signed normalized color
-- attachment prior to evaluating the blend operations. If the color
-- attachment is floating-point, no clamping occurs.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
-- 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState'
newtype BlendOp = BlendOp Int32
  deriving newtype (Eq, Ord, Storable, Zero)

-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_ADD"
pattern BLEND_OP_ADD                    = BlendOp 0
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SUBTRACT"
pattern BLEND_OP_SUBTRACT               = BlendOp 1
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_REVERSE_SUBTRACT"
pattern BLEND_OP_REVERSE_SUBTRACT       = BlendOp 2
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MIN"
pattern BLEND_OP_MIN                    = BlendOp 3
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MAX"
pattern BLEND_OP_MAX                    = BlendOp 4
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_BLUE_EXT"
pattern BLEND_OP_BLUE_EXT               = BlendOp 1000148045
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_GREEN_EXT"
pattern BLEND_OP_GREEN_EXT              = BlendOp 1000148044
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_RED_EXT"
pattern BLEND_OP_RED_EXT                = BlendOp 1000148043
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_INVERT_OVG_EXT"
pattern BLEND_OP_INVERT_OVG_EXT         = BlendOp 1000148042
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_CONTRAST_EXT"
pattern BLEND_OP_CONTRAST_EXT           = BlendOp 1000148041
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MINUS_CLAMPED_EXT"
pattern BLEND_OP_MINUS_CLAMPED_EXT      = BlendOp 1000148040
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MINUS_EXT"
pattern BLEND_OP_MINUS_EXT              = BlendOp 1000148039
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_PLUS_DARKER_EXT"
pattern BLEND_OP_PLUS_DARKER_EXT        = BlendOp 1000148038
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT"
pattern BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = BlendOp 1000148037
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_PLUS_CLAMPED_EXT"
pattern BLEND_OP_PLUS_CLAMPED_EXT       = BlendOp 1000148036
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_PLUS_EXT"
pattern BLEND_OP_PLUS_EXT               = BlendOp 1000148035
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HSL_LUMINOSITY_EXT"
pattern BLEND_OP_HSL_LUMINOSITY_EXT     = BlendOp 1000148034
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HSL_COLOR_EXT"
pattern BLEND_OP_HSL_COLOR_EXT          = BlendOp 1000148033
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HSL_SATURATION_EXT"
pattern BLEND_OP_HSL_SATURATION_EXT     = BlendOp 1000148032
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HSL_HUE_EXT"
pattern BLEND_OP_HSL_HUE_EXT            = BlendOp 1000148031
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HARDMIX_EXT"
pattern BLEND_OP_HARDMIX_EXT            = BlendOp 1000148030
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_PINLIGHT_EXT"
pattern BLEND_OP_PINLIGHT_EXT           = BlendOp 1000148029
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_LINEARLIGHT_EXT"
pattern BLEND_OP_LINEARLIGHT_EXT        = BlendOp 1000148028
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_VIVIDLIGHT_EXT"
pattern BLEND_OP_VIVIDLIGHT_EXT         = BlendOp 1000148027
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_LINEARBURN_EXT"
pattern BLEND_OP_LINEARBURN_EXT         = BlendOp 1000148026
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_LINEARDODGE_EXT"
pattern BLEND_OP_LINEARDODGE_EXT        = BlendOp 1000148025
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_INVERT_RGB_EXT"
pattern BLEND_OP_INVERT_RGB_EXT         = BlendOp 1000148024
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_INVERT_EXT"
pattern BLEND_OP_INVERT_EXT             = BlendOp 1000148023
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_EXCLUSION_EXT"
pattern BLEND_OP_EXCLUSION_EXT          = BlendOp 1000148022
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DIFFERENCE_EXT"
pattern BLEND_OP_DIFFERENCE_EXT         = BlendOp 1000148021
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SOFTLIGHT_EXT"
pattern BLEND_OP_SOFTLIGHT_EXT          = BlendOp 1000148020
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HARDLIGHT_EXT"
pattern BLEND_OP_HARDLIGHT_EXT          = BlendOp 1000148019
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_COLORBURN_EXT"
pattern BLEND_OP_COLORBURN_EXT          = BlendOp 1000148018
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_COLORDODGE_EXT"
pattern BLEND_OP_COLORDODGE_EXT         = BlendOp 1000148017
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_LIGHTEN_EXT"
pattern BLEND_OP_LIGHTEN_EXT            = BlendOp 1000148016
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DARKEN_EXT"
pattern BLEND_OP_DARKEN_EXT             = BlendOp 1000148015
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_OVERLAY_EXT"
pattern BLEND_OP_OVERLAY_EXT            = BlendOp 1000148014
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SCREEN_EXT"
pattern BLEND_OP_SCREEN_EXT             = BlendOp 1000148013
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MULTIPLY_EXT"
pattern BLEND_OP_MULTIPLY_EXT           = BlendOp 1000148012
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_XOR_EXT"
pattern BLEND_OP_XOR_EXT                = BlendOp 1000148011
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DST_ATOP_EXT"
pattern BLEND_OP_DST_ATOP_EXT           = BlendOp 1000148010
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SRC_ATOP_EXT"
pattern BLEND_OP_SRC_ATOP_EXT           = BlendOp 1000148009
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DST_OUT_EXT"
pattern BLEND_OP_DST_OUT_EXT            = BlendOp 1000148008
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SRC_OUT_EXT"
pattern BLEND_OP_SRC_OUT_EXT            = BlendOp 1000148007
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DST_IN_EXT"
pattern BLEND_OP_DST_IN_EXT             = BlendOp 1000148006
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SRC_IN_EXT"
pattern BLEND_OP_SRC_IN_EXT             = BlendOp 1000148005
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DST_OVER_EXT"
pattern BLEND_OP_DST_OVER_EXT           = BlendOp 1000148004
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SRC_OVER_EXT"
pattern BLEND_OP_SRC_OVER_EXT           = BlendOp 1000148003
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DST_EXT"
pattern BLEND_OP_DST_EXT                = BlendOp 1000148002
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SRC_EXT"
pattern BLEND_OP_SRC_EXT                = BlendOp 1000148001
-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_ZERO_EXT"
pattern BLEND_OP_ZERO_EXT               = BlendOp 1000148000
{-# complete BLEND_OP_ADD,
             BLEND_OP_SUBTRACT,
             BLEND_OP_REVERSE_SUBTRACT,
             BLEND_OP_MIN,
             BLEND_OP_MAX,
             BLEND_OP_BLUE_EXT,
             BLEND_OP_GREEN_EXT,
             BLEND_OP_RED_EXT,
             BLEND_OP_INVERT_OVG_EXT,
             BLEND_OP_CONTRAST_EXT,
             BLEND_OP_MINUS_CLAMPED_EXT,
             BLEND_OP_MINUS_EXT,
             BLEND_OP_PLUS_DARKER_EXT,
             BLEND_OP_PLUS_CLAMPED_ALPHA_EXT,
             BLEND_OP_PLUS_CLAMPED_EXT,
             BLEND_OP_PLUS_EXT,
             BLEND_OP_HSL_LUMINOSITY_EXT,
             BLEND_OP_HSL_COLOR_EXT,
             BLEND_OP_HSL_SATURATION_EXT,
             BLEND_OP_HSL_HUE_EXT,
             BLEND_OP_HARDMIX_EXT,
             BLEND_OP_PINLIGHT_EXT,
             BLEND_OP_LINEARLIGHT_EXT,
             BLEND_OP_VIVIDLIGHT_EXT,
             BLEND_OP_LINEARBURN_EXT,
             BLEND_OP_LINEARDODGE_EXT,
             BLEND_OP_INVERT_RGB_EXT,
             BLEND_OP_INVERT_EXT,
             BLEND_OP_EXCLUSION_EXT,
             BLEND_OP_DIFFERENCE_EXT,
             BLEND_OP_SOFTLIGHT_EXT,
             BLEND_OP_HARDLIGHT_EXT,
             BLEND_OP_COLORBURN_EXT,
             BLEND_OP_COLORDODGE_EXT,
             BLEND_OP_LIGHTEN_EXT,
             BLEND_OP_DARKEN_EXT,
             BLEND_OP_OVERLAY_EXT,
             BLEND_OP_SCREEN_EXT,
             BLEND_OP_MULTIPLY_EXT,
             BLEND_OP_XOR_EXT,
             BLEND_OP_DST_ATOP_EXT,
             BLEND_OP_SRC_ATOP_EXT,
             BLEND_OP_DST_OUT_EXT,
             BLEND_OP_SRC_OUT_EXT,
             BLEND_OP_DST_IN_EXT,
             BLEND_OP_SRC_IN_EXT,
             BLEND_OP_DST_OVER_EXT,
             BLEND_OP_SRC_OVER_EXT,
             BLEND_OP_DST_EXT,
             BLEND_OP_SRC_EXT,
             BLEND_OP_ZERO_EXT :: BlendOp #-}

conNameBlendOp :: String
conNameBlendOp = "BlendOp"

enumPrefixBlendOp :: String
enumPrefixBlendOp = "BLEND_OP_"

showTableBlendOp :: [(BlendOp, String)]
showTableBlendOp =
  [ (BLEND_OP_ADD                   , "ADD")
  , (BLEND_OP_SUBTRACT              , "SUBTRACT")
  , (BLEND_OP_REVERSE_SUBTRACT      , "REVERSE_SUBTRACT")
  , (BLEND_OP_MIN                   , "MIN")
  , (BLEND_OP_MAX                   , "MAX")
  , (BLEND_OP_BLUE_EXT              , "BLUE_EXT")
  , (BLEND_OP_GREEN_EXT             , "GREEN_EXT")
  , (BLEND_OP_RED_EXT               , "RED_EXT")
  , (BLEND_OP_INVERT_OVG_EXT        , "INVERT_OVG_EXT")
  , (BLEND_OP_CONTRAST_EXT          , "CONTRAST_EXT")
  , (BLEND_OP_MINUS_CLAMPED_EXT     , "MINUS_CLAMPED_EXT")
  , (BLEND_OP_MINUS_EXT             , "MINUS_EXT")
  , (BLEND_OP_PLUS_DARKER_EXT       , "PLUS_DARKER_EXT")
  , (BLEND_OP_PLUS_CLAMPED_ALPHA_EXT, "PLUS_CLAMPED_ALPHA_EXT")
  , (BLEND_OP_PLUS_CLAMPED_EXT      , "PLUS_CLAMPED_EXT")
  , (BLEND_OP_PLUS_EXT              , "PLUS_EXT")
  , (BLEND_OP_HSL_LUMINOSITY_EXT    , "HSL_LUMINOSITY_EXT")
  , (BLEND_OP_HSL_COLOR_EXT         , "HSL_COLOR_EXT")
  , (BLEND_OP_HSL_SATURATION_EXT    , "HSL_SATURATION_EXT")
  , (BLEND_OP_HSL_HUE_EXT           , "HSL_HUE_EXT")
  , (BLEND_OP_HARDMIX_EXT           , "HARDMIX_EXT")
  , (BLEND_OP_PINLIGHT_EXT          , "PINLIGHT_EXT")
  , (BLEND_OP_LINEARLIGHT_EXT       , "LINEARLIGHT_EXT")
  , (BLEND_OP_VIVIDLIGHT_EXT        , "VIVIDLIGHT_EXT")
  , (BLEND_OP_LINEARBURN_EXT        , "LINEARBURN_EXT")
  , (BLEND_OP_LINEARDODGE_EXT       , "LINEARDODGE_EXT")
  , (BLEND_OP_INVERT_RGB_EXT        , "INVERT_RGB_EXT")
  , (BLEND_OP_INVERT_EXT            , "INVERT_EXT")
  , (BLEND_OP_EXCLUSION_EXT         , "EXCLUSION_EXT")
  , (BLEND_OP_DIFFERENCE_EXT        , "DIFFERENCE_EXT")
  , (BLEND_OP_SOFTLIGHT_EXT         , "SOFTLIGHT_EXT")
  , (BLEND_OP_HARDLIGHT_EXT         , "HARDLIGHT_EXT")
  , (BLEND_OP_COLORBURN_EXT         , "COLORBURN_EXT")
  , (BLEND_OP_COLORDODGE_EXT        , "COLORDODGE_EXT")
  , (BLEND_OP_LIGHTEN_EXT           , "LIGHTEN_EXT")
  , (BLEND_OP_DARKEN_EXT            , "DARKEN_EXT")
  , (BLEND_OP_OVERLAY_EXT           , "OVERLAY_EXT")
  , (BLEND_OP_SCREEN_EXT            , "SCREEN_EXT")
  , (BLEND_OP_MULTIPLY_EXT          , "MULTIPLY_EXT")
  , (BLEND_OP_XOR_EXT               , "XOR_EXT")
  , (BLEND_OP_DST_ATOP_EXT          , "DST_ATOP_EXT")
  , (BLEND_OP_SRC_ATOP_EXT          , "SRC_ATOP_EXT")
  , (BLEND_OP_DST_OUT_EXT           , "DST_OUT_EXT")
  , (BLEND_OP_SRC_OUT_EXT           , "SRC_OUT_EXT")
  , (BLEND_OP_DST_IN_EXT            , "DST_IN_EXT")
  , (BLEND_OP_SRC_IN_EXT            , "SRC_IN_EXT")
  , (BLEND_OP_DST_OVER_EXT          , "DST_OVER_EXT")
  , (BLEND_OP_SRC_OVER_EXT          , "SRC_OVER_EXT")
  , (BLEND_OP_DST_EXT               , "DST_EXT")
  , (BLEND_OP_SRC_EXT               , "SRC_EXT")
  , (BLEND_OP_ZERO_EXT              , "ZERO_EXT")
  ]

instance Show BlendOp where
  showsPrec = enumShowsPrec enumPrefixBlendOp showTableBlendOp conNameBlendOp (\(BlendOp x) -> x) (showsPrec 11)

instance Read BlendOp where
  readPrec = enumReadPrec enumPrefixBlendOp showTableBlendOp conNameBlendOp BlendOp