Rebase against 37e837113ce6654c436211031712719e8f9f29a2

This commit is contained in:
Alistair Leslie-Hughes 2018-05-30 08:48:14 +10:00
parent b305d85b78
commit d28e1388c0
3 changed files with 5 additions and 490 deletions

View File

@ -1,484 +0,0 @@
From 2401cee08c5c55115552da35daab7d68a7bde1e0 Mon Sep 17 00:00:00 2001
From: Lucian Poston <lucian.poston@gmail.com>
Date: Wed, 2 May 2018 22:38:33 -0700
Subject: [PATCH] d2d1: Add d2d1_1.idl for drawing ID2D1Bitmap1
https://bugs.winehq.org/show_bug.cgi?id=44052
Signed-off-by: Lucian Poston <lucian.poston@gmail.com>
---
include/d2d1_1.idl | 416 ++++++++++++++++++++++++++++++++++++++++++++++++++++
include/dcommon.idl | 15 ++
2 files changed, 431 insertions(+)
diff --git a/include/d2d1_1.idl b/include/d2d1_1.idl
index 4b6224a..24b997e 100644
--- a/include/d2d1_1.idl
+++ b/include/d2d1_1.idl
@@ -18,6 +18,11 @@
import "d2d1.idl";
+interface IWICColorContext;
+interface ID2D1ColorContext;
+interface ID2D1CommandSink;
+interface ID2D1Effect;
+interface ID2D1ImageBrush;
interface ID2D1DeviceContext;
interface ID2D1StrokeStyle1;
interface ID2D1PathGeometry1;
@@ -96,6 +101,63 @@ typedef enum D2D1_MAP_OPTIONS
D2D1_MAP_OPTIONS_FORCE_DWORD = 0xffffffff,
} D2D1_MAP_OPTIONS;
+typedef enum D2D1_INTERPOLATION_MODE
+{
+ D2D1_INTERPOLATION_MODE_NEAREST_NEIGHBOR = D2D1_INTERPOLATION_MODE_DEFINITION_NEAREST_NEIGHBOR,
+ D2D1_INTERPOLATION_MODE_LINEAR = D2D1_INTERPOLATION_MODE_DEFINITION_LINEAR,
+ D2D1_INTERPOLATION_MODE_CUBIC = D2D1_INTERPOLATION_MODE_DEFINITION_CUBIC,
+ D2D1_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR = D2D1_INTERPOLATION_MODE_DEFINITION_MULTI_SAMPLE_LINEAR,
+ D2D1_INTERPOLATION_MODE_ANISOTROPIC = D2D1_INTERPOLATION_MODE_DEFINITION_ANISOTROPIC,
+ D2D1_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC = D2D1_INTERPOLATION_MODE_DEFINITION_HIGH_QUALITY_CUBIC,
+ D2D1_INTERPOLATION_MODE_FORCE_DWORD = 0xffffffff,
+} D2D1_INTERPOLATION_MODE;
+
+typedef enum D2D1_BUFFER_PRECISION
+{
+ D2D1_BUFFER_PRECISION_UNKNOWN = 0,
+ D2D1_BUFFER_PRECISION_8BPC_UNORM = 1,
+ D2D1_BUFFER_PRECISION_8BPC_UNORM_SRGB = 2,
+ D2D1_BUFFER_PRECISION_16BPC_UNORM = 3,
+ D2D1_BUFFER_PRECISION_16BPC_FLOAT = 4,
+ D2D1_BUFFER_PRECISION_32BPC_FLOAT = 5,
+ D2D1_BUFFER_PRECISION_FORCE_DWORD = 0xffffffff,
+} D2D1_BUFFER_PRECISION;
+
+typedef enum D2D1_COLOR_INTERPOLATION_MODE
+{
+ D2D1_COLOR_INTERPOLATION_MODE_STRAIGHT = 0,
+ D2D1_COLOR_INTERPOLATION_MODE_PREMULTIPLIED = 1,
+ D2D1_COLOR_INTERPOLATION_MODE_FORCE_DWORD = 0xffffffff,
+} D2D1_COLOR_INTERPOLATION_MODE;
+
+typedef enum D2D1_COMPOSITE_MODE
+{
+ D2D1_COMPOSITE_MODE_SOURCE_OVER = 0,
+ D2D1_COMPOSITE_MODE_DESTINATION_OVER = 1,
+ D2D1_COMPOSITE_MODE_SOURCE_IN = 2,
+ D2D1_COMPOSITE_MODE_DESTINATION_IN = 3,
+ D2D1_COMPOSITE_MODE_SOURCE_OUT = 4,
+ D2D1_COMPOSITE_MODE_DESTINATION_OUT = 5,
+ D2D1_COMPOSITE_MODE_SOURCE_ATOP = 6,
+ D2D1_COMPOSITE_MODE_DESTINATION_ATOP = 7,
+ D2D1_COMPOSITE_MODE_XOR = 8,
+ D2D1_COMPOSITE_MODE_PLUS = 9,
+ D2D1_COMPOSITE_MODE_SOURCE_COPY = 10,
+ D2D1_COMPOSITE_MODE_BOUNDED_SOURCE_COPY = 11,
+ D2D1_COMPOSITE_MODE_MASK_INVERT = 12,
+ D2D1_COMPOSITE_MODE_FORCE_DWORD = 0xffffffff,
+} D2D1_COMPOSITE_MODE;
+
+typedef enum D2D1_LAYER_OPTIONS1
+{
+ D2D1_LAYER_OPTIONS1_NONE = 0,
+ D2D1_LAYER_OPTIONS1_INITIALIZE_FROM_BACKGROUND = 1,
+ D2D1_LAYER_OPTIONS1_IGNORE_ALPHA = 2,
+ D2D1_LAYER_OPTIONS1_FORCE_DWORD = 0xffffffff,
+} D2D1_LAYER_OPTIONS1;
+
+typedef D2D_MATRIX_4X4_F D2D1_MATRIX_4X4_F;
+typedef struct DWRITE_GLYPH_RUN_DESCRIPTION DWRITE_GLYPH_RUN_DESCRIPTION;
typedef struct D2D1_PROPERTY_BINDING D2D1_PROPERTY_BINDING;
typedef struct D2D1_STROKE_STYLE_PROPERTIES1
@@ -134,6 +196,63 @@ typedef struct D2D1_MAPPED_RECT
BYTE *bits;
} D2D1_MAPPED_RECT;
+typedef struct D2D1_LAYER_PARAMETERS1
+{
+ D2D1_RECT_F contentBounds;
+ ID2D1Geometry *geometricMask;
+ D2D1_ANTIALIAS_MODE maskAntialiasMode;
+ D2D1_MATRIX_3X2_F maskTransform;
+ float opacity;
+ ID2D1Brush *opacityBrush;
+ D2D1_LAYER_OPTIONS1 layerOptions;
+} D2D1_LAYER_PARAMETERS1;
+
+typedef struct D2D1_RENDERING_CONTROLS
+{
+ D2D1_BUFFER_PRECISION bufferPrecision;
+ D2D1_SIZE_U tileSize;
+} D2D1_RENDERING_CONTROLS;
+
+typedef struct D2D1_EFFECT_INPUT_DESCRIPTION
+{
+ ID2D1Effect *effect;
+ UINT32 inputIndex;
+ D2D1_RECT_F inputRectangle;
+} D2D1_EFFECT_INPUT_DESCRIPTION;
+
+typedef struct D2D1_IMAGE_BRUSH_PROPERTIES
+{
+ D2D1_RECT_F sourceRectangle;
+ D2D1_EXTEND_MODE extendModeX;
+ D2D1_EXTEND_MODE extendModeY;
+ D2D1_INTERPOLATION_MODE interpolationMode;
+} D2D1_IMAGE_BRUSH_PROPERTIES;
+
+typedef struct D2D1_BITMAP_BRUSH_PROPERTIES1
+{
+ D2D1_EXTEND_MODE extendModeX;
+ D2D1_EXTEND_MODE extendModeY;
+ D2D1_INTERPOLATION_MODE interpolationMode;
+} D2D1_BITMAP_BRUSH_PROPERTIES1;
+
+typedef struct D2D1_BITMAP_PROPERTIES1
+{
+ D2D1_PIXEL_FORMAT pixelFormat;
+ float dpiX;
+ float dpiY;
+ D2D1_BITMAP_OPTIONS bitmapOptions;
+ ID2D1ColorContext *colorContext;
+} D2D1_BITMAP_PROPERTIES1;
+
+typedef struct D2D1_POINT_DESCRIPTION
+{
+ D2D1_POINT_2F point;
+ D2D1_POINT_2F unitTangentVector;
+ UINT32 endSegment;
+ UINT32 endFigure;
+ float lengthToEndSegment;
+} D2D1_POINT_DESCRIPTION;
+
typedef HRESULT (__stdcall *PD2D1_EFFECT_FACTORY)(IUnknown **effect);
[
@@ -240,3 +359,300 @@ interface ID2D1Factory1 : ID2D1Factory
[out] ID2D1Properties **props
);
}
+
+[
+ local,
+ object,
+ uuid(ae1572f4-5dd0-4777-998b-9279472ae63b)
+]
+interface ID2D1GradientStopCollection1 : ID2D1GradientStopCollection
+{
+ void GetGradientStops1(
+ [out] D2D1_GRADIENT_STOP *stops,
+ [in] UINT32 stop_count
+ );
+ D2D1_COLOR_SPACE GetPreInterpolationSpace();
+ D2D1_COLOR_SPACE GetPostInterpolationSpace();
+ D2D1_BUFFER_PRECISION GetBufferPrecision();
+ D2D1_COLOR_INTERPOLATION_MODE GetColorInterpolationMode();
+}
+
+[
+ local,
+ object,
+ uuid(b4f34a19-2383-4d76-94f6-ec343657c3dc)
+]
+interface ID2D1CommandList : ID2D1Image
+{
+ HRESULT Stream(
+ [in] ID2D1CommandSink *Sink
+ );
+ HRESULT Close();
+}
+
+[
+ local,
+ object,
+ uuid(41343a53-e41a-49a2-91cd-21793bbb62e5)
+]
+interface ID2D1BitmapBrush1 : ID2D1BitmapBrush
+{
+ void SetInterpolationMode1(
+ D2D1_INTERPOLATION_MODE interpolation_mode
+ );
+ D2D1_INTERPOLATION_MODE GetInterpolationMode1();
+}
+
+[
+ local,
+ object,
+ uuid(1c4820bb-5771-4518-a581-2fe4dd0ec657)
+]
+interface ID2D1ColorContext : ID2D1Resource
+{
+ D2D1_COLOR_SPACE GetColorSpace();
+ UINT32 GetProfileSize();
+ HRESULT GetProfile(
+ [out] BYTE *profile,
+ [in] UINT32 size
+ );
+}
+
+[
+ local,
+ object,
+ uuid(82237326-8111-4f7c-bcf4-b5c1175564fe)
+]
+interface ID2D1GdiMetafileSink : ID2D1Resource
+{
+ BOOL ProcessRecord(
+ [in] DWORD record_type,
+ [out] const void *data,
+ [in] DWORD data_size
+ );
+}
+
+[
+ local,
+ object,
+ uuid(2f543dc3-cfc1-4211-864f-cfd91c6f3395)
+]
+interface ID2D1GdiMetafile : ID2D1Resource
+{
+ HRESULT Stream(
+ [in] ID2D1GdiMetafileSink *sink
+ );
+ HRESULT GetBounds(
+ [out] D2D1_RECT_F *bounds
+ );
+}
+
+[
+ local,
+ object,
+ uuid(10a72a66-e91c-43f4-993f-ddf4b82b0b4a)
+]
+interface ID2D1StrokeStyle1 : ID2D1StrokeStyle
+{
+ D2D1_STROKE_TRANSFORM_TYPE GetStrokeTransformType();
+}
+
+[
+ local,
+ object,
+ uuid(62baa2d2-ab54-41b7-b872-787e0106a421)
+]
+interface ID2D1PathGeometry1 : ID2D1PathGeometry
+{
+ HRESULT ComputePointAndSegmentAtLength(
+ [in] float length,
+ [in] UINT32 start_segment,
+ [in] const D2D1_MATRIX_3X2_F *world_transform,
+ [in] float tolerance,
+ [out] D2D1_POINT_DESCRIPTION *desc
+ );
+}
+
+[
+ local,
+ object,
+ uuid(689f1f85-c72e-4e33-8f19-85754efd5ace)
+]
+interface ID2D1DrawingStateBlock1 : ID2D1DrawingStateBlock
+{
+ void GetDescription(
+ [out] D2D1_DRAWING_STATE_DESCRIPTION1 *desc
+ );
+ void SetDescription(
+ [in] const D2D1_DRAWING_STATE_DESCRIPTION1 *desc
+ );
+}
+
+[
+ local,
+ object,
+ uuid(e8f7fe7a-191c-466d-ad95-975678bda998)
+]
+interface ID2D1DeviceContext : ID2D1RenderTarget
+{
+ HRESULT CreateBitmap(
+ [in] D2D1_SIZE_U size,
+ [in] const void *src_data,
+ [in] UINT32 pitch,
+ [in] const D2D1_BITMAP_PROPERTIES1 *desc,
+ [out] ID2D1Bitmap1 **bitmap
+ );
+ HRESULT CreateBitmapFromWicBitmap(
+ [in] IWICBitmapSource *bitmap_source,
+ [in] const D2D1_BITMAP_PROPERTIES1 *desc,
+ [out] ID2D1Bitmap1 **bitmap
+ );
+ HRESULT CreateColorContext(
+ [in] D2D1_COLOR_SPACE space,
+ [in] const BYTE *profile,
+ [in] UINT32 profile_size,
+ [out] ID2D1ColorContext **color_context
+ );
+ HRESULT CreateColorContextFromFilename(
+ [in] const WCHAR *filename,
+ [out] ID2D1ColorContext **color_context
+ );
+ HRESULT CreateColorContextFromWicColorContext(
+ [in] IWICColorContext *wic_color_context,
+ [out] ID2D1ColorContext **color_context
+ );
+ HRESULT CreateBitmapFromDxgiSurface(
+ [in] IDXGISurface *surface,
+ [in] const D2D1_BITMAP_PROPERTIES1 *desc,
+ [out] ID2D1Bitmap1 **bitmap
+ );
+ HRESULT CreateEffect(
+ [in] REFCLSID effect_id,
+ [out] ID2D1Effect **effect
+ );
+ HRESULT CreateGradientStopCollection(
+ [in] const D2D1_GRADIENT_STOP *stops,
+ [in] UINT32 stop_count,
+ [in] D2D1_COLOR_SPACE preinterpolation_space,
+ [in] D2D1_COLOR_SPACE postinterpolation_space,
+ [in] D2D1_BUFFER_PRECISION buffer_precision,
+ [in] D2D1_EXTEND_MODE extend_mode,
+ [in] D2D1_COLOR_INTERPOLATION_MODE color_interpolation_mode,
+ [out] ID2D1GradientStopCollection1 **gradient
+ );
+ HRESULT CreateImageBrush(
+ [in] ID2D1Image *image,
+ [in] const D2D1_IMAGE_BRUSH_PROPERTIES *image_brush_desc,
+ [in] const D2D1_BRUSH_PROPERTIES *brush_desc,
+ [out] ID2D1ImageBrush **brush
+ );
+ HRESULT CreateBitmapBrush(
+ [in] ID2D1Bitmap *bitmap,
+ [in] const D2D1_BITMAP_BRUSH_PROPERTIES1 *bitmap_brush_desc,
+ [in] const D2D1_BRUSH_PROPERTIES *brush_desc,
+ [out] ID2D1BitmapBrush1 **bitmap_brush
+ );
+ HRESULT CreateCommandList(
+ [out] ID2D1CommandList **command_list
+ );
+ BOOL IsDxgiFormatSupported(
+ [in] DXGI_FORMAT format
+ );
+ BOOL IsBufferPrecisionSupported(
+ [in] D2D1_BUFFER_PRECISION buffer_precision
+ );
+ void GetImageLocalBounds(
+ [in] ID2D1Image *image,
+ [out] D2D1_RECT_F *local_bounds
+ );
+ HRESULT GetImageWorldBounds(
+ [in] ID2D1Image *image,
+ [out] D2D1_RECT_F *world_bounds
+ );
+ HRESULT GetGlyphRunWorldBounds(
+ [in] D2D1_POINT_2F baseline_origin,
+ [in] const DWRITE_GLYPH_RUN *glyph_run,
+ [in] DWRITE_MEASURING_MODE measuring_mode,
+ [out] D2D1_RECT_F *bounds
+ );
+ void GetDevice(
+ [out] ID2D1Device **device
+ );
+ void SetTarget(
+ [in] ID2D1Image *target
+ );
+ void GetTarget(
+ [out] ID2D1Image **target
+ );
+ void SetRenderingControls(
+ [in] const D2D1_RENDERING_CONTROLS *rendering_controls
+ );
+ void GetRenderingControls(
+ [out] D2D1_RENDERING_CONTROLS *rendering_controls
+ );
+ void SetPrimitiveBlend(
+ [in] D2D1_PRIMITIVE_BLEND primitive_blend
+ );
+ D2D1_PRIMITIVE_BLEND GetPrimitiveBlend();
+ void SetUnitMode(
+ [in] D2D1_UNIT_MODE unit_mode
+ );
+ D2D1_UNIT_MODE GetUnitMode();
+ void DrawGlyphRun(
+ [in] D2D1_POINT_2F baseline_origin,
+ [in] const DWRITE_GLYPH_RUN *glyph_run,
+ [in] const DWRITE_GLYPH_RUN_DESCRIPTION *glyph_run_desc,
+ [in] ID2D1Brush *brush,
+ [in] DWRITE_MEASURING_MODE measuring_mode
+ );
+ void DrawImage(
+ [in] ID2D1Image *image,
+ [in] const D2D1_POINT_2F *target_offset,
+ [in] const D2D1_RECT_F *image_rect,
+ [in] D2D1_INTERPOLATION_MODE interpolation_mode,
+ [in] D2D1_COMPOSITE_MODE composite_mode
+ );
+ void DrawGdiMetafile(
+ [in] ID2D1GdiMetafile *metafile,
+ [in] const D2D1_POINT_2F *target_offset
+ );
+ void DrawBitmap(
+ [in] ID2D1Bitmap *bitmap,
+ [in] const D2D1_RECT_F *dst_rect,
+ [in] float opacity,
+ [in] D2D1_INTERPOLATION_MODE interpolation_mode,
+ [in] const D2D1_RECT_F *src_rect,
+ [in] const D2D1_MATRIX_4X4_F *perspective_transform
+ );
+ void PushLayer(
+ [in] const D2D1_LAYER_PARAMETERS1 *layer_parameters,
+ [in] ID2D1Layer *layer
+ );
+ HRESULT InvalidateEffectInputRectangle(
+ [in] ID2D1Effect *effect,
+ [in] UINT32 input,
+ [in] const D2D1_RECT_F *input_rect
+ );
+ HRESULT GetEffectInvalidRectangleCount(
+ [in] ID2D1Effect *effect,
+ [out] UINT32 *rect_count
+ );
+ HRESULT GetEffectInvalidRectangles(
+ [in] ID2D1Effect *effect,
+ [out] D2D1_RECT_F *rectangles,
+ [in] UINT32 rect_count
+ );
+ HRESULT GetEffectRequiredInputRectangles(
+ [in] ID2D1Effect *effect,
+ [in] const D2D1_RECT_F *image_rect,
+ [in] const D2D1_EFFECT_INPUT_DESCRIPTION *desc,
+ [out] D2D1_RECT_F *input_rect,
+ [in] UINT32 input_count
+ );
+ void FillOpacityMask(
+ [in] ID2D1Bitmap *mask,
+ [in] ID2D1Brush *brush,
+ [in] const D2D1_RECT_F *dst_rect,
+ [in] const D2D1_RECT_F *src_rect
+ );
+}
diff --git a/include/dcommon.idl b/include/dcommon.idl
index db5055d..18f2fbe 100644
--- a/include/dcommon.idl
+++ b/include/dcommon.idl
@@ -61,3 +61,18 @@ typedef struct D2D_SIZE_U
UINT32 width;
UINT32 height;
} D2D_SIZE_U, D2D1_SIZE_U;
+
+typedef struct D2D_MATRIX_4X4_F
+{
+ union
+ {
+ struct
+ {
+ float _11, _12, _13, _14;
+ float _21, _22, _23, _24;
+ float _31, _32, _33, _34;
+ float _41, _42, _43, _44;
+ };
+ float m[4][4];
+ };
+} D2D_MATRIX_4X4_F;
--
1.9.1

View File

@ -52,13 +52,13 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "59994c94092efb70fcbec0cb147401609d125e41"
echo "37e837113ce6654c436211031712719e8f9f29a2"
}
# Show version information
version()
{
echo "Wine Staging 3.9"
echo "Wine Staging 3.10 (Unreleased)"
echo "Copyright (C) 2014-2018 the Wine Staging project authors."
echo "Copyright (C) 2018 Alistair Leslie-Hughes"
echo ""
@ -2887,15 +2887,13 @@ fi
# |
# | Modified files:
# | * dlls/d2d1/Makefile.in, dlls/d2d1/d2d1_private.h, dlls/d2d1/device.c, dlls/d2d1/device_context.c, dlls/d2d1/factory.c,
# | dlls/d2d1/geometry.c, include/d2d1_1.idl, include/dcommon.idl
# | dlls/d2d1/geometry.c
# |
if test "$enable_d2d1_ID2D1Factory1" -eq 1; then
patch_apply d2d1-ID2D1Factory1/0001-d2d1-Add-d2d1_1.idl-for-drawing-ID2D1Bitmap1.patch
patch_apply d2d1-ID2D1Factory1/0003-d2d1-Use-ID2D1Factory1-in-d2d_geometry.patch
patch_apply d2d1-ID2D1Factory1/0005-d2d1-Stub-ID2D1DeviceContext.patch
patch_apply d2d1-ID2D1Factory1/0006-d2d1-Implement-ID2D1DeviceContext.patch
(
printf '%s\n' '+ { "Lucian Poston", "d2d1: Add d2d1_1.idl for drawing ID2D1Bitmap1.", 1 },';
printf '%s\n' '+ { "Lucian Poston", "d2d1: Use ID2D1Factory1 in d2d_geometry.", 1 },';
printf '%s\n' '+ { "Lucian Poston", "d2d1: Stub ID2D1DeviceContext.", 1 },';
printf '%s\n' '+ { "Lucian Poston", "d2d1: Implement ID2D1DeviceContext.", 1 },';
@ -3005,6 +3003,7 @@ fi
# |
# | This patchset fixes the following Wine bugs:
# | * [#42191] Add semi-stub for D3D11 deferred context implementation
# | * [#44089] Correcly align the mapinfo buffer.
# |
# | Modified files:
# | * dlls/d3d11/device.c, dlls/wined3d/buffer.c, dlls/wined3d/resource.c, dlls/wined3d/texture.c, dlls/wined3d/wined3d.spec,

View File

@ -1 +1 @@
Wine Staging 3.9
Wine Staging 3.10 (Unreleased)