//---------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
// This file is automatically generated.  Please do not edit it directly.
//
// File name: D2D1Effects.h
//---------------------------------------------------------------------------
#ifdef _MSC_VER
#pragma once
#endif // #ifdef _MSC_VER

#ifndef _D2D1_EFFECTS_
#define _D2D1_EFFECTS_


           

           
// Built in effect CLSIDs
DEFINE_GUID(CLSID_D2D12DAffineTransform,        0x6AA97485, 0x6354, 0x4cfc, 0x90, 0x8C, 0xE4, 0xA7, 0x4F, 0x62, 0xC9, 0x6C);
DEFINE_GUID(CLSID_D2D13DPerspectiveTransform,   0xC2844D0B, 0x3D86, 0x46e7, 0x85, 0xBA, 0x52, 0x6C, 0x92, 0x40, 0xF3, 0xFB);
DEFINE_GUID(CLSID_D2D13DTransform,              0xe8467b04, 0xec61, 0x4b8a, 0xb5, 0xde, 0xd4, 0xd7, 0x3d, 0xeb, 0xea, 0x5a);
DEFINE_GUID(CLSID_D2D1ArithmeticComposite,      0xfc151437, 0x049a, 0x4784, 0xa2, 0x4a, 0xf1, 0xc4, 0xda, 0xf2, 0x09, 0x87);
DEFINE_GUID(CLSID_D2D1Atlas,                    0x913e2be4, 0xfdcf, 0x4fe2, 0xa5, 0xf0, 0x24, 0x54, 0xf1, 0x4f, 0xf4, 0x8);
DEFINE_GUID(CLSID_D2D1BitmapSource,             0x5fb6c24d, 0xc6dd, 0x4231, 0x94, 0x4,  0x50, 0xf4, 0xd5, 0xc3, 0x25, 0x2d);
DEFINE_GUID(CLSID_D2D1Blend,                    0x81c5b77b, 0x13f8, 0x4cdd, 0xad, 0x20, 0xc8, 0x90, 0x54, 0x7a, 0xc6, 0x5d);
DEFINE_GUID(CLSID_D2D1Border,                   0x2A2D49C0, 0x4ACF, 0x43c7, 0x8C, 0x6A, 0x7C, 0x4A, 0x27, 0x87, 0x4D, 0x27);
DEFINE_GUID(CLSID_D2D1Brightness,               0x8cea8d1e, 0x77b0, 0x4986, 0xb3, 0xb9, 0x2f, 0x0c, 0x0e, 0xae, 0x78, 0x87);
DEFINE_GUID(CLSID_D2D1ColorManagement,          0x1A28524C, 0xFDD6, 0x4AA4, 0xAE, 0x8F, 0x83, 0x7E, 0xB8, 0x26, 0x7B, 0x37);
DEFINE_GUID(CLSID_D2D1ColorMatrix,              0x921F03D6, 0x641C, 0x47DF, 0x85, 0x2D, 0xB4, 0xBB, 0x61, 0x53, 0xAE, 0x11);
DEFINE_GUID(CLSID_D2D1Composite,                0x48fc9f51, 0xf6ac, 0x48f1, 0x8b, 0x58, 0x3b, 0x28, 0xac, 0x46, 0xf7, 0x6d);
DEFINE_GUID(CLSID_D2D1ConvolveMatrix,           0x407f8c08, 0x5533, 0x4331, 0xa3, 0x41, 0x23, 0xcc, 0x38, 0x77, 0x84, 0x3e);
DEFINE_GUID(CLSID_D2D1Crop,                     0xE23F7110, 0x0E9A, 0x4324, 0xAF, 0x47, 0x6A, 0x2C, 0x0C, 0x46, 0xF3, 0x5B);
DEFINE_GUID(CLSID_D2D1DirectionalBlur,          0x174319a6, 0x58e9, 0x49b2, 0xbb, 0x63, 0xca, 0xf2, 0xc8, 0x11, 0xa3, 0xdb);
DEFINE_GUID(CLSID_D2D1DiscreteTransfer,         0x90866fcd, 0x488e, 0x454b, 0xaf, 0x06, 0xe5, 0x04, 0x1b, 0x66, 0xc3, 0x6c);
DEFINE_GUID(CLSID_D2D1DisplacementMap,          0xedc48364, 0x417,  0x4111, 0x94, 0x50, 0x43, 0x84, 0x5f, 0xa9, 0xf8, 0x90);
DEFINE_GUID(CLSID_D2D1DistantDiffuse,           0x3e7efd62, 0xa32d, 0x46d4, 0xa8, 0x3c, 0x52, 0x78, 0x88, 0x9a, 0xc9, 0x54);
DEFINE_GUID(CLSID_D2D1DistantSpecular,          0x428c1ee5, 0x77b8, 0x4450, 0x8a, 0xb5, 0x72, 0x21, 0x9c, 0x21, 0xab, 0xda);
DEFINE_GUID(CLSID_D2D1DpiCompensation,          0x6c26c5c7, 0x34e0, 0x46fc, 0x9c, 0xfd, 0xe5, 0x82, 0x37, 0x6,  0xe2, 0x28);
DEFINE_GUID(CLSID_D2D1Flood,                    0x61c23c20, 0xae69, 0x4d8e, 0x94, 0xcf, 0x50, 0x07, 0x8d, 0xf6, 0x38, 0xf2);
DEFINE_GUID(CLSID_D2D1GammaTransfer,            0x409444c4, 0xc419, 0x41a0, 0xb0, 0xc1, 0x8c, 0xd0, 0xc0, 0xa1, 0x8e, 0x42);
DEFINE_GUID(CLSID_D2D1GaussianBlur,             0x1feb6d69, 0x2fe6, 0x4ac9, 0x8c, 0x58, 0x1d, 0x7f, 0x93, 0xe7, 0xa6, 0xa5);
DEFINE_GUID(CLSID_D2D1Scale,                    0x9daf9369, 0x3846, 0x4d0e, 0xa4, 0x4e, 0xc,  0x60, 0x79, 0x34, 0xa5, 0xd7);
DEFINE_GUID(CLSID_D2D1Histogram,                0x881db7d0, 0xf7ee, 0x4d4d, 0xa6, 0xd2, 0x46, 0x97, 0xac, 0xc6, 0x6e, 0xe8);
DEFINE_GUID(CLSID_D2D1HueRotation,              0x0f4458ec, 0x4b32, 0x491b, 0x9e, 0x85, 0xbd, 0x73, 0xf4, 0x4d, 0x3e, 0xb6);
DEFINE_GUID(CLSID_D2D1LinearTransfer,           0xad47c8fd, 0x63ef, 0x4acc, 0x9b, 0x51, 0x67, 0x97, 0x9c, 0x03, 0x6c, 0x06);
DEFINE_GUID(CLSID_D2D1LuminanceToAlpha,         0x41251ab7, 0x0beb, 0x46f8, 0x9d, 0xa7, 0x59, 0xe9, 0x3f, 0xcc, 0xe5, 0xde);
DEFINE_GUID(CLSID_D2D1Morphology,               0xeae6c40d, 0x626a, 0x4c2d, 0xbf, 0xcb, 0x39, 0x10, 0x01, 0xab, 0xe2, 0x02);
DEFINE_GUID(CLSID_D2D1OpacityMetadata,          0x6c53006a, 0x4450, 0x4199, 0xaa, 0x5b, 0xad, 0x16, 0x56, 0xfe, 0xce, 0x5e);
DEFINE_GUID(CLSID_D2D1PointDiffuse,             0xb9e303c3, 0xc08c, 0x4f91, 0x8b, 0x7b, 0x38, 0x65, 0x6b, 0xc4, 0x8c, 0x20);
DEFINE_GUID(CLSID_D2D1PointSpecular,            0x09c3ca26, 0x3ae2, 0x4f09, 0x9e, 0xbc, 0xed, 0x38, 0x65, 0xd5, 0x3f, 0x22);
DEFINE_GUID(CLSID_D2D1Premultiply,              0x06eab419, 0xdeed, 0x4018, 0x80, 0xd2, 0x3e, 0x1d, 0x47, 0x1a, 0xde, 0xb2);
DEFINE_GUID(CLSID_D2D1Saturation,               0x5cb2d9cf, 0x327d, 0x459f, 0xa0, 0xce, 0x40, 0xc0, 0xb2, 0x08, 0x6b, 0xf7);
DEFINE_GUID(CLSID_D2D1Shadow,                   0xC67EA361, 0x1863, 0x4e69, 0x89, 0xDB, 0x69, 0x5D, 0x3E, 0x9A, 0x5B, 0x6B);
DEFINE_GUID(CLSID_D2D1SpotDiffuse,              0x818a1105, 0x7932, 0x44f4, 0xaa, 0x86, 0x08, 0xae, 0x7b, 0x2f, 0x2c, 0x93);
DEFINE_GUID(CLSID_D2D1SpotSpecular,             0xedae421e, 0x7654, 0x4a37, 0x9d, 0xb8, 0x71, 0xac, 0xc1, 0xbe, 0xb3, 0xc1);
DEFINE_GUID(CLSID_D2D1TableTransfer,            0x5bf818c3, 0x5e43, 0x48cb, 0xb6, 0x31, 0x86, 0x83, 0x96, 0xd6, 0xa1, 0xd4);
DEFINE_GUID(CLSID_D2D1Tile,                     0xB0784138, 0x3B76, 0x4bc5, 0xB1, 0x3B, 0x0F, 0xA2, 0xAD, 0x02, 0x65, 0x9F);
DEFINE_GUID(CLSID_D2D1Turbulence,               0xCF2BB6AE, 0x889A, 0x4ad7, 0xBA, 0x29, 0xA2, 0xFD, 0x73, 0x2C, 0x9F, 0xC9);
DEFINE_GUID(CLSID_D2D1UnPremultiply,            0xfb9ac489, 0xad8d, 0x41ed, 0x99, 0x99, 0xbb, 0x63, 0x47, 0xd1, 0x10, 0xf7);


/// <summary>
/// Specifies how the Crop effect handles the crop rectangle falling on fractional
/// pixel coordinates.
/// </summary>
typedef enum D2D1_BORDER_MODE
{
    D2D1_BORDER_MODE_SOFT = 0,
    D2D1_BORDER_MODE_HARD = 1,
    D2D1_BORDER_MODE_FORCE_DWORD = 0xffffffff

} D2D1_BORDER_MODE;


/// <summary>
/// Specifies the color channel the Displacement map effect extracts the intensity
/// from and uses it to spatially displace the image in the X or Y direction.
/// </summary>
typedef enum D2D1_CHANNEL_SELECTOR
{
    D2D1_CHANNEL_SELECTOR_R = 0,
    D2D1_CHANNEL_SELECTOR_G = 1,
    D2D1_CHANNEL_SELECTOR_B = 2,
    D2D1_CHANNEL_SELECTOR_A = 3,
    D2D1_CHANNEL_SELECTOR_FORCE_DWORD = 0xffffffff

} D2D1_CHANNEL_SELECTOR;


/// <summary>
/// Speficies whether a flip and/or rotation operation should be performed by the
/// Bitmap source effect
/// </summary>
typedef enum D2D1_BITMAPSOURCE_ORIENTATION
{
    D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT = 1,
    D2D1_BITMAPSOURCE_ORIENTATION_FLIP_HORIZONTAL = 2,
    D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180 = 3,
    D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL = 4,
    D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL = 5,
    D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90 = 6,
    D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90_FLIP_HORIZONTAL = 7,
    D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270 = 8,
    D2D1_BITMAPSOURCE_ORIENTATION_FORCE_DWORD = 0xffffffff

} D2D1_BITMAPSOURCE_ORIENTATION;


/// <summary>
/// The enumeration of the Gaussian Blur effect's top level properties.
/// Effect description: Applies a gaussian blur to a bitmap with the specified blur
/// radius and angle.
/// </summary>
typedef enum D2D1_GAUSSIANBLUR_PROP
{
    
    /// <summary>
    /// Property Name: "StandardDeviation"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_GAUSSIANBLUR_PROP_STANDARD_DEVIATION = 0,
    
    /// <summary>
    /// Property Name: "Optimization"
    /// Property Type: D2D1_GAUSSIANBLUR_OPTIMIZATION
    /// </summary>
    D2D1_GAUSSIANBLUR_PROP_OPTIMIZATION = 1,
    
    /// <summary>
    /// Property Name: "BorderMode"
    /// Property Type: D2D1_BORDER_MODE
    /// </summary>
    D2D1_GAUSSIANBLUR_PROP_BORDER_MODE = 2,
    D2D1_GAUSSIANBLUR_PROP_FORCE_DWORD = 0xffffffff

} D2D1_GAUSSIANBLUR_PROP;

typedef enum D2D1_GAUSSIANBLUR_OPTIMIZATION
{
    D2D1_GAUSSIANBLUR_OPTIMIZATION_SPEED = 0,
    D2D1_GAUSSIANBLUR_OPTIMIZATION_BALANCED = 1,
    D2D1_GAUSSIANBLUR_OPTIMIZATION_QUALITY = 2,
    D2D1_GAUSSIANBLUR_OPTIMIZATION_FORCE_DWORD = 0xffffffff

} D2D1_GAUSSIANBLUR_OPTIMIZATION;


/// <summary>
/// The enumeration of the Directional Blur effect's top level properties.
/// Effect description: Applies a directional blur to a bitmap with the specified
/// blur radius and angle.
/// </summary>
typedef enum D2D1_DIRECTIONALBLUR_PROP
{
    
    /// <summary>
    /// Property Name: "StandardDeviation"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_DIRECTIONALBLUR_PROP_STANDARD_DEVIATION = 0,
    
    /// <summary>
    /// Property Name: "Angle"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_DIRECTIONALBLUR_PROP_ANGLE = 1,
    
    /// <summary>
    /// Property Name: "Optimization"
    /// Property Type: D2D1_DIRECTIONALBLUR_OPTIMIZATION
    /// </summary>
    D2D1_DIRECTIONALBLUR_PROP_OPTIMIZATION = 2,
    
    /// <summary>
    /// Property Name: "BorderMode"
    /// Property Type: D2D1_BORDER_MODE
    /// </summary>
    D2D1_DIRECTIONALBLUR_PROP_BORDER_MODE = 3,
    D2D1_DIRECTIONALBLUR_PROP_FORCE_DWORD = 0xffffffff

} D2D1_DIRECTIONALBLUR_PROP;

typedef enum D2D1_DIRECTIONALBLUR_OPTIMIZATION
{
    D2D1_DIRECTIONALBLUR_OPTIMIZATION_SPEED = 0,
    D2D1_DIRECTIONALBLUR_OPTIMIZATION_BALANCED = 1,
    D2D1_DIRECTIONALBLUR_OPTIMIZATION_QUALITY = 2,
    D2D1_DIRECTIONALBLUR_OPTIMIZATION_FORCE_DWORD = 0xffffffff

} D2D1_DIRECTIONALBLUR_OPTIMIZATION;


/// <summary>
/// The enumeration of the Shadow effect's top level properties.
/// Effect description: Applies a shadow to a bitmap based on its alpha channel.
/// </summary>
typedef enum D2D1_SHADOW_PROP
{
    
    /// <summary>
    /// Property Name: "BlurStandardDeviation"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_SHADOW_PROP_BLUR_STANDARD_DEVIATION = 0,
    
    /// <summary>
    /// Property Name: "Color"
    /// Property Type: D2D1_VECTOR_4F
    /// </summary>
    D2D1_SHADOW_PROP_COLOR = 1,
    
    /// <summary>
    /// Property Name: "Optimization"
    /// Property Type: D2D1_SHADOW_OPTIMIZATION
    /// </summary>
    D2D1_SHADOW_PROP_OPTIMIZATION = 2,
    D2D1_SHADOW_PROP_FORCE_DWORD = 0xffffffff

} D2D1_SHADOW_PROP;

typedef enum D2D1_SHADOW_OPTIMIZATION
{
    D2D1_SHADOW_OPTIMIZATION_SPEED = 0,
    D2D1_SHADOW_OPTIMIZATION_BALANCED = 1,
    D2D1_SHADOW_OPTIMIZATION_QUALITY = 2,
    D2D1_SHADOW_OPTIMIZATION_FORCE_DWORD = 0xffffffff

} D2D1_SHADOW_OPTIMIZATION;


/// <summary>
/// The enumeration of the Blend effect's top level properties.
/// Effect description: Blends a foreground and background using a pre-defined blend
/// mode.
/// </summary>
typedef enum D2D1_BLEND_PROP
{
    
    /// <summary>
    /// Property Name: "Mode"
    /// Property Type: D2D1_BLEND_MODE
    /// </summary>
    D2D1_BLEND_PROP_MODE = 0,
    D2D1_BLEND_PROP_FORCE_DWORD = 0xffffffff

} D2D1_BLEND_PROP;

typedef enum D2D1_BLEND_MODE
{
    D2D1_BLEND_MODE_MULTIPLY = 0,
    D2D1_BLEND_MODE_SCREEN = 1,
    D2D1_BLEND_MODE_DARKEN = 2,
    D2D1_BLEND_MODE_LIGHTEN = 3,
    D2D1_BLEND_MODE_DISSOLVE = 4,
    D2D1_BLEND_MODE_COLOR_BURN = 5,
    D2D1_BLEND_MODE_LINEAR_BURN = 6,
    D2D1_BLEND_MODE_DARKER_COLOR = 7,
    D2D1_BLEND_MODE_LIGHTER_COLOR = 8,
    D2D1_BLEND_MODE_COLOR_DODGE = 9,
    D2D1_BLEND_MODE_LINEAR_DODGE = 10,
    D2D1_BLEND_MODE_OVERLAY = 11,
    D2D1_BLEND_MODE_SOFT_LIGHT = 12,
    D2D1_BLEND_MODE_HARD_LIGHT = 13,
    D2D1_BLEND_MODE_VIVID_LIGHT = 14,
    D2D1_BLEND_MODE_LINEAR_LIGHT = 15,
    D2D1_BLEND_MODE_PIN_LIGHT = 16,
    D2D1_BLEND_MODE_HARD_MIX = 17,
    D2D1_BLEND_MODE_DIFFERENCE = 18,
    D2D1_BLEND_MODE_EXCLUSION = 19,
    D2D1_BLEND_MODE_HUE = 20,
    D2D1_BLEND_MODE_SATURATION = 21,
    D2D1_BLEND_MODE_COLOR = 22,
    D2D1_BLEND_MODE_LUMINOSITY = 23,
    D2D1_BLEND_MODE_SUBTRACT = 24,
    D2D1_BLEND_MODE_DIVISION = 25,
    D2D1_BLEND_MODE_FORCE_DWORD = 0xffffffff

} D2D1_BLEND_MODE;


/// <summary>
/// The enumeration of the Saturation effect's top level properties.
/// Effect description: Alters the saturation of the bitmap based on the user
/// specified saturation value.
/// </summary>
typedef enum D2D1_SATURATION_PROP
{
    
    /// <summary>
    /// Property Name: "Saturation"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_SATURATION_PROP_SATURATION = 0,
    D2D1_SATURATION_PROP_FORCE_DWORD = 0xffffffff

} D2D1_SATURATION_PROP;


/// <summary>
/// The enumeration of the Hue Rotation effect's top level properties.
/// Effect description: Changes the Hue of a bitmap based on a user specified Hue
/// Rotation angle.
/// </summary>
typedef enum D2D1_HUEROTATION_PROP
{
    
    /// <summary>
    /// Property Name: "Angle"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_HUEROTATION_PROP_ANGLE = 0,
    D2D1_HUEROTATION_PROP_FORCE_DWORD = 0xffffffff

} D2D1_HUEROTATION_PROP;


/// <summary>
/// The enumeration of the Color Matrix effect's top level properties.
/// Effect description: Applies a user specified color matrix to each channel of the
/// input bitmap.
/// </summary>
typedef enum D2D1_COLORMATRIX_PROP
{
    
    /// <summary>
    /// Property Name: "ColorMatrix"
    /// Property Type: D2D1_MATRIX_5X4_F
    /// </summary>
    D2D1_COLORMATRIX_PROP_COLOR_MATRIX = 0,
    
    /// <summary>
    /// Property Name: "AlphaMode"
    /// Property Type: D2D1_COLORMATRIX_ALPHA_MODE
    /// </summary>
    D2D1_COLORMATRIX_PROP_ALPHA_MODE = 1,
    
    /// <summary>
    /// Property Name: "ClampOutput"
    /// Property Type: BOOL
    /// </summary>
    D2D1_COLORMATRIX_PROP_CLAMP_OUTPUT = 2,
    D2D1_COLORMATRIX_PROP_FORCE_DWORD = 0xffffffff

} D2D1_COLORMATRIX_PROP;

typedef enum D2D1_COLORMATRIX_ALPHA_MODE
{
    D2D1_COLORMATRIX_ALPHA_MODE_PREMULTIPLIED = 1,
    D2D1_COLORMATRIX_ALPHA_MODE_STRAIGHT = 2,
    D2D1_COLORMATRIX_ALPHA_MODE_FORCE_DWORD = 0xffffffff

} D2D1_COLORMATRIX_ALPHA_MODE;


/// <summary>
/// The enumeration of the Bitmap Source effect's top level properties.
/// Effect description: Provides an image source.
/// </summary>
typedef enum D2D1_BITMAPSOURCE_PROP
{
    
    /// <summary>
    /// Property Name: "WicBitmapSource"
    /// Property Type: IUnknown *
    /// </summary>
    D2D1_BITMAPSOURCE_PROP_WIC_BITMAP_SOURCE = 0,
    
    /// <summary>
    /// Property Name: "Scale"
    /// Property Type: D2D1_VECTOR_2F
    /// </summary>
    D2D1_BITMAPSOURCE_PROP_SCALE = 1,
    
    /// <summary>
    /// Property Name: "InterpolationMode"
    /// Property Type: D2D1_BITMAPSOURCE_INTERPOLATION_MODE
    /// </summary>
    D2D1_BITMAPSOURCE_PROP_INTERPOLATION_MODE = 2,
    
    /// <summary>
    /// Property Name: "EnableDPICorrection"
    /// Property Type: BOOL
    /// </summary>
    D2D1_BITMAPSOURCE_PROP_ENABLE_DPI_CORRECTION = 3,
    
    /// <summary>
    /// Property Name: "AlphaMode"
    /// Property Type: D2D1_BITMAPSOURCE_ALPHA_MODE
    /// </summary>
    D2D1_BITMAPSOURCE_PROP_ALPHA_MODE = 4,
    
    /// <summary>
    /// Property Name: "Orientation"
    /// Property Type: D2D1_BITMAPSOURCE_ORIENTATION
    /// </summary>
    D2D1_BITMAPSOURCE_PROP_ORIENTATION = 5,
    D2D1_BITMAPSOURCE_PROP_FORCE_DWORD = 0xffffffff

} D2D1_BITMAPSOURCE_PROP;

typedef enum D2D1_BITMAPSOURCE_INTERPOLATION_MODE
{
    D2D1_BITMAPSOURCE_INTERPOLATION_MODE_NEAREST_NEIGHBOR = 0,
    D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR = 1,
    D2D1_BITMAPSOURCE_INTERPOLATION_MODE_CUBIC = 2,
    D2D1_BITMAPSOURCE_INTERPOLATION_MODE_FANT = 6,
    D2D1_BITMAPSOURCE_INTERPOLATION_MODE_MIPMAP_LINEAR = 7,
    D2D1_BITMAPSOURCE_INTERPOLATION_MODE_FORCE_DWORD = 0xffffffff

} D2D1_BITMAPSOURCE_INTERPOLATION_MODE;

typedef enum D2D1_BITMAPSOURCE_ALPHA_MODE
{
    D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED = 1,
    D2D1_BITMAPSOURCE_ALPHA_MODE_STRAIGHT = 2,
    D2D1_BITMAPSOURCE_ALPHA_MODE_FORCE_DWORD = 0xffffffff

} D2D1_BITMAPSOURCE_ALPHA_MODE;


/// <summary>
/// The enumeration of the Composite effect's top level properties.
/// Effect description: Composites foreground and background images using the
/// selected composition mode.
/// </summary>
typedef enum D2D1_COMPOSITE_PROP
{
    
    /// <summary>
    /// Property Name: "Mode"
    /// Property Type: D2D1_COMPOSITE_MODE
    /// </summary>
    D2D1_COMPOSITE_PROP_MODE = 0,
    D2D1_COMPOSITE_PROP_FORCE_DWORD = 0xffffffff

} D2D1_COMPOSITE_PROP;


/// <summary>
/// The enumeration of the 3D Transform effect's top level properties.
/// Effect description: Applies a 3D transform to a bitmap.
/// </summary>
typedef enum D2D1_3DTRANSFORM_PROP
{
    
    /// <summary>
    /// Property Name: "InterpolationMode"
    /// Property Type: D2D1_3DTRANSFORM_INTERPOLATION_MODE
    /// </summary>
    D2D1_3DTRANSFORM_PROP_INTERPOLATION_MODE = 0,
    
    /// <summary>
    /// Property Name: "BorderMode"
    /// Property Type: D2D1_BORDER_MODE
    /// </summary>
    D2D1_3DTRANSFORM_PROP_BORDER_MODE = 1,
    
    /// <summary>
    /// Property Name: "TransformMatrix"
    /// Property Type: D2D1_MATRIX_4X4_F
    /// </summary>
    D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX = 2,
    D2D1_3DTRANSFORM_PROP_FORCE_DWORD = 0xffffffff

} D2D1_3DTRANSFORM_PROP;

typedef enum D2D1_3DTRANSFORM_INTERPOLATION_MODE
{
    D2D1_3DTRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR = 0,
    D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR = 1,
    D2D1_3DTRANSFORM_INTERPOLATION_MODE_CUBIC = 2,
    D2D1_3DTRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR = 3,
    D2D1_3DTRANSFORM_INTERPOLATION_MODE_ANISOTROPIC = 4,
    D2D1_3DTRANSFORM_INTERPOLATION_MODE_FORCE_DWORD = 0xffffffff

} D2D1_3DTRANSFORM_INTERPOLATION_MODE;


/// <summary>
/// The enumeration of the 3D Perspective Transform effect's top level properties.
/// Effect description: Applies a 3D perspective transform to a bitmap.
/// </summary>
typedef enum D2D1_3DPERSPECTIVETRANSFORM_PROP
{
    
    /// <summary>
    /// Property Name: "InterpolationMode"
    /// Property Type: D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE
    /// </summary>
    D2D1_3DPERSPECTIVETRANSFORM_PROP_INTERPOLATION_MODE = 0,
    
    /// <summary>
    /// Property Name: "BorderMode"
    /// Property Type: D2D1_BORDER_MODE
    /// </summary>
    D2D1_3DPERSPECTIVETRANSFORM_PROP_BORDER_MODE = 1,
    
    /// <summary>
    /// Property Name: "Depth"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_3DPERSPECTIVETRANSFORM_PROP_DEPTH = 2,
    
    /// <summary>
    /// Property Name: "PerspectiveOrigin"
    /// Property Type: D2D1_VECTOR_2F
    /// </summary>
    D2D1_3DPERSPECTIVETRANSFORM_PROP_PERSPECTIVE_ORIGIN = 3,
    
    /// <summary>
    /// Property Name: "LocalOffset"
    /// Property Type: D2D1_VECTOR_3F
    /// </summary>
    D2D1_3DPERSPECTIVETRANSFORM_PROP_LOCAL_OFFSET = 4,
    
    /// <summary>
    /// Property Name: "GlobalOffset"
    /// Property Type: D2D1_VECTOR_3F
    /// </summary>
    D2D1_3DPERSPECTIVETRANSFORM_PROP_GLOBAL_OFFSET = 5,
    
    /// <summary>
    /// Property Name: "RotationOrigin"
    /// Property Type: D2D1_VECTOR_3F
    /// </summary>
    D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION_ORIGIN = 6,
    
    /// <summary>
    /// Property Name: "Rotation"
    /// Property Type: D2D1_VECTOR_3F
    /// </summary>
    D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION = 7,
    D2D1_3DPERSPECTIVETRANSFORM_PROP_FORCE_DWORD = 0xffffffff

} D2D1_3DPERSPECTIVETRANSFORM_PROP;

typedef enum D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE
{
    D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR = 0,
    D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR = 1,
    D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_CUBIC = 2,
    D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR = 3,
    D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC = 4,
    D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_FORCE_DWORD = 0xffffffff

} D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE;


/// <summary>
/// The enumeration of the 2D Affine Transform effect's top level properties.
/// Effect description: Applies a 2D affine transform to a bitmap.
/// </summary>
typedef enum D2D1_2DAFFINETRANSFORM_PROP
{
    
    /// <summary>
    /// Property Name: "InterpolationMode"
    /// Property Type: D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE
    /// </summary>
    D2D1_2DAFFINETRANSFORM_PROP_INTERPOLATION_MODE = 0,
    
    /// <summary>
    /// Property Name: "BorderMode"
    /// Property Type: D2D1_BORDER_MODE
    /// </summary>
    D2D1_2DAFFINETRANSFORM_PROP_BORDER_MODE = 1,
    
    /// <summary>
    /// Property Name: "TransformMatrix"
    /// Property Type: D2D1_MATRIX_3X2_F
    /// </summary>
    D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX = 2,
    
    /// <summary>
    /// Property Name: "Sharpness"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_2DAFFINETRANSFORM_PROP_SHARPNESS = 3,
    D2D1_2DAFFINETRANSFORM_PROP_FORCE_DWORD = 0xffffffff

} D2D1_2DAFFINETRANSFORM_PROP;

typedef enum D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE
{
    D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR = 0,
    D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR = 1,
    D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_CUBIC = 2,
    D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR = 3,
    D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC = 4,
    D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC = 5,
    D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_FORCE_DWORD = 0xffffffff

} D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE;


/// <summary>
/// The enumeration of the DPI Compensation effect's top level properties.
/// Effect description: Scales according to the input DPI and the current context
/// DPI
/// </summary>
typedef enum D2D1_DPICOMPENSATION_PROP
{
    
    /// <summary>
    /// Property Name: "InterpolationMode"
    /// Property Type: D2D1_DPICOMPENSATION_INTERPOLATION_MODE
    /// </summary>
    D2D1_DPICOMPENSATION_PROP_INTERPOLATION_MODE = 0,
    
    /// <summary>
    /// Property Name: "BorderMode"
    /// Property Type: D2D1_BORDER_MODE
    /// </summary>
    D2D1_DPICOMPENSATION_PROP_BORDER_MODE = 1,
    
    /// <summary>
    /// Property Name: "InputDpi"
    /// Property Type: D2D1_VECTOR_2F
    /// </summary>
    D2D1_DPICOMPENSATION_PROP_INPUT_DPI = 2,
    D2D1_DPICOMPENSATION_PROP_FORCE_DWORD = 0xffffffff

} D2D1_DPICOMPENSATION_PROP;

typedef enum D2D1_DPICOMPENSATION_INTERPOLATION_MODE
{
    D2D1_DPICOMPENSATION_INTERPOLATION_MODE_NEAREST_NEIGHBOR = 0,
    D2D1_DPICOMPENSATION_INTERPOLATION_MODE_LINEAR = 1,
    D2D1_DPICOMPENSATION_INTERPOLATION_MODE_CUBIC = 2,
    D2D1_DPICOMPENSATION_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR = 3,
    D2D1_DPICOMPENSATION_INTERPOLATION_MODE_ANISOTROPIC = 4,
    D2D1_DPICOMPENSATION_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC = 5,
    D2D1_DPICOMPENSATION_INTERPOLATION_MODE_FORCE_DWORD = 0xffffffff

} D2D1_DPICOMPENSATION_INTERPOLATION_MODE;


/// <summary>
/// The enumeration of the Scale effect's top level properties.
/// Effect description: Applies scaling operation to the bitmap.
/// </summary>
typedef enum D2D1_SCALE_PROP
{
    
    /// <summary>
    /// Property Name: "Scale"
    /// Property Type: D2D1_VECTOR_2F
    /// </summary>
    D2D1_SCALE_PROP_SCALE = 0,
    
    /// <summary>
    /// Property Name: "CenterPoint"
    /// Property Type: D2D1_VECTOR_2F
    /// </summary>
    D2D1_SCALE_PROP_CENTER_POINT = 1,
    
    /// <summary>
    /// Property Name: "InterpolationMode"
    /// Property Type: D2D1_SCALE_INTERPOLATION_MODE
    /// </summary>
    D2D1_SCALE_PROP_INTERPOLATION_MODE = 2,
    
    /// <summary>
    /// Property Name: "BorderMode"
    /// Property Type: D2D1_BORDER_MODE
    /// </summary>
    D2D1_SCALE_PROP_BORDER_MODE = 3,
    
    /// <summary>
    /// Property Name: "Sharpness"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_SCALE_PROP_SHARPNESS = 4,
    D2D1_SCALE_PROP_FORCE_DWORD = 0xffffffff

} D2D1_SCALE_PROP;

typedef enum D2D1_SCALE_INTERPOLATION_MODE
{
    D2D1_SCALE_INTERPOLATION_MODE_NEAREST_NEIGHBOR = 0,
    D2D1_SCALE_INTERPOLATION_MODE_LINEAR = 1,
    D2D1_SCALE_INTERPOLATION_MODE_CUBIC = 2,
    D2D1_SCALE_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR = 3,
    D2D1_SCALE_INTERPOLATION_MODE_ANISOTROPIC = 4,
    D2D1_SCALE_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC = 5,
    D2D1_SCALE_INTERPOLATION_MODE_FORCE_DWORD = 0xffffffff

} D2D1_SCALE_INTERPOLATION_MODE;


/// <summary>
/// The enumeration of the Turbulence effect's top level properties.
/// Effect description: Generates a bitmap based on the Perlin noise turbulence
/// function.
/// </summary>
typedef enum D2D1_TURBULENCE_PROP
{
    
    /// <summary>
    /// Property Name: "Offset"
    /// Property Type: D2D1_VECTOR_2F
    /// </summary>
    D2D1_TURBULENCE_PROP_OFFSET = 0,
    
    /// <summary>
    /// Property Name: "Size"
    /// Property Type: D2D1_VECTOR_2F
    /// </summary>
    D2D1_TURBULENCE_PROP_SIZE = 1,
    
    /// <summary>
    /// Property Name: "BaseFrequency"
    /// Property Type: D2D1_VECTOR_2F
    /// </summary>
    D2D1_TURBULENCE_PROP_BASE_FREQUENCY = 2,
    
    /// <summary>
    /// Property Name: "NumOctaves"
    /// Property Type: UINT32
    /// </summary>
    D2D1_TURBULENCE_PROP_NUM_OCTAVES = 3,
    
    /// <summary>
    /// Property Name: "Seed"
    /// Property Type: INT32
    /// </summary>
    D2D1_TURBULENCE_PROP_SEED = 4,
    
    /// <summary>
    /// Property Name: "Noise"
    /// Property Type: D2D1_TURBULENCE_NOISE
    /// </summary>
    D2D1_TURBULENCE_PROP_NOISE = 5,
    
    /// <summary>
    /// Property Name: "Stitchable"
    /// Property Type: BOOL
    /// </summary>
    D2D1_TURBULENCE_PROP_STITCHABLE = 6,
    D2D1_TURBULENCE_PROP_FORCE_DWORD = 0xffffffff

} D2D1_TURBULENCE_PROP;

typedef enum D2D1_TURBULENCE_NOISE
{
    D2D1_TURBULENCE_NOISE_FRACTAL_SUM = 0,
    D2D1_TURBULENCE_NOISE_TURBULENCE = 1,
    D2D1_TURBULENCE_NOISE_FORCE_DWORD = 0xffffffff

} D2D1_TURBULENCE_NOISE;


/// <summary>
/// The enumeration of the Displacement Map effect's top level properties.
/// Effect description: Displaces a bitmap based on user specified setting and
/// another bitmap.
/// </summary>
typedef enum D2D1_DISPLACEMENTMAP_PROP
{
    
    /// <summary>
    /// Property Name: "Scale"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_DISPLACEMENTMAP_PROP_SCALE = 0,
    
    /// <summary>
    /// Property Name: "XChannelSelect"
    /// Property Type: D2D1_CHANNEL_SELECTOR
    /// </summary>
    D2D1_DISPLACEMENTMAP_PROP_X_CHANNEL_SELECT = 1,
    
    /// <summary>
    /// Property Name: "YChannelSelect"
    /// Property Type: D2D1_CHANNEL_SELECTOR
    /// </summary>
    D2D1_DISPLACEMENTMAP_PROP_Y_CHANNEL_SELECT = 2,
    D2D1_DISPLACEMENTMAP_PROP_FORCE_DWORD = 0xffffffff

} D2D1_DISPLACEMENTMAP_PROP;


/// <summary>
/// The enumeration of the Color Management effect's top level properties.
/// Effect description: Changes colors based on user provided color contexts.
/// </summary>
typedef enum D2D1_COLORMANAGEMENT_PROP
{
    
    /// <summary>
    /// Property Name: "SourceColorContext"
    /// Property Type: ID2D1ColorContext *
    /// </summary>
    D2D1_COLORMANAGEMENT_PROP_SOURCE_COLOR_CONTEXT = 0,
    
    /// <summary>
    /// Property Name: "SourceRenderingIntent"
    /// Property Type: D2D1_RENDERING_INTENT
    /// </summary>
    D2D1_COLORMANAGEMENT_PROP_SOURCE_RENDERING_INTENT = 1,
    
    /// <summary>
    /// Property Name: "DestinationColorContext"
    /// Property Type: ID2D1ColorContext *
    /// </summary>
    D2D1_COLORMANAGEMENT_PROP_DESTINATION_COLOR_CONTEXT = 2,
    
    /// <summary>
    /// Property Name: "DestinationRenderingIntent"
    /// Property Type: D2D1_RENDERING_INTENT
    /// </summary>
    D2D1_COLORMANAGEMENT_PROP_DESTINATION_RENDERING_INTENT = 3,
    
    /// <summary>
    /// Property Name: "AlphaMode"
    /// Property Type: D2D1_COLORMANAGEMENT_ALPHA_MODE
    /// </summary>
    D2D1_COLORMANAGEMENT_PROP_ALPHA_MODE = 4,
    
    /// <summary>
    /// Property Name: "Quality"
    /// Property Type: D2D1_COLORMANAGEMENT_QUALITY
    /// </summary>
    D2D1_COLORMANAGEMENT_PROP_QUALITY = 5,
    D2D1_COLORMANAGEMENT_PROP_FORCE_DWORD = 0xffffffff

} D2D1_COLORMANAGEMENT_PROP;

typedef enum D2D1_COLORMANAGEMENT_ALPHA_MODE
{
    D2D1_COLORMANAGEMENT_ALPHA_MODE_PREMULTIPLIED = 1,
    D2D1_COLORMANAGEMENT_ALPHA_MODE_STRAIGHT = 2,
    D2D1_COLORMANAGEMENT_ALPHA_MODE_FORCE_DWORD = 0xffffffff

} D2D1_COLORMANAGEMENT_ALPHA_MODE;

typedef enum D2D1_COLORMANAGEMENT_QUALITY
{
    D2D1_COLORMANAGEMENT_QUALITY_PROOF = 0,
    D2D1_COLORMANAGEMENT_QUALITY_NORMAL = 1,
    D2D1_COLORMANAGEMENT_QUALITY_BEST = 2,
    D2D1_COLORMANAGEMENT_QUALITY_FORCE_DWORD = 0xffffffff

} D2D1_COLORMANAGEMENT_QUALITY;


/// <summary>
/// Specifies which ICC rendering intent the Color management effect should use.
/// </summary>
typedef enum D2D1_COLORMANAGEMENT_RENDERING_INTENT
{
    D2D1_COLORMANAGEMENT_RENDERING_INTENT_PERCEPTUAL = 0,
    D2D1_COLORMANAGEMENT_RENDERING_INTENT_RELATIVE_COLORIMETRIC = 1,
    D2D1_COLORMANAGEMENT_RENDERING_INTENT_SATURATION = 2,
    D2D1_COLORMANAGEMENT_RENDERING_INTENT_ABSOLUTE_COLORIMETRIC = 3,
    D2D1_COLORMANAGEMENT_RENDERING_INTENT_FORCE_DWORD = 0xffffffff

} D2D1_COLORMANAGEMENT_RENDERING_INTENT;


/// <summary>
/// The enumeration of the Histogram effect's top level properties.
/// Effect description: Computes the histogram of an image.
/// </summary>
typedef enum D2D1_HISTOGRAM_PROP
{
    
    /// <summary>
    /// Property Name: "NumBins"
    /// Property Type: UINT32
    /// </summary>
    D2D1_HISTOGRAM_PROP_NUM_BINS = 0,
    
    /// <summary>
    /// Property Name: "ChannelSelect"
    /// Property Type: D2D1_CHANNEL_SELECTOR
    /// </summary>
    D2D1_HISTOGRAM_PROP_CHANNEL_SELECT = 1,
    
    /// <summary>
    /// Property Name: "HistogramOutput"
    /// Property Type: (blob)
    /// </summary>
    D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT = 2,
    D2D1_HISTOGRAM_PROP_FORCE_DWORD = 0xffffffff

} D2D1_HISTOGRAM_PROP;


/// <summary>
/// The enumeration of the Point-Specular effect's top level properties.
/// Effect description: Creates a specular lighting effect with a point light
/// source.
/// </summary>
typedef enum D2D1_POINTSPECULAR_PROP
{
    
    /// <summary>
    /// Property Name: "LightPosition"
    /// Property Type: D2D1_VECTOR_3F
    /// </summary>
    D2D1_POINTSPECULAR_PROP_LIGHT_POSITION = 0,
    
    /// <summary>
    /// Property Name: "SpecularExponent"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_POINTSPECULAR_PROP_SPECULAR_EXPONENT = 1,
    
    /// <summary>
    /// Property Name: "SpecularConstant"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_POINTSPECULAR_PROP_SPECULAR_CONSTANT = 2,
    
    /// <summary>
    /// Property Name: "SurfaceScale"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_POINTSPECULAR_PROP_SURFACE_SCALE = 3,
    
    /// <summary>
    /// Property Name: "Color"
    /// Property Type: D2D1_VECTOR_3F
    /// </summary>
    D2D1_POINTSPECULAR_PROP_COLOR = 4,
    
    /// <summary>
    /// Property Name: "KernelUnitLength"
    /// Property Type: D2D1_VECTOR_2F
    /// </summary>
    D2D1_POINTSPECULAR_PROP_KERNEL_UNIT_LENGTH = 5,
    
    /// <summary>
    /// Property Name: "ScaleMode"
    /// Property Type: D2D1_POINTSPECULAR_SCALE_MODE
    /// </summary>
    D2D1_POINTSPECULAR_PROP_SCALE_MODE = 6,
    D2D1_POINTSPECULAR_PROP_FORCE_DWORD = 0xffffffff

} D2D1_POINTSPECULAR_PROP;

typedef enum D2D1_POINTSPECULAR_SCALE_MODE
{
    D2D1_POINTSPECULAR_SCALE_MODE_NEAREST_NEIGHBOR = 0,
    D2D1_POINTSPECULAR_SCALE_MODE_LINEAR = 1,
    D2D1_POINTSPECULAR_SCALE_MODE_CUBIC = 2,
    D2D1_POINTSPECULAR_SCALE_MODE_MULTI_SAMPLE_LINEAR = 3,
    D2D1_POINTSPECULAR_SCALE_MODE_ANISOTROPIC = 4,
    D2D1_POINTSPECULAR_SCALE_MODE_HIGH_QUALITY_CUBIC = 5,
    D2D1_POINTSPECULAR_SCALE_MODE_FORCE_DWORD = 0xffffffff

} D2D1_POINTSPECULAR_SCALE_MODE;


/// <summary>
/// The enumeration of the Spot-Specular effect's top level properties.
/// Effect description: Creates a specular lighting effect with a spot light source.
/// </summary>
typedef enum D2D1_SPOTSPECULAR_PROP
{
    
    /// <summary>
    /// Property Name: "LightPosition"
    /// Property Type: D2D1_VECTOR_3F
    /// </summary>
    D2D1_SPOTSPECULAR_PROP_LIGHT_POSITION = 0,
    
    /// <summary>
    /// Property Name: "PointsAt"
    /// Property Type: D2D1_VECTOR_3F
    /// </summary>
    D2D1_SPOTSPECULAR_PROP_POINTS_AT = 1,
    
    /// <summary>
    /// Property Name: "Focus"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_SPOTSPECULAR_PROP_FOCUS = 2,
    
    /// <summary>
    /// Property Name: "LimitingConeAngle"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_SPOTSPECULAR_PROP_LIMITING_CONE_ANGLE = 3,
    
    /// <summary>
    /// Property Name: "SpecularExponent"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_SPOTSPECULAR_PROP_SPECULAR_EXPONENT = 4,
    
    /// <summary>
    /// Property Name: "SpecularConstant"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_SPOTSPECULAR_PROP_SPECULAR_CONSTANT = 5,
    
    /// <summary>
    /// Property Name: "SurfaceScale"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_SPOTSPECULAR_PROP_SURFACE_SCALE = 6,
    
    /// <summary>
    /// Property Name: "Color"
    /// Property Type: D2D1_VECTOR_3F
    /// </summary>
    D2D1_SPOTSPECULAR_PROP_COLOR = 7,
    
    /// <summary>
    /// Property Name: "KernelUnitLength"
    /// Property Type: D2D1_VECTOR_2F
    /// </summary>
    D2D1_SPOTSPECULAR_PROP_KERNEL_UNIT_LENGTH = 8,
    
    /// <summary>
    /// Property Name: "ScaleMode"
    /// Property Type: D2D1_SPOTSPECULAR_SCALE_MODE
    /// </summary>
    D2D1_SPOTSPECULAR_PROP_SCALE_MODE = 9,
    D2D1_SPOTSPECULAR_PROP_FORCE_DWORD = 0xffffffff

} D2D1_SPOTSPECULAR_PROP;

typedef enum D2D1_SPOTSPECULAR_SCALE_MODE
{
    D2D1_SPOTSPECULAR_SCALE_MODE_NEAREST_NEIGHBOR = 0,
    D2D1_SPOTSPECULAR_SCALE_MODE_LINEAR = 1,
    D2D1_SPOTSPECULAR_SCALE_MODE_CUBIC = 2,
    D2D1_SPOTSPECULAR_SCALE_MODE_MULTI_SAMPLE_LINEAR = 3,
    D2D1_SPOTSPECULAR_SCALE_MODE_ANISOTROPIC = 4,
    D2D1_SPOTSPECULAR_SCALE_MODE_HIGH_QUALITY_CUBIC = 5,
    D2D1_SPOTSPECULAR_SCALE_MODE_FORCE_DWORD = 0xffffffff

} D2D1_SPOTSPECULAR_SCALE_MODE;


/// <summary>
/// The enumeration of the Distant-Specular effect's top level properties.
/// Effect description: Creates a specular lighting effect with a distant light
/// source.
/// </summary>
typedef enum D2D1_DISTANTSPECULAR_PROP
{
    
    /// <summary>
    /// Property Name: "Azimuth"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_DISTANTSPECULAR_PROP_AZIMUTH = 0,
    
    /// <summary>
    /// Property Name: "Elevation"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_DISTANTSPECULAR_PROP_ELEVATION = 1,
    
    /// <summary>
    /// Property Name: "SpecularExponent"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_DISTANTSPECULAR_PROP_SPECULAR_EXPONENT = 2,
    
    /// <summary>
    /// Property Name: "SpecularConstant"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_DISTANTSPECULAR_PROP_SPECULAR_CONSTANT = 3,
    
    /// <summary>
    /// Property Name: "SurfaceScale"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_DISTANTSPECULAR_PROP_SURFACE_SCALE = 4,
    
    /// <summary>
    /// Property Name: "Color"
    /// Property Type: D2D1_VECTOR_3F
    /// </summary>
    D2D1_DISTANTSPECULAR_PROP_COLOR = 5,
    
    /// <summary>
    /// Property Name: "KernelUnitLength"
    /// Property Type: D2D1_VECTOR_2F
    /// </summary>
    D2D1_DISTANTSPECULAR_PROP_KERNEL_UNIT_LENGTH = 6,
    
    /// <summary>
    /// Property Name: "ScaleMode"
    /// Property Type: D2D1_DISTANTSPECULAR_SCALE_MODE
    /// </summary>
    D2D1_DISTANTSPECULAR_PROP_SCALE_MODE = 7,
    D2D1_DISTANTSPECULAR_PROP_FORCE_DWORD = 0xffffffff

} D2D1_DISTANTSPECULAR_PROP;

typedef enum D2D1_DISTANTSPECULAR_SCALE_MODE
{
    D2D1_DISTANTSPECULAR_SCALE_MODE_NEAREST_NEIGHBOR = 0,
    D2D1_DISTANTSPECULAR_SCALE_MODE_LINEAR = 1,
    D2D1_DISTANTSPECULAR_SCALE_MODE_CUBIC = 2,
    D2D1_DISTANTSPECULAR_SCALE_MODE_MULTI_SAMPLE_LINEAR = 3,
    D2D1_DISTANTSPECULAR_SCALE_MODE_ANISOTROPIC = 4,
    D2D1_DISTANTSPECULAR_SCALE_MODE_HIGH_QUALITY_CUBIC = 5,
    D2D1_DISTANTSPECULAR_SCALE_MODE_FORCE_DWORD = 0xffffffff

} D2D1_DISTANTSPECULAR_SCALE_MODE;


/// <summary>
/// The enumeration of the Point-Diffuse effect's top level properties.
/// Effect description: Creates a diffuse lighting effect with a point light source.
/// </summary>
typedef enum D2D1_POINTDIFFUSE_PROP
{
    
    /// <summary>
    /// Property Name: "LightPosition"
    /// Property Type: D2D1_VECTOR_3F
    /// </summary>
    D2D1_POINTDIFFUSE_PROP_LIGHT_POSITION = 0,
    
    /// <summary>
    /// Property Name: "DiffuseConstant"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_POINTDIFFUSE_PROP_DIFFUSE_CONSTANT = 1,
    
    /// <summary>
    /// Property Name: "SurfaceScale"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_POINTDIFFUSE_PROP_SURFACE_SCALE = 2,
    
    /// <summary>
    /// Property Name: "Color"
    /// Property Type: D2D1_VECTOR_3F
    /// </summary>
    D2D1_POINTDIFFUSE_PROP_COLOR = 3,
    
    /// <summary>
    /// Property Name: "KernelUnitLength"
    /// Property Type: D2D1_VECTOR_2F
    /// </summary>
    D2D1_POINTDIFFUSE_PROP_KERNEL_UNIT_LENGTH = 4,
    
    /// <summary>
    /// Property Name: "ScaleMode"
    /// Property Type: D2D1_POINTDIFFUSE_SCALE_MODE
    /// </summary>
    D2D1_POINTDIFFUSE_PROP_SCALE_MODE = 5,
    D2D1_POINTDIFFUSE_PROP_FORCE_DWORD = 0xffffffff

} D2D1_POINTDIFFUSE_PROP;

typedef enum D2D1_POINTDIFFUSE_SCALE_MODE
{
    D2D1_POINTDIFFUSE_SCALE_MODE_NEAREST_NEIGHBOR = 0,
    D2D1_POINTDIFFUSE_SCALE_MODE_LINEAR = 1,
    D2D1_POINTDIFFUSE_SCALE_MODE_CUBIC = 2,
    D2D1_POINTDIFFUSE_SCALE_MODE_MULTI_SAMPLE_LINEAR = 3,
    D2D1_POINTDIFFUSE_SCALE_MODE_ANISOTROPIC = 4,
    D2D1_POINTDIFFUSE_SCALE_MODE_HIGH_QUALITY_CUBIC = 5,
    D2D1_POINTDIFFUSE_SCALE_MODE_FORCE_DWORD = 0xffffffff

} D2D1_POINTDIFFUSE_SCALE_MODE;


/// <summary>
/// The enumeration of the Spot-Diffuse effect's top level properties.
/// Effect description: Creates a diffuse lighting effect with a spot light source.
/// </summary>
typedef enum D2D1_SPOTDIFFUSE_PROP
{
    
    /// <summary>
    /// Property Name: "LightPosition"
    /// Property Type: D2D1_VECTOR_3F
    /// </summary>
    D2D1_SPOTDIFFUSE_PROP_LIGHT_POSITION = 0,
    
    /// <summary>
    /// Property Name: "PointsAt"
    /// Property Type: D2D1_VECTOR_3F
    /// </summary>
    D2D1_SPOTDIFFUSE_PROP_POINTS_AT = 1,
    
    /// <summary>
    /// Property Name: "Focus"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_SPOTDIFFUSE_PROP_FOCUS = 2,
    
    /// <summary>
    /// Property Name: "LimitingConeAngle"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_SPOTDIFFUSE_PROP_LIMITING_CONE_ANGLE = 3,
    
    /// <summary>
    /// Property Name: "DiffuseConstant"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_SPOTDIFFUSE_PROP_DIFFUSE_CONSTANT = 4,
    
    /// <summary>
    /// Property Name: "SurfaceScale"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_SPOTDIFFUSE_PROP_SURFACE_SCALE = 5,
    
    /// <summary>
    /// Property Name: "Color"
    /// Property Type: D2D1_VECTOR_3F
    /// </summary>
    D2D1_SPOTDIFFUSE_PROP_COLOR = 6,
    
    /// <summary>
    /// Property Name: "KernelUnitLength"
    /// Property Type: D2D1_VECTOR_2F
    /// </summary>
    D2D1_SPOTDIFFUSE_PROP_KERNEL_UNIT_LENGTH = 7,
    
    /// <summary>
    /// Property Name: "ScaleMode"
    /// Property Type: D2D1_SPOTDIFFUSE_SCALE_MODE
    /// </summary>
    D2D1_SPOTDIFFUSE_PROP_SCALE_MODE = 8,
    D2D1_SPOTDIFFUSE_PROP_FORCE_DWORD = 0xffffffff

} D2D1_SPOTDIFFUSE_PROP;

typedef enum D2D1_SPOTDIFFUSE_SCALE_MODE
{
    D2D1_SPOTDIFFUSE_SCALE_MODE_NEAREST_NEIGHBOR = 0,
    D2D1_SPOTDIFFUSE_SCALE_MODE_LINEAR = 1,
    D2D1_SPOTDIFFUSE_SCALE_MODE_CUBIC = 2,
    D2D1_SPOTDIFFUSE_SCALE_MODE_MULTI_SAMPLE_LINEAR = 3,
    D2D1_SPOTDIFFUSE_SCALE_MODE_ANISOTROPIC = 4,
    D2D1_SPOTDIFFUSE_SCALE_MODE_HIGH_QUALITY_CUBIC = 5,
    D2D1_SPOTDIFFUSE_SCALE_MODE_FORCE_DWORD = 0xffffffff

} D2D1_SPOTDIFFUSE_SCALE_MODE;


/// <summary>
/// The enumeration of the Distant-Diffuse effect's top level properties.
/// Effect description: Creates a diffuse lighting effect with a distant light
/// source.
/// </summary>
typedef enum D2D1_DISTANTDIFFUSE_PROP
{
    
    /// <summary>
    /// Property Name: "Azimuth"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_DISTANTDIFFUSE_PROP_AZIMUTH = 0,
    
    /// <summary>
    /// Property Name: "Elevation"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_DISTANTDIFFUSE_PROP_ELEVATION = 1,
    
    /// <summary>
    /// Property Name: "DiffuseConstant"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_DISTANTDIFFUSE_PROP_DIFFUSE_CONSTANT = 2,
    
    /// <summary>
    /// Property Name: "SurfaceScale"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_DISTANTDIFFUSE_PROP_SURFACE_SCALE = 3,
    
    /// <summary>
    /// Property Name: "Color"
    /// Property Type: D2D1_VECTOR_3F
    /// </summary>
    D2D1_DISTANTDIFFUSE_PROP_COLOR = 4,
    
    /// <summary>
    /// Property Name: "KernelUnitLength"
    /// Property Type: D2D1_VECTOR_2F
    /// </summary>
    D2D1_DISTANTDIFFUSE_PROP_KERNEL_UNIT_LENGTH = 5,
    
    /// <summary>
    /// Property Name: "ScaleMode"
    /// Property Type: D2D1_DISTANTDIFFUSE_SCALE_MODE
    /// </summary>
    D2D1_DISTANTDIFFUSE_PROP_SCALE_MODE = 6,
    D2D1_DISTANTDIFFUSE_PROP_FORCE_DWORD = 0xffffffff

} D2D1_DISTANTDIFFUSE_PROP;

typedef enum D2D1_DISTANTDIFFUSE_SCALE_MODE
{
    D2D1_DISTANTDIFFUSE_SCALE_MODE_NEAREST_NEIGHBOR = 0,
    D2D1_DISTANTDIFFUSE_SCALE_MODE_LINEAR = 1,
    D2D1_DISTANTDIFFUSE_SCALE_MODE_CUBIC = 2,
    D2D1_DISTANTDIFFUSE_SCALE_MODE_MULTI_SAMPLE_LINEAR = 3,
    D2D1_DISTANTDIFFUSE_SCALE_MODE_ANISOTROPIC = 4,
    D2D1_DISTANTDIFFUSE_SCALE_MODE_HIGH_QUALITY_CUBIC = 5,
    D2D1_DISTANTDIFFUSE_SCALE_MODE_FORCE_DWORD = 0xffffffff

} D2D1_DISTANTDIFFUSE_SCALE_MODE;


/// <summary>
/// The enumeration of the Flood effect's top level properties.
/// Effect description: Renders an infinite sized floodfill of the given color.
/// </summary>
typedef enum D2D1_FLOOD_PROP
{
    
    /// <summary>
    /// Property Name: "Color"
    /// Property Type: D2D1_VECTOR_4F
    /// </summary>
    D2D1_FLOOD_PROP_COLOR = 0,
    D2D1_FLOOD_PROP_FORCE_DWORD = 0xffffffff

} D2D1_FLOOD_PROP;


/// <summary>
/// The enumeration of the Linear Transfer effect's top level properties.
/// Effect description: Remaps the color intensities of the input bitmap based on a
/// user specified linear transfer function for each RGBA channel.
/// </summary>
typedef enum D2D1_LINEARTRANSFER_PROP
{
    
    /// <summary>
    /// Property Name: "RedYIntercept"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_LINEARTRANSFER_PROP_RED_Y_INTERCEPT = 0,
    
    /// <summary>
    /// Property Name: "RedSlope"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_LINEARTRANSFER_PROP_RED_SLOPE = 1,
    
    /// <summary>
    /// Property Name: "RedDisable"
    /// Property Type: BOOL
    /// </summary>
    D2D1_LINEARTRANSFER_PROP_RED_DISABLE = 2,
    
    /// <summary>
    /// Property Name: "GreenYIntercept"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_LINEARTRANSFER_PROP_GREEN_Y_INTERCEPT = 3,
    
    /// <summary>
    /// Property Name: "GreenSlope"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_LINEARTRANSFER_PROP_GREEN_SLOPE = 4,
    
    /// <summary>
    /// Property Name: "GreenDisable"
    /// Property Type: BOOL
    /// </summary>
    D2D1_LINEARTRANSFER_PROP_GREEN_DISABLE = 5,
    
    /// <summary>
    /// Property Name: "BlueYIntercept"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_LINEARTRANSFER_PROP_BLUE_Y_INTERCEPT = 6,
    
    /// <summary>
    /// Property Name: "BlueSlope"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_LINEARTRANSFER_PROP_BLUE_SLOPE = 7,
    
    /// <summary>
    /// Property Name: "BlueDisable"
    /// Property Type: BOOL
    /// </summary>
    D2D1_LINEARTRANSFER_PROP_BLUE_DISABLE = 8,
    
    /// <summary>
    /// Property Name: "AlphaYIntercept"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_LINEARTRANSFER_PROP_ALPHA_Y_INTERCEPT = 9,
    
    /// <summary>
    /// Property Name: "AlphaSlope"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_LINEARTRANSFER_PROP_ALPHA_SLOPE = 10,
    
    /// <summary>
    /// Property Name: "AlphaDisable"
    /// Property Type: BOOL
    /// </summary>
    D2D1_LINEARTRANSFER_PROP_ALPHA_DISABLE = 11,
    
    /// <summary>
    /// Property Name: "ClampOutput"
    /// Property Type: BOOL
    /// </summary>
    D2D1_LINEARTRANSFER_PROP_CLAMP_OUTPUT = 12,
    D2D1_LINEARTRANSFER_PROP_FORCE_DWORD = 0xffffffff

} D2D1_LINEARTRANSFER_PROP;


/// <summary>
/// The enumeration of the Gamma Transfer effect's top level properties.
/// Effect description: Remaps the color intensities of the input bitmap based on a
/// user specified gamma transfer function for each RGBA channel.
/// </summary>
typedef enum D2D1_GAMMATRANSFER_PROP
{
    
    /// <summary>
    /// Property Name: "RedAmplitude"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_GAMMATRANSFER_PROP_RED_AMPLITUDE = 0,
    
    /// <summary>
    /// Property Name: "RedExponent"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_GAMMATRANSFER_PROP_RED_EXPONENT = 1,
    
    /// <summary>
    /// Property Name: "RedOffset"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_GAMMATRANSFER_PROP_RED_OFFSET = 2,
    
    /// <summary>
    /// Property Name: "RedDisable"
    /// Property Type: BOOL
    /// </summary>
    D2D1_GAMMATRANSFER_PROP_RED_DISABLE = 3,
    
    /// <summary>
    /// Property Name: "GreenAmplitude"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_GAMMATRANSFER_PROP_GREEN_AMPLITUDE = 4,
    
    /// <summary>
    /// Property Name: "GreenExponent"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_GAMMATRANSFER_PROP_GREEN_EXPONENT = 5,
    
    /// <summary>
    /// Property Name: "GreenOffset"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_GAMMATRANSFER_PROP_GREEN_OFFSET = 6,
    
    /// <summary>
    /// Property Name: "GreenDisable"
    /// Property Type: BOOL
    /// </summary>
    D2D1_GAMMATRANSFER_PROP_GREEN_DISABLE = 7,
    
    /// <summary>
    /// Property Name: "BlueAmplitude"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_GAMMATRANSFER_PROP_BLUE_AMPLITUDE = 8,
    
    /// <summary>
    /// Property Name: "BlueExponent"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_GAMMATRANSFER_PROP_BLUE_EXPONENT = 9,
    
    /// <summary>
    /// Property Name: "BlueOffset"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_GAMMATRANSFER_PROP_BLUE_OFFSET = 10,
    
    /// <summary>
    /// Property Name: "BlueDisable"
    /// Property Type: BOOL
    /// </summary>
    D2D1_GAMMATRANSFER_PROP_BLUE_DISABLE = 11,
    
    /// <summary>
    /// Property Name: "AlphaAmplitude"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_GAMMATRANSFER_PROP_ALPHA_AMPLITUDE = 12,
    
    /// <summary>
    /// Property Name: "AlphaExponent"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_GAMMATRANSFER_PROP_ALPHA_EXPONENT = 13,
    
    /// <summary>
    /// Property Name: "AlphaOffset"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_GAMMATRANSFER_PROP_ALPHA_OFFSET = 14,
    
    /// <summary>
    /// Property Name: "AlphaDisable"
    /// Property Type: BOOL
    /// </summary>
    D2D1_GAMMATRANSFER_PROP_ALPHA_DISABLE = 15,
    
    /// <summary>
    /// Property Name: "ClampOutput"
    /// Property Type: BOOL
    /// </summary>
    D2D1_GAMMATRANSFER_PROP_CLAMP_OUTPUT = 16,
    D2D1_GAMMATRANSFER_PROP_FORCE_DWORD = 0xffffffff

} D2D1_GAMMATRANSFER_PROP;


/// <summary>
/// The enumeration of the Table Transfer effect's top level properties.
/// Effect description: Remaps the color intensities of the input bitmap based on a
/// transfer function generated by a user specified list of values for each RGBA
/// channel.
/// </summary>
typedef enum D2D1_TABLETRANSFER_PROP
{
    
    /// <summary>
    /// Property Name: "RedTable"
    /// Property Type: (blob)
    /// </summary>
    D2D1_TABLETRANSFER_PROP_RED_TABLE = 0,
    
    /// <summary>
    /// Property Name: "RedDisable"
    /// Property Type: BOOL
    /// </summary>
    D2D1_TABLETRANSFER_PROP_RED_DISABLE = 1,
    
    /// <summary>
    /// Property Name: "GreenTable"
    /// Property Type: (blob)
    /// </summary>
    D2D1_TABLETRANSFER_PROP_GREEN_TABLE = 2,
    
    /// <summary>
    /// Property Name: "GreenDisable"
    /// Property Type: BOOL
    /// </summary>
    D2D1_TABLETRANSFER_PROP_GREEN_DISABLE = 3,
    
    /// <summary>
    /// Property Name: "BlueTable"
    /// Property Type: (blob)
    /// </summary>
    D2D1_TABLETRANSFER_PROP_BLUE_TABLE = 4,
    
    /// <summary>
    /// Property Name: "BlueDisable"
    /// Property Type: BOOL
    /// </summary>
    D2D1_TABLETRANSFER_PROP_BLUE_DISABLE = 5,
    
    /// <summary>
    /// Property Name: "AlphaTable"
    /// Property Type: (blob)
    /// </summary>
    D2D1_TABLETRANSFER_PROP_ALPHA_TABLE = 6,
    
    /// <summary>
    /// Property Name: "AlphaDisable"
    /// Property Type: BOOL
    /// </summary>
    D2D1_TABLETRANSFER_PROP_ALPHA_DISABLE = 7,
    
    /// <summary>
    /// Property Name: "ClampOutput"
    /// Property Type: BOOL
    /// </summary>
    D2D1_TABLETRANSFER_PROP_CLAMP_OUTPUT = 8,
    D2D1_TABLETRANSFER_PROP_FORCE_DWORD = 0xffffffff

} D2D1_TABLETRANSFER_PROP;


/// <summary>
/// The enumeration of the Discrete Transfer effect's top level properties.
/// Effect description: Remaps the color intensities of the input bitmap based on a
/// discrete function generated by a user specified list of values for each RGBA
/// channel.
/// </summary>
typedef enum D2D1_DISCRETETRANSFER_PROP
{
    
    /// <summary>
    /// Property Name: "RedTable"
    /// Property Type: (blob)
    /// </summary>
    D2D1_DISCRETETRANSFER_PROP_RED_TABLE = 0,
    
    /// <summary>
    /// Property Name: "RedDisable"
    /// Property Type: BOOL
    /// </summary>
    D2D1_DISCRETETRANSFER_PROP_RED_DISABLE = 1,
    
    /// <summary>
    /// Property Name: "GreenTable"
    /// Property Type: (blob)
    /// </summary>
    D2D1_DISCRETETRANSFER_PROP_GREEN_TABLE = 2,
    
    /// <summary>
    /// Property Name: "GreenDisable"
    /// Property Type: BOOL
    /// </summary>
    D2D1_DISCRETETRANSFER_PROP_GREEN_DISABLE = 3,
    
    /// <summary>
    /// Property Name: "BlueTable"
    /// Property Type: (blob)
    /// </summary>
    D2D1_DISCRETETRANSFER_PROP_BLUE_TABLE = 4,
    
    /// <summary>
    /// Property Name: "BlueDisable"
    /// Property Type: BOOL
    /// </summary>
    D2D1_DISCRETETRANSFER_PROP_BLUE_DISABLE = 5,
    
    /// <summary>
    /// Property Name: "AlphaTable"
    /// Property Type: (blob)
    /// </summary>
    D2D1_DISCRETETRANSFER_PROP_ALPHA_TABLE = 6,
    
    /// <summary>
    /// Property Name: "AlphaDisable"
    /// Property Type: BOOL
    /// </summary>
    D2D1_DISCRETETRANSFER_PROP_ALPHA_DISABLE = 7,
    
    /// <summary>
    /// Property Name: "ClampOutput"
    /// Property Type: BOOL
    /// </summary>
    D2D1_DISCRETETRANSFER_PROP_CLAMP_OUTPUT = 8,
    D2D1_DISCRETETRANSFER_PROP_FORCE_DWORD = 0xffffffff

} D2D1_DISCRETETRANSFER_PROP;


/// <summary>
/// The enumeration of the Convolve Matrix effect's top level properties.
/// Effect description: Applies a user specified convolution kernel to a bitmap.
/// </summary>
typedef enum D2D1_CONVOLVEMATRIX_PROP
{
    
    /// <summary>
    /// Property Name: "KernelUnitLength"
    /// Property Type: D2D1_VECTOR_2F
    /// </summary>
    D2D1_CONVOLVEMATRIX_PROP_KERNEL_UNIT_LENGTH = 0,
    
    /// <summary>
    /// Property Name: "ScaleMode"
    /// Property Type: D2D1_CONVOLVEMATRIX_SCALE_MODE
    /// </summary>
    D2D1_CONVOLVEMATRIX_PROP_SCALE_MODE = 1,
    
    /// <summary>
    /// Property Name: "KernelSizeX"
    /// Property Type: UINT32
    /// </summary>
    D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_X = 2,
    
    /// <summary>
    /// Property Name: "KernelSizeY"
    /// Property Type: UINT32
    /// </summary>
    D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_Y = 3,
    
    /// <summary>
    /// Property Name: "KernelMatrix"
    /// Property Type: (blob)
    /// </summary>
    D2D1_CONVOLVEMATRIX_PROP_KERNEL_MATRIX = 4,
    
    /// <summary>
    /// Property Name: "Divisor"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_CONVOLVEMATRIX_PROP_DIVISOR = 5,
    
    /// <summary>
    /// Property Name: "Bias"
    /// Property Type: FLOAT
    /// </summary>
    D2D1_CONVOLVEMATRIX_PROP_BIAS = 6,
    
    /// <summary>
    /// Property Name: "KernelOffset"
    /// Property Type: D2D1_VECTOR_2F
    /// </summary>
    D2D1_CONVOLVEMATRIX_PROP_KERNEL_OFFSET = 7,
    
    /// <summary>
    /// Property Name: "PreserveAlpha"
    /// Property Type: BOOL
    /// </summary>
    D2D1_CONVOLVEMATRIX_PROP_PRESERVE_ALPHA = 8,
    
    /// <summary>
    /// Property Name: "BorderMode"
    /// Property Type: D2D1_BORDER_MODE
    /// </summary>
    D2D1_CONVOLVEMATRIX_PROP_BORDER_MODE = 9,
    
    /// <summary>
    /// Property Name: "ClampOutput"
    /// Property Type: BOOL
    /// </summary>
    D2D1_CONVOLVEMATRIX_PROP_CLAMP_OUTPUT = 10,
    D2D1_CONVOLVEMATRIX_PROP_FORCE_DWORD = 0xffffffff

} D2D1_CONVOLVEMATRIX_PROP;

typedef enum D2D1_CONVOLVEMATRIX_SCALE_MODE
{
    D2D1_CONVOLVEMATRIX_SCALE_MODE_NEAREST_NEIGHBOR = 0,
    D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR = 1,
    D2D1_CONVOLVEMATRIX_SCALE_MODE_CUBIC = 2,
    D2D1_CONVOLVEMATRIX_SCALE_MODE_MULTI_SAMPLE_LINEAR = 3,
    D2D1_CONVOLVEMATRIX_SCALE_MODE_ANISOTROPIC = 4,
    D2D1_CONVOLVEMATRIX_SCALE_MODE_HIGH_QUALITY_CUBIC = 5,
    D2D1_CONVOLVEMATRIX_SCALE_MODE_FORCE_DWORD = 0xffffffff

} D2D1_CONVOLVEMATRIX_SCALE_MODE;


/// <summary>
/// The enumeration of the Brightness effect's top level properties.
/// Effect description: Adjusts the brightness of the image based on the specified
/// white and black point.
/// </summary>
typedef enum D2D1_BRIGHTNESS_PROP
{
    
    /// <summary>
    /// Property Name: "WhitePoint"
    /// Property Type: D2D1_VECTOR_2F
    /// </summary>
    D2D1_BRIGHTNESS_PROP_WHITE_POINT = 0,
    
    /// <summary>
    /// Property Name: "BlackPoint"
    /// Property Type: D2D1_VECTOR_2F
    /// </summary>
    D2D1_BRIGHTNESS_PROP_BLACK_POINT = 1,
    D2D1_BRIGHTNESS_PROP_FORCE_DWORD = 0xffffffff

} D2D1_BRIGHTNESS_PROP;


/// <summary>
/// The enumeration of the Arithmetic Composite effect's top level properties.
/// Effect description: Composites two bitmaps based on the following algorithm:
/// Output = Coefficients_1 * Source * Destination + Coefficients_2 * Source+
/// Coefficients_3 * Destination + Coefficients_4.
/// </summary>
typedef enum D2D1_ARITHMETICCOMPOSITE_PROP
{
    
    /// <summary>
    /// Property Name: "Coefficients"
    /// Property Type: D2D1_VECTOR_4F
    /// </summary>
    D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS = 0,
    
    /// <summary>
    /// Property Name: "ClampOutput"
    /// Property Type: BOOL
    /// </summary>
    D2D1_ARITHMETICCOMPOSITE_PROP_CLAMP_OUTPUT = 1,
    D2D1_ARITHMETICCOMPOSITE_PROP_FORCE_DWORD = 0xffffffff

} D2D1_ARITHMETICCOMPOSITE_PROP;


/// <summary>
/// The enumeration of the Crop effect's top level properties.
/// Effect description: Crops the input bitmap according to the specified
/// parameters.
/// </summary>
typedef enum D2D1_CROP_PROP
{
    
    /// <summary>
    /// Property Name: "Rect"
    /// Property Type: D2D1_VECTOR_4F
    /// </summary>
    D2D1_CROP_PROP_RECT = 0,
    
    /// <summary>
    /// Property Name: "BorderMode"
    /// Property Type: D2D1_BORDER_MODE
    /// </summary>
    D2D1_CROP_PROP_BORDER_MODE = 1,
    D2D1_CROP_PROP_FORCE_DWORD = 0xffffffff

} D2D1_CROP_PROP;


/// <summary>
/// The enumeration of the Border effect's top level properties.
/// Effect description: Extends the region of the bitmap based on the selected
/// border mode.
/// </summary>
typedef enum D2D1_BORDER_PROP
{
    
    /// <summary>
    /// Property Name: "EdgeModeX"
    /// Property Type: D2D1_BORDER_EDGE_MODE
    /// </summary>
    D2D1_BORDER_PROP_EDGE_MODE_X = 0,
    
    /// <summary>
    /// Property Name: "EdgeModeY"
    /// Property Type: D2D1_BORDER_EDGE_MODE
    /// </summary>
    D2D1_BORDER_PROP_EDGE_MODE_Y = 1,
    D2D1_BORDER_PROP_FORCE_DWORD = 0xffffffff

} D2D1_BORDER_PROP;


/// <summary>
/// The edge mode for the Border effect.
/// </summary>
typedef enum D2D1_BORDER_EDGE_MODE
{
    D2D1_BORDER_EDGE_MODE_CLAMP = 0,
    D2D1_BORDER_EDGE_MODE_WRAP = 1,
    D2D1_BORDER_EDGE_MODE_MIRROR = 2,
    D2D1_BORDER_EDGE_MODE_FORCE_DWORD = 0xffffffff

} D2D1_BORDER_EDGE_MODE;


/// <summary>
/// The enumeration of the Morphology effect's top level properties.
/// Effect description: Erodes or dilates a bitmap by the given radius.
/// </summary>
typedef enum D2D1_MORPHOLOGY_PROP
{
    
    /// <summary>
    /// Property Name: "Mode"
    /// Property Type: D2D1_MORPHOLOGY_MODE
    /// </summary>
    D2D1_MORPHOLOGY_PROP_MODE = 0,
    
    /// <summary>
    /// Property Name: "Width"
    /// Property Type: UINT32
    /// </summary>
    D2D1_MORPHOLOGY_PROP_WIDTH = 1,
    
    /// <summary>
    /// Property Name: "Height"
    /// Property Type: UINT32
    /// </summary>
    D2D1_MORPHOLOGY_PROP_HEIGHT = 2,
    D2D1_MORPHOLOGY_PROP_FORCE_DWORD = 0xffffffff

} D2D1_MORPHOLOGY_PROP;

typedef enum D2D1_MORPHOLOGY_MODE
{
    D2D1_MORPHOLOGY_MODE_ERODE = 0,
    D2D1_MORPHOLOGY_MODE_DILATE = 1,
    D2D1_MORPHOLOGY_MODE_FORCE_DWORD = 0xffffffff

} D2D1_MORPHOLOGY_MODE;


/// <summary>
/// The enumeration of the Tile effect's top level properties.
/// Effect description: Tiles the specified region of the input bitmap.
/// </summary>
typedef enum D2D1_TILE_PROP
{
    
    /// <summary>
    /// Property Name: "Rect"
    /// Property Type: D2D1_VECTOR_4F
    /// </summary>
    D2D1_TILE_PROP_RECT = 0,
    D2D1_TILE_PROP_FORCE_DWORD = 0xffffffff

} D2D1_TILE_PROP;


/// <summary>
/// The enumeration of the Atlas effect's top level properties.
/// Effect description: Changes the available area of the input to the specified
/// rectangle. Provides an optimization for scenarios where a bitmap is used as an
/// atlas.
/// </summary>
typedef enum D2D1_ATLAS_PROP
{
    
    /// <summary>
    /// Property Name: "InputRect"
    /// Property Type: D2D1_VECTOR_4F
    /// </summary>
    D2D1_ATLAS_PROP_INPUT_RECT = 0,
    
    /// <summary>
    /// Property Name: "InputPaddingRect"
    /// Property Type: D2D1_VECTOR_4F
    /// </summary>
    D2D1_ATLAS_PROP_INPUT_PADDING_RECT = 1,
    D2D1_ATLAS_PROP_FORCE_DWORD = 0xffffffff

} D2D1_ATLAS_PROP;


/// <summary>
/// The enumeration of the Opacity Metadata effect's top level properties.
/// Effect description: Changes the rectangle which is assumed to be opaque.
/// Provides optimizations in certain scenarios.
/// </summary>
typedef enum D2D1_OPACITYMETADATA_PROP
{
    
    /// <summary>
    /// Property Name: "InputOpaqueRect"
    /// Property Type: D2D1_VECTOR_4F
    /// </summary>
    D2D1_OPACITYMETADATA_PROP_INPUT_OPAQUE_RECT = 0,
    D2D1_OPACITYMETADATA_PROP_FORCE_DWORD = 0xffffffff

} D2D1_OPACITYMETADATA_PROP;



#endif // #ifndef _D2D1_EFFECTS_
