/*
 * Copyright 2021 Ziqing Hui for CodeWeavers
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

cpp_quote("DEFINE_GUID(CLSID_D2D12DAffineTransform,      0x6aa97485,0x6354,0x4cfc,0x90,0x8c,0xe4,0xa7,0x4f,0x62,0xc9,0x6c);")
cpp_quote("DEFINE_GUID(CLSID_D2D13DPerspectiveTransform, 0xc2844d0b,0x3d86,0x46e7,0x85,0xba,0x52,0x6c,0x92,0x40,0xf3,0xfb);")
cpp_quote("DEFINE_GUID(CLSID_D2D1Composite,              0x48fc9f51,0xf6ac,0x48f1,0x8b,0x58,0x3b,0x28,0xac,0x46,0xf7,0x6d);")
cpp_quote("DEFINE_GUID(CLSID_D2D1Crop,                   0xe23f7110,0x0e9a,0x4324,0xaf,0x47,0x6a,0x2c,0x0c,0x46,0xf3,0x5b);")

typedef enum D2D1_BORDER_MODE
{
    D2D1_BORDER_MODE_SOFT = 0x0,
    D2D1_BORDER_MODE_HARD = 0x1,
    D2D1_BORDER_MODE_FORCE_DWORD = 0xffffffff
} D2D1_BORDER_MODE;

typedef enum D2D1_2DAFFINETRANSFORM_PROP
{
    D2D1_2DAFFINETRANSFORM_PROP_INTERPOLATION_MODE = 0x0,
    D2D1_2DAFFINETRANSFORM_PROP_BORDER_MODE = 0x1,
    D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX = 0x2,
    D2D1_2DAFFINETRANSFORM_PROP_SHARPNESS = 0x3,
    D2D1_2DAFFINETRANSFORM_PROP_FORCE_DWORD = 0xffffffff
} D2D1_2DAFFINETRANSFORM_PROP;

typedef enum D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE
{
    D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR = 0x0,
    D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR = 0x1,
    D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_CUBIC = 0x2,
    D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR = 0x3,
    D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC = 0x4,
    D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC = 0x5,
    D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_FORCE_DWORD = 0xffffffff
} D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE;

typedef enum D2D1_3DPERSPECTIVETRANSFORM_PROP
{
    D2D1_3DPERSPECTIVETRANSFORM_PROP_INTERPOLATION_MODE = 0x0,
    D2D1_3DPERSPECTIVETRANSFORM_PROP_BORDER_MODE = 0x1,
    D2D1_3DPERSPECTIVETRANSFORM_PROP_DEPTH = 0x2,
    D2D1_3DPERSPECTIVETRANSFORM_PROP_PERSPECTIVE_ORIGIN = 0x3,
    D2D1_3DPERSPECTIVETRANSFORM_PROP_LOCAL_OFFSET = 0x4,
    D2D1_3DPERSPECTIVETRANSFORM_PROP_GLOBAL_OFFSET = 0x5,
    D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION_ORIGIN = 0x6,
    D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION = 0x7,
    D2D1_3DPERSPECTIVETRANSFORM_PROP_FORCE_DWORD = 0xffffffff
} D2D1_3DPERSPECTIVETRANSFORM_PROP;

typedef enum D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE
{
    D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR = 0x0,
    D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR = 0x1,
    D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_CUBIC = 0x2,
    D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR = 0x3,
    D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC = 0x4,
    D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_FORCE_DWORD = 0xffffffff
} D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE;

typedef enum D2D1_COMPOSITE_PROP
{
    D2D1_COMPOSITE_PROP_MODE = 0x0,
    D2D1_COMPOSITE_PROP_FORCE_DWORD = 0xffffffff
} D2D1_COMPOSITE_PROP;

typedef enum D2D1_CROP_PROP
{
    D2D1_CROP_PROP_RECT = 0x0,
    D2D1_CROP_PROP_BORDER_MODE = 0x1,
    D2D1_CROP_PROP_FORCE_DWORD = 0xffffffff
} D2D1_CROP_PROP;
