22#include <kiwano/render/DirectX/helper.h>
23#include <d2d1effectauthor.h>
24#include <d2d1effecthelpers.h>
27DEFINE_GUID(CLSID_CustomPixelEffect, 0x6b0e1068, 0x186e, 0x43f7, 0xbb, 0x5, 0x64, 0x91, 0x9, 0xa5, 0x6a, 0x79);
37 :
public ID2D1EffectImpl
38 ,
public ID2D1DrawTransform
41 enum InputIndex : UINT32
48 static HRESULT Register(_In_ ID2D1Factory1* pFactory);
49 static HRESULT __stdcall CreateEffect(_Outptr_ IUnknown** ppEffectImpl);
51 static void RegisterShader(_In_
const CLSID& shaderId, _In_
const BYTE* data, _In_ UINT32 dataSize);
53 IFACEMETHODIMP Initialize(_In_ ID2D1EffectContext* pContextInternal, _In_ ID2D1TransformGraph* pTransformGraph);
55 IFACEMETHODIMP PrepareForRender(D2D1_CHANGE_TYPE changeType);
56 IFACEMETHODIMP SetGraph(_In_ ID2D1TransformGraph* pGraph);
59 IFACEMETHODIMP SetDrawInfo(_In_ ID2D1DrawInfo* pRenderInfo);
62 IFACEMETHODIMP MapOutputRectToInputRects(_In_
const D2D1_RECT_L* pOutputRect,
63 _Out_writes_(inputRectCount) D2D1_RECT_L* pInputRects,
64 UINT32 inputRectCount)
const;
66 IFACEMETHODIMP MapInputRectsToOutputRect(_In_reads_(inputRectCount) CONST D2D1_RECT_L* pInputRects,
67 _In_reads_(inputRectCount) CONST D2D1_RECT_L* pInputOpaqueSubRects,
68 UINT32 inputRectCount, _Out_ D2D1_RECT_L* pOutputRect,
69 _Out_ D2D1_RECT_L* pOutputOpaqueSubRect);
71 IFACEMETHODIMP MapInvalidRect(UINT32 inputIndex, D2D1_RECT_L invalidInputRect,
72 _Out_ D2D1_RECT_L* pInvalidOutputRect)
const;
75 IFACEMETHODIMP_(UINT32) GetInputCount()
const;
77 HRESULT SetConstants(_In_reads_(dataSize)
const BYTE* data, UINT32 dataSize);
78 HRESULT GetConstants(_Out_writes_opt_(dataSize) BYTE* data, UINT32 dataSize, _Out_opt_ UINT32* actualSize)
const;
80 HRESULT SetLeftTopExpansion(D2D1_POINT_2F value);
81 D2D1_POINT_2F GetLeftTopExpansion()
const;
83 HRESULT SetRightBottomExpansion(D2D1_POINT_2F value);
84 D2D1_POINT_2F GetRightBottomExpansion()
const;
86 IFACEMETHODIMP_(ULONG) AddRef();
87 IFACEMETHODIMP_(ULONG) Release();
88 IFACEMETHODIMP QueryInterface(_In_ REFIID riid, _Outptr_
void** ppOutput);
96 ComPtr<ID2D1DrawInfo> m_drawInfo;
97 ComPtr<ID2D1EffectContext> m_effectContext;
98 D2D1_RECT_L m_inputRect;
100 const BYTE* m_constants;
101 UINT32 m_constantsSize;
102 D2D1_POINT_2F m_leftTopExpansion;
103 D2D1_POINT_2F m_rightBottomExpansion;