diff --git a/modules/juce_graphics/native/juce_DirectX_windows.cpp b/modules/juce_graphics/native/juce_DirectX_windows.cpp index 53c5fed15c..2b0f1868c2 100644 --- a/modules/juce_graphics/native/juce_DirectX_windows.cpp +++ b/modules/juce_graphics/native/juce_DirectX_windows.cpp @@ -598,40 +598,6 @@ std::optional Direct2DDeviceResources::create (ComSmart return result; } -//============================================================================== -std::optional CompositionTree::create (IDXGIDevice* dxgiDevice, - HWND hwnd, - IDXGISwapChain1* swapChain) -{ - if (dxgiDevice == nullptr) - return {}; - - CompositionTree result; - - JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wlanguage-extension-token") - if (const auto hr = DCompositionCreateDevice (dxgiDevice, - __uuidof (IDCompositionDevice), - reinterpret_cast (result.compositionDevice.resetAndGetPointerAddress())); - FAILED (hr)) - { - return {}; - } - JUCE_END_IGNORE_WARNINGS_GCC_LIKE - - if (const auto hr = result.compositionDevice->CreateTargetForHwnd (hwnd, FALSE, result.compositionTarget.resetAndGetPointerAddress()); FAILED (hr)) - return {}; - if (const auto hr = result.compositionDevice->CreateVisual (result.compositionVisual.resetAndGetPointerAddress()); FAILED (hr)) - return {}; - if (const auto hr = result.compositionTarget->SetRoot (result.compositionVisual); FAILED (hr)) - return {}; - if (const auto hr = result.compositionVisual->SetContent (swapChain); FAILED (hr)) - return {}; - if (const auto hr = result.compositionDevice->Commit(); FAILED (hr)) - return {}; - - return result; -} - //============================================================================== String getLocalisedName (IDWriteLocalizedStrings* names) { diff --git a/modules/juce_graphics/native/juce_DirectX_windows.h b/modules/juce_graphics/native/juce_DirectX_windows.h index 12e66efb7d..92550cce64 100644 --- a/modules/juce_graphics/native/juce_DirectX_windows.h +++ b/modules/juce_graphics/native/juce_DirectX_windows.h @@ -409,26 +409,6 @@ private: }; //============================================================================== -/* DirectComposition - Using DirectComposition enables transparent windows and smoother window - resizing - - This class builds a simple DirectComposition tree that ultimately contains - the swap chain -*/ -class CompositionTree -{ -public: - static std::optional create (IDXGIDevice* dxgiDevice, HWND hwnd, IDXGISwapChain1* swapChain); - -private: - CompositionTree() = default; - - ComSmartPtr compositionDevice; - ComSmartPtr compositionTarget; - ComSmartPtr compositionVisual; -}; - String getLocalisedName (IDWriteLocalizedStrings* names); String getFontFamilyName (IDWriteFontFamily* family); String getFontFaceName (IDWriteFont* font); diff --git a/modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.cpp b/modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.cpp index 664d511b49..7032643ab1 100644 --- a/modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.cpp +++ b/modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.cpp @@ -244,6 +244,58 @@ private: std::optional swapChainEvent; }; +//============================================================================== +/* DirectComposition + Using DirectComposition enables transparent windows and smoother window + resizing + + This class builds a simple DirectComposition tree that ultimately contains + the swap chain +*/ +class CompositionTree +{ +public: + static std::optional create (IDXGIDevice* dxgiDevice, + HWND hwnd, + IDXGISwapChain1* swapChain) + { + if (dxgiDevice == nullptr) + return {}; + + CompositionTree result; + + JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wlanguage-extension-token") + if (const auto hr = DCompositionCreateDevice (dxgiDevice, + __uuidof (IDCompositionDevice), + reinterpret_cast (result.compositionDevice.resetAndGetPointerAddress())); + FAILED (hr)) + { + return {}; + } + JUCE_END_IGNORE_WARNINGS_GCC_LIKE + + if (const auto hr = result.compositionDevice->CreateTargetForHwnd (hwnd, FALSE, result.compositionTarget.resetAndGetPointerAddress()); FAILED (hr)) + return {}; + if (const auto hr = result.compositionDevice->CreateVisual (result.compositionVisual.resetAndGetPointerAddress()); FAILED (hr)) + return {}; + if (const auto hr = result.compositionTarget->SetRoot (result.compositionVisual); FAILED (hr)) + return {}; + if (const auto hr = result.compositionVisual->SetContent (swapChain); FAILED (hr)) + return {}; + if (const auto hr = result.compositionDevice->Commit(); FAILED (hr)) + return {}; + + return result; + } + +private: + CompositionTree() = default; + + ComSmartPtr compositionDevice; + ComSmartPtr compositionTarget; + ComSmartPtr compositionVisual; +}; + //============================================================================== struct Direct2DHwndContext::HwndPimpl : public Direct2DGraphicsContext::Pimpl {