From 156af67b8ccf53d41d6b1be1e5adeadd5afbec3b Mon Sep 17 00:00:00 2001 From: Chuck Walbourn Date: Fri, 27 Sep 2019 13:06:43 -0700 Subject: [PATCH] Added optional forceSRGB parameter to SaveWICTextureToFile (#148) --- ScreenGrab/ScreenGrab.cpp | 5 +++-- ScreenGrab/ScreenGrab.h | 22 ++++++++++++---------- ScreenGrab/ScreenGrab12.cpp | 5 +++-- ScreenGrab/ScreenGrab12.h | 4 ++-- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/ScreenGrab/ScreenGrab.cpp b/ScreenGrab/ScreenGrab.cpp index d6b1f8c..df74a7a 100644 --- a/ScreenGrab/ScreenGrab.cpp +++ b/ScreenGrab/ScreenGrab.cpp @@ -936,7 +936,8 @@ HRESULT DirectX::SaveWICTextureToFile( REFGUID guidContainerFormat, const wchar_t* fileName, const GUID* targetFormat, - std::function setCustomProps ) + std::function setCustomProps, + bool forceSRGB) { if ( !fileName ) return E_INVALIDARG; @@ -949,7 +950,7 @@ HRESULT DirectX::SaveWICTextureToFile( // Determine source format's WIC equivalent WICPixelFormatGUID pfGuid; - bool sRGB = false; + bool sRGB = forceSRGB; switch ( desc.Format ) { case DXGI_FORMAT_R32G32B32A32_FLOAT: pfGuid = GUID_WICPixelFormat128bppRGBAFloat; break; diff --git a/ScreenGrab/ScreenGrab.h b/ScreenGrab/ScreenGrab.h index d507066..0bb12ab 100644 --- a/ScreenGrab/ScreenGrab.h +++ b/ScreenGrab/ScreenGrab.h @@ -20,20 +20,22 @@ #include #include -#include #include namespace DirectX { - HRESULT SaveDDSTextureToFile( _In_ ID3D11DeviceContext* pContext, - _In_ ID3D11Resource* pSource, - _In_z_ const wchar_t* fileName ); + HRESULT __cdecl SaveDDSTextureToFile( + _In_ ID3D11DeviceContext* pContext, + _In_ ID3D11Resource* pSource, + _In_z_ const wchar_t* fileName); - HRESULT SaveWICTextureToFile( _In_ ID3D11DeviceContext* pContext, - _In_ ID3D11Resource* pSource, - _In_ REFGUID guidContainerFormat, - _In_z_ const wchar_t* fileName, - _In_opt_ const GUID* targetFormat = nullptr, - _In_opt_ std::function setCustomProps = nullptr ); + HRESULT __cdecl SaveWICTextureToFile( + _In_ ID3D11DeviceContext* pContext, + _In_ ID3D11Resource* pSource, + _In_ REFGUID guidContainerFormat, + _In_z_ const wchar_t* fileName, + _In_opt_ const GUID* targetFormat = nullptr, + _In_opt_ std::function setCustomProps = nullptr, + _In_ bool forceSRGB = false); } diff --git a/ScreenGrab/ScreenGrab12.cpp b/ScreenGrab/ScreenGrab12.cpp index 778436b..8aaa5de 100644 --- a/ScreenGrab/ScreenGrab12.cpp +++ b/ScreenGrab/ScreenGrab12.cpp @@ -1050,7 +1050,8 @@ HRESULT DirectX::SaveWICTextureToFile( D3D12_RESOURCE_STATES beforeState, D3D12_RESOURCE_STATES afterState, const GUID* targetFormat, - std::function setCustomProps ) + std::function setCustomProps, + bool forceSRGB) { if ( !fileName ) return E_INVALIDARG; @@ -1091,7 +1092,7 @@ HRESULT DirectX::SaveWICTextureToFile( // Determine source format's WIC equivalent WICPixelFormatGUID pfGuid; - bool sRGB = false; + bool sRGB = forceSRGB; switch ( desc.Format ) { case DXGI_FORMAT_R32G32B32A32_FLOAT: pfGuid = GUID_WICPixelFormat128bppRGBAFloat; break; diff --git a/ScreenGrab/ScreenGrab12.h b/ScreenGrab/ScreenGrab12.h index 68cf3f9..53a38c3 100644 --- a/ScreenGrab/ScreenGrab12.h +++ b/ScreenGrab/ScreenGrab12.h @@ -20,7 +20,6 @@ #include #include -#include #include @@ -41,5 +40,6 @@ namespace DirectX D3D12_RESOURCE_STATES beforeState = D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATES afterState = D3D12_RESOURCE_STATE_RENDER_TARGET, _In_opt_ const GUID* targetFormat = nullptr, - _In_opt_ std::function setCustomProps = nullptr); + _In_opt_ std::function setCustomProps = nullptr, + bool forceSRGB = false); }