diff --git a/examples/DemoRunner/Builds/Android/app/CMakeLists.txt b/examples/DemoRunner/Builds/Android/app/CMakeLists.txt
index 90dc653ef2..2c62ecc51f 100644
--- a/examples/DemoRunner/Builds/Android/app/CMakeLists.txt
+++ b/examples/DemoRunner/Builds/Android/app/CMakeLists.txt
@@ -1975,6 +1975,7 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h"
"../../../../../modules/juce_graphics/images/juce_ImageFileFormat.cpp"
"../../../../../modules/juce_graphics/images/juce_ImageFileFormat.h"
+ "../../../../../modules/juce_graphics/images/juce_ImagePixelDataNativeExtensions.h"
"../../../../../modules/juce_graphics/images/juce_ScaledImage.h"
"../../../../../modules/juce_graphics/native/juce_CoreGraphicsContext_mac.h"
"../../../../../modules/juce_graphics/native/juce_CoreGraphicsContext_mac.mm"
@@ -1982,8 +1983,6 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.cpp"
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContextImpl_windows.h"
- "../../../../../modules/juce_graphics/native/juce_Direct2DHwndContext_windows.cpp"
- "../../../../../modules/juce_graphics/native/juce_Direct2DHwndContext_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DImage_windows.cpp"
"../../../../../modules/juce_graphics/native/juce_Direct2DImage_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DImageContext_windows.cpp"
@@ -2324,6 +2323,8 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_gui_basics/native/juce_CGMetalLayerRenderer_mac.h"
"../../../../../modules/juce_gui_basics/native/juce_ContentSharer_android.cpp"
"../../../../../modules/juce_gui_basics/native/juce_ContentSharer_ios.cpp"
+ "../../../../../modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.cpp"
+ "../../../../../modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.h"
"../../../../../modules/juce_gui_basics/native/juce_DragAndDrop_linux.cpp"
"../../../../../modules/juce_gui_basics/native/juce_DragAndDrop_windows.cpp"
"../../../../../modules/juce_gui_basics/native/juce_FileChooser_android.cpp"
@@ -4628,6 +4629,7 @@ set_source_files_properties(
"../../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h"
"../../../../../modules/juce_graphics/images/juce_ImageFileFormat.cpp"
"../../../../../modules/juce_graphics/images/juce_ImageFileFormat.h"
+ "../../../../../modules/juce_graphics/images/juce_ImagePixelDataNativeExtensions.h"
"../../../../../modules/juce_graphics/images/juce_ScaledImage.h"
"../../../../../modules/juce_graphics/native/juce_CoreGraphicsContext_mac.h"
"../../../../../modules/juce_graphics/native/juce_CoreGraphicsContext_mac.mm"
@@ -4635,8 +4637,6 @@ set_source_files_properties(
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.cpp"
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContextImpl_windows.h"
- "../../../../../modules/juce_graphics/native/juce_Direct2DHwndContext_windows.cpp"
- "../../../../../modules/juce_graphics/native/juce_Direct2DHwndContext_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DImage_windows.cpp"
"../../../../../modules/juce_graphics/native/juce_Direct2DImage_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DImageContext_windows.cpp"
@@ -4977,6 +4977,8 @@ set_source_files_properties(
"../../../../../modules/juce_gui_basics/native/juce_CGMetalLayerRenderer_mac.h"
"../../../../../modules/juce_gui_basics/native/juce_ContentSharer_android.cpp"
"../../../../../modules/juce_gui_basics/native/juce_ContentSharer_ios.cpp"
+ "../../../../../modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.cpp"
+ "../../../../../modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.h"
"../../../../../modules/juce_gui_basics/native/juce_DragAndDrop_linux.cpp"
"../../../../../modules/juce_gui_basics/native/juce_DragAndDrop_windows.cpp"
"../../../../../modules/juce_gui_basics/native/juce_FileChooser_android.cpp"
diff --git a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj
index 59ad6bd368..a428ff778a 100644
--- a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj
+++ b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj
@@ -2406,9 +2406,6 @@
true
-
- true
-
true
@@ -2820,6 +2817,9 @@
true
+
+ true
+
true
@@ -4413,12 +4413,12 @@
+
-
@@ -4616,6 +4616,7 @@
+
diff --git a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters
index 94eb8b9d79..2c37590daa 100644
--- a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters
+++ b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters
@@ -3184,9 +3184,6 @@
JUCE Modules\juce_graphics\native
-
- JUCE Modules\juce_graphics\native
-
JUCE Modules\juce_graphics\native
@@ -3613,6 +3610,9 @@
JUCE Modules\juce_gui_basics\native
+
+ JUCE Modules\juce_gui_basics\native
+
JUCE Modules\juce_gui_basics\native
@@ -7563,6 +7563,9 @@
JUCE Modules\juce_graphics\images
+
+ JUCE Modules\juce_graphics\images
+
JUCE Modules\juce_graphics\images
@@ -7578,9 +7581,6 @@
JUCE Modules\juce_graphics\native
-
- JUCE Modules\juce_graphics\native
-
JUCE Modules\juce_graphics\native
@@ -8172,6 +8172,9 @@
JUCE Modules\juce_gui_basics\native
+
+ JUCE Modules\juce_gui_basics\native
+
JUCE Modules\juce_gui_basics\native
diff --git a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj
index 6fac20fd12..d24f003984 100644
--- a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj
+++ b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj
@@ -2406,9 +2406,6 @@
true
-
- true
-
true
@@ -2820,6 +2817,9 @@
true
+
+ true
+
true
@@ -4413,12 +4413,12 @@
+
-
@@ -4616,6 +4616,7 @@
+
diff --git a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters
index 11e2245669..3b8b335b54 100644
--- a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters
+++ b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters
@@ -3184,9 +3184,6 @@
JUCE Modules\juce_graphics\native
-
- JUCE Modules\juce_graphics\native
-
JUCE Modules\juce_graphics\native
@@ -3613,6 +3610,9 @@
JUCE Modules\juce_gui_basics\native
+
+ JUCE Modules\juce_gui_basics\native
+
JUCE Modules\juce_gui_basics\native
@@ -7563,6 +7563,9 @@
JUCE Modules\juce_graphics\images
+
+ JUCE Modules\juce_graphics\images
+
JUCE Modules\juce_graphics\images
@@ -7578,9 +7581,6 @@
JUCE Modules\juce_graphics\native
-
- JUCE Modules\juce_graphics\native
-
JUCE Modules\juce_graphics\native
@@ -8172,6 +8172,9 @@
JUCE Modules\juce_gui_basics\native
+
+ JUCE Modules\juce_gui_basics\native
+
JUCE Modules\juce_gui_basics\native
diff --git a/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt b/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt
index 4bab31179a..6cc3556093 100644
--- a/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt
+++ b/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt
@@ -1737,6 +1737,7 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h"
"../../../../../modules/juce_graphics/images/juce_ImageFileFormat.cpp"
"../../../../../modules/juce_graphics/images/juce_ImageFileFormat.h"
+ "../../../../../modules/juce_graphics/images/juce_ImagePixelDataNativeExtensions.h"
"../../../../../modules/juce_graphics/images/juce_ScaledImage.h"
"../../../../../modules/juce_graphics/native/juce_CoreGraphicsContext_mac.h"
"../../../../../modules/juce_graphics/native/juce_CoreGraphicsContext_mac.mm"
@@ -1744,8 +1745,6 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.cpp"
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContextImpl_windows.h"
- "../../../../../modules/juce_graphics/native/juce_Direct2DHwndContext_windows.cpp"
- "../../../../../modules/juce_graphics/native/juce_Direct2DHwndContext_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DImage_windows.cpp"
"../../../../../modules/juce_graphics/native/juce_Direct2DImage_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DImageContext_windows.cpp"
@@ -2086,6 +2085,8 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_gui_basics/native/juce_CGMetalLayerRenderer_mac.h"
"../../../../../modules/juce_gui_basics/native/juce_ContentSharer_android.cpp"
"../../../../../modules/juce_gui_basics/native/juce_ContentSharer_ios.cpp"
+ "../../../../../modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.cpp"
+ "../../../../../modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.h"
"../../../../../modules/juce_gui_basics/native/juce_DragAndDrop_linux.cpp"
"../../../../../modules/juce_gui_basics/native/juce_DragAndDrop_windows.cpp"
"../../../../../modules/juce_gui_basics/native/juce_FileChooser_android.cpp"
@@ -4004,6 +4005,7 @@ set_source_files_properties(
"../../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h"
"../../../../../modules/juce_graphics/images/juce_ImageFileFormat.cpp"
"../../../../../modules/juce_graphics/images/juce_ImageFileFormat.h"
+ "../../../../../modules/juce_graphics/images/juce_ImagePixelDataNativeExtensions.h"
"../../../../../modules/juce_graphics/images/juce_ScaledImage.h"
"../../../../../modules/juce_graphics/native/juce_CoreGraphicsContext_mac.h"
"../../../../../modules/juce_graphics/native/juce_CoreGraphicsContext_mac.mm"
@@ -4011,8 +4013,6 @@ set_source_files_properties(
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.cpp"
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContextImpl_windows.h"
- "../../../../../modules/juce_graphics/native/juce_Direct2DHwndContext_windows.cpp"
- "../../../../../modules/juce_graphics/native/juce_Direct2DHwndContext_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DImage_windows.cpp"
"../../../../../modules/juce_graphics/native/juce_Direct2DImage_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DImageContext_windows.cpp"
@@ -4353,6 +4353,8 @@ set_source_files_properties(
"../../../../../modules/juce_gui_basics/native/juce_CGMetalLayerRenderer_mac.h"
"../../../../../modules/juce_gui_basics/native/juce_ContentSharer_android.cpp"
"../../../../../modules/juce_gui_basics/native/juce_ContentSharer_ios.cpp"
+ "../../../../../modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.cpp"
+ "../../../../../modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.h"
"../../../../../modules/juce_gui_basics/native/juce_DragAndDrop_linux.cpp"
"../../../../../modules/juce_gui_basics/native/juce_DragAndDrop_windows.cpp"
"../../../../../modules/juce_gui_basics/native/juce_FileChooser_android.cpp"
diff --git a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj
index 22507bbedb..f27d566a08 100644
--- a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj
+++ b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj
@@ -2097,9 +2097,6 @@
true
-
- true
-
true
@@ -2511,6 +2508,9 @@
true
+
+ true
+
true
@@ -3826,12 +3826,12 @@
+
-
@@ -4029,6 +4029,7 @@
+
diff --git a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters
index 1059e8fb48..ecf7d322fa 100644
--- a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters
+++ b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters
@@ -2692,9 +2692,6 @@
JUCE Modules\juce_graphics\native
-
- JUCE Modules\juce_graphics\native
-
JUCE Modules\juce_graphics\native
@@ -3121,6 +3118,9 @@
JUCE Modules\juce_gui_basics\native
+
+ JUCE Modules\juce_gui_basics\native
+
JUCE Modules\juce_gui_basics\native
@@ -6522,6 +6522,9 @@
JUCE Modules\juce_graphics\images
+
+ JUCE Modules\juce_graphics\images
+
JUCE Modules\juce_graphics\images
@@ -6537,9 +6540,6 @@
JUCE Modules\juce_graphics\native
-
- JUCE Modules\juce_graphics\native
-
JUCE Modules\juce_graphics\native
@@ -7131,6 +7131,9 @@
JUCE Modules\juce_gui_basics\native
+
+ JUCE Modules\juce_gui_basics\native
+
JUCE Modules\juce_gui_basics\native
diff --git a/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt b/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt
index 7e1b111abd..9c780cfb87 100644
--- a/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt
+++ b/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt
@@ -1867,6 +1867,7 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h"
"../../../../../modules/juce_graphics/images/juce_ImageFileFormat.cpp"
"../../../../../modules/juce_graphics/images/juce_ImageFileFormat.h"
+ "../../../../../modules/juce_graphics/images/juce_ImagePixelDataNativeExtensions.h"
"../../../../../modules/juce_graphics/images/juce_ScaledImage.h"
"../../../../../modules/juce_graphics/native/juce_CoreGraphicsContext_mac.h"
"../../../../../modules/juce_graphics/native/juce_CoreGraphicsContext_mac.mm"
@@ -1874,8 +1875,6 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.cpp"
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContextImpl_windows.h"
- "../../../../../modules/juce_graphics/native/juce_Direct2DHwndContext_windows.cpp"
- "../../../../../modules/juce_graphics/native/juce_Direct2DHwndContext_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DImage_windows.cpp"
"../../../../../modules/juce_graphics/native/juce_Direct2DImage_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DImageContext_windows.cpp"
@@ -2216,6 +2215,8 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_gui_basics/native/juce_CGMetalLayerRenderer_mac.h"
"../../../../../modules/juce_gui_basics/native/juce_ContentSharer_android.cpp"
"../../../../../modules/juce_gui_basics/native/juce_ContentSharer_ios.cpp"
+ "../../../../../modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.cpp"
+ "../../../../../modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.h"
"../../../../../modules/juce_gui_basics/native/juce_DragAndDrop_linux.cpp"
"../../../../../modules/juce_gui_basics/native/juce_DragAndDrop_windows.cpp"
"../../../../../modules/juce_gui_basics/native/juce_FileChooser_android.cpp"
@@ -4287,6 +4288,7 @@ set_source_files_properties(
"../../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h"
"../../../../../modules/juce_graphics/images/juce_ImageFileFormat.cpp"
"../../../../../modules/juce_graphics/images/juce_ImageFileFormat.h"
+ "../../../../../modules/juce_graphics/images/juce_ImagePixelDataNativeExtensions.h"
"../../../../../modules/juce_graphics/images/juce_ScaledImage.h"
"../../../../../modules/juce_graphics/native/juce_CoreGraphicsContext_mac.h"
"../../../../../modules/juce_graphics/native/juce_CoreGraphicsContext_mac.mm"
@@ -4294,8 +4296,6 @@ set_source_files_properties(
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.cpp"
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContextImpl_windows.h"
- "../../../../../modules/juce_graphics/native/juce_Direct2DHwndContext_windows.cpp"
- "../../../../../modules/juce_graphics/native/juce_Direct2DHwndContext_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DImage_windows.cpp"
"../../../../../modules/juce_graphics/native/juce_Direct2DImage_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DImageContext_windows.cpp"
@@ -4636,6 +4636,8 @@ set_source_files_properties(
"../../../../../modules/juce_gui_basics/native/juce_CGMetalLayerRenderer_mac.h"
"../../../../../modules/juce_gui_basics/native/juce_ContentSharer_android.cpp"
"../../../../../modules/juce_gui_basics/native/juce_ContentSharer_ios.cpp"
+ "../../../../../modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.cpp"
+ "../../../../../modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.h"
"../../../../../modules/juce_gui_basics/native/juce_DragAndDrop_linux.cpp"
"../../../../../modules/juce_gui_basics/native/juce_DragAndDrop_windows.cpp"
"../../../../../modules/juce_gui_basics/native/juce_FileChooser_android.cpp"
diff --git a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj
index d15d3031c7..0a8743b63c 100644
--- a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj
+++ b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj
@@ -2231,9 +2231,6 @@
true
-
- true
-
true
@@ -2645,6 +2642,9 @@
true
+
+ true
+
true
@@ -4059,12 +4059,12 @@
+
-
@@ -4262,6 +4262,7 @@
+
diff --git a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters
index 9eb6e1444f..9f7bbe750b 100644
--- a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters
+++ b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters
@@ -2899,9 +2899,6 @@
JUCE Modules\juce_graphics\native
-
- JUCE Modules\juce_graphics\native
-
JUCE Modules\juce_graphics\native
@@ -3328,6 +3325,9 @@
JUCE Modules\juce_gui_basics\native
+
+ JUCE Modules\juce_gui_basics\native
+
JUCE Modules\juce_gui_basics\native
@@ -6957,6 +6957,9 @@
JUCE Modules\juce_graphics\images
+
+ JUCE Modules\juce_graphics\images
+
JUCE Modules\juce_graphics\images
@@ -6972,9 +6975,6 @@
JUCE Modules\juce_graphics\native
-
- JUCE Modules\juce_graphics\native
-
JUCE Modules\juce_graphics\native
@@ -7566,6 +7566,9 @@
JUCE Modules\juce_gui_basics\native
+
+ JUCE Modules\juce_gui_basics\native
+
JUCE Modules\juce_gui_basics\native
diff --git a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj
index 87e69c0e4a..75311b8d20 100644
--- a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj
+++ b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj
@@ -2231,9 +2231,6 @@
true
-
- true
-
true
@@ -2645,6 +2642,9 @@
true
+
+ true
+
true
@@ -4059,12 +4059,12 @@
+
-
@@ -4262,6 +4262,7 @@
+
diff --git a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters
index 3877e0f4df..cc98879f6d 100644
--- a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters
+++ b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters
@@ -2899,9 +2899,6 @@
JUCE Modules\juce_graphics\native
-
- JUCE Modules\juce_graphics\native
-
JUCE Modules\juce_graphics\native
@@ -3328,6 +3325,9 @@
JUCE Modules\juce_gui_basics\native
+
+ JUCE Modules\juce_gui_basics\native
+
JUCE Modules\juce_gui_basics\native
@@ -6957,6 +6957,9 @@
JUCE Modules\juce_graphics\images
+
+ JUCE Modules\juce_graphics\images
+
JUCE Modules\juce_graphics\images
@@ -6972,9 +6975,6 @@
JUCE Modules\juce_graphics\native
-
- JUCE Modules\juce_graphics\native
-
JUCE Modules\juce_graphics\native
@@ -7566,6 +7566,9 @@
JUCE Modules\juce_gui_basics\native
+
+ JUCE Modules\juce_gui_basics\native
+
JUCE Modules\juce_gui_basics\native
diff --git a/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt b/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt
index b7a2342797..03d1198f33 100644
--- a/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt
+++ b/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt
@@ -1756,6 +1756,7 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h"
"../../../../../modules/juce_graphics/images/juce_ImageFileFormat.cpp"
"../../../../../modules/juce_graphics/images/juce_ImageFileFormat.h"
+ "../../../../../modules/juce_graphics/images/juce_ImagePixelDataNativeExtensions.h"
"../../../../../modules/juce_graphics/images/juce_ScaledImage.h"
"../../../../../modules/juce_graphics/native/juce_CoreGraphicsContext_mac.h"
"../../../../../modules/juce_graphics/native/juce_CoreGraphicsContext_mac.mm"
@@ -1763,8 +1764,6 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.cpp"
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContextImpl_windows.h"
- "../../../../../modules/juce_graphics/native/juce_Direct2DHwndContext_windows.cpp"
- "../../../../../modules/juce_graphics/native/juce_Direct2DHwndContext_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DImage_windows.cpp"
"../../../../../modules/juce_graphics/native/juce_Direct2DImage_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DImageContext_windows.cpp"
@@ -2105,6 +2104,8 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_gui_basics/native/juce_CGMetalLayerRenderer_mac.h"
"../../../../../modules/juce_gui_basics/native/juce_ContentSharer_android.cpp"
"../../../../../modules/juce_gui_basics/native/juce_ContentSharer_ios.cpp"
+ "../../../../../modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.cpp"
+ "../../../../../modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.h"
"../../../../../modules/juce_gui_basics/native/juce_DragAndDrop_linux.cpp"
"../../../../../modules/juce_gui_basics/native/juce_DragAndDrop_windows.cpp"
"../../../../../modules/juce_gui_basics/native/juce_FileChooser_android.cpp"
@@ -4103,6 +4104,7 @@ set_source_files_properties(
"../../../../../modules/juce_graphics/images/juce_ImageConvolutionKernel.h"
"../../../../../modules/juce_graphics/images/juce_ImageFileFormat.cpp"
"../../../../../modules/juce_graphics/images/juce_ImageFileFormat.h"
+ "../../../../../modules/juce_graphics/images/juce_ImagePixelDataNativeExtensions.h"
"../../../../../modules/juce_graphics/images/juce_ScaledImage.h"
"../../../../../modules/juce_graphics/native/juce_CoreGraphicsContext_mac.h"
"../../../../../modules/juce_graphics/native/juce_CoreGraphicsContext_mac.mm"
@@ -4110,8 +4112,6 @@ set_source_files_properties(
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.cpp"
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContext_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DGraphicsContextImpl_windows.h"
- "../../../../../modules/juce_graphics/native/juce_Direct2DHwndContext_windows.cpp"
- "../../../../../modules/juce_graphics/native/juce_Direct2DHwndContext_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DImage_windows.cpp"
"../../../../../modules/juce_graphics/native/juce_Direct2DImage_windows.h"
"../../../../../modules/juce_graphics/native/juce_Direct2DImageContext_windows.cpp"
@@ -4452,6 +4452,8 @@ set_source_files_properties(
"../../../../../modules/juce_gui_basics/native/juce_CGMetalLayerRenderer_mac.h"
"../../../../../modules/juce_gui_basics/native/juce_ContentSharer_android.cpp"
"../../../../../modules/juce_gui_basics/native/juce_ContentSharer_ios.cpp"
+ "../../../../../modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.cpp"
+ "../../../../../modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.h"
"../../../../../modules/juce_gui_basics/native/juce_DragAndDrop_linux.cpp"
"../../../../../modules/juce_gui_basics/native/juce_DragAndDrop_windows.cpp"
"../../../../../modules/juce_gui_basics/native/juce_FileChooser_android.cpp"
diff --git a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj
index 274e9bc408..03dc121a80 100644
--- a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj
+++ b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj
@@ -2118,9 +2118,6 @@
true
-
- true
-
true
@@ -2532,6 +2529,9 @@
true
+
+ true
+
true
@@ -3924,12 +3924,12 @@
+
-
@@ -4127,6 +4127,7 @@
+
diff --git a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters
index 5d3f1262a6..94395de944 100644
--- a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters
+++ b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters
@@ -2746,9 +2746,6 @@
JUCE Modules\juce_graphics\native
-
- JUCE Modules\juce_graphics\native
-
JUCE Modules\juce_graphics\native
@@ -3175,6 +3172,9 @@
JUCE Modules\juce_gui_basics\native
+
+ JUCE Modules\juce_gui_basics\native
+
JUCE Modules\juce_gui_basics\native
@@ -6684,6 +6684,9 @@
JUCE Modules\juce_graphics\images
+
+ JUCE Modules\juce_graphics\images
+
JUCE Modules\juce_graphics\images
@@ -6699,9 +6702,6 @@
JUCE Modules\juce_graphics\native
-
- JUCE Modules\juce_graphics\native
-
JUCE Modules\juce_graphics\native
@@ -7293,6 +7293,9 @@
JUCE Modules\juce_gui_basics\native
+
+ JUCE Modules\juce_gui_basics\native
+
JUCE Modules\juce_gui_basics\native
diff --git a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj
index c229899bf6..7a1e41bb71 100644
--- a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj
+++ b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj
@@ -1260,9 +1260,6 @@
true
-
- true
-
true
@@ -1674,6 +1671,9 @@
true
+
+ true
+
true
@@ -2624,12 +2624,12 @@
+
-
@@ -2827,6 +2827,7 @@
+
diff --git a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters
index b78294ea20..b834587298 100644
--- a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters
+++ b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters
@@ -1585,9 +1585,6 @@
JUCE Modules\juce_graphics\native
-
- JUCE Modules\juce_graphics\native
-
JUCE Modules\juce_graphics\native
@@ -2014,6 +2011,9 @@
JUCE Modules\juce_gui_basics\native
+
+ JUCE Modules\juce_gui_basics\native
+
JUCE Modules\juce_gui_basics\native
@@ -4326,6 +4326,9 @@
JUCE Modules\juce_graphics\images
+
+ JUCE Modules\juce_graphics\images
+
JUCE Modules\juce_graphics\images
@@ -4341,9 +4344,6 @@
JUCE Modules\juce_graphics\native
-
- JUCE Modules\juce_graphics\native
-
JUCE Modules\juce_graphics\native
@@ -4935,6 +4935,9 @@
JUCE Modules\juce_gui_basics\native
+
+ JUCE Modules\juce_gui_basics\native
+
JUCE Modules\juce_gui_basics\native
diff --git a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj
index 1ac9b9172c..6652434b4c 100644
--- a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj
+++ b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj
@@ -1260,9 +1260,6 @@
true
-
- true
-
true
@@ -1674,6 +1671,9 @@
true
+
+ true
+
true
@@ -2624,12 +2624,12 @@
+
-
@@ -2827,6 +2827,7 @@
+
diff --git a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters
index 966e4ed212..abf132d7bc 100644
--- a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters
+++ b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters
@@ -1585,9 +1585,6 @@
JUCE Modules\juce_graphics\native
-
- JUCE Modules\juce_graphics\native
-
JUCE Modules\juce_graphics\native
@@ -2014,6 +2011,9 @@
JUCE Modules\juce_gui_basics\native
+
+ JUCE Modules\juce_gui_basics\native
+
JUCE Modules\juce_gui_basics\native
@@ -4326,6 +4326,9 @@
JUCE Modules\juce_graphics\images
+
+ JUCE Modules\juce_graphics\images
+
JUCE Modules\juce_graphics\images
@@ -4341,9 +4344,6 @@
JUCE Modules\juce_graphics\native
-
- JUCE Modules\juce_graphics\native
-
JUCE Modules\juce_graphics\native
@@ -4935,6 +4935,9 @@
JUCE Modules\juce_gui_basics\native
+
+ JUCE Modules\juce_gui_basics\native
+
JUCE Modules\juce_gui_basics\native
diff --git a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj
index cc3e678b2a..649e37c1ac 100644
--- a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj
+++ b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj
@@ -2239,9 +2239,6 @@
true
-
- true
-
true
@@ -2653,6 +2650,9 @@
true
+
+ true
+
true
@@ -4171,12 +4171,12 @@
+
-
@@ -4374,6 +4374,7 @@
+
diff --git a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters
index 4a9a72339f..04e7da90cd 100644
--- a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters
+++ b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters
@@ -2947,9 +2947,6 @@
JUCE Modules\juce_graphics\native
-
- JUCE Modules\juce_graphics\native
-
JUCE Modules\juce_graphics\native
@@ -3376,6 +3373,9 @@
JUCE Modules\juce_gui_basics\native
+
+ JUCE Modules\juce_gui_basics\native
+
JUCE Modules\juce_gui_basics\native
@@ -7116,6 +7116,9 @@
JUCE Modules\juce_graphics\images
+
+ JUCE Modules\juce_graphics\images
+
JUCE Modules\juce_graphics\images
@@ -7131,9 +7134,6 @@
JUCE Modules\juce_graphics\native
-
- JUCE Modules\juce_graphics\native
-
JUCE Modules\juce_graphics\native
@@ -7725,6 +7725,9 @@
JUCE Modules\juce_gui_basics\native
+
+ JUCE Modules\juce_gui_basics\native
+
JUCE Modules\juce_gui_basics\native
diff --git a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj
index 3054c0bb13..e4b79b165b 100644
--- a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj
+++ b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj
@@ -2239,9 +2239,6 @@
true
-
- true
-
true
@@ -2653,6 +2650,9 @@
true
+
+ true
+
true
@@ -4171,12 +4171,12 @@
+
-
@@ -4374,6 +4374,7 @@
+
diff --git a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters
index f9b988ae7d..609f3d2c89 100644
--- a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters
+++ b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters
@@ -2947,9 +2947,6 @@
JUCE Modules\juce_graphics\native
-
- JUCE Modules\juce_graphics\native
-
JUCE Modules\juce_graphics\native
@@ -3376,6 +3373,9 @@
JUCE Modules\juce_gui_basics\native
+
+ JUCE Modules\juce_gui_basics\native
+
JUCE Modules\juce_gui_basics\native
@@ -7116,6 +7116,9 @@
JUCE Modules\juce_graphics\images
+
+ JUCE Modules\juce_graphics\images
+
JUCE Modules\juce_graphics\images
@@ -7131,9 +7134,6 @@
JUCE Modules\juce_graphics\native
-
- JUCE Modules\juce_graphics\native
-
JUCE Modules\juce_graphics\native
@@ -7725,6 +7725,9 @@
JUCE Modules\juce_gui_basics\native
+
+ JUCE Modules\juce_gui_basics\native
+
JUCE Modules\juce_gui_basics\native
diff --git a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_DynamicLibrary.vcxproj b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_DynamicLibrary.vcxproj
index dd97aecc27..b4562fba97 100644
--- a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_DynamicLibrary.vcxproj
+++ b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_DynamicLibrary.vcxproj
@@ -2117,9 +2117,6 @@
true
-
- true
-
true
@@ -2531,6 +2528,9 @@
true
+
+ true
+
true
@@ -3900,12 +3900,12 @@
+
-
@@ -4103,6 +4103,7 @@
+
diff --git a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_DynamicLibrary.vcxproj.filters b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_DynamicLibrary.vcxproj.filters
index f0d92e587e..6a598eb1f8 100644
--- a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_DynamicLibrary.vcxproj.filters
+++ b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_DynamicLibrary.vcxproj.filters
@@ -2743,9 +2743,6 @@
JUCE Modules\juce_graphics\native
-
- JUCE Modules\juce_graphics\native
-
JUCE Modules\juce_graphics\native
@@ -3172,6 +3169,9 @@
JUCE Modules\juce_gui_basics\native
+
+ JUCE Modules\juce_gui_basics\native
+
JUCE Modules\juce_gui_basics\native
@@ -6651,6 +6651,9 @@
JUCE Modules\juce_graphics\images
+
+ JUCE Modules\juce_graphics\images
+
JUCE Modules\juce_graphics\images
@@ -6666,9 +6669,6 @@
JUCE Modules\juce_graphics\native
-
- JUCE Modules\juce_graphics\native
-
JUCE Modules\juce_graphics\native
@@ -7260,6 +7260,9 @@
JUCE Modules\juce_gui_basics\native
+
+ JUCE Modules\juce_gui_basics\native
+
JUCE Modules\juce_gui_basics\native
diff --git a/modules/juce_graphics/images/juce_Image.cpp b/modules/juce_graphics/images/juce_Image.cpp
index 17f445b094..be6a248457 100644
--- a/modules/juce_graphics/images/juce_Image.cpp
+++ b/modules/juce_graphics/images/juce_Image.cpp
@@ -262,70 +262,6 @@ namespace BitmapDataDetail
}
}
-//==============================================================================
-/* Allows access to ImagePixelData implementation details by LowLevelGraphicsContext instances.
- The internal templating is mainly to facilitate returning a type with dynamic implementation by value.
-*/
-class ImagePixelDataNativeExtensions
-{
-public:
- template
- explicit ImagePixelDataNativeExtensions (Impl x)
- : impl (std::make_unique> (std::move (x))) {}
-
- /* For subsection images, this returns the top-left pixel inside the root image */
- Point getTopLeft() const { return impl->getTopLeft(); }
-
- #if JUCE_WINDOWS
- Span getPages (ComSmartPtr x) const { return impl->getPages (x); }
- #endif
-
- #if JUCE_MAC || JUCE_IOS
- CGContextRef getCGContext() const { return impl->getCGContext(); }
- CFUniquePtr getCGImage (CGColorSpaceRef x) const { return impl->getCGImage (x); }
- #endif
-
-private:
- struct Base
- {
- virtual ~Base() = default;
- virtual Point getTopLeft() const = 0;
-
- #if JUCE_WINDOWS
- virtual Span getPages (ComSmartPtr) const = 0;
- #endif
-
- #if JUCE_MAC || JUCE_IOS
- virtual CGContextRef getCGContext() const = 0;
- virtual CFUniquePtr getCGImage (CGColorSpaceRef x) const = 0;
- #endif
- };
-
- template
- class Concrete : public Base
- {
- public:
- explicit Concrete (Impl x)
- : impl (std::move (x)) {}
-
- Point getTopLeft() const override { return impl.getTopLeft(); }
-
- #if JUCE_WINDOWS
- Span getPages (ComSmartPtr x) const override { return impl.getPages (x); }
- #endif
-
- #if JUCE_MAC || JUCE_IOS
- CGContextRef getCGContext() const override { return impl.getCGContext(); }
- CFUniquePtr getCGImage (CGColorSpaceRef x) const override { return impl.getCGImage (x); }
- #endif
-
- private:
- Impl impl;
- };
-
- std::unique_ptr impl;
-};
-
//==============================================================================
class SubsectionPixelData : public ImagePixelData
{
diff --git a/modules/juce_graphics/images/juce_ImagePixelDataNativeExtensions.h b/modules/juce_graphics/images/juce_ImagePixelDataNativeExtensions.h
new file mode 100644
index 0000000000..8ec1d445ed
--- /dev/null
+++ b/modules/juce_graphics/images/juce_ImagePixelDataNativeExtensions.h
@@ -0,0 +1,101 @@
+/*
+ ==============================================================================
+
+ This file is part of the JUCE framework.
+ Copyright (c) Raw Material Software Limited
+
+ JUCE is an open source framework subject to commercial or open source
+ licensing.
+
+ By downloading, installing, or using the JUCE framework, or combining the
+ JUCE framework with any other source code, object code, content or any other
+ copyrightable work, you agree to the terms of the JUCE End User Licence
+ Agreement, and all incorporated terms including the JUCE Privacy Policy and
+ the JUCE Website Terms of Service, as applicable, which will bind you. If you
+ do not agree to the terms of these agreements, we will not license the JUCE
+ framework to you, and you must discontinue the installation or download
+ process and cease use of the JUCE framework.
+
+ JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
+ JUCE Privacy Policy: https://juce.com/juce-privacy-policy
+ JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
+
+ Or:
+
+ You may also use this code under the terms of the AGPLv3:
+ https://www.gnu.org/licenses/agpl-3.0.en.html
+
+ THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
+ WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
+
+ ==============================================================================
+*/
+
+namespace juce
+{
+
+/* Allows access to ImagePixelData implementation details by LowLevelGraphicsContext instances.
+ The internal templating is mainly to facilitate returning a type with dynamic implementation by value.
+*/
+class ImagePixelDataNativeExtensions
+{
+public:
+ template
+ explicit ImagePixelDataNativeExtensions (Impl x)
+ : impl (std::make_unique> (std::move (x))) {}
+
+ /* For subsection images, this returns the top-left pixel inside the root image */
+ Point getTopLeft() const { return impl->getTopLeft(); }
+
+ #if JUCE_WINDOWS
+ Span getPages (ComSmartPtr x) const { return impl->getPages (x); }
+ #endif
+
+ #if JUCE_MAC || JUCE_IOS
+ CGContextRef getCGContext() const { return impl->getCGContext(); }
+ CFUniquePtr getCGImage (CGColorSpaceRef x) const { return impl->getCGImage (x); }
+ #endif
+
+private:
+ struct Base
+ {
+ virtual ~Base() = default;
+ virtual Point getTopLeft() const = 0;
+
+ #if JUCE_WINDOWS
+ virtual Span getPages (ComSmartPtr) const = 0;
+ #endif
+
+ #if JUCE_MAC || JUCE_IOS
+ virtual CGContextRef getCGContext() const = 0;
+ virtual CFUniquePtr getCGImage (CGColorSpaceRef x) const = 0;
+ #endif
+ };
+
+ template
+ class Concrete : public Base
+ {
+ public:
+ explicit Concrete (Impl x)
+ : impl (std::move (x)) {}
+
+ Point getTopLeft() const override { return impl.getTopLeft(); }
+
+ #if JUCE_WINDOWS
+ Span getPages (ComSmartPtr x) const override { return impl.getPages (x); }
+ #endif
+
+ #if JUCE_MAC || JUCE_IOS
+ CGContextRef getCGContext() const override { return impl.getCGContext(); }
+ CFUniquePtr getCGImage (CGColorSpaceRef x) const override { return impl.getCGImage (x); }
+ #endif
+
+ private:
+ Impl impl;
+ };
+
+ std::unique_ptr impl;
+};
+
+} // namespace juce
diff --git a/modules/juce_graphics/juce_graphics.cpp b/modules/juce_graphics/juce_graphics.cpp
index 61052fe7a5..51b075acb2 100644
--- a/modules/juce_graphics/juce_graphics.cpp
+++ b/modules/juce_graphics/juce_graphics.cpp
@@ -164,6 +164,7 @@ extern "C"
#include "juce_core/zip/juce_zlib.h"
#include "native/juce_EventTracing.h"
+#include "images/juce_ImagePixelDataNativeExtensions.h"
#include "unicode/juce_UnicodeGenerated.cpp"
#include "unicode/juce_UnicodeUtils.cpp"
@@ -222,7 +223,6 @@ extern "C"
#elif JUCE_WINDOWS
#include "native/juce_Direct2DMetrics_windows.h"
#include "native/juce_Direct2DGraphicsContext_windows.h"
- #include "native/juce_Direct2DHwndContext_windows.h"
#include "native/juce_DirectX_windows.h"
#include "native/juce_Direct2DImage_windows.h"
#include "native/juce_Direct2DGraphicsContextImpl_windows.h"
@@ -231,7 +231,6 @@ extern "C"
#include "native/juce_DirectWriteTypeface_windows.cpp"
#include "native/juce_IconHelpers_windows.cpp"
#include "native/juce_Direct2DGraphicsContext_windows.cpp"
- #include "native/juce_Direct2DHwndContext_windows.cpp"
#include "native/juce_Direct2DImageContext_windows.cpp"
#include "native/juce_Direct2DImage_windows.cpp"
#include "native/juce_Direct2DMetrics_windows.cpp"
diff --git a/modules/juce_gui_basics/juce_gui_basics.cpp b/modules/juce_gui_basics/juce_gui_basics.cpp
index 77c18509d4..1ee4e70d08 100644
--- a/modules/juce_gui_basics/juce_gui_basics.cpp
+++ b/modules/juce_gui_basics/juce_gui_basics.cpp
@@ -202,9 +202,10 @@
#include
#include
#include
- #include
#include
#include
+ #include
+ #include
#include
#include
@@ -214,6 +215,8 @@
#include "native/accessibility/juce_UIAProviders_windows.h"
#include "native/accessibility/juce_AccessibilityElement_windows.cpp"
#include "native/accessibility/juce_Accessibility_windows.cpp"
+ #include "native/juce_Direct2DHwndContext_windows.h"
+ #include "native/juce_Direct2DHwndContext_windows.cpp"
#include "native/juce_WindowsHooks_windows.h"
#include "native/juce_WindowUtils_windows.cpp"
#include "native/juce_VBlank_windows.cpp"
diff --git a/modules/juce_graphics/native/juce_Direct2DHwndContext_windows.cpp b/modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.cpp
similarity index 100%
rename from modules/juce_graphics/native/juce_Direct2DHwndContext_windows.cpp
rename to modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.cpp
diff --git a/modules/juce_graphics/native/juce_Direct2DHwndContext_windows.h b/modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.h
similarity index 100%
rename from modules/juce_graphics/native/juce_Direct2DHwndContext_windows.h
rename to modules/juce_gui_basics/native/juce_Direct2DHwndContext_windows.h