16 #if defined(_MSC_VER) && (_MSC_VER > 1000)
22 #include <directxmath.h>
23 #include <directxpackedvector.h>
40 #pragma warning(disable : 4005)
47 struct IWICImagingFactory;
49 #define TEX_FILTER_MASK 0xF00000
55 DXGI_FORMAT
_WICToDXGI( _In_
const GUID& guid );
56 bool _DXGIToWIC( _In_ DXGI_FORMAT
format, _Out_ GUID& guid, _In_
bool ignoreRGBvsBGR =
false );
66 static_assert(
TEX_FILTER_DITHER == 0x10000,
"TEX_FILTER_DITHER* flag values don't match mask" );
71 switch( flags & 0xF0000 )
74 return WICBitmapDitherTypeOrdered4x4;
77 return WICBitmapDitherTypeErrorDiffusion;
80 return WICBitmapDitherTypeNone;
86 static_assert(
TEX_FILTER_POINT == 0x100000,
"TEX_FILTER_ flag values don't match TEX_FILTER_MASK" );
96 return WICBitmapInterpolationModeNearestNeighbor;
99 return WICBitmapInterpolationModeLinear;
102 return WICBitmapInterpolationModeCubic;
106 return WICBitmapInterpolationModeFant;
156 _When_(pDestination != pSource, _Out_writes_bytes_(
outSize))
157 LPVOID pDestination, _In_
size_t outSize,
159 _In_ DXGI_FORMAT format, _In_ DWORD
flags );
162 _When_(pDestination != pSource, _Out_writes_bytes_(outSize))
163 LPVOID pDestination, _In_
size_t outSize,
165 _In_ DXGI_FORMAT format, _In_ DWORD
flags );
168 bool
_ExpandScanline( _Out_writes_bytes_(outSize) LPVOID pDestination, _In_
size_t outSize,
179 _In_reads_bytes_(size) LPCVOID pSource, _In_
size_t size, _In_ DXGI_FORMAT format, _In_ DWORD flags );
182 bool _StoreScanline( LPVOID pDestination, _In_
size_t size, _In_ DXGI_FORMAT format,
202 _In_ DXGI_FORMAT outFormat, _In_ DXGI_FORMAT inFormat, _In_ DWORD flags );
207 _Out_writes_bytes_to_opt_(maxsize, required) LPVOID pDestination, _In_
size_t maxsize, _Out_
size_t& required );
_Use_decl_annotations_ HRESULT _EncodeDDSHeader(const TexMetadata &metadata, DWORD flags, LPVOID pDestination, size_t maxsize, size_t &required)
_In_ size_t _In_ const TexMetadata _In_ DWORD cpFlags
_Use_decl_annotations_ bool _ExpandScanline(LPVOID pDestination, size_t outSize, DXGI_FORMAT outFormat, LPCVOID pSource, size_t inSize, DXGI_FORMAT inFormat, DWORD flags)
_In_ size_t _In_ const TexMetadata _In_ DWORD _In_ size_t nImages
_In_ size_t _In_ DXGI_FORMAT _In_ size_t _In_ DXGI_FORMAT _In_ DWORD flags
void _CopyScanline(_When_(pDestination==pSource, _Inout_updates_bytes_(outSize)) _When_(pDestination!=pSource, _Out_writes_bytes_(outSize)) LPVOID pDestination, _In_ size_t outSize, _In_reads_bytes_(inSize) LPCVOID pSource, _In_ size_t inSize, _In_ DXGI_FORMAT format, _In_ DWORD flags)
_Use_decl_annotations_ HRESULT _ConvertFromR32G32B32A32(const Image &srcImage, const Image &destImage)
_Use_decl_annotations_ HRESULT _ConvertToR32G32B32A32(const Image &srcImage, ScratchImage &image)
_In_ size_t _In_ DXGI_FORMAT _In_ size_t _In_ float threshold
_In_ size_t _In_ DXGI_FORMAT _In_ size_t _In_ float size_t y
_Use_decl_annotations_ bool _LoadScanline(XMVECTOR *pDestination, size_t count, LPCVOID pSource, size_t size, DXGI_FORMAT format)
IWICImagingFactory * _GetWIC()
_In_ size_t _In_ const TexMetadata & metadata
_Use_decl_annotations_ void _ConvertScanline(XMVECTOR *pBuffer, size_t count, DXGI_FORMAT outFormat, DXGI_FORMAT inFormat, DWORD flags)
_Use_decl_annotations_ void _SwizzleScanline(LPVOID pDestination, size_t outSize, LPCVOID pSource, size_t inSize, DXGI_FORMAT format, DWORD flags)
_Use_decl_annotations_ DWORD _GetConvertFlags(DXGI_FORMAT format)
_In_ size_t _In_ DXGI_FORMAT _Inout_updates_all_(count) XMVECTOR *pSource
size_t _In_ DXGI_FORMAT outFormat
_In_ size_t _In_ const TexMetadata _In_ DWORD _Out_writes_(nImages) Image *images
size_t _In_ DXGI_FORMAT size_t _In_ TEXP_LEGACY_FORMAT inFormat
size_t _In_ DXGI_FORMAT size_t inSize
_Use_decl_annotations_ void _DetermineImageArray(const TexMetadata &metadata, DWORD cpFlags, size_t &nImages, size_t &pixelSize)
size_t _In_ DXGI_FORMAT _In_reads_bytes_(inSize) LPCVOID pSource
WICBitmapDitherType _GetWICDither(_In_ DWORD flags)
DWORD _CheckWICColorSpace(_In_ const GUID &sourceGUID, _In_ const GUID &targetGUID)
_In_ size_t _In_ DXGI_FORMAT _In_reads_(count) const XMVECTOR *pSource
_Use_decl_annotations_ bool _LoadScanlineLinear(XMVECTOR *pDestination, size_t count, LPCVOID pSource, size_t size, DXGI_FORMAT format, DWORD flags)
_Use_decl_annotations_ bool _StoreScanlineLinear(LPVOID pDestination, size_t size, DXGI_FORMAT format, XMVECTOR *pSource, size_t count, DWORD flags)
_In_ size_t _In_ DXGI_FORMAT _In_ size_t _In_ float size_t size_t _Inout_updates_all_opt_(count+2) XMVECTOR *pDiffusionErrors)
DXGI_FORMAT _WICToDXGI(_In_ const GUID &guid)
_In_ size_t _In_ size_t _In_ DXGI_FORMAT format
_Success_(return!=false) static bool _LegacyExpandScanline(_Out_writes_bytes_(outSize) LPVOID pDestination
bool _DXGIToWIC(_In_ DXGI_FORMAT format, _Out_ GUID &guid, _In_ bool ignoreRGBvsBGR=false)
_In_ size_t _In_ size_t size
_Use_decl_annotations_ bool _SetupImageArray(uint8_t *pMemory, size_t pixelSize, const TexMetadata &metadata, DWORD cpFlags, Image *images, size_t nImages)
_Use_decl_annotations_ bool _StoreScanline(LPVOID pDestination, size_t size, DXGI_FORMAT format, const XMVECTOR *pSource, size_t count, float threshold)
WICBitmapInterpolationMode _GetWICInterp(_In_ DWORD flags)
_Use_decl_annotations_ bool _StoreScanlineDither(LPVOID pDestination, size_t size, DXGI_FORMAT format, XMVECTOR *pSource, size_t count, float threshold, size_t y, size_t z, XMVECTOR *pDiffusionErrors)
_In_ size_t _In_ DXGI_FORMAT _In_ size_t _In_ float size_t size_t z