diff --git a/DirectXTex/BCDirectCompute.cpp b/DirectXTex/BCDirectCompute.cpp index 29beb17..a1ba27d 100644 --- a/DirectXTex/BCDirectCompute.cpp +++ b/DirectXTex/BCDirectCompute.cpp @@ -19,6 +19,8 @@ #pragma comment(lib,"dxguid.lib") #endif +using Microsoft::WRL::ComPtr; + namespace { #include "Shaders\Compiled\BC7Encode_EncodeBlockCS.inc" @@ -359,7 +361,7 @@ HRESULT GPUCompressBC::Compress( const Image& srcImage, const Image& destImage ) // We need to avoid the hardware doing additional colorspace conversion DXGI_FORMAT inputFormat = ( m_srcformat == DXGI_FORMAT_R8G8B8A8_UNORM_SRGB ) ? DXGI_FORMAT_R8G8B8A8_UNORM : m_srcformat; - ScopedObject sourceTex; + ComPtr sourceTex; { D3D11_TEXTURE2D_DESC desc; memset( &desc, 0, sizeof(desc) ); @@ -384,7 +386,7 @@ HRESULT GPUCompressBC::Compress( const Image& srcImage, const Image& destImage ) } } - ScopedObject sourceSRV; + ComPtr sourceSRV; { D3D11_SHADER_RESOURCE_VIEW_DESC desc; memset( &desc, 0, sizeof(desc) ); @@ -392,7 +394,7 @@ HRESULT GPUCompressBC::Compress( const Image& srcImage, const Image& destImage ) desc.Format = inputFormat; desc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D; - HRESULT hr = pDevice->CreateShaderResourceView( sourceTex.Get(), &desc, sourceSRV.ReleaseAndGetAddressOf() ); + HRESULT hr = pDevice->CreateShaderResourceView( sourceTex.Get(), &desc, sourceSRV.GetAddressOf() ); if ( FAILED(hr) ) { return hr; diff --git a/DirectXTex/BCDirectCompute.h b/DirectXTex/BCDirectCompute.h index 87ea360..6133934 100644 --- a/DirectXTex/BCDirectCompute.h +++ b/DirectXTex/BCDirectCompute.h @@ -15,8 +15,6 @@ #pragma once #endif -#include "scoped.h" - namespace DirectX { @@ -34,37 +32,37 @@ public: DXGI_FORMAT GetSourceFormat() const { return m_srcformat; } private: - DXGI_FORMAT m_bcformat; - DXGI_FORMAT m_srcformat; - float m_alphaWeight; - size_t m_width; - size_t m_height; + DXGI_FORMAT m_bcformat; + DXGI_FORMAT m_srcformat; + float m_alphaWeight; + size_t m_width; + size_t m_height; - ScopedObject m_device; - ScopedObject m_context; + Microsoft::WRL::ComPtr m_device; + Microsoft::WRL::ComPtr m_context; - ScopedObject m_err1; - ScopedObject m_err1UAV; - ScopedObject m_err1SRV; + Microsoft::WRL::ComPtr m_err1; + Microsoft::WRL::ComPtr m_err1UAV; + Microsoft::WRL::ComPtr m_err1SRV; - ScopedObject m_err2; - ScopedObject m_err2UAV; - ScopedObject m_err2SRV; + Microsoft::WRL::ComPtr m_err2; + Microsoft::WRL::ComPtr m_err2UAV; + Microsoft::WRL::ComPtr m_err2SRV; - ScopedObject m_output; - ScopedObject m_outputCPU; - ScopedObject m_outputUAV; - ScopedObject m_constBuffer; + Microsoft::WRL::ComPtr m_output; + Microsoft::WRL::ComPtr m_outputCPU; + Microsoft::WRL::ComPtr m_outputUAV; + Microsoft::WRL::ComPtr m_constBuffer; // Compute shader library - ScopedObject m_BC6H_tryModeG10CS; - ScopedObject m_BC6H_tryModeLE10CS; - ScopedObject m_BC6H_encodeBlockCS; + Microsoft::WRL::ComPtr m_BC6H_tryModeG10CS; + Microsoft::WRL::ComPtr m_BC6H_tryModeLE10CS; + Microsoft::WRL::ComPtr m_BC6H_encodeBlockCS; - ScopedObject m_BC7_tryMode456CS; - ScopedObject m_BC7_tryMode137CS; - ScopedObject m_BC7_tryMode02CS; - ScopedObject m_BC7_encodeBlockCS; + Microsoft::WRL::ComPtr m_BC7_tryMode456CS; + Microsoft::WRL::ComPtr m_BC7_tryMode137CS; + Microsoft::WRL::ComPtr m_BC7_tryMode02CS; + Microsoft::WRL::ComPtr m_BC7_encodeBlockCS; }; }; // namespace \ No newline at end of file diff --git a/DirectXTex/DirectXTexConvert.cpp b/DirectXTex/DirectXTexConvert.cpp index dcf0582..90b0e38 100644 --- a/DirectXTex/DirectXTexConvert.cpp +++ b/DirectXTex/DirectXTexConvert.cpp @@ -16,6 +16,7 @@ #include "directxtexp.h" using namespace DirectX::PackedVector; +using Microsoft::WRL::ComPtr; #if DIRECTX_MATH_VERSION < 306 namespace @@ -3158,8 +3159,8 @@ static HRESULT _ConvertUsingWIC( _In_ const Image& srcImage, _In_ const WICPixel if ( !pWIC ) return E_NOINTERFACE; - ScopedObject FC; - HRESULT hr = pWIC->CreateFormatConverter( &FC ); + ComPtr FC; + HRESULT hr = pWIC->CreateFormatConverter( FC.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -3174,10 +3175,10 @@ static HRESULT _ConvertUsingWIC( _In_ const Image& srcImage, _In_ const WICPixel return E_UNEXPECTED; } - ScopedObject source; + ComPtr source; hr = pWIC->CreateBitmapFromMemory( static_cast( srcImage.width ), static_cast( srcImage.height ), pfGUID, static_cast( srcImage.rowPitch ), static_cast( srcImage.slicePitch ), - srcImage.pixels, &source ); + srcImage.pixels, source.GetAddressOf() ); if ( FAILED(hr) ) return hr; diff --git a/DirectXTex/DirectXTexD3D11.cpp b/DirectXTex/DirectXTexD3D11.cpp index cfaba5a..e68c73d 100644 --- a/DirectXTex/DirectXTexD3D11.cpp +++ b/DirectXTex/DirectXTexD3D11.cpp @@ -19,6 +19,8 @@ #include #endif +using Microsoft::WRL::ComPtr; + namespace DirectX { @@ -562,10 +564,10 @@ HRESULT CreateShaderResourceViewEx( ID3D11Device* pDevice, const Image* srcImage *ppSRV = nullptr; - ScopedObject resource; + ComPtr resource; HRESULT hr = CreateTextureEx( pDevice, srcImages, nimages, metadata, usage, bindFlags, cpuAccessFlags, miscFlags, forceSRGB, - &resource ); + resource.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -661,7 +663,7 @@ HRESULT CaptureTexture( ID3D11Device* pDevice, ID3D11DeviceContext* pContext, ID { case D3D11_RESOURCE_DIMENSION_TEXTURE1D: { - ScopedObject pTexture; + ComPtr pTexture; hr = pSource->QueryInterface( __uuidof(ID3D11Texture1D), reinterpret_cast( pTexture.GetAddressOf() ) ); if ( FAILED(hr) ) break; @@ -676,8 +678,8 @@ HRESULT CaptureTexture( ID3D11Device* pDevice, ID3D11DeviceContext* pContext, ID desc.CPUAccessFlags = D3D11_CPU_ACCESS_READ; desc.Usage = D3D11_USAGE_STAGING; - ScopedObject pStaging; - hr = pDevice->CreateTexture1D( &desc, 0, &pStaging ); + ComPtr pStaging; + hr = pDevice->CreateTexture1D( &desc, 0, pStaging.GetAddressOf() ); if ( FAILED(hr) ) break; @@ -705,7 +707,7 @@ HRESULT CaptureTexture( ID3D11Device* pDevice, ID3D11DeviceContext* pContext, ID case D3D11_RESOURCE_DIMENSION_TEXTURE2D: { - ScopedObject pTexture; + ComPtr pTexture; hr = pSource->QueryInterface( __uuidof(ID3D11Texture2D), reinterpret_cast( pTexture.GetAddressOf() ) ); if ( FAILED(hr) ) break; @@ -715,14 +717,14 @@ HRESULT CaptureTexture( ID3D11Device* pDevice, ID3D11DeviceContext* pContext, ID D3D11_TEXTURE2D_DESC desc; pTexture->GetDesc( &desc ); - ScopedObject pStaging; + ComPtr pStaging; if ( desc.SampleDesc.Count > 1 ) { desc.SampleDesc.Count = 1; desc.SampleDesc.Quality = 0; - ScopedObject pTemp; - hr = pDevice->CreateTexture2D( &desc, 0, &pTemp ); + ComPtr pTemp; + hr = pDevice->CreateTexture2D( &desc, 0, pTemp.GetAddressOf() ); if ( FAILED(hr) ) break; @@ -761,7 +763,7 @@ HRESULT CaptureTexture( ID3D11Device* pDevice, ID3D11DeviceContext* pContext, ID desc.CPUAccessFlags = D3D11_CPU_ACCESS_READ; desc.Usage = D3D11_USAGE_STAGING; - hr = pDevice->CreateTexture2D( &desc, 0, &pStaging ); + hr = pDevice->CreateTexture2D( &desc, 0, pStaging.GetAddressOf() ); if ( FAILED(hr) ) break; @@ -806,7 +808,7 @@ HRESULT CaptureTexture( ID3D11Device* pDevice, ID3D11DeviceContext* pContext, ID case D3D11_RESOURCE_DIMENSION_TEXTURE3D: { - ScopedObject pTexture; + ComPtr pTexture; hr = pSource->QueryInterface( __uuidof(ID3D11Texture3D), reinterpret_cast( pTexture.GetAddressOf() ) ); if ( FAILED(hr) ) break; @@ -821,8 +823,8 @@ HRESULT CaptureTexture( ID3D11Device* pDevice, ID3D11DeviceContext* pContext, ID desc.CPUAccessFlags = D3D11_CPU_ACCESS_READ; desc.Usage = D3D11_USAGE_STAGING; - ScopedObject pStaging; - hr = pDevice->CreateTexture3D( &desc, 0, &pStaging ); + ComPtr pStaging; + hr = pDevice->CreateTexture3D( &desc, 0, pStaging.GetAddressOf() ); if ( FAILED(hr) ) break; diff --git a/DirectXTex/DirectXTexFlipRotate.cpp b/DirectXTex/DirectXTexFlipRotate.cpp index 42eb2b8..bf2b98e 100644 --- a/DirectXTex/DirectXTexFlipRotate.cpp +++ b/DirectXTex/DirectXTexFlipRotate.cpp @@ -15,6 +15,8 @@ #include "directxtexp.h" +using Microsoft::WRL::ComPtr; + namespace DirectX { @@ -33,15 +35,15 @@ static HRESULT _PerformFlipRotateUsingWIC( _In_ const Image& srcImage, _In_ DWOR if ( !pWIC ) return E_NOINTERFACE; - ScopedObject source; + ComPtr source; HRESULT hr = pWIC->CreateBitmapFromMemory( static_cast( srcImage.width ), static_cast( srcImage.height ), pfGUID, static_cast( srcImage.rowPitch ), static_cast( srcImage.slicePitch ), - srcImage.pixels, &source ); + srcImage.pixels, source.GetAddressOf() ); if ( FAILED(hr) ) return hr; - ScopedObject FR; - hr = pWIC->CreateBitmapFlipRotator( &FR ); + ComPtr FR; + hr = pWIC->CreateBitmapFlipRotator( FR.GetAddressOf() ); if ( FAILED(hr) ) return hr; diff --git a/DirectXTex/DirectXTexMipmaps.cpp b/DirectXTex/DirectXTexMipmaps.cpp index b0dbc9b..d363d84 100644 --- a/DirectXTex/DirectXTexMipmaps.cpp +++ b/DirectXTex/DirectXTexMipmaps.cpp @@ -17,6 +17,8 @@ #include "filters.h" +using Microsoft::WRL::ComPtr; + namespace DirectX { @@ -134,8 +136,8 @@ static HRESULT _EnsureWicBitmapPixelFormat( _In_ IWICImagingFactory* pWIC, _In_ } else { - ScopedObject converter; - hr = pWIC->CreateFormatConverter( &converter ); + ComPtr converter; + hr = pWIC->CreateFormatConverter( converter.GetAddressOf() ); if ( SUCCEEDED(hr) ) { hr = converter->Initialize( src, desiredPixelFormat, _GetWICDither(filter), 0, 0, WICBitmapPaletteTypeCustom ); @@ -172,10 +174,10 @@ HRESULT _ResizeSeparateColorAndAlpha( _In_ IWICImagingFactory* pWIC, _In_ IWICBi if ( SUCCEEDED(hr) ) { - ScopedObject componentInfo; - hr = pWIC->CreateComponentInfo( desiredPixelFormat, &componentInfo ); + ComPtr componentInfo; + hr = pWIC->CreateComponentInfo( desiredPixelFormat, componentInfo.GetAddressOf() ); - ScopedObject pixelFormatInfo; + ComPtr pixelFormatInfo; if ( SUCCEEDED(hr) ) { hr = componentInfo.As( &pixelFormatInfo ); @@ -220,17 +222,15 @@ HRESULT _ResizeSeparateColorAndAlpha( _In_ IWICImagingFactory* pWIC, _In_ IWICBi } // Resize color only image (no alpha channel) - ScopedObject resizedColor; + ComPtr resizedColor; if ( SUCCEEDED(hr) ) { - ScopedObject colorScaler; - - hr = pWIC->CreateBitmapScaler(&colorScaler); + ComPtr colorScaler; + hr = pWIC->CreateBitmapScaler( colorScaler.GetAddressOf() ); if ( SUCCEEDED(hr) ) { - ScopedObject converted; - - hr = _EnsureWicBitmapPixelFormat( pWIC, original, filter, colorPixelFormat, &converted ); + ComPtr converted; + hr = _EnsureWicBitmapPixelFormat( pWIC, original, filter, colorPixelFormat, converted.GetAddressOf() ); if ( SUCCEEDED(hr) ) { hr = colorScaler->Initialize( converted.Get(), static_cast(newWidth), static_cast(newHeight), interpolationMode ); @@ -239,28 +239,25 @@ HRESULT _ResizeSeparateColorAndAlpha( _In_ IWICImagingFactory* pWIC, _In_ IWICBi if ( SUCCEEDED(hr) ) { - ScopedObject resized; - - hr = pWIC->CreateBitmapFromSource( colorScaler.Get(), WICBitmapCacheOnDemand, &resized ); + ComPtr resized; + hr = pWIC->CreateBitmapFromSource( colorScaler.Get(), WICBitmapCacheOnDemand, resized.GetAddressOf() ); if ( SUCCEEDED(hr) ) { - hr = _EnsureWicBitmapPixelFormat( pWIC, resized.Get(), filter, colorPixelFormat, &resizedColor ); + hr = _EnsureWicBitmapPixelFormat( pWIC, resized.Get(), filter, colorPixelFormat, resizedColor.GetAddressOf() ); } } } // Resize color+alpha image - ScopedObject resizedColorWithAlpha; + ComPtr resizedColorWithAlpha; if ( SUCCEEDED(hr) ) { - ScopedObject colorWithAlphaScaler; - - hr = pWIC->CreateBitmapScaler( &colorWithAlphaScaler ); + ComPtr colorWithAlphaScaler; + hr = pWIC->CreateBitmapScaler( colorWithAlphaScaler.GetAddressOf() ); if ( SUCCEEDED(hr) ) { - ScopedObject converted; - - hr = _EnsureWicBitmapPixelFormat( pWIC, original, filter, colorWithAlphaPixelFormat, &converted ); + ComPtr converted; + hr = _EnsureWicBitmapPixelFormat( pWIC, original, filter, colorWithAlphaPixelFormat, converted.GetAddressOf() ); if ( SUCCEEDED(hr) ) { hr = colorWithAlphaScaler->Initialize( converted.Get(), static_cast(newWidth), static_cast(newHeight), interpolationMode ); @@ -269,12 +266,11 @@ HRESULT _ResizeSeparateColorAndAlpha( _In_ IWICImagingFactory* pWIC, _In_ IWICBi if ( SUCCEEDED(hr) ) { - ScopedObject resized; - - hr = pWIC->CreateBitmapFromSource( colorWithAlphaScaler.Get(), WICBitmapCacheOnDemand, &resized ); + ComPtr resized; + hr = pWIC->CreateBitmapFromSource( colorWithAlphaScaler.Get(), WICBitmapCacheOnDemand, resized.GetAddressOf() ); if ( SUCCEEDED(hr) ) { - hr = _EnsureWicBitmapPixelFormat( pWIC, resized.Get(), filter, colorWithAlphaPixelFormat, &resizedColorWithAlpha ); + hr = _EnsureWicBitmapPixelFormat( pWIC, resized.Get(), filter, colorWithAlphaPixelFormat, resizedColorWithAlpha.GetAddressOf() ); } } } @@ -282,13 +278,12 @@ HRESULT _ResizeSeparateColorAndAlpha( _In_ IWICImagingFactory* pWIC, _In_ IWICBi // Merge pixels (copying color channels from color only image to color+alpha image) if ( SUCCEEDED(hr) ) { - ScopedObject colorLock; - ScopedObject colorWithAlphaLock; - - hr = resizedColor->Lock( nullptr, WICBitmapLockRead, &colorLock ); + ComPtr colorLock; + ComPtr colorWithAlphaLock; + hr = resizedColor->Lock( nullptr, WICBitmapLockRead, colorLock.GetAddressOf() ); if ( SUCCEEDED(hr) ) { - hr = resizedColorWithAlpha->Lock( nullptr, WICBitmapLockWrite, &colorWithAlphaLock ); + hr = resizedColorWithAlpha->Lock( nullptr, WICBitmapLockWrite, colorWithAlphaLock.GetAddressOf() ); } if ( SUCCEEDED(hr) ) @@ -353,8 +348,8 @@ HRESULT _ResizeSeparateColorAndAlpha( _In_ IWICImagingFactory* pWIC, _In_ IWICBi if ( SUCCEEDED(hr) ) { - ScopedObject wicBitmap; - hr = _EnsureWicBitmapPixelFormat( pWIC, resizedColorWithAlpha.Get(), filter, desiredPixelFormat, &wicBitmap ); + ComPtr wicBitmap; + hr = _EnsureWicBitmapPixelFormat( pWIC, resizedColorWithAlpha.Get(), filter, desiredPixelFormat, wicBitmap.GetAddressOf() ); if ( SUCCEEDED(hr) ) { hr = wicBitmap->CopyPixels( nullptr, static_cast(img->rowPitch), static_cast(img->slicePitch), img->pixels ); @@ -443,10 +438,10 @@ static HRESULT _GenerateMipMapsUsingWIC( _In_ const Image& baseImage, _In_ DWORD size_t width = baseImage.width; size_t height = baseImage.height; - ScopedObject source; + ComPtr source; HRESULT hr = pWIC->CreateBitmapFromMemory( static_cast( width ), static_cast( height ), pfGUID, static_cast( baseImage.rowPitch ), static_cast( baseImage.slicePitch ), - baseImage.pixels, &source ); + baseImage.pixels, source.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -468,12 +463,12 @@ static HRESULT _GenerateMipMapsUsingWIC( _In_ const Image& baseImage, _In_ DWORD pDest += img0->rowPitch; } - ScopedObject componentInfo; - hr = pWIC->CreateComponentInfo( pfGUID, &componentInfo ); + ComPtr componentInfo; + hr = pWIC->CreateComponentInfo( pfGUID, componentInfo.GetAddressOf() ); if ( FAILED(hr) ) return hr; - ScopedObject pixelFormatInfo; + ComPtr pixelFormatInfo; hr = componentInfo.As( &pixelFormatInfo ); if ( FAILED(hr) ) return hr; @@ -506,8 +501,8 @@ static HRESULT _GenerateMipMapsUsingWIC( _In_ const Image& baseImage, _In_ DWORD } else { - ScopedObject scaler; - hr = pWIC->CreateBitmapScaler( &scaler ); + ComPtr scaler; + hr = pWIC->CreateBitmapScaler( scaler.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -530,8 +525,8 @@ static HRESULT _GenerateMipMapsUsingWIC( _In_ const Image& baseImage, _In_ DWORD { // The WIC bitmap scaler is free to return a different pixel format than the source image, so here we // convert it back - ScopedObject FC; - hr = pWIC->CreateFormatConverter( &FC ); + ComPtr FC; + hr = pWIC->CreateFormatConverter( FC.GetAddressOf() ); if ( FAILED(hr) ) return hr; diff --git a/DirectXTex/DirectXTexP.h b/DirectXTex/DirectXTexP.h index 6c60f4b..c97cf45 100644 --- a/DirectXTex/DirectXTexP.h +++ b/DirectXTex/DirectXTexP.h @@ -38,6 +38,7 @@ #pragma warning(push) #pragma warning(disable : 4005) #include +#include #pragma warning(pop) #include "scoped.h" diff --git a/DirectXTex/DirectXTexResize.cpp b/DirectXTex/DirectXTexResize.cpp index 1109a49..1ecf3d4 100644 --- a/DirectXTex/DirectXTexResize.cpp +++ b/DirectXTex/DirectXTexResize.cpp @@ -17,6 +17,8 @@ #include "filters.h" +using Microsoft::WRL::ComPtr; + namespace DirectX { @@ -40,12 +42,12 @@ static HRESULT _PerformResizeUsingWIC( _In_ const Image& srcImage, _In_ DWORD fi if ( !pWIC ) return E_NOINTERFACE; - ScopedObject componentInfo; - HRESULT hr = pWIC->CreateComponentInfo( pfGUID, &componentInfo ); + ComPtr componentInfo; + HRESULT hr = pWIC->CreateComponentInfo( pfGUID, componentInfo.GetAddressOf() ); if ( FAILED(hr) ) return hr; - ScopedObject pixelFormatInfo; + ComPtr pixelFormatInfo; hr = componentInfo.As( &pixelFormatInfo ); if ( FAILED(hr) ) return hr; @@ -55,10 +57,10 @@ static HRESULT _PerformResizeUsingWIC( _In_ const Image& srcImage, _In_ DWORD fi if ( FAILED(hr) ) return hr; - ScopedObject source; + ComPtr source; hr = pWIC->CreateBitmapFromMemory( static_cast( srcImage.width ), static_cast( srcImage.height ), pfGUID, static_cast( srcImage.rowPitch ), static_cast( srcImage.slicePitch ), - srcImage.pixels, &source ); + srcImage.pixels, source.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -70,8 +72,8 @@ static HRESULT _PerformResizeUsingWIC( _In_ const Image& srcImage, _In_ DWORD fi } else { - ScopedObject scaler; - hr = pWIC->CreateBitmapScaler( &scaler ); + ComPtr scaler; + hr = pWIC->CreateBitmapScaler( scaler.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -94,8 +96,8 @@ static HRESULT _PerformResizeUsingWIC( _In_ const Image& srcImage, _In_ DWORD fi { // The WIC bitmap scaler is free to return a different pixel format than the source image, so here we // convert it back - ScopedObject FC; - hr = pWIC->CreateFormatConverter( &FC ); + ComPtr FC; + hr = pWIC->CreateFormatConverter( FC.GetAddressOf() ); if ( FAILED(hr) ) return hr; diff --git a/DirectXTex/DirectXTexWIC.cpp b/DirectXTex/DirectXTexWIC.cpp index 1027762..9089255 100644 --- a/DirectXTex/DirectXTexWIC.cpp +++ b/DirectXTex/DirectXTexWIC.cpp @@ -15,6 +15,8 @@ #include "directxtexp.h" +using Microsoft::WRL::ComPtr; + //------------------------------------------------------------------------------------- // IStream support for WIC Memory routines //------------------------------------------------------------------------------------- @@ -43,7 +45,7 @@ Microsoft::WRL::ComPtr abiStream; HRESULT hr = Windows::Foundation::ActivateInstance( Microsoft::WRL::Wrappers::HStringReference( RuntimeClass_Windows_Storage_Streams_InMemoryRandomAccessStream ).Get(), - &abiStream); + abiStream.GetAddressOf() ); if (SUCCEEDED(hr)) { @@ -279,8 +281,8 @@ static HRESULT _DecodeMetadata( _In_ DWORD flags, if ( FAILED(hr) ) return hr; - ScopedObject metareader; - hr = frame->GetMetadataQueryReader( &metareader ); + ComPtr metareader; + hr = frame->GetMetadataQueryReader( metareader.GetAddressOf() ); if ( SUCCEEDED(hr) ) { // Check for sRGB colorspace metadata @@ -347,8 +349,8 @@ static HRESULT _DecodeSingleFrame( _In_ DWORD flags, _In_ const TexMetadata& met } else { - ScopedObject FC; - hr = pWIC->CreateFormatConverter( &FC ); + ComPtr FC; + hr = pWIC->CreateFormatConverter( FC.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -392,8 +394,8 @@ static HRESULT _DecodeMultiframe( _In_ DWORD flags, _In_ const TexMetadata& meta if ( !img ) return E_POINTER; - ScopedObject frame; - hr = decoder->GetFrame( static_cast( index ), &frame ); + ComPtr frame; + hr = decoder->GetFrame( static_cast( index ), frame.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -419,8 +421,8 @@ static HRESULT _DecodeMultiframe( _In_ DWORD flags, _In_ const TexMetadata& meta else { // This frame needs resizing, but not format converted - ScopedObject scaler; - hr = pWIC->CreateBitmapScaler( &scaler ); + ComPtr scaler; + hr = pWIC->CreateBitmapScaler( scaler.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -436,8 +438,8 @@ static HRESULT _DecodeMultiframe( _In_ DWORD flags, _In_ const TexMetadata& meta else { // This frame required format conversion - ScopedObject FC; - hr = pWIC->CreateFormatConverter( &FC ); + ComPtr FC; + hr = pWIC->CreateFormatConverter( FC.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -455,8 +457,8 @@ static HRESULT _DecodeMultiframe( _In_ DWORD flags, _In_ const TexMetadata& meta else { // This frame needs resizing and format converted - ScopedObject scaler; - hr = pWIC->CreateBitmapScaler( &scaler ); + ComPtr scaler; + hr = pWIC->CreateBitmapScaler( scaler.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -483,8 +485,8 @@ static HRESULT _EncodeMetadata( _In_ IWICBitmapFrameEncode* frame, _In_ const GU if ( !frame ) return E_POINTER; - ScopedObject metawriter; - HRESULT hr = frame->GetMetadataQueryWriter( &metawriter ); + ComPtr metawriter; + HRESULT hr = frame->GetMetadataQueryWriter( metawriter.GetAddressOf() ); if ( SUCCEEDED( hr ) ) { PROPVARIANT value; @@ -587,15 +589,15 @@ static HRESULT _EncodeImage( _In_ const Image& image, _In_ DWORD flags, _In_ REF if ( !pWIC ) return E_NOINTERFACE; - ScopedObject source; + ComPtr source; hr = pWIC->CreateBitmapFromMemory( static_cast( image.width ), static_cast( image.height ), pfGuid, static_cast( image.rowPitch ), static_cast( image.slicePitch ), - image.pixels, &source ); + image.pixels, source.GetAddressOf() ); if ( FAILED(hr) ) return hr; - ScopedObject FC; - hr = pWIC->CreateFormatConverter( &FC ); + ComPtr FC; + hr = pWIC->CreateFormatConverter( FC.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -636,8 +638,8 @@ static HRESULT _EncodeSingleFrame( _In_ const Image& image, _In_ DWORD flags, if ( !pWIC ) return E_NOINTERFACE; - ScopedObject encoder; - HRESULT hr = pWIC->CreateEncoder( containerFormat, 0, &encoder ); + ComPtr encoder; + HRESULT hr = pWIC->CreateEncoder( containerFormat, 0, encoder.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -645,9 +647,9 @@ static HRESULT _EncodeSingleFrame( _In_ const Image& image, _In_ DWORD flags, if ( FAILED(hr) ) return hr; - ScopedObject frame; - ScopedObject props; - hr = encoder->CreateNewFrame( &frame, &props ); + ComPtr frame; + ComPtr props; + hr = encoder->CreateNewFrame( frame.GetAddressOf(), props.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -698,13 +700,13 @@ static HRESULT _EncodeMultiframe( _In_reads_(nimages) const Image* images, _In_ if ( !pWIC ) return E_NOINTERFACE; - ScopedObject encoder; - HRESULT hr = pWIC->CreateEncoder( containerFormat, 0, &encoder ); + ComPtr encoder; + HRESULT hr = pWIC->CreateEncoder( containerFormat, 0, encoder.GetAddressOf() ); if ( FAILED(hr) ) return hr; - ScopedObject einfo; - hr = encoder->GetEncoderInfo( &einfo ); + ComPtr einfo; + hr = encoder->GetEncoderInfo( einfo.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -722,9 +724,9 @@ static HRESULT _EncodeMultiframe( _In_reads_(nimages) const Image* images, _In_ for( size_t index=0; index < nimages; ++index ) { - ScopedObject frame; - ScopedObject props; - hr = encoder->CreateNewFrame( &frame, &props ); + ComPtr frame; + ComPtr props; + hr = encoder->CreateNewFrame( frame.GetAddressOf(), props.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -769,8 +771,8 @@ HRESULT GetMetadataFromWICMemory( LPCVOID pSource, size_t size, DWORD flags, Tex return E_NOINTERFACE; // Create input stream for memory - ScopedObject stream; - HRESULT hr = pWIC->CreateStream( &stream ); + ComPtr stream; + HRESULT hr = pWIC->CreateStream( stream.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -780,13 +782,13 @@ HRESULT GetMetadataFromWICMemory( LPCVOID pSource, size_t size, DWORD flags, Tex return hr; // Initialize WIC - ScopedObject decoder; - hr = pWIC->CreateDecoderFromStream( stream.Get(), 0, WICDecodeMetadataCacheOnDemand, &decoder ); + ComPtr decoder; + hr = pWIC->CreateDecoderFromStream( stream.Get(), 0, WICDecodeMetadataCacheOnDemand, decoder.GetAddressOf() ); if ( FAILED(hr) ) return hr; - ScopedObject frame; - hr = decoder->GetFrame( 0, &frame ); + ComPtr frame; + hr = decoder->GetFrame( 0, frame.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -813,13 +815,13 @@ HRESULT GetMetadataFromWICFile( LPCWSTR szFile, DWORD flags, TexMetadata& metada return E_NOINTERFACE; // Initialize WIC - ScopedObject decoder; - HRESULT hr = pWIC->CreateDecoderFromFilename( szFile, 0, GENERIC_READ, WICDecodeMetadataCacheOnDemand, &decoder ); + ComPtr decoder; + HRESULT hr = pWIC->CreateDecoderFromFilename( szFile, 0, GENERIC_READ, WICDecodeMetadataCacheOnDemand, decoder.GetAddressOf() ); if ( FAILED(hr) ) return hr; - ScopedObject frame; - hr = decoder->GetFrame( 0, &frame ); + ComPtr frame; + hr = decoder->GetFrame( 0, frame.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -853,8 +855,8 @@ HRESULT LoadFromWICMemory( LPCVOID pSource, size_t size, DWORD flags, TexMetadat image.Release(); // Create input stream for memory - ScopedObject stream; - HRESULT hr = pWIC->CreateStream( &stream ); + ComPtr stream; + HRESULT hr = pWIC->CreateStream( stream.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -863,13 +865,13 @@ HRESULT LoadFromWICMemory( LPCVOID pSource, size_t size, DWORD flags, TexMetadat return hr; // Initialize WIC - ScopedObject decoder; - hr = pWIC->CreateDecoderFromStream( stream.Get(), 0, WICDecodeMetadataCacheOnDemand, &decoder ); + ComPtr decoder; + hr = pWIC->CreateDecoderFromStream( stream.Get(), 0, WICDecodeMetadataCacheOnDemand, decoder.GetAddressOf() ); if ( FAILED(hr) ) return hr; - ScopedObject frame; - hr = decoder->GetFrame( 0, &frame ); + ComPtr frame; + hr = decoder->GetFrame( 0, frame.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -918,13 +920,13 @@ HRESULT LoadFromWICFile( LPCWSTR szFile, DWORD flags, TexMetadata* metadata, Scr image.Release(); // Initialize WIC - ScopedObject decoder; - HRESULT hr = pWIC->CreateDecoderFromFilename( szFile, 0, GENERIC_READ, WICDecodeMetadataCacheOnDemand, &decoder ); + ComPtr decoder; + HRESULT hr = pWIC->CreateDecoderFromFilename( szFile, 0, GENERIC_READ, WICDecodeMetadataCacheOnDemand, decoder.GetAddressOf() ); if ( FAILED(hr) ) return hr; - ScopedObject frame; - hr = decoder->GetFrame( 0, &frame ); + ComPtr frame; + hr = decoder->GetFrame( 0, frame.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -969,8 +971,8 @@ HRESULT SaveToWICMemory( const Image& image, DWORD flags, REFGUID containerForma blob.Release(); - ScopedObject stream; - HRESULT hr = CreateMemoryStream( &stream ); + ComPtr stream; + HRESULT hr = CreateMemoryStream( stream.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -1016,8 +1018,8 @@ HRESULT SaveToWICMemory( const Image* images, size_t nimages, DWORD flags, REFGU blob.Release(); - ScopedObject stream; - HRESULT hr = CreateMemoryStream( &stream ); + ComPtr stream; + HRESULT hr = CreateMemoryStream( stream.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -1076,8 +1078,8 @@ HRESULT SaveToWICFile( const Image& image, DWORD flags, REFGUID containerFormat, if ( !pWIC ) return E_NOINTERFACE; - ScopedObject stream; - HRESULT hr = pWIC->CreateStream( &stream ); + ComPtr stream; + HRESULT hr = pWIC->CreateStream( stream.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -1103,8 +1105,8 @@ HRESULT SaveToWICFile( const Image* images, size_t nimages, DWORD flags, REFGUID if ( !pWIC ) return E_NOINTERFACE; - ScopedObject stream; - HRESULT hr = pWIC->CreateStream( &stream ); + ComPtr stream; + HRESULT hr = pWIC->CreateStream( stream.GetAddressOf() ); if ( FAILED(hr) ) return hr; diff --git a/DirectXTex/scoped.h b/DirectXTex/scoped.h index 5fb1b2f..a76a903 100644 --- a/DirectXTex/scoped.h +++ b/DirectXTex/scoped.h @@ -32,15 +32,3 @@ struct handle_closer { void operator()(HANDLE h) { assert(h != INVALID_HANDLE_VA typedef public std::unique_ptr ScopedHandle; inline HANDLE safe_handle( HANDLE h ) { return (h == INVALID_HANDLE_VALUE) ? 0 : h; } - - -//--------------------------------------------------------------------------------- -#include - -template class ScopedObject : public Microsoft::WRL::ComPtr -{ -public: - ScopedObject() : Microsoft::WRL::ComPtr() {} - ScopedObject( T *p ) : Microsoft::WRL::ComPtr(p) {} - ScopedObject( const ScopedObject& other ) : Microsoft::WRL::ComPtr( other ) {} -}; diff --git a/ScreenGrab/ScreenGrab.cpp b/ScreenGrab/ScreenGrab.cpp index e8b42e6..5208882 100644 --- a/ScreenGrab/ScreenGrab.cpp +++ b/ScreenGrab/ScreenGrab.cpp @@ -32,6 +32,7 @@ #pragma warning(push) #pragma warning(disable : 4005) #include +#include #pragma warning(pop) #endif @@ -39,6 +40,8 @@ #include "ScreenGrab.h" +using Microsoft::WRL::ComPtr; + //-------------------------------------------------------------------------------------- // Macros //-------------------------------------------------------------------------------------- @@ -181,80 +184,6 @@ static const DDS_PIXELFORMAT DDSPF_A8 = static const DDS_PIXELFORMAT DDSPF_DX10 = { sizeof(DDS_PIXELFORMAT), DDS_FOURCC, MAKEFOURCC('D','X','1','0'), 0, 0, 0, 0, 0 }; -//--------------------------------------------------------------------------------- -#if defined(_MSC_VER) && (_MSC_VER >= 1610) - -#include - -template class ScopedObject : public Microsoft::WRL::ComPtr {}; - -#else - -template class ScopedObject -{ -public: - ScopedObject() : _pointer(nullptr) {} - ScopedObject( T *p ) : _pointer(p) { if (_pointer) { _pointer->AddRef(); } } - ScopedObject( const ScopedObject& other ) : _pointer(other._pointer) { if (_pointer) { _pointer->AddRef(); } } - - ~ScopedObject() - { - if ( _pointer ) - { - _pointer->Release(); - _pointer = nullptr; - } - } - - operator bool() const { return (_pointer != nullptr); } - - T& operator= (_In_opt_ T* other) - { - if ( _pointer != other ) - { - if ( _pointer) { _pointer->Release(); } - _pointer = other; - if ( other ) { other->AddRef() }; - } - return *this; - } - - ScopedObject& operator= (const ScopedObject& other) - { - if ( _pointer != other._pointer ) - { - if ( _pointer) { _pointer->Release(); } - _pointer = other._pointer; - if ( other._pointer ) { other._pointer->AddRef(); } - } - return *this; - } - - T& operator*() { return *_pointer; } - - T* operator->() const { return _pointer; } - - T** operator&() { return &_pointer; } - - void Reset() { if ( _pointer ) { _pointer->Release(); _pointer = nullptr; } } - - T* Get() const { return _pointer; } - T** GetAddressOf() { return &_pointer; } - - T** ReleaseAndGetAddressOf() { if ( _pointer ) { _pointer->Release(); _pointer = nullptr; } return &_pointer; } - - template - HRESULT As(_Inout_ U* p) { return _pointer->QueryInterface( _uuidof(U), reinterpret_cast( p ) ); } - - template - HRESULT As(_Out_ ScopedObject* p ) { return _pointer->QueryInterface( _uuidof(U), reinterpret_cast( p->ReleaseAndGetAddressOf() ) ); } - -private: - T* _pointer; -}; - -#endif - //--------------------------------------------------------------------------------- struct handle_closer { void operator()(HANDLE h) { if (h) CloseHandle(h); } }; @@ -561,7 +490,7 @@ static DXGI_FORMAT EnsureNotTypeless( DXGI_FORMAT fmt ) static HRESULT CaptureTexture( _In_ ID3D11DeviceContext* pContext, _In_ ID3D11Resource* pSource, _Inout_ D3D11_TEXTURE2D_DESC& desc, - _Inout_ ScopedObject& pStaging ) + _Inout_ ComPtr& pStaging ) { if ( !pContext || !pSource ) return E_INVALIDARG; @@ -572,7 +501,7 @@ static HRESULT CaptureTexture( _In_ ID3D11DeviceContext* pContext, if ( resType != D3D11_RESOURCE_DIMENSION_TEXTURE2D ) return HRESULT_FROM_WIN32( ERROR_NOT_SUPPORTED ); - ScopedObject pTexture; + ComPtr pTexture; HRESULT hr = pSource->QueryInterface( __uuidof(ID3D11Texture2D), reinterpret_cast( pTexture.GetAddressOf() ) ); if ( FAILED(hr) ) return hr; @@ -581,8 +510,8 @@ static HRESULT CaptureTexture( _In_ ID3D11DeviceContext* pContext, pTexture->GetDesc( &desc ); - ScopedObject d3dDevice; - pContext->GetDevice( &d3dDevice ); + ComPtr d3dDevice; + pContext->GetDevice( d3dDevice.GetAddressOf() ); if ( desc.SampleDesc.Count > 1 ) { @@ -590,8 +519,8 @@ static HRESULT CaptureTexture( _In_ ID3D11DeviceContext* pContext, desc.SampleDesc.Count = 1; desc.SampleDesc.Quality = 0; - ScopedObject pTemp; - hr = d3dDevice->CreateTexture2D( &desc, 0, &pTemp ); + ComPtr pTemp; + hr = d3dDevice->CreateTexture2D( &desc, 0, pTemp.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -621,7 +550,7 @@ static HRESULT CaptureTexture( _In_ ID3D11DeviceContext* pContext, desc.CPUAccessFlags = D3D11_CPU_ACCESS_READ; desc.Usage = D3D11_USAGE_STAGING; - hr = d3dDevice->CreateTexture2D( &desc, 0, &pStaging ); + hr = d3dDevice->CreateTexture2D( &desc, 0, pStaging.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -642,7 +571,7 @@ static HRESULT CaptureTexture( _In_ ID3D11DeviceContext* pContext, desc.CPUAccessFlags = D3D11_CPU_ACCESS_READ; desc.Usage = D3D11_USAGE_STAGING; - hr = d3dDevice->CreateTexture2D( &desc, 0, &pStaging ); + hr = d3dDevice->CreateTexture2D( &desc, 0, pStaging.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -727,7 +656,7 @@ HRESULT DirectX::SaveDDSTextureToFile( _In_ ID3D11DeviceContext* pContext, return E_INVALIDARG; D3D11_TEXTURE2D_DESC desc = { 0 }; - ScopedObject pStaging; + ComPtr pStaging; HRESULT hr = CaptureTexture( pContext, pSource, desc, pStaging ); if ( FAILED(hr) ) return hr; @@ -878,7 +807,7 @@ HRESULT DirectX::SaveWICTextureToFile( _In_ ID3D11DeviceContext* pContext, return E_INVALIDARG; D3D11_TEXTURE2D_DESC desc = { 0 }; - ScopedObject pStaging; + ComPtr pStaging; HRESULT hr = CaptureTexture( pContext, pSource, desc, pStaging ); if ( FAILED(hr) ) return hr; @@ -936,8 +865,8 @@ HRESULT DirectX::SaveWICTextureToFile( _In_ ID3D11DeviceContext* pContext, if ( !pWIC ) return E_NOINTERFACE; - ScopedObject stream; - hr = pWIC->CreateStream( &stream ); + ComPtr stream; + hr = pWIC->CreateStream( stream.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -945,8 +874,8 @@ HRESULT DirectX::SaveWICTextureToFile( _In_ ID3D11DeviceContext* pContext, if ( FAILED(hr) ) return hr; - ScopedObject encoder; - hr = pWIC->CreateEncoder( guidContainerFormat, 0, &encoder ); + ComPtr encoder; + hr = pWIC->CreateEncoder( guidContainerFormat, 0, encoder.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -954,9 +883,9 @@ HRESULT DirectX::SaveWICTextureToFile( _In_ ID3D11DeviceContext* pContext, if ( FAILED(hr) ) return hr; - ScopedObject frame; - ScopedObject props; - hr = encoder->CreateNewFrame( &frame, &props ); + ComPtr frame; + ComPtr props; + hr = encoder->CreateNewFrame( frame.GetAddressOf(), props.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -1043,8 +972,8 @@ HRESULT DirectX::SaveWICTextureToFile( _In_ ID3D11DeviceContext* pContext, } // Encode WIC metadata - ScopedObject metawriter; - if ( SUCCEEDED( frame->GetMetadataQueryWriter( &metawriter ) ) ) + ComPtr metawriter; + if ( SUCCEEDED( frame->GetMetadataQueryWriter( metawriter.GetAddressOf() ) ) ) { PROPVARIANT value; PropVariantInit( &value ); @@ -1088,18 +1017,18 @@ HRESULT DirectX::SaveWICTextureToFile( _In_ ID3D11DeviceContext* pContext, if ( memcmp( &targetGuid, &pfGuid, sizeof(WICPixelFormatGUID) ) != 0 ) { // Conversion required to write - ScopedObject source; + ComPtr source; hr = pWIC->CreateBitmapFromMemory( desc.Width, desc.Height, pfGuid, mapped.RowPitch, mapped.RowPitch * desc.Height, - reinterpret_cast( mapped.pData ), &source ); + reinterpret_cast( mapped.pData ), source.GetAddressOf() ); if ( FAILED(hr) ) { pContext->Unmap( pStaging.Get(), 0 ); return hr; } - ScopedObject FC; - hr = pWIC->CreateFormatConverter( &FC ); + ComPtr FC; + hr = pWIC->CreateFormatConverter( FC.GetAddressOf() ); if ( FAILED(hr) ) { pContext->Unmap( pStaging.Get(), 0 ); diff --git a/WICTextureLoader/WICTextureLoader.cpp b/WICTextureLoader/WICTextureLoader.cpp index 2566455..dc39f49 100644 --- a/WICTextureLoader/WICTextureLoader.cpp +++ b/WICTextureLoader/WICTextureLoader.cpp @@ -34,6 +34,7 @@ #pragma warning(push) #pragma warning(disable : 4005) #include +#include #pragma warning(pop) #include @@ -44,79 +45,7 @@ #pragma comment(lib,"dxguid.lib") #endif -//--------------------------------------------------------------------------------- -#if defined(_MSC_VER) && (_MSC_VER >= 1610) - -#include - -template class ScopedObject : public Microsoft::WRL::ComPtr {}; - -#else - -template class ScopedObject -{ -public: - ScopedObject() : _pointer(nullptr) {} - ScopedObject( T *p ) : _pointer(p) { if (_pointer) { _pointer->AddRef(); } } - ScopedObject( const ScopedObject& other ) : _pointer(other._pointer) { if (_pointer) { _pointer->AddRef(); } } - - ~ScopedObject() - { - if ( _pointer ) - { - _pointer->Release(); - _pointer = nullptr; - } - } - - operator bool() const { return (_pointer != nullptr); } - - T& operator= (_In_opt_ T* other) - { - if ( _pointer != other ) - { - if ( _pointer) { _pointer->Release(); } - _pointer = other; - if ( other ) { other->AddRef() }; - } - return *this; - } - - ScopedObject& operator= (const ScopedObject& other) - { - if ( _pointer != other._pointer ) - { - if ( _pointer) { _pointer->Release(); } - _pointer = other._pointer; - if ( other._pointer ) { other._pointer->AddRef(); } - } - return *this; - } - - T& operator*() { return *_pointer; } - - T* operator->() const { return _pointer; } - - T** operator&() { return &_pointer; } - - void Reset() { if ( _pointer ) { _pointer->Release(); _pointer = nullptr; } } - - T* Get() const { return _pointer; } - T** GetAddressOf() { return &_pointer; } - - T** ReleaseAndGetAddressOf() { if ( _pointer ) { _pointer->Release(); _pointer = nullptr; } return &_pointer; } - - template - HRESULT As(_Inout_ U* p) { return _pointer->QueryInterface( _uuidof(U), reinterpret_cast( p ) ); } - - template - HRESULT As(_Out_ ScopedObject* p ) { return _pointer->QueryInterface( _uuidof(U), reinterpret_cast( p->ReleaseAndGetAddressOf() ) ); } - -private: - T* _pointer; -}; - -#endif +using Microsoft::WRL::ComPtr; //-------------------------------------------------------------------------------------- @@ -321,8 +250,8 @@ static size_t _WICBitsPerPixel( REFGUID targetGuid ) if ( !pWIC ) return 0; - ScopedObject cinfo; - if ( FAILED( pWIC->CreateComponentInfo( targetGuid, &cinfo ) ) ) + ComPtr cinfo; + if ( FAILED( pWIC->CreateComponentInfo( targetGuid, cinfo.GetAddressOf() ) ) ) return 0; WICComponentType type; @@ -332,7 +261,7 @@ static size_t _WICBitsPerPixel( REFGUID targetGuid ) if ( type != WICPixelFormat ) return 0; - ScopedObject pfinfo; + ComPtr pfinfo; if ( FAILED( cinfo.As( &pfinfo ) ) ) return 0; @@ -527,8 +456,8 @@ static HRESULT CreateTextureFromWIC( _In_ ID3D11Device* d3dDevice, } else { - ScopedObject metareader; - if ( SUCCEEDED( frame->GetMetadataQueryReader( &metareader ) ) ) + ComPtr metareader; + if ( SUCCEEDED( frame->GetMetadataQueryReader( metareader.GetAddressOf() ) ) ) { GUID containerFormat; if ( SUCCEEDED( metareader->GetContainerFormat( &containerFormat ) ) ) @@ -597,8 +526,8 @@ static HRESULT CreateTextureFromWIC( _In_ ID3D11Device* d3dDevice, if ( !pWIC ) return E_NOINTERFACE; - ScopedObject scaler; - hr = pWIC->CreateBitmapScaler( &scaler ); + ComPtr scaler; + hr = pWIC->CreateBitmapScaler( scaler.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -620,8 +549,8 @@ static HRESULT CreateTextureFromWIC( _In_ ID3D11Device* d3dDevice, } else { - ScopedObject FC; - hr = pWIC->CreateFormatConverter( &FC ); + ComPtr FC; + hr = pWIC->CreateFormatConverter( FC.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -641,8 +570,8 @@ static HRESULT CreateTextureFromWIC( _In_ ID3D11Device* d3dDevice, if ( !pWIC ) return E_NOINTERFACE; - ScopedObject FC; - hr = pWIC->CreateFormatConverter( &FC ); + ComPtr FC; + hr = pWIC->CreateFormatConverter( FC.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -791,8 +720,8 @@ HRESULT DirectX::CreateWICTextureFromMemoryEx( ID3D11Device* d3dDevice, return E_NOINTERFACE; // Create input stream for memory - ScopedObject stream; - HRESULT hr = pWIC->CreateStream( &stream ); + ComPtr stream; + HRESULT hr = pWIC->CreateStream( stream.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -801,13 +730,13 @@ HRESULT DirectX::CreateWICTextureFromMemoryEx( ID3D11Device* d3dDevice, return hr; // Initialize WIC - ScopedObject decoder; - hr = pWIC->CreateDecoderFromStream( stream.Get(), 0, WICDecodeMetadataCacheOnDemand, &decoder ); + ComPtr decoder; + hr = pWIC->CreateDecoderFromStream( stream.Get(), 0, WICDecodeMetadataCacheOnDemand, decoder.GetAddressOf() ); if ( FAILED(hr) ) return hr; - ScopedObject frame; - hr = decoder->GetFrame( 0, &frame ); + ComPtr frame; + hr = decoder->GetFrame( 0, frame.GetAddressOf() ); if ( FAILED(hr) ) return hr; @@ -874,13 +803,13 @@ HRESULT DirectX::CreateWICTextureFromFileEx( ID3D11Device* d3dDevice, return E_NOINTERFACE; // Initialize WIC - ScopedObject decoder; - HRESULT hr = pWIC->CreateDecoderFromFilename( fileName, 0, GENERIC_READ, WICDecodeMetadataCacheOnDemand, &decoder ); + ComPtr decoder; + HRESULT hr = pWIC->CreateDecoderFromFilename( fileName, 0, GENERIC_READ, WICDecodeMetadataCacheOnDemand, decoder.GetAddressOf() ); if ( FAILED(hr) ) return hr; - ScopedObject frame; - hr = decoder->GetFrame( 0, &frame ); + ComPtr frame; + hr = decoder->GetFrame( 0, frame.GetAddressOf() ); if ( FAILED(hr) ) return hr;