16 #if defined(_MSC_VER) && (_MSC_VER > 1000)
20 #if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) && (_WIN32_WINNT <= _WIN32_WINNT_WIN8)
21 #error WIC is not supported on Windows Phone 8.0
26 #pragma warning(disable : 4005)
33 #if defined(_XBOX_ONE) && defined(_TITLE) && MONOLITHIC
35 #define DCOMMON_H_INCLUDED
42 #define DIRECTX_TEX_VERSION 130
49 bool IsValid( _In_ DXGI_FORMAT fmt );
51 bool IsPacked( _In_ DXGI_FORMAT fmt );
52 bool IsVideo( _In_ DXGI_FORMAT fmt );
53 bool IsPlanar( _In_ DXGI_FORMAT fmt );
56 bool IsSRGB( _In_ DXGI_FORMAT fmt );
57 bool IsTypeless( _In_ DXGI_FORMAT fmt, _In_
bool partialTypeless =
true );
59 bool HasAlpha( _In_ DXGI_FORMAT fmt );
75 void ComputePitch( _In_ DXGI_FORMAT fmt, _In_
size_t width, _In_
size_t height,
80 DXGI_FORMAT
MakeSRGB( _In_ DXGI_FORMAT fmt );
128 size_t ComputeIndex( _In_
size_t mip, _In_
size_t item, _In_
size_t slice )
const;
237 : _nimages(0), _size(0), _image(nullptr), _memory(nullptr) {}
239 : _nimages(0), _size(0), _image(nullptr), _memory(nullptr) { *
this = std::move(moveFrom); }
247 HRESULT
Initialize2D( _In_ DXGI_FORMAT fmt, _In_
size_t width, _In_
size_t height, _In_
size_t arraySize, _In_
size_t mipLevels, _In_ DWORD
flags =
CP_FLAGS_NONE );
248 HRESULT
Initialize3D( _In_ DXGI_FORMAT fmt, _In_
size_t width, _In_
size_t height, _In_
size_t depth, _In_
size_t mipLevels, _In_ DWORD
flags =
CP_FLAGS_NONE );
249 HRESULT
InitializeCube( _In_ DXGI_FORMAT fmt, _In_
size_t width, _In_
size_t height, _In_
size_t nCubes, _In_
size_t mipLevels, _In_ DWORD
flags =
CP_FLAGS_NONE );
261 const Image*
GetImage(_In_
size_t mip, _In_
size_t item, _In_
size_t slice)
const;
288 Blob() : _buffer(nullptr), _size(0) {}
289 Blob(
Blob&& moveFrom) : _buffer(nullptr), _size(0) { *
this = std::move(moveFrom); }
315 _Out_opt_ TexMetadata*
metadata, _Out_ ScratchImage& image );
317 _Out_opt_ TexMetadata*
metadata, _Out_ ScratchImage& image );
343 _Out_
Blob& blob, _In_opt_
const GUID* targetFormat =
nullptr, _In_opt_ std::function<
void(IPropertyBag2*)> setCustomProps =
nullptr );
344 HRESULT
SaveToWICMemory( _In_count_(nimages)
const Image* images, _In_
size_t nimages, _In_ DWORD flags, _In_ REFGUID guidContainerFormat,
345 _Out_
Blob& blob, _In_opt_
const GUID* targetFormat =
nullptr, _In_opt_ std::function<
void(IPropertyBag2*)> setCustomProps =
nullptr );
347 HRESULT
SaveToWICFile( _In_
const Image& image, _In_ DWORD flags, _In_ REFGUID guidContainerFormat,
348 _In_z_ LPCWSTR szFile, _In_opt_
const GUID* targetFormat =
nullptr, _In_opt_ std::function<
void(IPropertyBag2*)> setCustomProps =
nullptr );
349 HRESULT
SaveToWICFile( _In_count_(nimages)
const Image* images, _In_
size_t nimages, _In_ DWORD flags, _In_ REFGUID guidContainerFormat,
350 _In_z_ LPCWSTR szFile, _In_opt_
const GUID* targetFormat =
nullptr, _In_opt_ std::function<
void(IPropertyBag2*)> setCustomProps =
nullptr );
378 HRESULT
FlipRotate( _In_
const Image& srcImage, _In_ DWORD flags, _Out_ ScratchImage& image );
380 _In_ DWORD flags, _Out_ ScratchImage& result );
433 HRESULT
Resize( _In_
const Image& srcImage, _In_
size_t width, _In_
size_t height, _In_ DWORD filter,
436 _In_
size_t width, _In_
size_t height, _In_ DWORD filter, _Out_
ScratchImage& result );
452 _Inout_
ScratchImage& mipChain, _In_
bool allow1D =
false );
454 _In_ DWORD filter, _In_
size_t levels, _Inout_
ScratchImage& mipChain );
461 _In_ DWORD filter, _In_
size_t levels, _Out_
ScratchImage& mipChain );
509 HRESULT
Compress( _In_
const Image& srcImage, _In_ DXGI_FORMAT
format, _In_ DWORD compress, _In_
float alphaRef,
512 _In_ DXGI_FORMAT
format, _In_ DWORD compress, _In_
float alphaRef, _Out_
ScratchImage& cImages );
515 HRESULT
Compress( _In_ ID3D11Device* pDevice, _In_
const Image& srcImage, _In_ DXGI_FORMAT
format, _In_ DWORD compress,
518 _In_ DXGI_FORMAT
format, _In_ DWORD compress, _In_
float alphaWeight, _Out_
ScratchImage& cImages );
552 HRESULT
ComputeNormalMap( _In_
const Image& srcImage, _In_ DWORD flags, _In_
float amplitude,
553 _In_ DXGI_FORMAT
format, _Out_ ScratchImage& normalMap );
555 _In_ DWORD flags, _In_
float amplitude, _In_ DXGI_FORMAT
format, _Out_ ScratchImage& normalMaps );
567 Rect(
size_t _x,
size_t _y,
size_t _w,
size_t _h ) :
x(_x),
y(_y),
w(_w),
h(_h) {}
570 HRESULT
CopyRectangle( _In_
const Image& srcImage, _In_
const Rect& srcRect, _In_
const Image& dstImage,
571 _In_ DWORD filter, _In_
size_t xOffset, _In_
size_t yOffset );
592 HRESULT
ComputeMSE( _In_
const Image& image1, _In_
const Image& image2, _Out_
float& mse, _Out_writes_opt_(4)
float* mseV, _In_ DWORD flags = 0 );
599 _Outptr_ ID3D11Resource** ppResource );
602 _Outptr_ ID3D11ShaderResourceView** ppSRV );
605 _In_ D3D11_USAGE usage, _In_
unsigned int bindFlags, _In_
unsigned int cpuAccessFlags, _In_
unsigned int miscFlags, _In_
bool forceSRGB,
606 _Outptr_ ID3D11Resource** ppResource );
609 _In_ D3D11_USAGE usage, _In_
unsigned int bindFlags, _In_
unsigned int cpuAccessFlags, _In_
unsigned int miscFlags, _In_
bool forceSRGB,
610 _Outptr_ ID3D11ShaderResourceView** ppSRV );
612 HRESULT
CaptureTexture( _In_ ID3D11Device* pDevice, _In_ ID3D11DeviceContext* pContext, _In_ ID3D11Resource* pSource, _Out_ ScratchImage& result );
HRESULT LoadFromTGAFile(_In_z_ LPCWSTR szFile, _Out_opt_ TexMetadata *metadata, _Out_ ScratchImage &image)
HRESULT CreateShaderResourceViewEx(_In_ ID3D11Device *pDevice, _In_reads_(nimages) const Image *srcImages, _In_ size_t nimages, _In_ const TexMetadata &metadata, _In_ D3D11_USAGE usage, _In_ unsigned int bindFlags, _In_ unsigned int cpuAccessFlags, _In_ unsigned int miscFlags, _In_ bool forceSRGB, _Outptr_ ID3D11ShaderResourceView **ppSRV)
HRESULT GetMetadataFromTGAFile(_In_z_ LPCWSTR szFile, _Out_ TexMetadata &metadata)
const Image * GetImage(_In_ size_t mip, _In_ size_t item, _In_ size_t slice) const
bool IsVideo(_In_ DXGI_FORMAT fmt)
bool HasAlpha(_In_ DXGI_FORMAT fmt)
HRESULT InitializeCube(_In_ DXGI_FORMAT fmt, _In_ size_t width, _In_ size_t height, _In_ size_t nCubes, _In_ size_t mipLevels, _In_ DWORD flags=CP_FLAGS_NONE)
bool OverrideFormat(_In_ DXGI_FORMAT f)
HRESULT SaveToWICFile(_In_ const Image &image, _In_ DWORD flags, _In_ REFGUID guidContainerFormat, _In_z_ LPCWSTR szFile, _In_opt_ const GUID *targetFormat=nullptr, _In_opt_ std::function< void(IPropertyBag2 *)> setCustomProps=nullptr)
size_t BitsPerColor(_In_ DXGI_FORMAT fmt)
_In_ size_t _In_ const TexMetadata _In_ DWORD _In_ size_t nImages
bool IsPlanar(_In_ DXGI_FORMAT fmt)
HRESULT Resize(_In_ const Image &srcImage, _In_ size_t width, _In_ size_t height, _In_ DWORD filter, _Out_ ScratchImage &image)
HRESULT Initialize3DFromImages(_In_reads_(depth) const Image *images, _In_ size_t depth, _In_ DWORD flags=CP_FLAGS_NONE)
_In_ size_t _In_ DXGI_FORMAT _In_ size_t _In_ DXGI_FORMAT _In_ DWORD flags
size_t GetPixelsSize() const
bool IsPacked(_In_ DXGI_FORMAT fmt)
HRESULT Initialize(_In_ size_t size)
HRESULT FlipRotate(_In_ const Image &srcImage, _In_ DWORD flags, _Out_ ScratchImage &image)
bool IsAlphaAllOpaque() const
_In_ size_t _In_ DXGI_FORMAT _In_ size_t _In_ float threshold
HRESULT Initialize(_In_ const TexMetadata &mdata, _In_ DWORD flags=CP_FLAGS_NONE)
HRESULT Initialize2D(_In_ DXGI_FORMAT fmt, _In_ size_t width, _In_ size_t height, _In_ size_t arraySize, _In_ size_t mipLevels, _In_ DWORD flags=CP_FLAGS_NONE)
void * GetBufferPointer() const
HRESULT LoadFromDDSFile(_In_z_ LPCWSTR szFile, _In_ DWORD flags, _Out_opt_ TexMetadata *metadata, _Out_ ScratchImage &image)
HRESULT ConvertToSinglePlane(_In_ const Image &srcImage, _Out_ ScratchImage &image)
HRESULT CaptureTexture(_In_ ID3D11Device *pDevice, _In_ ID3D11DeviceContext *pContext, _In_ ID3D11Resource *pSource, _Out_ ScratchImage &result)
bool IsCompressed(_In_ DXGI_FORMAT fmt)
HRESULT SaveToTGAMemory(_In_ const Image &image, _Out_ Blob &blob)
size_t GetImageCount() const
HRESULT InitializeCubeFromImages(_In_reads_(nImages) const Image *images, _In_ size_t nImages, _In_ DWORD flags=CP_FLAGS_NONE)
HRESULT Initialize3D(_In_ DXGI_FORMAT fmt, _In_ size_t width, _In_ size_t height, _In_ size_t depth, _In_ size_t mipLevels, _In_ DWORD flags=CP_FLAGS_NONE)
HRESULT GenerateMipMaps(_In_ const Image &baseImage, _In_ DWORD filter, _In_ size_t levels, _Inout_ ScratchImage &mipChain, _In_ bool allow1D=false)
HRESULT LoadFromTGAMemory(_In_reads_bytes_(size) LPCVOID pSource, _In_ size_t size, _Out_opt_ TexMetadata *metadata, _Out_ ScratchImage &image)
_In_ size_t _In_ const TexMetadata & metadata
HRESULT InitializeFromImage(_In_ const Image &srcImage, _In_ bool allow1D=false, _In_ DWORD flags=CP_FLAGS_NONE)
void ComputePitch(_In_ DXGI_FORMAT fmt, _In_ size_t width, _In_ size_t height, _Out_ size_t &rowPitch, _Out_ size_t &slicePitch, _In_ DWORD flags=CP_FLAGS_NONE)
bool IsDepthStencil(_In_ DXGI_FORMAT fmt)
DXGI_FORMAT MakeTypelessUNORM(_In_ DXGI_FORMAT fmt)
bool IsValid(_In_ DXGI_FORMAT fmt)
HRESULT CreateTexture(_In_ ID3D11Device *pDevice, _In_reads_(nimages) const Image *srcImages, _In_ size_t nimages, _In_ const TexMetadata &metadata, _Outptr_ ID3D11Resource **ppResource)
bool IsPalettized(_In_ DXGI_FORMAT fmt)
HRESULT GenerateMipMaps3D(_In_reads_(depth) const Image *baseImages, _In_ size_t depth, _In_ DWORD filter, _In_ size_t levels, _Out_ ScratchImage &mipChain)
HRESULT SaveToDDSFile(_In_ const Image &image, _In_ DWORD flags, _In_z_ LPCWSTR szFile)
HRESULT LoadFromWICFile(_In_z_ LPCWSTR szFile, _In_ DWORD flags, _Out_opt_ TexMetadata *metadata, _Out_ ScratchImage &image)
Rect(size_t _x, size_t _y, size_t _w, size_t _h)
HRESULT ComputeMSE(_In_ const Image &image1, _In_ const Image &image2, _Out_ float &mse, _Out_writes_opt_(4) float *mseV, _In_ DWORD flags=0)
HRESULT LoadFromWICMemory(_In_reads_bytes_(size) LPCVOID pSource, _In_ size_t size, _In_ DWORD flags, _Out_opt_ TexMetadata *metadata, _Out_ ScratchImage &image)
HRESULT Initialize1D(_In_ DXGI_FORMAT fmt, _In_ size_t length, _In_ size_t arraySize, _In_ size_t mipLevels, _In_ DWORD flags=CP_FLAGS_NONE)
HRESULT CreateShaderResourceView(_In_ ID3D11Device *pDevice, _In_reads_(nimages) const Image *srcImages, _In_ size_t nimages, _In_ const TexMetadata &metadata, _Outptr_ ID3D11ShaderResourceView **ppSRV)
size_t _In_ DXGI_FORMAT _In_reads_bytes_(inSize) LPCVOID pSource
HRESULT Convert(_In_ const Image &srcImage, _In_ DXGI_FORMAT format, _In_ DWORD filter, _In_ float threshold, _Out_ ScratchImage &image)
HRESULT Decompress(_In_ const Image &cImage, _In_ DXGI_FORMAT format, _Out_ ScratchImage &image)
_In_ size_t _In_ DXGI_FORMAT _In_reads_(count) const XMVECTOR *pSource
bool IsTypeless(_In_ DXGI_FORMAT fmt, _In_ bool partialTypeless=true)
DXGI_FORMAT MakeSRGB(_In_ DXGI_FORMAT fmt)
HRESULT SaveToTGAFile(_In_ const Image &image, _In_z_ LPCWSTR szFile)
DXGI_FORMAT MakeTypelessFLOAT(_In_ DXGI_FORMAT fmt)
REFGUID GetWICCodec(_In_ WICCodecs codec)
DXGI_FORMAT MakeTypeless(_In_ DXGI_FORMAT fmt)
uint8_t * GetPixels() const
bool IsSRGB(_In_ DXGI_FORMAT fmt)
HRESULT ComputeNormalMap(_In_ const Image &srcImage, _In_ DWORD flags, _In_ float amplitude, _In_ DXGI_FORMAT format, _Out_ ScratchImage &normalMap)
HRESULT InitializeArrayFromImages(_In_reads_(nImages) const Image *images, _In_ size_t nImages, _In_ bool allow1D=false, _In_ DWORD flags=CP_FLAGS_NONE)
HRESULT SaveToDDSMemory(_In_ const Image &image, _In_ DWORD flags, _Out_ Blob &blob)
_In_ size_t _In_ size_t _In_ DXGI_FORMAT format
HRESULT GetMetadataFromWICMemory(_In_reads_bytes_(size) LPCVOID pSource, _In_ size_t size, _In_ DWORD flags, _Out_ TexMetadata &metadata)
HRESULT GetMetadataFromDDSFile(_In_z_ LPCWSTR szFile, _In_ DWORD flags, _Out_ TexMetadata &metadata)
ScratchImage & operator=(ScratchImage &&moveFrom)
HRESULT CopyRectangle(_In_ const Image &srcImage, _In_ const Rect &srcRect, _In_ const Image &dstImage, _In_ DWORD filter, _In_ size_t xOffset, _In_ size_t yOffset)
const Image * GetImages() const
size_t BitsPerPixel(_In_ DXGI_FORMAT fmt)
HRESULT SaveToWICMemory(_In_ const Image &image, _In_ DWORD flags, _In_ REFGUID guidContainerFormat, _Out_ Blob &blob, _In_opt_ const GUID *targetFormat=nullptr, _In_opt_ std::function< void(IPropertyBag2 *)> setCustomProps=nullptr)
_In_ size_t _In_ size_t size
const TexMetadata & GetMetadata() const
HRESULT CreateTextureEx(_In_ ID3D11Device *pDevice, _In_reads_(nimages) const Image *srcImages, _In_ size_t nimages, _In_ const TexMetadata &metadata, _In_ D3D11_USAGE usage, _In_ unsigned int bindFlags, _In_ unsigned int cpuAccessFlags, _In_ unsigned int miscFlags, _In_ bool forceSRGB, _Outptr_ ID3D11Resource **ppResource)
HRESULT Compress(_In_ const Image &srcImage, _In_ DXGI_FORMAT format, _In_ DWORD compress, _In_ float alphaRef, _Out_ ScratchImage &cImage)
HRESULT GetMetadataFromDDSMemory(_In_reads_bytes_(size) LPCVOID pSource, _In_ size_t size, _In_ DWORD flags, _Out_ TexMetadata &metadata)
HRESULT GetMetadataFromWICFile(_In_z_ LPCWSTR szFile, _In_ DWORD flags, _Out_ TexMetadata &metadata)
Blob & operator=(Blob &&moveFrom)
HRESULT GetMetadataFromTGAMemory(_In_reads_bytes_(size) LPCVOID pSource, _In_ size_t size, _Out_ TexMetadata &metadata)
HRESULT LoadFromDDSMemory(_In_reads_bytes_(size) LPCVOID pSource, _In_ size_t size, _In_ DWORD flags, _Out_opt_ TexMetadata *metadata, _Out_ ScratchImage &image)
size_t GetBufferSize() const
HRESULT PremultiplyAlpha(_In_ const Image &srcImage, _In_ DWORD flags, _Out_ ScratchImage &image)
bool IsSupportedTexture(_In_ ID3D11Device *pDevice, _In_ const TexMetadata &metadata)
size_t ComputeScanlines(_In_ DXGI_FORMAT fmt, _In_ size_t height)