mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-08 23:24:19 +00:00
MinGW: Remove support
This commit is contained in:
parent
8a4ec206f2
commit
9112911122
89 changed files with 337 additions and 1694 deletions
|
|
@ -2,6 +2,29 @@
|
|||
|
||||
# develop
|
||||
|
||||
## Change
|
||||
|
||||
Support for the MinGW toolchain has been removed.
|
||||
|
||||
**Possible Issues**
|
||||
|
||||
MinGW can no longer be used to build JUCE.
|
||||
|
||||
**Workaround**
|
||||
|
||||
On Windows, use an alternative compiler such as Clang or MSVC.
|
||||
|
||||
Cross-compiling for Windows from Linux is not supported, and there is no
|
||||
workaround for this use case.
|
||||
|
||||
**Rationale**
|
||||
|
||||
The MinGW provides a poor user experience, with very long build times and
|
||||
missing features. The high maintenance cost, both in terms of developer time,
|
||||
and continuous integration bandwidth (both of which could provide more value
|
||||
elsewhere), means that continued support for MinGW is difficult to justify.
|
||||
|
||||
|
||||
## Change
|
||||
|
||||
The GUI Editor has been removed from the Projucer.
|
||||
|
|
|
|||
|
|
@ -95,8 +95,7 @@ will be used and the cpp ignored. (And vice-versa for other platforms, of course
|
|||
Precompiled libraries can be included in a module by placing them in a libs/ subdirectory.
|
||||
The following directories are automatically added to the library search paths, and libraries
|
||||
placed in these directories can be linked with projects via the OSXLibs, iOSLibs,
|
||||
windowsLibs, linuxLibs and mingwLibs keywords in the module declaration (see the following
|
||||
section).
|
||||
windowsLibs, and linuxLibs keywords in the module declaration (see the following section).
|
||||
|
||||
- OS X
|
||||
- libs/MacOSX - to support multiple architectures, you may place libraries built as universal
|
||||
|
|
@ -115,9 +114,6 @@ section).
|
|||
- libs/Linux/{arch}, where {arch} is the architecture you are targeting with the compiler. Some
|
||||
common examples of {arch} are "x86_64", "i386" and "armv6".
|
||||
|
||||
- MinGW
|
||||
- libs/MinGW/{arch}, where {arch} can take the same values as Linux.
|
||||
|
||||
- iOS
|
||||
- libs/iOS - to support multiple architectures, you may place libraries built as universal
|
||||
binaries at this location. For backwards compatibility, the Projucer will also include the
|
||||
|
|
@ -206,10 +202,6 @@ Possible values:
|
|||
- (Optional) A list (space or comma-separated) of static or dynamic libs that should be linked in a
|
||||
linux build (these are passed to the linker via the -l flag)
|
||||
|
||||
- mingwLibs
|
||||
- (Optional) A list (space or comma-separated) of static libs that should be linked in a
|
||||
win32 mingw build (these are passed to the linker via the -l flag)
|
||||
|
||||
- OSXLibs
|
||||
- (Optional) A list (space or comma-separated) of static or dynamic libs that should be linked in an
|
||||
OS X build (these are passed to the linker via the -l flag)
|
||||
|
|
@ -238,7 +230,6 @@ Here's an example block:
|
|||
OSXFrameworks: CoreAudio CoreMIDI DiscRecording
|
||||
iOSFrameworks: CoreAudio CoreMIDI AudioToolbox AVFoundation
|
||||
linuxLibs: asound
|
||||
mingwLibs: winmm
|
||||
|
||||
END_JUCE_MODULE_DECLARATION
|
||||
|
||||
|
|
|
|||
|
|
@ -33,6 +33,5 @@
|
|||
|
||||
"OSXFrameworks": "Cocoa IOKit",
|
||||
"iOSFrameworks": "Foundation",
|
||||
"LinuxLibs": "rt dl pthread",
|
||||
"mingwLibs": "uuid wsock32 wininet version ole32 ws2_32 oleaut32 imm32 comdlg32 shlwapi rpcrt4 winmm"
|
||||
"LinuxLibs": "rt dl pthread"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2220,7 +2220,6 @@ add_library( ${BINARY_NAME}
|
|||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilitySharedCode_mac.mm"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers_test.cpp"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_ComInterfaces_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAExpandCollapseProvider_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAGridItemProvider_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAGridProvider_windows.h"
|
||||
|
|
@ -2512,7 +2511,6 @@ add_library( ${BINARY_NAME}
|
|||
"../../../../../modules/juce_video/native/juce_CameraDevice_ios.h"
|
||||
"../../../../../modules/juce_video/native/juce_CameraDevice_mac.h"
|
||||
"../../../../../modules/juce_video/native/juce_CameraDevice_windows.h"
|
||||
"../../../../../modules/juce_video/native/juce_ComTypes_windows.h"
|
||||
"../../../../../modules/juce_video/native/juce_Video_android.h"
|
||||
"../../../../../modules/juce_video/native/juce_Video_mac.h"
|
||||
"../../../../../modules/juce_video/native/juce_Video_windows.h"
|
||||
|
|
@ -4718,7 +4716,6 @@ set_source_files_properties(
|
|||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilitySharedCode_mac.mm"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers_test.cpp"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_ComInterfaces_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAExpandCollapseProvider_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAGridItemProvider_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAGridProvider_windows.h"
|
||||
|
|
@ -5010,7 +5007,6 @@ set_source_files_properties(
|
|||
"../../../../../modules/juce_video/native/juce_CameraDevice_ios.h"
|
||||
"../../../../../modules/juce_video/native/juce_CameraDevice_mac.h"
|
||||
"../../../../../modules/juce_video/native/juce_CameraDevice_windows.h"
|
||||
"../../../../../modules/juce_video/native/juce_ComTypes_windows.h"
|
||||
"../../../../../modules/juce_video/native/juce_Video_android.h"
|
||||
"../../../../../modules/juce_video/native/juce_Video_mac.h"
|
||||
"../../../../../modules/juce_video/native/juce_Video_windows.h"
|
||||
|
|
|
|||
|
|
@ -33,6 +33,5 @@
|
|||
|
||||
"OSXFrameworks": "Cocoa IOKit",
|
||||
"iOSFrameworks": "Foundation",
|
||||
"LinuxLibs": "rt dl pthread",
|
||||
"mingwLibs": "uuid wsock32 wininet version ole32 ws2_32 oleaut32 imm32 comdlg32 shlwapi rpcrt4 winmm"
|
||||
"LinuxLibs": "rt dl pthread"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4381,7 +4381,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\mouse\juce_TooltipClient.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityElement_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityTextHelpers.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_ComInterfaces_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAExpandCollapseProvider_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAGridItemProvider_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAGridProvider_windows.h"/>
|
||||
|
|
@ -4528,7 +4527,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_CameraDevice_ios.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_CameraDevice_mac.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_CameraDevice_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_ComTypes_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_Video_android.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_Video_mac.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_Video_windows.h"/>
|
||||
|
|
|
|||
|
|
@ -7767,9 +7767,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityTextHelpers.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_ComInterfaces_windows.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAExpandCollapseProvider_windows.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -8208,9 +8205,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_CameraDevice_windows.h">
|
||||
<Filter>JUCE Modules\juce_video\native</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_ComTypes_windows.h">
|
||||
<Filter>JUCE Modules\juce_video\native</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_Video_android.h">
|
||||
<Filter>JUCE Modules\juce_video\native</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -4381,7 +4381,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\mouse\juce_TooltipClient.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityElement_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityTextHelpers.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_ComInterfaces_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAExpandCollapseProvider_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAGridItemProvider_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAGridProvider_windows.h"/>
|
||||
|
|
@ -4528,7 +4527,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_CameraDevice_ios.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_CameraDevice_mac.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_CameraDevice_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_ComTypes_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_Video_android.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_Video_mac.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_Video_windows.h"/>
|
||||
|
|
|
|||
|
|
@ -7767,9 +7767,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityTextHelpers.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_ComInterfaces_windows.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAExpandCollapseProvider_windows.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -8208,9 +8205,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_CameraDevice_windows.h">
|
||||
<Filter>JUCE Modules\juce_video\native</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_ComTypes_windows.h">
|
||||
<Filter>JUCE Modules\juce_video\native</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_Video_android.h">
|
||||
<Filter>JUCE Modules\juce_video\native</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -1982,7 +1982,6 @@ add_library( ${BINARY_NAME}
|
|||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilitySharedCode_mac.mm"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers_test.cpp"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_ComInterfaces_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAExpandCollapseProvider_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAGridItemProvider_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAGridProvider_windows.h"
|
||||
|
|
@ -4162,7 +4161,6 @@ set_source_files_properties(
|
|||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilitySharedCode_mac.mm"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers_test.cpp"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_ComInterfaces_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAExpandCollapseProvider_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAGridItemProvider_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAGridProvider_windows.h"
|
||||
|
|
|
|||
|
|
@ -3852,7 +3852,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\mouse\juce_TooltipClient.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityElement_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityTextHelpers.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_ComInterfaces_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAExpandCollapseProvider_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAGridItemProvider_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAGridProvider_windows.h"/>
|
||||
|
|
|
|||
|
|
@ -6822,9 +6822,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityTextHelpers.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_ComInterfaces_windows.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAExpandCollapseProvider_windows.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -2112,7 +2112,6 @@ add_library( ${BINARY_NAME}
|
|||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilitySharedCode_mac.mm"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers_test.cpp"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_ComInterfaces_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAExpandCollapseProvider_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAGridItemProvider_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAGridProvider_windows.h"
|
||||
|
|
@ -4445,7 +4444,6 @@ set_source_files_properties(
|
|||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilitySharedCode_mac.mm"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers_test.cpp"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_ComInterfaces_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAExpandCollapseProvider_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAGridItemProvider_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAGridProvider_windows.h"
|
||||
|
|
|
|||
|
|
@ -33,6 +33,5 @@
|
|||
|
||||
"OSXFrameworks": "Cocoa IOKit",
|
||||
"iOSFrameworks": "Foundation",
|
||||
"LinuxLibs": "rt dl pthread",
|
||||
"mingwLibs": "uuid wsock32 wininet version ole32 ws2_32 oleaut32 imm32 comdlg32 shlwapi rpcrt4 winmm"
|
||||
"LinuxLibs": "rt dl pthread"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4085,7 +4085,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\mouse\juce_TooltipClient.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityElement_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityTextHelpers.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_ComInterfaces_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAExpandCollapseProvider_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAGridItemProvider_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAGridProvider_windows.h"/>
|
||||
|
|
|
|||
|
|
@ -7257,9 +7257,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityTextHelpers.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_ComInterfaces_windows.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAExpandCollapseProvider_windows.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -4085,7 +4085,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\mouse\juce_TooltipClient.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityElement_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityTextHelpers.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_ComInterfaces_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAExpandCollapseProvider_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAGridItemProvider_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAGridProvider_windows.h"/>
|
||||
|
|
|
|||
|
|
@ -7257,9 +7257,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityTextHelpers.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_ComInterfaces_windows.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAExpandCollapseProvider_windows.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -415,8 +415,6 @@ function(_juce_add_module_staticlib_paths module_target module_path)
|
|||
set(subfolder "$<IF:$<STREQUAL:${runtime_lib},MultiThreaded>,MT,${subfolder}>")
|
||||
target_link_directories(${module_target} INTERFACE
|
||||
"${module_path}/libs/VisualStudio${CMAKE_MATCH_1}/${arch}/${subfolder}")
|
||||
elseif(MSYS OR MINGW)
|
||||
_juce_add_library_path(${module_target} "${module_path}/libs/MinGW/${JUCE_TARGET_ARCHITECTURE}")
|
||||
endif()
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Android")
|
||||
_juce_add_library_path(${module_target} "${module_path}/libs/Android/${CMAKE_ANDROID_ARCH_ABI}")
|
||||
|
|
|
|||
|
|
@ -2001,7 +2001,6 @@ add_library( ${BINARY_NAME}
|
|||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilitySharedCode_mac.mm"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers_test.cpp"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_ComInterfaces_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAExpandCollapseProvider_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAGridItemProvider_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAGridProvider_windows.h"
|
||||
|
|
@ -4261,7 +4260,6 @@ set_source_files_properties(
|
|||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilitySharedCode_mac.mm"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_AccessibilityTextHelpers_test.cpp"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_ComInterfaces_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAExpandCollapseProvider_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAGridItemProvider_windows.h"
|
||||
"../../../../../modules/juce_gui_basics/native/accessibility/juce_UIAGridProvider_windows.h"
|
||||
|
|
|
|||
|
|
@ -3950,7 +3950,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\mouse\juce_TooltipClient.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityElement_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityTextHelpers.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_ComInterfaces_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAExpandCollapseProvider_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAGridItemProvider_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAGridProvider_windows.h"/>
|
||||
|
|
|
|||
|
|
@ -6984,9 +6984,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityTextHelpers.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_ComInterfaces_windows.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAExpandCollapseProvider_windows.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -2673,7 +2673,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\mouse\juce_TooltipClient.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityElement_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityTextHelpers.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_ComInterfaces_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAExpandCollapseProvider_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAGridItemProvider_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAGridProvider_windows.h"/>
|
||||
|
|
|
|||
|
|
@ -4659,9 +4659,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityTextHelpers.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_ComInterfaces_windows.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAExpandCollapseProvider_windows.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -2673,7 +2673,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\mouse\juce_TooltipClient.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityElement_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityTextHelpers.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_ComInterfaces_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAExpandCollapseProvider_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAGridItemProvider_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAGridProvider_windows.h"/>
|
||||
|
|
|
|||
|
|
@ -4659,9 +4659,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityTextHelpers.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_ComInterfaces_windows.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAExpandCollapseProvider_windows.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -267,7 +267,7 @@ public:
|
|||
//==============================================================================
|
||||
StringPairArray msvcExtraPreprocessorDefs;
|
||||
String msvcDelayLoadedDLLs;
|
||||
StringArray mingwLibs, windowsLibs;
|
||||
StringArray windowsLibs;
|
||||
|
||||
//==============================================================================
|
||||
StringArray androidLibs;
|
||||
|
|
|
|||
|
|
@ -4181,7 +4181,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\mouse\juce_TooltipClient.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityElement_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityTextHelpers.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_ComInterfaces_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAExpandCollapseProvider_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAGridItemProvider_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAGridProvider_windows.h"/>
|
||||
|
|
|
|||
|
|
@ -7371,9 +7371,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityTextHelpers.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_ComInterfaces_windows.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAExpandCollapseProvider_windows.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -4181,7 +4181,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\mouse\juce_TooltipClient.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityElement_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityTextHelpers.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_ComInterfaces_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAExpandCollapseProvider_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAGridItemProvider_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAGridProvider_windows.h"/>
|
||||
|
|
|
|||
|
|
@ -7371,9 +7371,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityTextHelpers.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_ComInterfaces_windows.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAExpandCollapseProvider_windows.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -3926,7 +3926,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\mouse\juce_TooltipClient.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityElement_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityTextHelpers.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_ComInterfaces_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAExpandCollapseProvider_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAGridItemProvider_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAGridProvider_windows.h"/>
|
||||
|
|
@ -4058,7 +4057,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_CameraDevice_ios.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_CameraDevice_mac.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_CameraDevice_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_ComTypes_windows.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_Video_android.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_Video_mac.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_Video_windows.h"/>
|
||||
|
|
|
|||
|
|
@ -6951,9 +6951,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_AccessibilityTextHelpers.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_ComInterfaces_windows.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_gui_basics\native\accessibility\juce_UIAExpandCollapseProvider_windows.h">
|
||||
<Filter>JUCE Modules\juce_gui_basics\native\accessibility</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -7347,9 +7344,6 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_CameraDevice_windows.h">
|
||||
<Filter>JUCE Modules\juce_video\native</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_ComTypes_windows.h">
|
||||
<Filter>JUCE Modules\juce_video\native</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\native\juce_Video_android.h">
|
||||
<Filter>JUCE Modules\juce_video\native</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -43,10 +43,6 @@
|
|||
|
||||
#include "juce_audio_basics.h"
|
||||
|
||||
#if JUCE_MINGW && ! defined (alloca)
|
||||
#define alloca __builtin_alloca
|
||||
#endif
|
||||
|
||||
#if JUCE_USE_SSE_INTRINSICS
|
||||
#include <emmintrin.h>
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -70,10 +70,6 @@
|
|||
#undef Factor
|
||||
|
||||
//==============================================================================
|
||||
#if JUCE_MINGW && ! defined (__SSE2__)
|
||||
#define JUCE_USE_SSE_INTRINSICS 0
|
||||
#endif
|
||||
|
||||
#ifndef JUCE_USE_SSE_INTRINSICS
|
||||
#define JUCE_USE_SSE_INTRINSICS 1
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -120,13 +120,7 @@ public:
|
|||
{
|
||||
using CallbackPtr = decltype (std::addressof (callback));
|
||||
|
||||
#if JUCE_MINGW
|
||||
#define JUCE_MINGW_HIDDEN_VISIBILITY __attribute__ ((visibility ("hidden")))
|
||||
#else
|
||||
#define JUCE_MINGW_HIDDEN_VISIBILITY
|
||||
#endif
|
||||
|
||||
struct JUCE_MINGW_HIDDEN_VISIBILITY Callback
|
||||
struct Callback
|
||||
{
|
||||
Callback (BytestreamToUMPDispatcher& d, CallbackPtr c)
|
||||
: dispatch (d), callbackPtr (c) {}
|
||||
|
|
@ -145,8 +139,6 @@ public:
|
|||
CallbackPtr callbackPtr = nullptr;
|
||||
};
|
||||
|
||||
#undef JUCE_MINGW_HIDDEN_VISIBILITY
|
||||
|
||||
Callback inputCallback { *this, &callback };
|
||||
concatenator.pushMidiData (begin, int (end - begin), timestamp, (void*) nullptr, inputCallback);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,7 +55,6 @@
|
|||
OSXFrameworks: CoreAudio CoreMIDI AudioToolbox
|
||||
iOSFrameworks: CoreAudio CoreMIDI AudioToolbox AVFoundation
|
||||
linuxPackages: alsa
|
||||
mingwLibs: winmm
|
||||
|
||||
END_JUCE_MODULE_DECLARATION
|
||||
|
||||
|
|
|
|||
|
|
@ -1104,15 +1104,11 @@ private:
|
|||
|
||||
if (asioObject != nullptr)
|
||||
{
|
||||
#if ! JUCE_MINGW
|
||||
__try
|
||||
#endif
|
||||
{
|
||||
asioObject->Release();
|
||||
}
|
||||
#if ! JUCE_MINGW
|
||||
__except (EXCEPTION_EXECUTE_HANDLER) { releasedOK = false; }
|
||||
#endif
|
||||
|
||||
asioObject = nullptr;
|
||||
}
|
||||
|
|
@ -1136,17 +1132,13 @@ private:
|
|||
|
||||
bool tryCreatingDriver (bool& crashed)
|
||||
{
|
||||
#if ! JUCE_MINGW
|
||||
__try
|
||||
#endif
|
||||
{
|
||||
return CoCreateInstance (classId, 0, CLSCTX_INPROC_SERVER,
|
||||
classId, (void**) &asioObject) == S_OK;
|
||||
}
|
||||
#if ! JUCE_MINGW
|
||||
__except (EXCEPTION_EXECUTE_HANDLER) { crashed = true; }
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
String getLastDriverError() const
|
||||
|
|
|
|||
|
|
@ -1844,15 +1844,13 @@ private:
|
|||
|
||||
//==============================================================================
|
||||
//==============================================================================
|
||||
#if ! JUCE_MINGW
|
||||
extern RTL_OSVERSIONINFOW getWindowsVersionInfo();
|
||||
#endif
|
||||
RTL_OSVERSIONINFOW getWindowsVersionInfo();
|
||||
|
||||
struct MidiService final : public DeletedAtShutdown
|
||||
{
|
||||
MidiService()
|
||||
{
|
||||
#if JUCE_USE_WINRT_MIDI && ! JUCE_MINGW
|
||||
#if JUCE_USE_WINRT_MIDI
|
||||
#if ! JUCE_FORCE_WINRT_MIDI
|
||||
auto windowsVersionInfo = getWindowsVersionInfo();
|
||||
if (windowsVersionInfo.dwMajorVersion >= 10 && windowsVersionInfo.dwBuildNumber >= 17763)
|
||||
|
|
|
|||
|
|
@ -109,21 +109,6 @@ static bool check (HRESULT hr)
|
|||
//==============================================================================
|
||||
}
|
||||
|
||||
#if JUCE_MINGW
|
||||
struct PROPERTYKEY
|
||||
{
|
||||
GUID fmtid;
|
||||
DWORD pid;
|
||||
};
|
||||
|
||||
WINOLEAPI PropVariantClear (PROPVARIANT*);
|
||||
#endif
|
||||
|
||||
#if JUCE_MINGW && defined (KSDATAFORMAT_SUBTYPE_PCM)
|
||||
#undef KSDATAFORMAT_SUBTYPE_PCM
|
||||
#undef KSDATAFORMAT_SUBTYPE_IEEE_FLOAT
|
||||
#endif
|
||||
|
||||
#ifndef KSDATAFORMAT_SUBTYPE_PCM
|
||||
#define KSDATAFORMAT_SUBTYPE_PCM uuidFromString ("00000001-0000-0010-8000-00aa00389b71")
|
||||
#define KSDATAFORMAT_SUBTYPE_IEEE_FLOAT uuidFromString ("00000003-0000-0010-8000-00aa00389b71")
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@
|
|||
#define JUCE_USE_WINDOWS_MEDIA_FORMAT 1
|
||||
#endif
|
||||
|
||||
#if ! JUCE_WINDOWS || JUCE_MINGW
|
||||
#if ! JUCE_WINDOWS
|
||||
#undef JUCE_USE_WINDOWS_MEDIA_FORMAT
|
||||
#define JUCE_USE_WINDOWS_MEDIA_FORMAT 0
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ struct PluginUtilities
|
|||
// NB: Nasty old-fashioned code in here because it's copied from the Steinberg example code.
|
||||
static void getUUIDForVST2ID (bool forControllerUID, uint8 uuid[16])
|
||||
{
|
||||
#if JUCE_WINDOWS && ! JUCE_MINGW
|
||||
#if JUCE_WINDOWS
|
||||
const auto juce_sprintf = [] (auto&& head, auto&&... tail) { sprintf_s (head, (size_t) numElementsInArray (head), tail...); };
|
||||
const auto juce_strcpy = [] (auto&& head, auto&&... tail) { strcpy_s (head, (size_t) numElementsInArray (head), tail...); };
|
||||
const auto juce_strcat = [] (auto&& head, auto&&... tail) { strcat_s (head, (size_t) numElementsInArray (head), tail...); };
|
||||
|
|
|
|||
|
|
@ -2707,7 +2707,7 @@ AAX_Result JUCE_CDECL GetEffectDescriptions (AAX_ICollection* collection)
|
|||
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
|
||||
|
||||
//==============================================================================
|
||||
#if _MSC_VER || JUCE_MINGW
|
||||
#if _MSC_VER
|
||||
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wmissing-prototypes")
|
||||
extern "C" BOOL WINAPI DllMain (HINSTANCE instance, DWORD reason, LPVOID) { if (reason == DLL_PROCESS_ATTACH) Process::setCurrentModuleInstanceHandle (instance); return true; }
|
||||
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
|
||||
|
|
|
|||
|
|
@ -71,19 +71,6 @@ extern "C"
|
|||
#include "serd/src/n3.c"
|
||||
#undef TRY
|
||||
|
||||
// node.c will replace isnan and isinf with _isnan and _finite if the former symbols are undefined.
|
||||
// MinGW declares these as normal functions rather than as preprocessor definitions, causing the build to fail.
|
||||
#if defined (_WIN32) && defined (__GNUC__)
|
||||
|
||||
namespace Utils
|
||||
{
|
||||
inline int _isnan (double x) noexcept { return isnan (x); }
|
||||
inline int _finite (double x) noexcept { return ! isinf (x); }
|
||||
} // namespace Utils
|
||||
|
||||
using namespace Utils;
|
||||
#endif
|
||||
|
||||
#include "serd/src/node.c"
|
||||
#include "serd/src/reader.c"
|
||||
#include "serd/src/string.c"
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@
|
|||
#undef PRAGMA_ALIGN_SUPPORTED
|
||||
|
||||
|
||||
#if ! JUCE_MINGW && ! JUCE_MSVC
|
||||
#if ! JUCE_MSVC
|
||||
#define __cdecl
|
||||
#endif
|
||||
|
||||
|
|
@ -71,11 +71,7 @@ JUCE_BEGIN_IGNORE_WARNINGS_MSVC (4355)
|
|||
|
||||
#include "juce_VSTMidiEventList.h"
|
||||
|
||||
#if JUCE_MINGW
|
||||
#ifndef WM_APPCOMMAND
|
||||
#define WM_APPCOMMAND 0x0319
|
||||
#endif
|
||||
#elif ! JUCE_WINDOWS
|
||||
#if ! JUCE_WINDOWS
|
||||
static void _fpreset() {}
|
||||
static void _clearfp() {}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -47,10 +47,6 @@
|
|||
#include <stdarg.h>
|
||||
|
||||
#include <inttypes.h>
|
||||
#if JUCE_MINGW
|
||||
#undef PRId64
|
||||
#define PRId64 "lld"
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
|
|
|
|||
|
|
@ -61,18 +61,12 @@
|
|||
#if JUCE_WINDOWS
|
||||
#include <ctime>
|
||||
|
||||
#if JUCE_MINGW
|
||||
#include <ws2spi.h>
|
||||
#include <cstdio>
|
||||
#include <locale.h>
|
||||
#else
|
||||
JUCE_BEGIN_IGNORE_WARNINGS_MSVC (4091)
|
||||
#include <Dbghelp.h>
|
||||
JUCE_END_IGNORE_WARNINGS_MSVC
|
||||
JUCE_BEGIN_IGNORE_WARNINGS_MSVC (4091)
|
||||
#include <Dbghelp.h>
|
||||
JUCE_END_IGNORE_WARNINGS_MSVC
|
||||
|
||||
#if ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
|
||||
#pragma comment (lib, "DbgHelp.lib")
|
||||
#endif
|
||||
#if ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
|
||||
#pragma comment (lib, "DbgHelp.lib")
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -55,7 +55,6 @@
|
|||
OSXFrameworks: Cocoa Foundation IOKit Security
|
||||
iOSFrameworks: Foundation
|
||||
linuxLibs: rt dl pthread
|
||||
mingwLibs: uuid wsock32 wininet version ole32 ws2_32 oleaut32 imm32 comdlg32 shlwapi rpcrt4 winmm
|
||||
|
||||
END_JUCE_MODULE_DECLARATION
|
||||
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ using uint32 = unsigned int;
|
|||
using pointer_sized_uint = unsigned int;
|
||||
#endif
|
||||
|
||||
#if JUCE_WINDOWS && ! JUCE_MINGW
|
||||
#if JUCE_WINDOWS
|
||||
using ssize_t = pointer_sized_int;
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -128,16 +128,8 @@
|
|||
#include <mmsystem.h>
|
||||
#include <winioctl.h>
|
||||
|
||||
#if JUCE_MINGW
|
||||
#include <basetyps.h>
|
||||
#include <sys/time.h>
|
||||
#ifndef alloca
|
||||
#define alloca __builtin_alloca
|
||||
#endif
|
||||
#else
|
||||
#include <crtdbg.h>
|
||||
#include <comutil.h>
|
||||
#endif
|
||||
#include <crtdbg.h>
|
||||
#include <comutil.h>
|
||||
|
||||
#ifndef S_FALSE
|
||||
#define S_FALSE (1) // (apparently some obscure win32 dev environments don't define this)
|
||||
|
|
@ -150,7 +142,7 @@
|
|||
#pragma warning (4: 4511 4512 4100)
|
||||
#endif
|
||||
|
||||
#if ! JUCE_MINGW && ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
|
||||
#if ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
|
||||
#pragma comment (lib, "kernel32.lib")
|
||||
#pragma comment (lib, "user32.lib")
|
||||
#pragma comment (lib, "wininet.lib")
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
namespace juce
|
||||
{
|
||||
|
||||
#if (JUCE_MINGW && JUCE_32BIT) || (! defined (_MSC_VER) && ! defined (__uuidof))
|
||||
#if ! defined (_MSC_VER) && ! defined (__uuidof)
|
||||
#ifdef __uuidof
|
||||
#undef __uuidof
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -547,13 +547,8 @@ namespace MACAddressHelpers
|
|||
|
||||
static void split (const sockaddr_in6* sa_in6, int off, uint8* split)
|
||||
{
|
||||
#if JUCE_MINGW
|
||||
split[0] = sa_in6->sin6_addr._S6_un._S6_u8[off + 1];
|
||||
split[1] = sa_in6->sin6_addr._S6_un._S6_u8[off];
|
||||
#else
|
||||
split[0] = sa_in6->sin6_addr.u.Byte[off + 1];
|
||||
split[1] = sa_in6->sin6_addr.u.Byte[off];
|
||||
#endif
|
||||
}
|
||||
|
||||
static IPAddress createAddress (const sockaddr_in6* sa_in6)
|
||||
|
|
|
|||
|
|
@ -48,13 +48,6 @@ void Logger::outputDebugString (const String& text)
|
|||
|
||||
static int findNumberOfPhysicalCores() noexcept
|
||||
{
|
||||
#if JUCE_MINGW
|
||||
// Not implemented in MinGW
|
||||
jassertfalse;
|
||||
|
||||
return 1;
|
||||
#else
|
||||
|
||||
DWORD bufferSize = 0;
|
||||
GetLogicalProcessorInformation (nullptr, &bufferSize);
|
||||
|
||||
|
|
@ -78,8 +71,6 @@ static int findNumberOfPhysicalCores() noexcept
|
|||
{
|
||||
return info.Relationship == RelationProcessorCore;
|
||||
});
|
||||
|
||||
#endif // JUCE_MINGW
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
|
|
@ -89,7 +80,7 @@ static int findNumberOfPhysicalCores() noexcept
|
|||
#pragma intrinsic (__rdtsc)
|
||||
#endif
|
||||
|
||||
#if JUCE_MINGW || JUCE_CLANG
|
||||
#if JUCE_CLANG
|
||||
static void callCPUID (int result[4], uint32 type)
|
||||
{
|
||||
uint32 la = (uint32) result[0], lb = (uint32) result[1],
|
||||
|
|
@ -253,66 +244,34 @@ static DebugFlagsInitialiser debugFlagsInitialiser;
|
|||
#endif
|
||||
|
||||
//==============================================================================
|
||||
#if JUCE_MINGW
|
||||
static uint64 getWindowsVersion()
|
||||
{
|
||||
auto filename = _T ("kernel32.dll");
|
||||
DWORD handle = 0;
|
||||
RTL_OSVERSIONINFOW getWindowsVersionInfo();
|
||||
RTL_OSVERSIONINFOW getWindowsVersionInfo()
|
||||
{
|
||||
RTL_OSVERSIONINFOW versionInfo = {};
|
||||
|
||||
if (auto size = GetFileVersionInfoSize (filename, &handle))
|
||||
{
|
||||
HeapBlock<char> data (size);
|
||||
if (auto* moduleHandle = ::GetModuleHandleW (L"ntdll.dll"))
|
||||
{
|
||||
using RtlGetVersion = LONG (WINAPI*) (PRTL_OSVERSIONINFOW);
|
||||
|
||||
if (GetFileVersionInfo (filename, handle, size, data))
|
||||
{
|
||||
VS_FIXEDFILEINFO* info = nullptr;
|
||||
UINT verSize = 0;
|
||||
if (auto* rtlGetVersion = (RtlGetVersion) ::GetProcAddress (moduleHandle, "RtlGetVersion"))
|
||||
{
|
||||
versionInfo.dwOSVersionInfoSize = sizeof (versionInfo);
|
||||
LONG STATUS_SUCCESS = 0;
|
||||
|
||||
if (VerQueryValue (data, (LPCTSTR) _T ("\\"), (void**) &info, &verSize))
|
||||
if (size > 0 && info != nullptr && info->dwSignature == 0xfeef04bd)
|
||||
return ((uint64) info->dwFileVersionMS << 32) | (uint64) info->dwFileVersionLS;
|
||||
}
|
||||
}
|
||||
if (rtlGetVersion (&versionInfo) != STATUS_SUCCESS)
|
||||
versionInfo = {};
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
RTL_OSVERSIONINFOW getWindowsVersionInfo();
|
||||
RTL_OSVERSIONINFOW getWindowsVersionInfo()
|
||||
{
|
||||
RTL_OSVERSIONINFOW versionInfo = {};
|
||||
|
||||
if (auto* moduleHandle = ::GetModuleHandleW (L"ntdll.dll"))
|
||||
{
|
||||
using RtlGetVersion = LONG (WINAPI*) (PRTL_OSVERSIONINFOW);
|
||||
|
||||
if (auto* rtlGetVersion = (RtlGetVersion) ::GetProcAddress (moduleHandle, "RtlGetVersion"))
|
||||
{
|
||||
versionInfo.dwOSVersionInfoSize = sizeof (versionInfo);
|
||||
LONG STATUS_SUCCESS = 0;
|
||||
|
||||
if (rtlGetVersion (&versionInfo) != STATUS_SUCCESS)
|
||||
versionInfo = {};
|
||||
}
|
||||
}
|
||||
|
||||
return versionInfo;
|
||||
}
|
||||
#endif
|
||||
return versionInfo;
|
||||
}
|
||||
|
||||
SystemStats::OperatingSystemType SystemStats::getOperatingSystemType()
|
||||
{
|
||||
#if JUCE_MINGW
|
||||
const auto v = getWindowsVersion();
|
||||
const auto major = (v >> 48) & 0xffff;
|
||||
const auto minor = (v >> 32) & 0xffff;
|
||||
const auto build = (v >> 16) & 0xffff;
|
||||
#else
|
||||
const auto versionInfo = getWindowsVersionInfo();
|
||||
const auto major = versionInfo.dwMajorVersion;
|
||||
const auto minor = versionInfo.dwMinorVersion;
|
||||
const auto build = versionInfo.dwBuildNumber;
|
||||
#endif
|
||||
|
||||
jassert (major <= 10); // need to add support for new version!
|
||||
|
||||
|
|
|
|||
|
|
@ -338,7 +338,7 @@ namespace SocketHelpers
|
|||
|
||||
auto h = handle.load();
|
||||
|
||||
#if JUCE_WINDOWS || JUCE_MINGW
|
||||
#if JUCE_WINDOWS
|
||||
struct timeval timeout;
|
||||
struct timeval* timeoutp;
|
||||
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@
|
|||
/** Quote the argument, turning it into a string. */
|
||||
#define JUCE_TO_STRING(x) #x
|
||||
|
||||
#if JUCE_CLANG || JUCE_GCC || JUCE_MINGW
|
||||
#if JUCE_CLANG || JUCE_GCC
|
||||
#define JUCE_IGNORE_GCC_IMPL_(compiler, warning)
|
||||
#define JUCE_IGNORE_GCC_IMPL_0(compiler, warning)
|
||||
#define JUCE_IGNORE_GCC_IMPL_1(compiler, warning) \
|
||||
|
|
|
|||
|
|
@ -128,11 +128,6 @@ JUCE_BEGIN_IGNORE_WARNINGS_MSVC (4514 4245 4100)
|
|||
|
||||
JUCE_END_IGNORE_WARNINGS_MSVC
|
||||
|
||||
#if JUCE_MINGW
|
||||
#include <cstring>
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
|
||||
#if JUCE_ANDROID
|
||||
#include <cstring>
|
||||
#include <byteswap.h>
|
||||
|
|
|
|||
|
|
@ -190,7 +190,7 @@ String SystemStats::getStackBacktrace()
|
|||
{
|
||||
String result;
|
||||
|
||||
#if JUCE_ANDROID || JUCE_MINGW || JUCE_WASM
|
||||
#if JUCE_ANDROID || JUCE_WASM
|
||||
jassertfalse; // sorry, not implemented yet!
|
||||
|
||||
#elif JUCE_WINDOWS
|
||||
|
|
|
|||
|
|
@ -111,6 +111,7 @@
|
|||
|
||||
#ifdef __MINGW32__
|
||||
#define JUCE_MINGW 1
|
||||
#warning Support for MinGW has been removed. Please use an alternative compiler.
|
||||
#ifdef __MINGW64__
|
||||
#define JUCE_64BIT 1
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -275,7 +275,7 @@ public:
|
|||
|
||||
int compareIgnoreCase (const CharPointer_ASCII other) const
|
||||
{
|
||||
#if JUCE_MINGW || (JUCE_WINDOWS && JUCE_CLANG)
|
||||
#if JUCE_WINDOWS && JUCE_CLANG
|
||||
return CharacterFunctions::compareIgnoreCase (*this, other);
|
||||
#elif JUCE_WINDOWS
|
||||
return stricmp (data, other.data);
|
||||
|
|
@ -345,7 +345,7 @@ public:
|
|||
/** Parses this string as a 64-bit integer. */
|
||||
int64 getIntValue64() const noexcept
|
||||
{
|
||||
#if JUCE_LINUX || JUCE_BSD || JUCE_ANDROID || JUCE_MINGW
|
||||
#if JUCE_LINUX || JUCE_BSD || JUCE_ANDROID
|
||||
return atoll (data);
|
||||
#elif JUCE_WINDOWS
|
||||
return _atoi64 (data);
|
||||
|
|
|
|||
|
|
@ -478,7 +478,7 @@ public:
|
|||
/** Parses this string as a 64-bit integer. */
|
||||
int64 getIntValue64() const noexcept
|
||||
{
|
||||
#if JUCE_WINDOWS && ! JUCE_MINGW
|
||||
#if JUCE_WINDOWS
|
||||
return _atoi64 (data);
|
||||
#else
|
||||
return atoll (data);
|
||||
|
|
|
|||
|
|
@ -447,8 +447,6 @@ public:
|
|||
CHARPTR_DOUBLE_PAIR_COMBOS (1.7976931348623157e+308),
|
||||
CHARPTR_DOUBLE_PAIR_COMBOS (2.2250738585072014e-308),
|
||||
|
||||
// Too many sig figs. The parsing routine on MinGW gets the last
|
||||
// significant figure wrong.
|
||||
CHARPTR_DOUBLE_PAIR_COMBOS (17654321098765432.9),
|
||||
CHARPTR_DOUBLE_PAIR_COMBOS (183456789012345678.9),
|
||||
CHARPTR_DOUBLE_PAIR_COMBOS (1934567890123456789.9),
|
||||
|
|
|
|||
|
|
@ -161,12 +161,11 @@ public:
|
|||
constexpr auto inf = std::numeric_limits<double>::infinity();
|
||||
|
||||
bool isNegative = false;
|
||||
#if ! JUCE_MINGW
|
||||
|
||||
constexpr const int maxSignificantDigits = 17 + 1; // An additional digit for rounding
|
||||
constexpr const int bufferSize = maxSignificantDigits + 7 + 1; // -.E-XXX and a trailing null-terminator
|
||||
char buffer[(size_t) bufferSize] = {};
|
||||
char* writePtr = &(buffer[0]);
|
||||
#endif
|
||||
|
||||
const auto endOfWhitspace = text.findEndOfWhitespace();
|
||||
text = endOfWhitspace;
|
||||
|
|
@ -177,9 +176,7 @@ public:
|
|||
{
|
||||
case '-':
|
||||
isNegative = true;
|
||||
#if ! JUCE_MINGW
|
||||
*writePtr++ = '-';
|
||||
#endif
|
||||
JUCE_FALLTHROUGH
|
||||
case '+':
|
||||
c = *++text;
|
||||
|
|
@ -220,113 +217,6 @@ public:
|
|||
break;
|
||||
}
|
||||
|
||||
#if JUCE_MINGW
|
||||
// MinGW does not have access to the locale functions required for strtold, so we parse the doubles
|
||||
// ourselves. There are some edge cases where the least significant digit will be wrong!
|
||||
double result[3] = { 0 }, accumulator[2] = { 0 };
|
||||
int exponentAdjustment[2] = { 0 }, exponentAccumulator[2] = { -1, -1 };
|
||||
int exponent = 0, decPointIndex = 0, digit = 0;
|
||||
int lastDigit = 0, numSignificantDigits = 0;
|
||||
bool digitsFound = false;
|
||||
constexpr const int maxSignificantDigits = 17 + 1;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if (text.isDigit())
|
||||
{
|
||||
lastDigit = digit;
|
||||
digit = (int) text.getAndAdvance() - '0';
|
||||
digitsFound = true;
|
||||
|
||||
if (decPointIndex != 0)
|
||||
exponentAdjustment[1]++;
|
||||
|
||||
if (numSignificantDigits == 0 && digit == 0)
|
||||
continue;
|
||||
|
||||
if (++numSignificantDigits > maxSignificantDigits)
|
||||
{
|
||||
if (digit > 5)
|
||||
++accumulator [decPointIndex];
|
||||
else if (digit == 5 && (lastDigit & 1) != 0)
|
||||
++accumulator [decPointIndex];
|
||||
|
||||
if (decPointIndex > 0)
|
||||
exponentAdjustment[1]--;
|
||||
else
|
||||
exponentAdjustment[0]++;
|
||||
|
||||
while (text.isDigit())
|
||||
{
|
||||
++text;
|
||||
if (decPointIndex == 0)
|
||||
exponentAdjustment[0]++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
const auto maxAccumulatorValue = (double) ((std::numeric_limits<unsigned int>::max() - 9) / 10);
|
||||
if (accumulator [decPointIndex] > maxAccumulatorValue)
|
||||
{
|
||||
result [decPointIndex] = mulexp10 (result [decPointIndex], exponentAccumulator [decPointIndex])
|
||||
+ accumulator [decPointIndex];
|
||||
accumulator [decPointIndex] = 0;
|
||||
exponentAccumulator [decPointIndex] = 0;
|
||||
}
|
||||
|
||||
accumulator [decPointIndex] = accumulator[decPointIndex] * 10 + digit;
|
||||
exponentAccumulator [decPointIndex]++;
|
||||
}
|
||||
}
|
||||
else if (decPointIndex == 0 && *text == '.')
|
||||
{
|
||||
++text;
|
||||
decPointIndex = 1;
|
||||
|
||||
if (numSignificantDigits > maxSignificantDigits)
|
||||
{
|
||||
while (text.isDigit())
|
||||
++text;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
result[0] = mulexp10 (result[0], exponentAccumulator[0]) + accumulator[0];
|
||||
|
||||
if (decPointIndex != 0)
|
||||
result[1] = mulexp10 (result[1], exponentAccumulator[1]) + accumulator[1];
|
||||
|
||||
c = *text;
|
||||
if ((c == 'e' || c == 'E') && digitsFound)
|
||||
{
|
||||
auto negativeExponent = false;
|
||||
|
||||
switch (*++text)
|
||||
{
|
||||
case '-': negativeExponent = true; JUCE_FALLTHROUGH
|
||||
case '+': ++text;
|
||||
}
|
||||
|
||||
while (text.isDigit())
|
||||
exponent = (exponent * 10) + ((int) text.getAndAdvance() - '0');
|
||||
|
||||
if (negativeExponent)
|
||||
exponent = -exponent;
|
||||
}
|
||||
|
||||
auto r = mulexp10 (result[0], exponent + exponentAdjustment[0]);
|
||||
if (decPointIndex != 0)
|
||||
r += mulexp10 (result[1], exponent - exponentAdjustment[1]);
|
||||
|
||||
return isNegative ? -r : r;
|
||||
|
||||
#else // ! JUCE_MINGW
|
||||
|
||||
int numSigFigs = 0, extraExponent = 0;
|
||||
bool decimalPointFound = false, leadingZeros = false;
|
||||
|
||||
|
|
@ -460,8 +350,6 @@ public:
|
|||
return strtod_l (&buffer[0], nullptr, locale);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif // JUCE_MINGW
|
||||
}
|
||||
|
||||
/** Parses a character string, to read a floating-point value. */
|
||||
|
|
|
|||
|
|
@ -39,11 +39,7 @@ namespace TimeHelpers
|
|||
{
|
||||
static std::tm millisToLocal (int64 millis) noexcept
|
||||
{
|
||||
#if JUCE_WINDOWS && JUCE_MINGW
|
||||
auto now = (time_t) (millis / 1000);
|
||||
return *localtime (&now);
|
||||
|
||||
#elif JUCE_WINDOWS
|
||||
#if JUCE_WINDOWS
|
||||
std::tm result;
|
||||
millis /= 1000;
|
||||
|
||||
|
|
@ -65,11 +61,7 @@ namespace TimeHelpers
|
|||
|
||||
static std::tm millisToUTC (int64 millis) noexcept
|
||||
{
|
||||
#if JUCE_WINDOWS && JUCE_MINGW
|
||||
auto now = (time_t) (millis / 1000);
|
||||
return *gmtime (&now);
|
||||
|
||||
#elif JUCE_WINDOWS
|
||||
#if JUCE_WINDOWS
|
||||
std::tm result;
|
||||
millis /= 1000;
|
||||
|
||||
|
|
@ -231,7 +223,7 @@ Time::Time (int year, int month, int day,
|
|||
//==============================================================================
|
||||
int64 Time::currentTimeMillis() noexcept
|
||||
{
|
||||
#if JUCE_WINDOWS && ! JUCE_MINGW
|
||||
#if JUCE_WINDOWS
|
||||
struct _timeb t;
|
||||
_ftime_s (&t);
|
||||
return ((int64) t.time) * 1000 + t.millitm;
|
||||
|
|
|
|||
|
|
@ -294,7 +294,7 @@ bool JUCEApplicationBase::initialiseApp()
|
|||
}
|
||||
#endif
|
||||
|
||||
#if JUCE_WINDOWS && (! defined (_CONSOLE)) && (! JUCE_MINGW)
|
||||
#if JUCE_WINDOWS && (! defined (_CONSOLE))
|
||||
if (isStandaloneApp() && AttachConsole (ATTACH_PARENT_PROCESS) != 0)
|
||||
{
|
||||
// if we've launched a GUI app from cmd.exe or PowerShell, we need this to enable printf etc.
|
||||
|
|
|
|||
|
|
@ -40,10 +40,6 @@ JUCE_BEGIN_IGNORE_WARNINGS_MSVC (4365 6240 6326 6386 6385 28182 28183 6387 6011
|
|||
namespace jpeglibNamespace
|
||||
{
|
||||
#if JUCE_INCLUDE_JPEGLIB_CODE || ! defined (JUCE_INCLUDE_JPEGLIB_CODE)
|
||||
#if JUCE_MINGW
|
||||
typedef unsigned char boolean;
|
||||
#endif
|
||||
|
||||
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wconversion",
|
||||
"-Wdeprecated-register",
|
||||
"-Wdeprecated-declarations",
|
||||
|
|
|
|||
|
|
@ -94,13 +94,6 @@
|
|||
#include <evntrace.h>
|
||||
#endif
|
||||
|
||||
#if JUCE_MINGW
|
||||
// Some MinGW headers use 'new' as a parameter name
|
||||
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wkeyword-macro")
|
||||
#define new new_
|
||||
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
|
||||
#endif
|
||||
|
||||
#include <uiautomation.h>
|
||||
|
||||
#undef new
|
||||
|
|
@ -110,9 +103,7 @@
|
|||
#include <exdispid.h>
|
||||
#endif
|
||||
|
||||
#if JUCE_MINGW
|
||||
#include <imm.h>
|
||||
#elif ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
|
||||
#if ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
|
||||
#pragma comment(lib, "vfw32.lib")
|
||||
#pragma comment(lib, "imm32.lib")
|
||||
#pragma comment(lib, "comctl32.lib")
|
||||
|
|
@ -192,7 +183,6 @@
|
|||
#elif JUCE_WINDOWS
|
||||
#include <juce_graphics/native/juce_DirectX_windows.h>
|
||||
|
||||
#include "native/accessibility/juce_ComInterfaces_windows.h"
|
||||
#include "native/accessibility/juce_WindowsUIAWrapper_windows.h"
|
||||
#include "native/accessibility/juce_AccessibilityElement_windows.h"
|
||||
#include "native/accessibility/juce_UIAHelpers_windows.h"
|
||||
|
|
|
|||
|
|
@ -56,7 +56,6 @@
|
|||
WeakOSXFrameworks: Metal MetalKit
|
||||
iOSFrameworks: CoreServices UIKit
|
||||
WeakiOSFrameworks: Metal MetalKit
|
||||
mingwLibs: dxgi
|
||||
|
||||
END_JUCE_MODULE_DECLARATION
|
||||
|
||||
|
|
|
|||
|
|
@ -41,12 +41,12 @@ int AccessibilityNativeHandle::idCounter = 0;
|
|||
|
||||
//==============================================================================
|
||||
class UIAScrollProvider final : public UIAProviderBase,
|
||||
public ComBaseClassHelper<ComTypes::IScrollProvider>
|
||||
public ComBaseClassHelper<IScrollProvider>
|
||||
{
|
||||
public:
|
||||
using UIAProviderBase::UIAProviderBase;
|
||||
|
||||
JUCE_COMCALL Scroll (ComTypes::ScrollAmount, ComTypes::ScrollAmount) override { return E_FAIL; }
|
||||
JUCE_COMCALL Scroll (ScrollAmount, ScrollAmount) override { return E_FAIL; }
|
||||
JUCE_COMCALL SetScrollPercent (double, double) override { return E_FAIL; }
|
||||
JUCE_COMCALL get_HorizontalScrollPercent (double*) override { return E_FAIL; }
|
||||
JUCE_COMCALL get_VerticalScrollPercent (double*) override { return E_FAIL; }
|
||||
|
|
@ -60,7 +60,7 @@ private:
|
|||
};
|
||||
|
||||
class UIAScrollItemProvider final : public UIAProviderBase,
|
||||
public ComBaseClassHelper<ComTypes::IScrollItemProvider>
|
||||
public ComBaseClassHelper<IScrollItemProvider>
|
||||
{
|
||||
public:
|
||||
using UIAProviderBase::UIAProviderBase;
|
||||
|
|
@ -105,8 +105,6 @@ static String getAutomationId (const AccessibilityHandler& handler)
|
|||
|
||||
static auto roleToControlTypeId (AccessibilityRole roleType)
|
||||
{
|
||||
using namespace ComTypes::Constants;
|
||||
|
||||
switch (roleType)
|
||||
{
|
||||
case AccessibilityRole::popupMenu:
|
||||
|
|
@ -163,7 +161,7 @@ JUCE_COMRESULT AccessibilityNativeHandle::QueryInterface (REFIID refId, void** r
|
|||
if (! isElementValid())
|
||||
return (HRESULT) UIA_E_ELEMENTNOTAVAILABLE;
|
||||
|
||||
if ((refId == __uuidof (ComTypes::IRawElementProviderFragmentRoot) && ! isFragmentRoot()))
|
||||
if ((refId == __uuidof (IRawElementProviderFragmentRoot) && ! isFragmentRoot()))
|
||||
return E_NOINTERFACE;
|
||||
|
||||
return ComBaseClassHelper::QueryInterface (refId, result);
|
||||
|
|
@ -225,8 +223,6 @@ JUCE_COMRESULT AccessibilityNativeHandle::GetPatternProvider (PATTERNID pId, IUn
|
|||
return false;
|
||||
};
|
||||
|
||||
using namespace ComTypes::Constants;
|
||||
|
||||
switch (pId)
|
||||
{
|
||||
case UIA_WindowPatternId:
|
||||
|
|
@ -306,7 +302,7 @@ JUCE_COMRESULT AccessibilityNativeHandle::GetPatternProvider (PATTERNID pId, IUn
|
|||
{
|
||||
if (accessibilityHandler.getTableInterface() != nullptr
|
||||
&& (pId == UIA_GridPatternId || accessibilityHandler.getRole() == AccessibilityRole::table))
|
||||
return static_cast<ComTypes::IGridProvider*> (new UIAGridProvider (this));
|
||||
return static_cast<IGridProvider*> (new UIAGridProvider (this));
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
@ -314,7 +310,7 @@ JUCE_COMRESULT AccessibilityNativeHandle::GetPatternProvider (PATTERNID pId, IUn
|
|||
case UIA_GridItemPatternId:
|
||||
{
|
||||
if (isListOrTableCell (accessibilityHandler))
|
||||
return static_cast<ComTypes::IGridItemProvider*> (new UIAGridItemProvider (this));
|
||||
return static_cast<IGridItemProvider*> (new UIAGridItemProvider (this));
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
@ -366,8 +362,6 @@ JUCE_COMRESULT AccessibilityNativeHandle::GetPropertyValue (PROPERTYID propertyI
|
|||
const auto state = accessibilityHandler.getCurrentState();
|
||||
const auto ignored = accessibilityHandler.isIgnored();
|
||||
|
||||
using namespace ComTypes::Constants;
|
||||
|
||||
switch (propertyId)
|
||||
{
|
||||
case UIA_AutomationIdPropertyId:
|
||||
|
|
@ -438,27 +432,27 @@ JUCE_COMRESULT AccessibilityNativeHandle::GetPropertyValue (PROPERTYID propertyI
|
|||
}
|
||||
|
||||
//==============================================================================
|
||||
JUCE_COMRESULT AccessibilityNativeHandle::Navigate (ComTypes::NavigateDirection direction, ComTypes::IRawElementProviderFragment** pRetVal)
|
||||
JUCE_COMRESULT AccessibilityNativeHandle::Navigate (NavigateDirection direction, IRawElementProviderFragment** pRetVal)
|
||||
{
|
||||
return withCheckedComArgs (pRetVal, *this, [&]
|
||||
{
|
||||
auto* handler = [&]() -> AccessibilityHandler*
|
||||
{
|
||||
if (direction == ComTypes::NavigateDirection_Parent)
|
||||
if (direction == NavigateDirection_Parent)
|
||||
return accessibilityHandler.getParent();
|
||||
|
||||
if (direction == ComTypes::NavigateDirection_FirstChild
|
||||
|| direction == ComTypes::NavigateDirection_LastChild)
|
||||
if (direction == NavigateDirection_FirstChild
|
||||
|| direction == NavigateDirection_LastChild)
|
||||
{
|
||||
auto children = accessibilityHandler.getChildren();
|
||||
|
||||
return children.empty() ? nullptr
|
||||
: (direction == ComTypes::NavigateDirection_FirstChild ? children.front()
|
||||
: children.back());
|
||||
: (direction == NavigateDirection_FirstChild ? children.front()
|
||||
: children.back());
|
||||
}
|
||||
|
||||
if (direction == ComTypes::NavigateDirection_NextSibling
|
||||
|| direction == ComTypes::NavigateDirection_PreviousSibling)
|
||||
if (direction == NavigateDirection_NextSibling
|
||||
|| direction == NavigateDirection_PreviousSibling)
|
||||
{
|
||||
if (auto* parent = accessibilityHandler.getParent())
|
||||
{
|
||||
|
|
@ -468,10 +462,10 @@ JUCE_COMRESULT AccessibilityNativeHandle::Navigate (ComTypes::NavigateDirection
|
|||
if (iter == siblings.end())
|
||||
return nullptr;
|
||||
|
||||
if (direction == ComTypes::NavigateDirection_NextSibling && iter != std::prev (siblings.cend()))
|
||||
if (direction == NavigateDirection_NextSibling && iter != std::prev (siblings.cend()))
|
||||
return *std::next (iter);
|
||||
|
||||
if (direction == ComTypes::NavigateDirection_PreviousSibling && iter != siblings.cbegin())
|
||||
if (direction == NavigateDirection_PreviousSibling && iter != siblings.cbegin())
|
||||
return *std::prev (iter);
|
||||
}
|
||||
}
|
||||
|
|
@ -512,7 +506,7 @@ JUCE_COMRESULT AccessibilityNativeHandle::GetRuntimeId (SAFEARRAY** pRetVal)
|
|||
});
|
||||
}
|
||||
|
||||
JUCE_COMRESULT AccessibilityNativeHandle::get_BoundingRectangle (ComTypes::UiaRect* pRetVal)
|
||||
JUCE_COMRESULT AccessibilityNativeHandle::get_BoundingRectangle (UiaRect* pRetVal)
|
||||
{
|
||||
return withCheckedComArgs (pRetVal, *this, [&]
|
||||
{
|
||||
|
|
@ -551,7 +545,7 @@ JUCE_COMRESULT AccessibilityNativeHandle::SetFocus()
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
JUCE_COMRESULT AccessibilityNativeHandle::get_FragmentRoot (ComTypes::IRawElementProviderFragmentRoot** pRetVal)
|
||||
JUCE_COMRESULT AccessibilityNativeHandle::get_FragmentRoot (IRawElementProviderFragmentRoot** pRetVal)
|
||||
{
|
||||
return withCheckedComArgs (pRetVal, *this, [&]() -> HRESULT
|
||||
{
|
||||
|
|
@ -577,7 +571,7 @@ JUCE_COMRESULT AccessibilityNativeHandle::get_FragmentRoot (ComTypes::IRawElemen
|
|||
}
|
||||
|
||||
//==============================================================================
|
||||
JUCE_COMRESULT AccessibilityNativeHandle::ElementProviderFromPoint (double x, double y, ComTypes::IRawElementProviderFragment** pRetVal)
|
||||
JUCE_COMRESULT AccessibilityNativeHandle::ElementProviderFromPoint (double x, double y, IRawElementProviderFragment** pRetVal)
|
||||
{
|
||||
return withCheckedComArgs (pRetVal, *this, [&]
|
||||
{
|
||||
|
|
@ -599,7 +593,7 @@ JUCE_COMRESULT AccessibilityNativeHandle::ElementProviderFromPoint (double x, do
|
|||
});
|
||||
}
|
||||
|
||||
JUCE_COMRESULT AccessibilityNativeHandle::GetFocus (ComTypes::IRawElementProviderFragment** pRetVal)
|
||||
JUCE_COMRESULT AccessibilityNativeHandle::GetFocus (IRawElementProviderFragment** pRetVal)
|
||||
{
|
||||
return withCheckedComArgs (pRetVal, *this, [&]
|
||||
{
|
||||
|
|
|
|||
|
|
@ -36,9 +36,9 @@ namespace juce
|
|||
{
|
||||
|
||||
class AccessibilityNativeHandle : public ComBaseClassHelper<IRawElementProviderSimple,
|
||||
ComTypes::IRawElementProviderFragment,
|
||||
ComTypes::IRawElementProviderFragmentRoot,
|
||||
ComTypes::IRawElementProviderHwndOverride>
|
||||
IRawElementProviderFragment,
|
||||
IRawElementProviderFragmentRoot,
|
||||
IRawElementProviderHwndOverride>
|
||||
{
|
||||
public:
|
||||
explicit AccessibilityNativeHandle (AccessibilityHandler& handler);
|
||||
|
|
@ -58,15 +58,15 @@ public:
|
|||
JUCE_COMRESULT GetPatternProvider (PATTERNID pId, IUnknown** provider) override;
|
||||
JUCE_COMRESULT GetPropertyValue (PROPERTYID propertyId, VARIANT* pRetVal) override;
|
||||
|
||||
JUCE_COMRESULT Navigate (ComTypes::NavigateDirection direction, ComTypes::IRawElementProviderFragment** pRetVal) override;
|
||||
JUCE_COMRESULT Navigate (NavigateDirection direction, IRawElementProviderFragment** pRetVal) override;
|
||||
JUCE_COMRESULT GetRuntimeId (SAFEARRAY** pRetVal) override;
|
||||
JUCE_COMRESULT get_BoundingRectangle (ComTypes::UiaRect* pRetVal) override;
|
||||
JUCE_COMRESULT get_BoundingRectangle (UiaRect* pRetVal) override;
|
||||
JUCE_COMRESULT GetEmbeddedFragmentRoots (SAFEARRAY** pRetVal) override;
|
||||
JUCE_COMRESULT SetFocus() override;
|
||||
JUCE_COMRESULT get_FragmentRoot (ComTypes::IRawElementProviderFragmentRoot** pRetVal) override;
|
||||
JUCE_COMRESULT get_FragmentRoot (IRawElementProviderFragmentRoot** pRetVal) override;
|
||||
|
||||
JUCE_COMRESULT ElementProviderFromPoint (double x, double y, ComTypes::IRawElementProviderFragment** pRetVal) override;
|
||||
JUCE_COMRESULT GetFocus (ComTypes::IRawElementProviderFragment** pRetVal) override;
|
||||
JUCE_COMRESULT ElementProviderFromPoint (double x, double y, IRawElementProviderFragment** pRetVal) override;
|
||||
JUCE_COMRESULT GetFocus (IRawElementProviderFragment** pRetVal) override;
|
||||
|
||||
JUCE_COMRESULT GetOverrideProviderForHwnd (HWND hwnd, IRawElementProviderSimple** pRetVal) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -164,8 +164,6 @@ void sendAccessibilityPropertyChangedEvent (const AccessibilityHandler& handler,
|
|||
|
||||
void detail::AccessibilityHelpers::notifyAccessibilityEvent (const AccessibilityHandler& handler, Event eventType)
|
||||
{
|
||||
using namespace ComTypes::Constants;
|
||||
|
||||
if (eventType == Event::elementCreated
|
||||
|| eventType == Event::elementDestroyed)
|
||||
{
|
||||
|
|
@ -232,8 +230,6 @@ void AccessibilityHandler::notifyAccessibilityEvent (AccessibilityEvent eventTyp
|
|||
|
||||
auto event = [eventType]() -> EVENTID
|
||||
{
|
||||
using namespace ComTypes::Constants;
|
||||
|
||||
switch (eventType)
|
||||
{
|
||||
case AccessibilityEvent::textSelectionChanged: return UIA_Text_TextSelectionChangedEventId;
|
||||
|
|
@ -255,7 +251,7 @@ struct SpVoiceWrapper final : public DeletedAtShutdown
|
|||
{
|
||||
SpVoiceWrapper()
|
||||
{
|
||||
[[maybe_unused]] auto hr = voice.CoCreateInstance (ComTypes::CLSID_SpVoice);
|
||||
[[maybe_unused]] auto hr = voice.CoCreateInstance (CLSID_SpVoice);
|
||||
|
||||
jassert (SUCCEEDED (hr));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,509 +0,0 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
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::ComTypes
|
||||
{
|
||||
|
||||
/*
|
||||
These interfaces would normally be included in the system platform headers.
|
||||
However, those headers are likely to be incomplete when building with
|
||||
MinGW. In order to allow building accessible applications under MinGW,
|
||||
we reproduce all necessary definitions here.
|
||||
*/
|
||||
|
||||
struct UiaPoint
|
||||
{
|
||||
double x;
|
||||
double y;
|
||||
};
|
||||
|
||||
struct UiaRect
|
||||
{
|
||||
double left;
|
||||
double top;
|
||||
double width;
|
||||
double height;
|
||||
};
|
||||
|
||||
enum NavigateDirection
|
||||
{
|
||||
NavigateDirection_Parent = 0,
|
||||
NavigateDirection_NextSibling = 1,
|
||||
NavigateDirection_PreviousSibling = 2,
|
||||
NavigateDirection_FirstChild = 3,
|
||||
NavigateDirection_LastChild = 4
|
||||
};
|
||||
|
||||
enum ExpandCollapseState
|
||||
{
|
||||
ExpandCollapseState_Collapsed = 0,
|
||||
ExpandCollapseState_Expanded = 1,
|
||||
ExpandCollapseState_PartiallyExpanded = 2,
|
||||
ExpandCollapseState_LeafNode = 3
|
||||
};
|
||||
|
||||
enum TextPatternRangeEndpoint
|
||||
{
|
||||
TextPatternRangeEndpoint_Start = 0,
|
||||
TextPatternRangeEndpoint_End = 1
|
||||
};
|
||||
|
||||
enum TextUnit
|
||||
{
|
||||
TextUnit_Character = 0,
|
||||
TextUnit_Format = 1,
|
||||
TextUnit_Word = 2,
|
||||
TextUnit_Line = 3,
|
||||
TextUnit_Paragraph = 4,
|
||||
TextUnit_Page = 5,
|
||||
TextUnit_Document = 6
|
||||
};
|
||||
|
||||
enum SupportedTextSelection
|
||||
{
|
||||
SupportedTextSelection_None = 0,
|
||||
SupportedTextSelection_Single = 1,
|
||||
SupportedTextSelection_Multiple = 2
|
||||
};
|
||||
|
||||
enum CaretPosition
|
||||
{
|
||||
CaretPosition_Unknown = 0,
|
||||
CaretPosition_EndOfLine = 1,
|
||||
CaretPosition_BeginningOfLine = 2
|
||||
};
|
||||
|
||||
enum ToggleState
|
||||
{
|
||||
ToggleState_Off = 0,
|
||||
ToggleState_On = 1,
|
||||
ToggleState_Indeterminate = 2
|
||||
};
|
||||
|
||||
enum WindowVisualState
|
||||
{
|
||||
WindowVisualState_Normal = 0,
|
||||
WindowVisualState_Maximized = 1,
|
||||
WindowVisualState_Minimized = 2
|
||||
};
|
||||
|
||||
enum WindowInteractionState
|
||||
{
|
||||
WindowInteractionState_Running = 0,
|
||||
WindowInteractionState_Closing = 1,
|
||||
WindowInteractionState_ReadyForUserInteraction = 2,
|
||||
WindowInteractionState_BlockedByModalWindow = 3,
|
||||
WindowInteractionState_NotResponding = 4
|
||||
};
|
||||
|
||||
enum RowOrColumnMajor
|
||||
{
|
||||
RowOrColumnMajor_RowMajor = 0,
|
||||
RowOrColumnMajor_ColumnMajor = 1,
|
||||
RowOrColumnMajor_Indeterminate = 2
|
||||
};
|
||||
|
||||
enum ScrollAmount
|
||||
{
|
||||
ScrollAmount_LargeDecrement = 0,
|
||||
ScrollAmount_SmallDecrement = 1,
|
||||
ScrollAmount_NoAmount = 2,
|
||||
ScrollAmount_LargeIncrement = 3,
|
||||
ScrollAmount_SmallIncrement = 4
|
||||
};
|
||||
|
||||
namespace Constants
|
||||
{
|
||||
|
||||
#undef UIA_InvokePatternId
|
||||
#undef UIA_SelectionPatternId
|
||||
#undef UIA_ValuePatternId
|
||||
#undef UIA_RangeValuePatternId
|
||||
#undef UIA_ScrollPatternId
|
||||
#undef UIA_ExpandCollapsePatternId
|
||||
#undef UIA_GridPatternId
|
||||
#undef UIA_GridItemPatternId
|
||||
#undef UIA_WindowPatternId
|
||||
#undef UIA_SelectionItemPatternId
|
||||
#undef UIA_TablePatternId
|
||||
#undef UIA_TableItemPatternId
|
||||
#undef UIA_TextPatternId
|
||||
#undef UIA_TogglePatternId
|
||||
#undef UIA_TransformPatternId
|
||||
#undef UIA_ScrollItemPatternId
|
||||
#undef UIA_TextPattern2Id
|
||||
#undef UIA_StructureChangedEventId
|
||||
#undef UIA_MenuOpenedEventId
|
||||
#undef UIA_AutomationFocusChangedEventId
|
||||
#undef UIA_MenuClosedEventId
|
||||
#undef UIA_LayoutInvalidatedEventId
|
||||
#undef UIA_Invoke_InvokedEventId
|
||||
#undef UIA_SelectionItem_ElementSelectedEventId
|
||||
#undef UIA_Text_TextSelectionChangedEventId
|
||||
#undef UIA_Text_TextChangedEventId
|
||||
#undef UIA_Window_WindowOpenedEventId
|
||||
#undef UIA_Window_WindowClosedEventId
|
||||
#undef UIA_IsPeripheralPropertyId
|
||||
#undef UIA_FullDescriptionPropertyId
|
||||
#undef UIA_IsDialogPropertyId
|
||||
#undef UIA_IsReadOnlyAttributeId
|
||||
#undef UIA_CaretPositionAttributeId
|
||||
#undef UIA_ButtonControlTypeId
|
||||
#undef UIA_CheckBoxControlTypeId
|
||||
#undef UIA_ComboBoxControlTypeId
|
||||
#undef UIA_EditControlTypeId
|
||||
#undef UIA_HyperlinkControlTypeId
|
||||
#undef UIA_ImageControlTypeId
|
||||
#undef UIA_ListItemControlTypeId
|
||||
#undef UIA_ListControlTypeId
|
||||
#undef UIA_MenuBarControlTypeId
|
||||
#undef UIA_MenuItemControlTypeId
|
||||
#undef UIA_ProgressBarControlTypeId
|
||||
#undef UIA_RadioButtonControlTypeId
|
||||
#undef UIA_ScrollBarControlTypeId
|
||||
#undef UIA_SliderControlTypeId
|
||||
#undef UIA_TextControlTypeId
|
||||
#undef UIA_ToolTipControlTypeId
|
||||
#undef UIA_TreeControlTypeId
|
||||
#undef UIA_TreeItemControlTypeId
|
||||
#undef UIA_CustomControlTypeId
|
||||
#undef UIA_GroupControlTypeId
|
||||
#undef UIA_DataItemControlTypeId
|
||||
#undef UIA_WindowControlTypeId
|
||||
#undef UIA_HeaderControlTypeId
|
||||
#undef UIA_HeaderItemControlTypeId
|
||||
#undef UIA_TableControlTypeId
|
||||
|
||||
const long UIA_InvokePatternId = 10000;
|
||||
const long UIA_SelectionPatternId = 10001;
|
||||
const long UIA_ValuePatternId = 10002;
|
||||
const long UIA_RangeValuePatternId = 10003;
|
||||
const long UIA_ScrollPatternId = 10004;
|
||||
const long UIA_ExpandCollapsePatternId = 10005;
|
||||
const long UIA_GridPatternId = 10006;
|
||||
const long UIA_GridItemPatternId = 10007;
|
||||
const long UIA_WindowPatternId = 10009;
|
||||
const long UIA_SelectionItemPatternId = 10010;
|
||||
const long UIA_TablePatternId = 10012;
|
||||
const long UIA_TableItemPatternId = 10013;
|
||||
const long UIA_TextPatternId = 10014;
|
||||
const long UIA_TogglePatternId = 10015;
|
||||
const long UIA_TransformPatternId = 10016;
|
||||
const long UIA_ScrollItemPatternId = 10017;
|
||||
const long UIA_TextPattern2Id = 10024;
|
||||
const long UIA_StructureChangedEventId = 20002;
|
||||
const long UIA_MenuOpenedEventId = 20003;
|
||||
const long UIA_AutomationFocusChangedEventId = 20005;
|
||||
const long UIA_MenuClosedEventId = 20007;
|
||||
const long UIA_LayoutInvalidatedEventId = 20008;
|
||||
const long UIA_Invoke_InvokedEventId = 20009;
|
||||
const long UIA_SelectionItem_ElementSelectedEventId = 20012;
|
||||
const long UIA_Text_TextSelectionChangedEventId = 20014;
|
||||
const long UIA_Text_TextChangedEventId = 20015;
|
||||
const long UIA_Window_WindowOpenedEventId = 20016;
|
||||
const long UIA_Window_WindowClosedEventId = 20017;
|
||||
const long UIA_IsPeripheralPropertyId = 30150;
|
||||
const long UIA_FullDescriptionPropertyId = 30159;
|
||||
const long UIA_IsDialogPropertyId = 30174;
|
||||
const long UIA_IsReadOnlyAttributeId = 40015;
|
||||
const long UIA_CaretPositionAttributeId = 40038;
|
||||
const long UIA_ButtonControlTypeId = 50000;
|
||||
const long UIA_CheckBoxControlTypeId = 50002;
|
||||
const long UIA_ComboBoxControlTypeId = 50003;
|
||||
const long UIA_EditControlTypeId = 50004;
|
||||
const long UIA_HyperlinkControlTypeId = 50005;
|
||||
const long UIA_ImageControlTypeId = 50006;
|
||||
const long UIA_ListItemControlTypeId = 50007;
|
||||
const long UIA_ListControlTypeId = 50008;
|
||||
const long UIA_MenuBarControlTypeId = 50010;
|
||||
const long UIA_MenuItemControlTypeId = 50011;
|
||||
const long UIA_ProgressBarControlTypeId = 50012;
|
||||
const long UIA_RadioButtonControlTypeId = 50013;
|
||||
const long UIA_ScrollBarControlTypeId = 50014;
|
||||
const long UIA_SliderControlTypeId = 50015;
|
||||
const long UIA_TextControlTypeId = 50020;
|
||||
const long UIA_ToolTipControlTypeId = 50022;
|
||||
const long UIA_TreeControlTypeId = 50023;
|
||||
const long UIA_TreeItemControlTypeId = 50024;
|
||||
const long UIA_CustomControlTypeId = 50025;
|
||||
const long UIA_GroupControlTypeId = 50026;
|
||||
const long UIA_DataItemControlTypeId = 50029;
|
||||
const long UIA_WindowControlTypeId = 50032;
|
||||
const long UIA_HeaderControlTypeId = 50034;
|
||||
const long UIA_HeaderItemControlTypeId = 50035;
|
||||
const long UIA_TableControlTypeId = 50036;
|
||||
|
||||
} // namespace Constants
|
||||
|
||||
interface IRawElementProviderFragmentRoot;
|
||||
interface IRawElementProviderFragment;
|
||||
|
||||
JUCE_COMCLASS (IRawElementProviderFragmentRoot, "620ce2a5-ab8f-40a9-86cb-de3c75599b58") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL ElementProviderFromPoint (double x, double y, __RPC__deref_out_opt IRawElementProviderFragment** pRetVal) = 0;
|
||||
JUCE_COMCALL GetFocus (__RPC__deref_out_opt IRawElementProviderFragment * *pRetVal) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IRawElementProviderFragment, "f7063da8-8359-439c-9297-bbc5299a7d87") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL Navigate (NavigateDirection direction, __RPC__deref_out_opt IRawElementProviderFragment** pRetVal) = 0;
|
||||
JUCE_COMCALL GetRuntimeId (__RPC__deref_out_opt SAFEARRAY * *pRetVal) = 0;
|
||||
JUCE_COMCALL get_BoundingRectangle (__RPC__out UiaRect * pRetVal) = 0;
|
||||
JUCE_COMCALL GetEmbeddedFragmentRoots (__RPC__deref_out_opt SAFEARRAY * *pRetVal) = 0;
|
||||
JUCE_COMCALL SetFocus() = 0;
|
||||
JUCE_COMCALL get_FragmentRoot (__RPC__deref_out_opt IRawElementProviderFragmentRoot * *pRetVal) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IRawElementProviderHwndOverride, "1d5df27c-8947-4425-b8d9-79787bb460b8") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL GetOverrideProviderForHwnd (__RPC__in HWND hwnd,
|
||||
__RPC__deref_out_opt IRawElementProviderSimple** pRetVal) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IExpandCollapseProvider, "d847d3a5-cab0-4a98-8c32-ecb45c59ad24") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL Expand() = 0;
|
||||
JUCE_COMCALL Collapse() = 0;
|
||||
JUCE_COMCALL get_ExpandCollapseState (__RPC__out ExpandCollapseState * pRetVal) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IGridItemProvider, "d02541f1-fb81-4d64-ae32-f520f8a6dbd1") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL get_Row (__RPC__out int* pRetVal) = 0;
|
||||
JUCE_COMCALL get_Column (__RPC__out int* pRetVal) = 0;
|
||||
JUCE_COMCALL get_RowSpan (__RPC__out int* pRetVal) = 0;
|
||||
JUCE_COMCALL get_ColumnSpan (__RPC__out int* pRetVal) = 0;
|
||||
JUCE_COMCALL get_ContainingGrid (__RPC__deref_out_opt IRawElementProviderSimple * *pRetVal) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IGridProvider, "b17d6187-0907-464b-a168-0ef17a1572b1") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL GetItem (int row, int column, __RPC__deref_out_opt IRawElementProviderSimple** pRetVal) = 0;
|
||||
JUCE_COMCALL get_RowCount (__RPC__out int* pRetVal) = 0;
|
||||
JUCE_COMCALL get_ColumnCount (__RPC__out int* pRetVal) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (ITableItemProvider, "b9734fa6-771f-4d78-9c90-2517999349cd") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL GetRowHeaderItems (SAFEARRAY** pRetVal) = 0;
|
||||
JUCE_COMCALL GetColumnHeaderItems (SAFEARRAY** pRetVal) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (ITableProvider, "9c860395-97b3-490a-b52a-858cc22af166") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL GetRowHeaders (SAFEARRAY** pRetVal) = 0;
|
||||
JUCE_COMCALL GetColumnHeaders (SAFEARRAY** pRetVal) = 0;
|
||||
JUCE_COMCALL get_RowOrColumnMajor (RowOrColumnMajor* pRetVal) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IInvokeProvider, "54fcb24b-e18e-47a2-b4d3-eccbe77599a2") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL Invoke() = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IRangeValueProvider, "36dc7aef-33e6-4691-afe1-2be7274b3d33") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL SetValue (double val) = 0;
|
||||
JUCE_COMCALL get_Value (__RPC__out double* pRetVal) = 0;
|
||||
JUCE_COMCALL get_IsReadOnly (__RPC__out BOOL * pRetVal) = 0;
|
||||
JUCE_COMCALL get_Maximum (__RPC__out double* pRetVal) = 0;
|
||||
JUCE_COMCALL get_Minimum (__RPC__out double* pRetVal) = 0;
|
||||
JUCE_COMCALL get_LargeChange (__RPC__out double* pRetVal) = 0;
|
||||
JUCE_COMCALL get_SmallChange (__RPC__out double* pRetVal) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (ISelectionProvider, "fb8b03af-3bdf-48d4-bd36-1a65793be168") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL GetSelection (__RPC__deref_out_opt SAFEARRAY * *pRetVal) = 0;
|
||||
JUCE_COMCALL get_CanSelectMultiple (__RPC__out BOOL * pRetVal) = 0;
|
||||
JUCE_COMCALL get_IsSelectionRequired (__RPC__out BOOL * pRetVal) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (ISelectionProvider2, "14f68475-ee1c-44f6-a869-d239381f0fe7") : public ISelectionProvider
|
||||
{
|
||||
JUCE_COMCALL get_FirstSelectedItem (IRawElementProviderSimple * *retVal) = 0;
|
||||
JUCE_COMCALL get_LastSelectedItem (IRawElementProviderSimple * *retVal) = 0;
|
||||
JUCE_COMCALL get_CurrentSelectedItem (IRawElementProviderSimple * *retVal) = 0;
|
||||
JUCE_COMCALL get_ItemCount (int* retVal) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (ISelectionItemProvider, "2acad808-b2d4-452d-a407-91ff1ad167b2") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL Select() = 0;
|
||||
JUCE_COMCALL AddToSelection() = 0;
|
||||
JUCE_COMCALL RemoveFromSelection() = 0;
|
||||
JUCE_COMCALL get_IsSelected (__RPC__out BOOL * pRetVal) = 0;
|
||||
JUCE_COMCALL get_SelectionContainer (__RPC__deref_out_opt IRawElementProviderSimple * *pRetVal) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (ITextRangeProvider, "5347ad7b-c355-46f8-aff5-909033582f63") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL Clone (__RPC__deref_out_opt ITextRangeProvider * *pRetVal) = 0;
|
||||
JUCE_COMCALL Compare (__RPC__in_opt ITextRangeProvider * range, __RPC__out BOOL * pRetVal) = 0;
|
||||
JUCE_COMCALL CompareEndpoints (TextPatternRangeEndpoint endpoint, __RPC__in_opt ITextRangeProvider * targetRange, TextPatternRangeEndpoint targetEndpoint, __RPC__out int* pRetVal) = 0;
|
||||
JUCE_COMCALL ExpandToEnclosingUnit (TextUnit unit) = 0;
|
||||
JUCE_COMCALL FindAttribute (TEXTATTRIBUTEID attributeId, VARIANT val, BOOL backward, __RPC__deref_out_opt ITextRangeProvider * *pRetVal) = 0;
|
||||
JUCE_COMCALL FindText (__RPC__in BSTR text, BOOL backward, BOOL ignoreCase, __RPC__deref_out_opt ITextRangeProvider * *pRetVal) = 0;
|
||||
JUCE_COMCALL GetAttributeValue (TEXTATTRIBUTEID attributeId, __RPC__out VARIANT * pRetVal) = 0;
|
||||
JUCE_COMCALL GetBoundingRectangles (__RPC__deref_out_opt SAFEARRAY * *pRetVal) = 0;
|
||||
JUCE_COMCALL GetEnclosingElement (__RPC__deref_out_opt IRawElementProviderSimple * *pRetVal) = 0;
|
||||
JUCE_COMCALL GetText (int maxLength, __RPC__deref_out_opt BSTR* pRetVal) = 0;
|
||||
JUCE_COMCALL Move (TextUnit unit, int count, __RPC__out int* pRetVal) = 0;
|
||||
JUCE_COMCALL MoveEndpointByUnit (TextPatternRangeEndpoint endpoint, TextUnit unit, int count, __RPC__out int* pRetVal) = 0;
|
||||
JUCE_COMCALL MoveEndpointByRange (TextPatternRangeEndpoint endpoint, __RPC__in_opt ITextRangeProvider * targetRange, TextPatternRangeEndpoint targetEndpoint) = 0;
|
||||
JUCE_COMCALL Select() = 0;
|
||||
JUCE_COMCALL AddToSelection() = 0;
|
||||
JUCE_COMCALL RemoveFromSelection() = 0;
|
||||
JUCE_COMCALL ScrollIntoView (BOOL alignToTop) = 0;
|
||||
JUCE_COMCALL GetChildren (__RPC__deref_out_opt SAFEARRAY * *pRetVal) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (ITextProvider, "3589c92c-63f3-4367-99bb-ada653b77cf2") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL GetSelection (__RPC__deref_out_opt SAFEARRAY * *pRetVal) = 0;
|
||||
JUCE_COMCALL GetVisibleRanges (__RPC__deref_out_opt SAFEARRAY * *pRetVal) = 0;
|
||||
JUCE_COMCALL RangeFromChild (__RPC__in_opt IRawElementProviderSimple * childElement, __RPC__deref_out_opt ITextRangeProvider * *pRetVal) = 0;
|
||||
JUCE_COMCALL RangeFromPoint (UiaPoint point, __RPC__deref_out_opt ITextRangeProvider * *pRetVal) = 0;
|
||||
JUCE_COMCALL get_DocumentRange (__RPC__deref_out_opt ITextRangeProvider * *pRetVal) = 0;
|
||||
JUCE_COMCALL get_SupportedTextSelection (__RPC__out SupportedTextSelection * pRetVal) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (ITextProvider2, "0dc5e6ed-3e16-4bf1-8f9a-a979878bc195") : public ITextProvider
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL RangeFromAnnotation (__RPC__in_opt IRawElementProviderSimple * annotationElement, __RPC__deref_out_opt ITextRangeProvider * *pRetVal) = 0;
|
||||
JUCE_COMCALL GetCaretRange (__RPC__out BOOL * isActive, __RPC__deref_out_opt ITextRangeProvider * *pRetVal) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IToggleProvider, "56d00bd0-c4f4-433c-a836-1a52a57e0892") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL Toggle() = 0;
|
||||
JUCE_COMCALL get_ToggleState (__RPC__out ToggleState * pRetVal) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (ITransformProvider, "6829ddc4-4f91-4ffa-b86f-bd3e2987cb4c") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL Move (double x, double y) = 0;
|
||||
JUCE_COMCALL Resize (double width, double height) = 0;
|
||||
JUCE_COMCALL Rotate (double degrees) = 0;
|
||||
JUCE_COMCALL get_CanMove (__RPC__out BOOL * pRetVal) = 0;
|
||||
JUCE_COMCALL get_CanResize (__RPC__out BOOL * pRetVal) = 0;
|
||||
JUCE_COMCALL get_CanRotate (__RPC__out BOOL * pRetVal) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IValueProvider, "c7935180-6fb3-4201-b174-7df73adbf64a") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL SetValue (__RPC__in LPCWSTR val) = 0;
|
||||
JUCE_COMCALL get_Value (__RPC__deref_out_opt BSTR * pRetVal) = 0;
|
||||
JUCE_COMCALL get_IsReadOnly (__RPC__out BOOL * pRetVal) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IWindowProvider, "987df77b-db06-4d77-8f8a-86a9c3bb90b9") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL SetVisualState (WindowVisualState state) = 0;
|
||||
JUCE_COMCALL Close() = 0;
|
||||
JUCE_COMCALL WaitForInputIdle (int milliseconds, __RPC__out BOOL* pRetVal) = 0;
|
||||
JUCE_COMCALL get_CanMaximize (__RPC__out BOOL * pRetVal) = 0;
|
||||
JUCE_COMCALL get_CanMinimize (__RPC__out BOOL * pRetVal) = 0;
|
||||
JUCE_COMCALL get_IsModal (__RPC__out BOOL * pRetVal) = 0;
|
||||
JUCE_COMCALL get_WindowVisualState (__RPC__out WindowVisualState * pRetVal) = 0;
|
||||
JUCE_COMCALL get_WindowInteractionState (__RPC__out WindowInteractionState * pRetVal) = 0;
|
||||
JUCE_COMCALL get_IsTopmost (__RPC__out BOOL * pRetVal) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IScrollProvider, "b38b8077-1fc3-42a5-8cae-d40c2215055a") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL Scroll (ScrollAmount horizontalAmount, ScrollAmount verticalAmount) = 0;
|
||||
JUCE_COMCALL SetScrollPercent (double horizontalPercent,double verticalPercent) = 0;
|
||||
JUCE_COMCALL get_HorizontalScrollPercent (double* pRetVal) = 0;
|
||||
JUCE_COMCALL get_VerticalScrollPercent (double* pRetVal) = 0;
|
||||
JUCE_COMCALL get_HorizontalViewSize (double* pRetVal) = 0;
|
||||
JUCE_COMCALL get_VerticalViewSize (double* pRetVal) = 0;
|
||||
JUCE_COMCALL get_HorizontallyScrollable (BOOL* pRetVal) = 0;
|
||||
JUCE_COMCALL get_VerticallyScrollable (BOOL* pRetVal) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IScrollItemProvider, "2360c714-4bf1-4b26-ba65-9b21316127eb") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL ScrollIntoView() = 0;
|
||||
};
|
||||
|
||||
constexpr CLSID CLSID_SpVoice { 0x96749377, 0x3391, 0x11D2, { 0x9E, 0xE3, 0x00, 0xC0, 0x4F, 0x79, 0x73, 0x96 } };
|
||||
|
||||
} // namespace juce::ComTypes
|
||||
|
||||
#ifdef __CRT_UUID_DECL
|
||||
__CRT_UUID_DECL (juce::ComTypes::IRawElementProviderFragmentRoot, 0x620ce2a5, 0xab8f, 0x40a9, 0x86, 0xcb, 0xde, 0x3c, 0x75, 0x59, 0x9b, 0x58)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IRawElementProviderFragment, 0xf7063da8, 0x8359, 0x439c, 0x92, 0x97, 0xbb, 0xc5, 0x29, 0x9a, 0x7d, 0x87)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IRawElementProviderHwndOverride, 0x1d5df27c, 0x8947, 0x4425, 0xb8, 0xd9, 0x79, 0x78, 0x7b, 0xb4, 0x60, 0xb8)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IExpandCollapseProvider, 0xd847d3a5, 0xcab0, 0x4a98, 0x8c, 0x32, 0xec, 0xb4, 0x5c, 0x59, 0xad, 0x24)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IGridItemProvider, 0xd02541f1, 0xfb81, 0x4d64, 0xae, 0x32, 0xf5, 0x20, 0xf8, 0xa6, 0xdb, 0xd1)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IGridProvider, 0xb17d6187, 0x0907, 0x464b, 0xa1, 0x68, 0x0e, 0xf1, 0x7a, 0x15, 0x72, 0xb1)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IInvokeProvider, 0x54fcb24b, 0xe18e, 0x47a2, 0xb4, 0xd3, 0xec, 0xcb, 0xe7, 0x75, 0x99, 0xa2)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IRangeValueProvider, 0x36dc7aef, 0x33e6, 0x4691, 0xaf, 0xe1, 0x2b, 0xe7, 0x27, 0x4b, 0x3d, 0x33)
|
||||
__CRT_UUID_DECL (juce::ComTypes::ISelectionProvider, 0xfb8b03af, 0x3bdf, 0x48d4, 0xbd, 0x36, 0x1a, 0x65, 0x79, 0x3b, 0xe1, 0x68)
|
||||
__CRT_UUID_DECL (juce::ComTypes::ISelectionProvider2, 0x14f68475, 0xee1c, 0x44f6, 0xa8, 0x69, 0xd2, 0x39, 0x38, 0x1f, 0x0f, 0xe7)
|
||||
__CRT_UUID_DECL (juce::ComTypes::ISelectionItemProvider, 0x2acad808, 0xb2d4, 0x452d, 0xa4, 0x07, 0x91, 0xff, 0x1a, 0xd1, 0x67, 0xb2)
|
||||
__CRT_UUID_DECL (juce::ComTypes::ITextRangeProvider, 0x5347ad7b, 0xc355, 0x46f8, 0xaf, 0xf5, 0x90, 0x90, 0x33, 0x58, 0x2f, 0x63)
|
||||
__CRT_UUID_DECL (juce::ComTypes::ITextProvider, 0x3589c92c, 0x63f3, 0x4367, 0x99, 0xbb, 0xad, 0xa6, 0x53, 0xb7, 0x7c, 0xf2)
|
||||
__CRT_UUID_DECL (juce::ComTypes::ITextProvider2, 0x0dc5e6ed, 0x3e16, 0x4bf1, 0x8f, 0x9a, 0xa9, 0x79, 0x87, 0x8b, 0xc1, 0x95)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IToggleProvider, 0x56d00bd0, 0xc4f4, 0x433c, 0xa8, 0x36, 0x1a, 0x52, 0xa5, 0x7e, 0x08, 0x92)
|
||||
__CRT_UUID_DECL (juce::ComTypes::ITransformProvider, 0x6829ddc4, 0x4f91, 0x4ffa, 0xb8, 0x6f, 0xbd, 0x3e, 0x29, 0x87, 0xcb, 0x4c)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IValueProvider, 0xc7935180, 0x6fb3, 0x4201, 0xb1, 0x74, 0x7d, 0xf7, 0x3a, 0xdb, 0xf6, 0x4a)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IWindowProvider, 0x987df77b, 0xdb06, 0x4d77, 0x8f, 0x8a, 0x86, 0xa9, 0xc3, 0xbb, 0x90, 0xb9)
|
||||
__CRT_UUID_DECL (juce::ComTypes::ITableItemProvider, 0xb9734fa6, 0x771f, 0x4d78, 0x9c, 0x90, 0x25, 0x17, 0x99, 0x93, 0x49, 0xcd)
|
||||
__CRT_UUID_DECL (juce::ComTypes::ITableProvider, 0x9c860395, 0x97b3, 0x490a, 0xb5, 0x2a, 0x85, 0x8c, 0xc2, 0x2a, 0xf1, 0x66)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IScrollProvider, 0xb38b8077, 0x1fc3, 0x42a5, 0x8c, 0xae, 0xd4, 0x0c, 0x22, 0x15, 0x05, 0x5a)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IScrollItemProvider, 0x2360c714, 0x4bf1, 0x4b26, 0xba, 0x65, 0x9b, 0x21, 0x31, 0x61, 0x27, 0xeb)
|
||||
#endif
|
||||
|
|
@ -37,7 +37,7 @@ namespace juce
|
|||
|
||||
//==============================================================================
|
||||
class UIAExpandCollapseProvider : public UIAProviderBase,
|
||||
public ComBaseClassHelper<ComTypes::IExpandCollapseProvider>
|
||||
public ComBaseClassHelper<IExpandCollapseProvider>
|
||||
{
|
||||
public:
|
||||
using UIAProviderBase::UIAProviderBase;
|
||||
|
|
@ -53,13 +53,13 @@ public:
|
|||
return invokeShowMenu();
|
||||
}
|
||||
|
||||
JUCE_COMRESULT get_ExpandCollapseState (ComTypes::ExpandCollapseState* pRetVal) override
|
||||
JUCE_COMRESULT get_ExpandCollapseState (ExpandCollapseState* pRetVal) override
|
||||
{
|
||||
return withCheckedComArgs (pRetVal, *this, [&]
|
||||
{
|
||||
*pRetVal = getHandler().getCurrentState().isExpanded()
|
||||
? ComTypes::ExpandCollapseState_Expanded
|
||||
: ComTypes::ExpandCollapseState_Collapsed;
|
||||
? ExpandCollapseState_Expanded
|
||||
: ExpandCollapseState_Collapsed;
|
||||
|
||||
return S_OK;
|
||||
});
|
||||
|
|
@ -75,8 +75,6 @@ private:
|
|||
|
||||
if (handler.getActions().invoke (AccessibilityActionType::showMenu))
|
||||
{
|
||||
using namespace ComTypes::Constants;
|
||||
|
||||
sendAccessibilityAutomationEvent (handler, handler.getCurrentState().isExpanded()
|
||||
? UIA_MenuOpenedEventId
|
||||
: UIA_MenuClosedEventId);
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ namespace juce
|
|||
|
||||
//==============================================================================
|
||||
class UIAGridItemProvider : public UIAProviderBase,
|
||||
public ComBaseClassHelper<ComTypes::IGridItemProvider, ComTypes::ITableItemProvider>
|
||||
public ComBaseClassHelper<IGridItemProvider, ITableItemProvider>
|
||||
{
|
||||
public:
|
||||
using UIAProviderBase::UIAProviderBase;
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ namespace juce
|
|||
|
||||
//==============================================================================
|
||||
class UIAGridProvider : public UIAProviderBase,
|
||||
public ComBaseClassHelper<ComTypes::IGridProvider, ComTypes::ITableProvider>
|
||||
public ComBaseClassHelper<IGridProvider, ITableProvider>
|
||||
{
|
||||
public:
|
||||
using UIAProviderBase::UIAProviderBase;
|
||||
|
|
@ -133,9 +133,9 @@ public:
|
|||
});
|
||||
}
|
||||
|
||||
JUCE_COMRESULT get_RowOrColumnMajor (ComTypes::RowOrColumnMajor* pRetVal) override
|
||||
JUCE_COMRESULT get_RowOrColumnMajor (RowOrColumnMajor* pRetVal) override
|
||||
{
|
||||
*pRetVal = ComTypes::RowOrColumnMajor_RowMajor;
|
||||
*pRetVal = RowOrColumnMajor_RowMajor;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ namespace juce
|
|||
|
||||
//==============================================================================
|
||||
class UIAInvokeProvider : public UIAProviderBase,
|
||||
public ComBaseClassHelper<ComTypes::IInvokeProvider>
|
||||
public ComBaseClassHelper<IInvokeProvider>
|
||||
{
|
||||
public:
|
||||
using UIAProviderBase::UIAProviderBase;
|
||||
|
|
@ -52,8 +52,6 @@ public:
|
|||
|
||||
if (handler.getActions().invoke (AccessibilityActionType::press))
|
||||
{
|
||||
using namespace ComTypes::Constants;
|
||||
|
||||
if (isElementValid())
|
||||
sendAccessibilityAutomationEvent (handler, UIA_Invoke_InvokedEventId);
|
||||
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ namespace juce
|
|||
|
||||
//==============================================================================
|
||||
class UIARangeValueProvider : public UIAProviderBase,
|
||||
public ComBaseClassHelper<ComTypes::IRangeValueProvider>
|
||||
public ComBaseClassHelper<IRangeValueProvider>
|
||||
{
|
||||
public:
|
||||
using UIAProviderBase::UIAProviderBase;
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wlanguage-extension-token")
|
|||
|
||||
//==============================================================================
|
||||
class UIASelectionItemProvider : public UIAProviderBase,
|
||||
public ComBaseClassHelper<ComTypes::ISelectionItemProvider>
|
||||
public ComBaseClassHelper<ISelectionItemProvider>
|
||||
{
|
||||
public:
|
||||
explicit UIASelectionItemProvider (AccessibilityNativeHandle* handle)
|
||||
|
|
@ -58,8 +58,6 @@ public:
|
|||
|
||||
if (isRadioButton)
|
||||
{
|
||||
using namespace ComTypes::Constants;
|
||||
|
||||
handler.getActions().invoke (AccessibilityActionType::press);
|
||||
sendAccessibilityAutomationEvent (handler, UIA_SelectionItem_ElementSelectedEventId);
|
||||
|
||||
|
|
@ -139,7 +137,7 @@ private:
|
|||
|
||||
//==============================================================================
|
||||
class UIASelectionProvider : public UIAProviderBase,
|
||||
public ComBaseClassHelper<ComTypes::ISelectionProvider2>
|
||||
public ComBaseClassHelper<ISelectionProvider2>
|
||||
{
|
||||
public:
|
||||
using UIAProviderBase::UIAProviderBase;
|
||||
|
|
@ -147,11 +145,11 @@ public:
|
|||
//==============================================================================
|
||||
JUCE_COMRESULT QueryInterface (REFIID iid, void** result) override
|
||||
{
|
||||
if (iid == __uuidof (IUnknown) || iid == __uuidof (ComTypes::ISelectionProvider))
|
||||
return castToType<ComTypes::ISelectionProvider> (result);
|
||||
if (iid == __uuidof (IUnknown) || iid == __uuidof (ISelectionProvider))
|
||||
return castToType<ISelectionProvider> (result);
|
||||
|
||||
if (iid == __uuidof (ComTypes::ISelectionProvider2))
|
||||
return castToType<ComTypes::ISelectionProvider2> (result);
|
||||
if (iid == __uuidof (ISelectionProvider2))
|
||||
return castToType<ISelectionProvider2> (result);
|
||||
|
||||
*result = nullptr;
|
||||
return E_NOINTERFACE;
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ namespace juce
|
|||
|
||||
//==============================================================================
|
||||
class UIATextProvider : public UIAProviderBase,
|
||||
public ComBaseClassHelper<ComTypes::ITextProvider2>
|
||||
public ComBaseClassHelper<ITextProvider2>
|
||||
{
|
||||
public:
|
||||
using UIAProviderBase::UIAProviderBase;
|
||||
|
|
@ -47,11 +47,11 @@ public:
|
|||
{
|
||||
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wlanguage-extension-token")
|
||||
|
||||
if (iid == __uuidof (IUnknown) || iid == __uuidof (ComTypes::ITextProvider))
|
||||
return castToType<ComTypes::ITextProvider> (result);
|
||||
if (iid == __uuidof (IUnknown) || iid == __uuidof (ITextProvider))
|
||||
return castToType<ITextProvider> (result);
|
||||
|
||||
if (iid == __uuidof (ComTypes::ITextProvider2))
|
||||
return castToType<ComTypes::ITextProvider2> (result);
|
||||
if (iid == __uuidof (ITextProvider2))
|
||||
return castToType<ITextProvider2> (result);
|
||||
|
||||
*result = nullptr;
|
||||
return E_NOINTERFACE;
|
||||
|
|
@ -60,7 +60,7 @@ public:
|
|||
}
|
||||
|
||||
//==============================================================================
|
||||
JUCE_COMRESULT get_DocumentRange (ComTypes::ITextRangeProvider** pRetVal) override
|
||||
JUCE_COMRESULT get_DocumentRange (ITextRangeProvider** pRetVal) override
|
||||
{
|
||||
return withTextInterface (pRetVal, [&] (const AccessibilityTextInterface& textInterface)
|
||||
{
|
||||
|
|
@ -69,11 +69,11 @@ public:
|
|||
});
|
||||
}
|
||||
|
||||
JUCE_COMRESULT get_SupportedTextSelection (ComTypes::SupportedTextSelection* pRetVal) override
|
||||
JUCE_COMRESULT get_SupportedTextSelection (SupportedTextSelection* pRetVal) override
|
||||
{
|
||||
return withCheckedComArgs (pRetVal, *this, [&]
|
||||
{
|
||||
*pRetVal = ComTypes::SupportedTextSelection_Single;
|
||||
*pRetVal = SupportedTextSelection_Single;
|
||||
return S_OK;
|
||||
});
|
||||
}
|
||||
|
|
@ -130,7 +130,7 @@ public:
|
|||
});
|
||||
}
|
||||
|
||||
JUCE_COMRESULT RangeFromChild (IRawElementProviderSimple*, ComTypes::ITextRangeProvider** pRetVal) override
|
||||
JUCE_COMRESULT RangeFromChild (IRawElementProviderSimple*, ITextRangeProvider** pRetVal) override
|
||||
{
|
||||
return withCheckedComArgs (pRetVal, *this, []
|
||||
{
|
||||
|
|
@ -138,7 +138,7 @@ public:
|
|||
});
|
||||
}
|
||||
|
||||
JUCE_COMRESULT RangeFromPoint (ComTypes::UiaPoint point, ComTypes::ITextRangeProvider** pRetVal) override
|
||||
JUCE_COMRESULT RangeFromPoint (UiaPoint point, ITextRangeProvider** pRetVal) override
|
||||
{
|
||||
return withTextInterface (pRetVal, [&] (const AccessibilityTextInterface& textInterface)
|
||||
{
|
||||
|
|
@ -152,7 +152,7 @@ public:
|
|||
}
|
||||
|
||||
//==============================================================================
|
||||
JUCE_COMRESULT GetCaretRange (BOOL* isActive, ComTypes::ITextRangeProvider** pRetVal) override
|
||||
JUCE_COMRESULT GetCaretRange (BOOL* isActive, ITextRangeProvider** pRetVal) override
|
||||
{
|
||||
return withTextInterface (pRetVal, [&] (const AccessibilityTextInterface& textInterface)
|
||||
{
|
||||
|
|
@ -165,7 +165,7 @@ public:
|
|||
});
|
||||
}
|
||||
|
||||
JUCE_COMRESULT RangeFromAnnotation (IRawElementProviderSimple*, ComTypes::ITextRangeProvider** pRetVal) override
|
||||
JUCE_COMRESULT RangeFromAnnotation (IRawElementProviderSimple*, ITextRangeProvider** pRetVal) override
|
||||
{
|
||||
return withCheckedComArgs (pRetVal, *this, []
|
||||
{
|
||||
|
|
@ -189,7 +189,7 @@ private:
|
|||
|
||||
//==============================================================================
|
||||
class UIATextRangeProvider : public UIAProviderBase,
|
||||
public ComBaseClassHelper<ComTypes::ITextRangeProvider>
|
||||
public ComBaseClassHelper<ITextRangeProvider>
|
||||
{
|
||||
public:
|
||||
UIATextRangeProvider (UIATextProvider& textProvider, Range<int> range)
|
||||
|
|
@ -208,7 +208,7 @@ private:
|
|||
return Select();
|
||||
}
|
||||
|
||||
JUCE_COMRESULT Clone (ComTypes::ITextRangeProvider** pRetVal) override
|
||||
JUCE_COMRESULT Clone (ITextRangeProvider** pRetVal) override
|
||||
{
|
||||
return withCheckedComArgs (pRetVal, *this, [&]
|
||||
{
|
||||
|
|
@ -217,7 +217,7 @@ private:
|
|||
});
|
||||
}
|
||||
|
||||
JUCE_COMRESULT Compare (ComTypes::ITextRangeProvider* range, BOOL* pRetVal) override
|
||||
JUCE_COMRESULT Compare (ITextRangeProvider* range, BOOL* pRetVal) override
|
||||
{
|
||||
return withCheckedComArgs (pRetVal, *this, [&]
|
||||
{
|
||||
|
|
@ -226,9 +226,9 @@ private:
|
|||
});
|
||||
}
|
||||
|
||||
JUCE_COMRESULT CompareEndpoints (ComTypes::TextPatternRangeEndpoint endpoint,
|
||||
ComTypes::ITextRangeProvider* targetRange,
|
||||
ComTypes::TextPatternRangeEndpoint targetEndpoint,
|
||||
JUCE_COMRESULT CompareEndpoints (TextPatternRangeEndpoint endpoint,
|
||||
ITextRangeProvider* targetRange,
|
||||
TextPatternRangeEndpoint targetEndpoint,
|
||||
int* pRetVal) override
|
||||
{
|
||||
if (targetRange == nullptr)
|
||||
|
|
@ -236,19 +236,19 @@ private:
|
|||
|
||||
return withCheckedComArgs (pRetVal, *this, [&]
|
||||
{
|
||||
auto offset = (endpoint == ComTypes::TextPatternRangeEndpoint_Start ? selectionRange.getStart()
|
||||
: selectionRange.getEnd());
|
||||
auto offset = (endpoint == TextPatternRangeEndpoint_Start ? selectionRange.getStart()
|
||||
: selectionRange.getEnd());
|
||||
|
||||
auto otherRange = static_cast<UIATextRangeProvider*> (targetRange)->getSelectionRange();
|
||||
auto otherOffset = (targetEndpoint == ComTypes::TextPatternRangeEndpoint_Start ? otherRange.getStart()
|
||||
: otherRange.getEnd());
|
||||
auto otherOffset = (targetEndpoint == TextPatternRangeEndpoint_Start ? otherRange.getStart()
|
||||
: otherRange.getEnd());
|
||||
|
||||
*pRetVal = offset - otherOffset;
|
||||
return S_OK;
|
||||
});
|
||||
}
|
||||
|
||||
JUCE_COMRESULT ExpandToEnclosingUnit (ComTypes::TextUnit unit) override
|
||||
JUCE_COMRESULT ExpandToEnclosingUnit (TextUnit unit) override
|
||||
{
|
||||
if (! isElementValid())
|
||||
return (HRESULT) UIA_E_ELEMENTNOTAVAILABLE;
|
||||
|
|
@ -280,7 +280,7 @@ private:
|
|||
return (HRESULT) UIA_E_NOTSUPPORTED;
|
||||
}
|
||||
|
||||
JUCE_COMRESULT FindAttribute (TEXTATTRIBUTEID, VARIANT, BOOL, ComTypes::ITextRangeProvider** pRetVal) override
|
||||
JUCE_COMRESULT FindAttribute (TEXTATTRIBUTEID, VARIANT, BOOL, ITextRangeProvider** pRetVal) override
|
||||
{
|
||||
return withCheckedComArgs (pRetVal, *this, []
|
||||
{
|
||||
|
|
@ -289,7 +289,7 @@ private:
|
|||
}
|
||||
|
||||
JUCE_COMRESULT FindText (BSTR text, BOOL backward, BOOL ignoreCase,
|
||||
ComTypes::ITextRangeProvider** pRetVal) override
|
||||
ITextRangeProvider** pRetVal) override
|
||||
{
|
||||
return owner->withTextInterface (pRetVal, [&] (const AccessibilityTextInterface& textInterface)
|
||||
{
|
||||
|
|
@ -312,8 +312,6 @@ private:
|
|||
{
|
||||
VariantHelpers::clear (pRetVal);
|
||||
|
||||
using namespace ComTypes::Constants;
|
||||
|
||||
switch (attributeId)
|
||||
{
|
||||
case UIA_IsReadOnlyAttributeId:
|
||||
|
|
@ -329,12 +327,12 @@ private:
|
|||
auto caretPos = [&]
|
||||
{
|
||||
if (cursorPos == 0)
|
||||
return ComTypes::CaretPosition_BeginningOfLine;
|
||||
return CaretPosition_BeginningOfLine;
|
||||
|
||||
if (cursorPos == textInterface.getTotalNumCharacters())
|
||||
return ComTypes::CaretPosition_EndOfLine;
|
||||
return CaretPosition_EndOfLine;
|
||||
|
||||
return ComTypes::CaretPosition_Unknown;
|
||||
return CaretPosition_Unknown;
|
||||
}();
|
||||
|
||||
VariantHelpers::setInt (caretPos, pRetVal);
|
||||
|
|
@ -425,7 +423,7 @@ private:
|
|||
});
|
||||
}
|
||||
|
||||
JUCE_COMRESULT Move (ComTypes::TextUnit unit, int count, int* pRetVal) override
|
||||
JUCE_COMRESULT Move (TextUnit unit, int count, int* pRetVal) override
|
||||
{
|
||||
return owner->withTextInterface (pRetVal, [&] (const AccessibilityTextInterface& textInterface)
|
||||
{
|
||||
|
|
@ -464,9 +462,9 @@ private:
|
|||
});
|
||||
}
|
||||
|
||||
JUCE_COMRESULT MoveEndpointByRange (ComTypes::TextPatternRangeEndpoint endpoint,
|
||||
ComTypes::ITextRangeProvider* targetRange,
|
||||
ComTypes::TextPatternRangeEndpoint targetEndpoint) override
|
||||
JUCE_COMRESULT MoveEndpointByRange (TextPatternRangeEndpoint endpoint,
|
||||
ITextRangeProvider* targetRange,
|
||||
TextPatternRangeEndpoint targetEndpoint) override
|
||||
{
|
||||
if (targetRange == nullptr)
|
||||
return E_INVALIDARG;
|
||||
|
|
@ -477,8 +475,8 @@ private:
|
|||
if (owner->getHandler().getTextInterface() != nullptr)
|
||||
{
|
||||
auto otherRange = static_cast<UIATextRangeProvider*> (targetRange)->getSelectionRange();
|
||||
auto targetPoint = (targetEndpoint == ComTypes::TextPatternRangeEndpoint_Start ? otherRange.getStart()
|
||||
: otherRange.getEnd());
|
||||
auto targetPoint = (targetEndpoint == TextPatternRangeEndpoint_Start ? otherRange.getStart()
|
||||
: otherRange.getEnd());
|
||||
|
||||
setEndpointChecked (endpoint, targetPoint);
|
||||
return S_OK;
|
||||
|
|
@ -487,8 +485,8 @@ private:
|
|||
return (HRESULT) UIA_E_NOTSUPPORTED;
|
||||
}
|
||||
|
||||
JUCE_COMRESULT MoveEndpointByUnit (ComTypes::TextPatternRangeEndpoint endpoint,
|
||||
ComTypes::TextUnit unit,
|
||||
JUCE_COMRESULT MoveEndpointByUnit (TextPatternRangeEndpoint endpoint,
|
||||
TextUnit unit,
|
||||
int count,
|
||||
int* pRetVal) override
|
||||
{
|
||||
|
|
@ -497,8 +495,8 @@ private:
|
|||
if (count == 0 || textInterface.getTotalNumCharacters() == 0)
|
||||
return S_OK;
|
||||
|
||||
const auto endpointToMove = (endpoint == ComTypes::TextPatternRangeEndpoint_Start ? selectionRange.getStart()
|
||||
: selectionRange.getEnd());
|
||||
const auto endpointToMove = (endpoint == TextPatternRangeEndpoint_Start ? selectionRange.getStart()
|
||||
: selectionRange.getEnd());
|
||||
|
||||
using ATH = AccessibilityTextHelpers;
|
||||
|
||||
|
|
@ -572,23 +570,23 @@ private:
|
|||
}
|
||||
|
||||
private:
|
||||
static AccessibilityTextHelpers::BoundaryType getBoundaryType (ComTypes::TextUnit unit)
|
||||
static AccessibilityTextHelpers::BoundaryType getBoundaryType (TextUnit unit)
|
||||
{
|
||||
switch (unit)
|
||||
{
|
||||
case ComTypes::TextUnit_Character:
|
||||
case TextUnit_Character:
|
||||
return AccessibilityTextHelpers::BoundaryType::character;
|
||||
|
||||
case ComTypes::TextUnit_Format:
|
||||
case ComTypes::TextUnit_Word:
|
||||
case TextUnit_Format:
|
||||
case TextUnit_Word:
|
||||
return AccessibilityTextHelpers::BoundaryType::word;
|
||||
|
||||
case ComTypes::TextUnit_Line:
|
||||
case TextUnit_Line:
|
||||
return AccessibilityTextHelpers::BoundaryType::line;
|
||||
|
||||
case ComTypes::TextUnit_Paragraph:
|
||||
case ComTypes::TextUnit_Page:
|
||||
case ComTypes::TextUnit_Document:
|
||||
case TextUnit_Paragraph:
|
||||
case TextUnit_Page:
|
||||
case TextUnit_Document:
|
||||
return AccessibilityTextHelpers::BoundaryType::document;
|
||||
};
|
||||
|
||||
|
|
@ -596,9 +594,9 @@ private:
|
|||
return AccessibilityTextHelpers::BoundaryType::character;
|
||||
}
|
||||
|
||||
void setEndpointChecked (ComTypes::TextPatternRangeEndpoint endpoint, int newEndpoint)
|
||||
void setEndpointChecked (TextPatternRangeEndpoint endpoint, int newEndpoint)
|
||||
{
|
||||
if (endpoint == ComTypes::TextPatternRangeEndpoint_Start)
|
||||
if (endpoint == TextPatternRangeEndpoint_Start)
|
||||
{
|
||||
if (selectionRange.getEnd() < newEndpoint)
|
||||
selectionRange.setEnd (newEndpoint);
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ namespace juce
|
|||
|
||||
//==============================================================================
|
||||
class UIAToggleProvider : public UIAProviderBase,
|
||||
public ComBaseClassHelper<ComTypes::IToggleProvider>
|
||||
public ComBaseClassHelper<IToggleProvider>
|
||||
{
|
||||
public:
|
||||
using UIAProviderBase::UIAProviderBase;
|
||||
|
|
@ -64,7 +64,7 @@ public:
|
|||
return (HRESULT) UIA_E_NOTSUPPORTED;
|
||||
}
|
||||
|
||||
JUCE_COMRESULT get_ToggleState (ComTypes::ToggleState* pRetVal) override
|
||||
JUCE_COMRESULT get_ToggleState (ToggleState* pRetVal) override
|
||||
{
|
||||
return withCheckedComArgs (pRetVal, *this, [&]
|
||||
{
|
||||
|
|
@ -74,10 +74,10 @@ public:
|
|||
}
|
||||
|
||||
private:
|
||||
ComTypes::ToggleState getCurrentToggleState() const
|
||||
ToggleState getCurrentToggleState() const
|
||||
{
|
||||
return getHandler().getCurrentState().isChecked() ? ComTypes::ToggleState_On
|
||||
: ComTypes::ToggleState_Off;
|
||||
return getHandler().getCurrentState().isChecked() ? ToggleState_On
|
||||
: ToggleState_Off;
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ namespace juce
|
|||
|
||||
//==============================================================================
|
||||
class UIATransformProvider : public UIAProviderBase,
|
||||
public ComBaseClassHelper<ComTypes::ITransformProvider>
|
||||
public ComBaseClassHelper<ITransformProvider>
|
||||
{
|
||||
public:
|
||||
using UIAProviderBase::UIAProviderBase;
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ namespace juce
|
|||
|
||||
//==============================================================================
|
||||
class UIAValueProvider : public UIAProviderBase,
|
||||
public ComBaseClassHelper<ComTypes::IValueProvider>
|
||||
public ComBaseClassHelper<IValueProvider>
|
||||
{
|
||||
public:
|
||||
using UIAProviderBase::UIAProviderBase;
|
||||
|
|
|
|||
|
|
@ -37,13 +37,13 @@ namespace juce
|
|||
|
||||
//==============================================================================
|
||||
class UIAWindowProvider : public UIAProviderBase,
|
||||
public ComBaseClassHelper<ComTypes::IWindowProvider>
|
||||
public ComBaseClassHelper<IWindowProvider>
|
||||
{
|
||||
public:
|
||||
using UIAProviderBase::UIAProviderBase;
|
||||
|
||||
//==============================================================================
|
||||
JUCE_COMRESULT SetVisualState (ComTypes::WindowVisualState state) override
|
||||
JUCE_COMRESULT SetVisualState (WindowVisualState state) override
|
||||
{
|
||||
if (! isElementValid())
|
||||
return (HRESULT) UIA_E_ELEMENTNOTAVAILABLE;
|
||||
|
|
@ -52,15 +52,15 @@ public:
|
|||
{
|
||||
switch (state)
|
||||
{
|
||||
case ComTypes::WindowVisualState_Maximized:
|
||||
case WindowVisualState_Maximized:
|
||||
peer->setFullScreen (true);
|
||||
break;
|
||||
|
||||
case ComTypes::WindowVisualState_Minimized:
|
||||
case WindowVisualState_Minimized:
|
||||
peer->setMinimised (true);
|
||||
break;
|
||||
|
||||
case ComTypes::WindowVisualState_Normal:
|
||||
case WindowVisualState_Normal:
|
||||
peer->setFullScreen (false);
|
||||
peer->setMinimised (false);
|
||||
break;
|
||||
|
|
@ -139,18 +139,18 @@ public:
|
|||
});
|
||||
}
|
||||
|
||||
JUCE_COMRESULT get_WindowVisualState (ComTypes::WindowVisualState* pRetVal) override
|
||||
JUCE_COMRESULT get_WindowVisualState (WindowVisualState* pRetVal) override
|
||||
{
|
||||
return withCheckedComArgs (pRetVal, *this, [&]() -> HRESULT
|
||||
{
|
||||
if (auto* peer = getPeer())
|
||||
{
|
||||
if (peer->isFullScreen())
|
||||
*pRetVal = ComTypes::WindowVisualState_Maximized;
|
||||
*pRetVal = WindowVisualState_Maximized;
|
||||
else if (peer->isMinimised())
|
||||
*pRetVal = ComTypes::WindowVisualState_Minimized;
|
||||
*pRetVal = WindowVisualState_Minimized;
|
||||
else
|
||||
*pRetVal = ComTypes::WindowVisualState_Normal;
|
||||
*pRetVal = WindowVisualState_Normal;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
|
@ -159,15 +159,15 @@ public:
|
|||
});
|
||||
}
|
||||
|
||||
JUCE_COMRESULT get_WindowInteractionState (ComTypes::WindowInteractionState* pRetVal) override
|
||||
JUCE_COMRESULT get_WindowInteractionState (WindowInteractionState* pRetVal) override
|
||||
{
|
||||
return withCheckedComArgs (pRetVal, *this, [&]() -> HRESULT
|
||||
{
|
||||
if (auto* peer = getPeer())
|
||||
{
|
||||
*pRetVal = peer->getComponent().isCurrentlyBlockedByAnotherModalComponent()
|
||||
? ComTypes::WindowInteractionState::WindowInteractionState_BlockedByModalWindow
|
||||
: ComTypes::WindowInteractionState::WindowInteractionState_Running;
|
||||
? WindowInteractionState::WindowInteractionState_BlockedByModalWindow
|
||||
: WindowInteractionState::WindowInteractionState_Running;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -766,9 +766,7 @@ static void setWindowZOrder (HWND hwnd, HWND insertAfter)
|
|||
}
|
||||
|
||||
//==============================================================================
|
||||
#if ! JUCE_MINGW
|
||||
extern RTL_OSVERSIONINFOW getWindowsVersionInfo();
|
||||
#endif
|
||||
RTL_OSVERSIONINFOW getWindowsVersionInfo();
|
||||
|
||||
double Desktop::getDefaultMasterScale()
|
||||
{
|
||||
|
|
@ -788,7 +786,6 @@ class Desktop::NativeDarkModeChangeDetectorImpl
|
|||
public:
|
||||
NativeDarkModeChangeDetectorImpl()
|
||||
{
|
||||
#if ! JUCE_MINGW
|
||||
const auto winVer = getWindowsVersionInfo();
|
||||
|
||||
if (winVer.dwMajorVersion >= 10 && winVer.dwBuildNumber >= 17763)
|
||||
|
|
@ -805,7 +802,6 @@ public:
|
|||
darkModeEnabled = shouldAppsUseDarkMode() && ! isHighContrast();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
~NativeDarkModeChangeDetectorImpl()
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@
|
|||
#elif JUCE_WINDOWS
|
||||
#include <windowsx.h>
|
||||
|
||||
#if ! JUCE_MINGW && ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
|
||||
#if ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
|
||||
#pragma comment(lib, "OpenGL32.Lib")
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -55,7 +55,6 @@
|
|||
OSXFrameworks: OpenGL
|
||||
iOSFrameworks: OpenGLES
|
||||
linuxPackages: gl
|
||||
mingwLibs: opengl32
|
||||
|
||||
END_JUCE_MODULE_DECLARATION
|
||||
|
||||
|
|
|
|||
|
|
@ -54,10 +54,13 @@
|
|||
|
||||
//==============================================================================
|
||||
#elif JUCE_WINDOWS
|
||||
#include "wmsdkidl.h"
|
||||
#include "native/juce_ComTypes_windows.h"
|
||||
#include "dshow.h"
|
||||
#include "dshowasf.h"
|
||||
#include "evr.h"
|
||||
#include "strmif.h"
|
||||
#include "wmsdk.h"
|
||||
|
||||
#if ! JUCE_MINGW && ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
|
||||
#if ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES
|
||||
#pragma comment (lib, "strmiids.lib")
|
||||
|
||||
#if JUCE_USE_CAMERA
|
||||
|
|
|
|||
|
|
@ -32,6 +32,29 @@
|
|||
==============================================================================
|
||||
*/
|
||||
|
||||
// The following definitions would normally be found in qedit.h, which is not part of the
|
||||
// Windows SDK, and which is incompatible with newer versions of DirectX.
|
||||
JUCE_COMCLASS (ISampleGrabberCB, "0579154A-2B53-4994-B0D0-E773148EFF85") : public IUnknown
|
||||
{
|
||||
JUCE_COMCALL SampleCB (double, IMediaSample*) = 0;
|
||||
JUCE_COMCALL BufferCB (double, BYTE*, long) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (ISampleGrabber, "6B652FFF-11FE-4fce-92AD-0266B5D7C78F") : public IUnknown
|
||||
{
|
||||
JUCE_COMCALL SetOneShot (BOOL) = 0;
|
||||
JUCE_COMCALL SetMediaType (const AM_MEDIA_TYPE*) = 0;
|
||||
JUCE_COMCALL GetConnectedMediaType (AM_MEDIA_TYPE*) = 0;
|
||||
JUCE_COMCALL SetBufferSamples (BOOL) = 0;
|
||||
JUCE_COMCALL GetCurrentBuffer (long*, long*) = 0;
|
||||
JUCE_COMCALL GetCurrentSample (IMediaSample**) = 0;
|
||||
JUCE_COMCALL SetCallback (ISampleGrabberCB*, long) = 0;
|
||||
};
|
||||
|
||||
constexpr CLSID CLSID_NullRenderer = { 0xC1F400A4, 0x3F08, 0x11d3, { 0x9F, 0x0B, 0x00, 0x60, 0x08, 0x03, 0x9E, 0x37 } };
|
||||
constexpr CLSID CLSID_SampleGrabber = { 0xC1F400A0, 0x3F08, 0x11d3, { 0x9F, 0x0B, 0x00, 0x60, 0x08, 0x03, 0x9E, 0x37 } };
|
||||
|
||||
//==============================================================================
|
||||
struct CameraDevice::Pimpl : public ChangeBroadcaster
|
||||
{
|
||||
Pimpl (CameraDevice& ownerToUse, const String&, int index,
|
||||
|
|
@ -39,7 +62,7 @@ struct CameraDevice::Pimpl : public ChangeBroadcaster
|
|||
bool /*highQuality*/)
|
||||
: owner (ownerToUse)
|
||||
{
|
||||
HRESULT hr = captureGraphBuilder.CoCreateInstance (ComTypes::CLSID_CaptureGraphBuilder2);
|
||||
HRESULT hr = captureGraphBuilder.CoCreateInstance (CLSID_CaptureGraphBuilder2);
|
||||
if (FAILED (hr))
|
||||
return;
|
||||
|
||||
|
|
@ -47,7 +70,7 @@ struct CameraDevice::Pimpl : public ChangeBroadcaster
|
|||
if (filter == nullptr)
|
||||
return;
|
||||
|
||||
hr = graphBuilder.CoCreateInstance (ComTypes::CLSID_FilterGraph);
|
||||
hr = graphBuilder.CoCreateInstance (CLSID_FilterGraph);
|
||||
if (FAILED (hr))
|
||||
return;
|
||||
|
||||
|
|
@ -55,16 +78,16 @@ struct CameraDevice::Pimpl : public ChangeBroadcaster
|
|||
if (FAILED (hr))
|
||||
return;
|
||||
|
||||
mediaControl = graphBuilder.getInterface<ComTypes::IMediaControl>();
|
||||
mediaControl = graphBuilder.getInterface<IMediaControl>();
|
||||
if (mediaControl == nullptr)
|
||||
return;
|
||||
|
||||
{
|
||||
ComSmartPtr<ComTypes::IAMStreamConfig> streamConfig;
|
||||
ComSmartPtr<IAMStreamConfig> streamConfig;
|
||||
|
||||
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wlanguage-extension-token")
|
||||
hr = captureGraphBuilder->FindInterface (&ComTypes::PIN_CATEGORY_CAPTURE, nullptr, filter,
|
||||
__uuidof (ComTypes::IAMStreamConfig), (void**) streamConfig.resetAndGetPointerAddress());
|
||||
hr = captureGraphBuilder->FindInterface (&PIN_CATEGORY_CAPTURE, nullptr, filter,
|
||||
__uuidof (IAMStreamConfig), (void**) streamConfig.resetAndGetPointerAddress());
|
||||
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
|
||||
|
||||
if (streamConfig != nullptr)
|
||||
|
|
@ -80,7 +103,7 @@ struct CameraDevice::Pimpl : public ChangeBroadcaster
|
|||
if (FAILED (hr))
|
||||
return;
|
||||
|
||||
hr = smartTee.CoCreateInstance (ComTypes::CLSID_SmartTee);
|
||||
hr = smartTee.CoCreateInstance (CLSID_SmartTee);
|
||||
if (FAILED (hr))
|
||||
return;
|
||||
|
||||
|
|
@ -91,23 +114,23 @@ struct CameraDevice::Pimpl : public ChangeBroadcaster
|
|||
if (! connectFilters (filter, smartTee))
|
||||
return;
|
||||
|
||||
ComSmartPtr<ComTypes::IBaseFilter> sampleGrabberBase;
|
||||
hr = sampleGrabberBase.CoCreateInstance (ComTypes::CLSID_SampleGrabber);
|
||||
ComSmartPtr<IBaseFilter> sampleGrabberBase;
|
||||
hr = sampleGrabberBase.CoCreateInstance (CLSID_SampleGrabber);
|
||||
if (FAILED (hr))
|
||||
return;
|
||||
|
||||
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wlanguage-extension-token")
|
||||
hr = sampleGrabberBase.QueryInterface (__uuidof (ComTypes::ISampleGrabber), sampleGrabber);
|
||||
hr = sampleGrabberBase.QueryInterface (__uuidof (ISampleGrabber), sampleGrabber);
|
||||
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
|
||||
|
||||
if (FAILED (hr))
|
||||
return;
|
||||
|
||||
{
|
||||
ComTypes::AM_MEDIA_TYPE mt = {};
|
||||
mt.majortype = ComTypes::MEDIATYPE_Video;
|
||||
mt.subtype = ComTypes::MEDIASUBTYPE_RGB24;
|
||||
mt.formattype = ComTypes::FORMAT_VideoInfo;
|
||||
AM_MEDIA_TYPE mt = {};
|
||||
mt.majortype = MEDIATYPE_Video;
|
||||
mt.subtype = MEDIASUBTYPE_RGB24;
|
||||
mt.formattype = FORMAT_VideoInfo;
|
||||
sampleGrabber->SetMediaType (&mt);
|
||||
}
|
||||
|
||||
|
|
@ -118,27 +141,27 @@ struct CameraDevice::Pimpl : public ChangeBroadcaster
|
|||
if (FAILED (hr))
|
||||
return;
|
||||
|
||||
ComSmartPtr<ComTypes::IPin> grabberInputPin;
|
||||
if (! (getPin (smartTee, ComTypes::PINDIR_OUTPUT, smartTeeCaptureOutputPin, "capture")
|
||||
&& getPin (smartTee, ComTypes::PINDIR_OUTPUT, smartTeePreviewOutputPin, "preview")
|
||||
&& getPin (sampleGrabberBase, ComTypes::PINDIR_INPUT, grabberInputPin)))
|
||||
ComSmartPtr<IPin> grabberInputPin;
|
||||
if (! (getPin (smartTee, PINDIR_OUTPUT, smartTeeCaptureOutputPin, "capture")
|
||||
&& getPin (smartTee, PINDIR_OUTPUT, smartTeePreviewOutputPin, "preview")
|
||||
&& getPin (sampleGrabberBase, PINDIR_INPUT, grabberInputPin)))
|
||||
return;
|
||||
|
||||
hr = graphBuilder->Connect (smartTeePreviewOutputPin, grabberInputPin);
|
||||
if (FAILED (hr))
|
||||
return;
|
||||
|
||||
ComTypes::AM_MEDIA_TYPE mt = {};
|
||||
AM_MEDIA_TYPE mt = {};
|
||||
hr = sampleGrabber->GetConnectedMediaType (&mt);
|
||||
|
||||
if (auto* pVih = unalignedPointerCast<ComTypes::VIDEOINFOHEADER*> (mt.pbFormat))
|
||||
if (auto* pVih = unalignedPointerCast<VIDEOINFOHEADER*> (mt.pbFormat))
|
||||
{
|
||||
width = pVih->bmiHeader.biWidth;
|
||||
height = pVih->bmiHeader.biHeight;
|
||||
}
|
||||
|
||||
ComSmartPtr<ComTypes::IBaseFilter> nullFilter;
|
||||
hr = nullFilter.CoCreateInstance (ComTypes::CLSID_NullRenderer);
|
||||
ComSmartPtr<IBaseFilter> nullFilter;
|
||||
hr = nullFilter.CoCreateInstance (CLSID_NullRenderer);
|
||||
hr = graphBuilder->AddFilter (nullFilter, _T ("Null Renderer"));
|
||||
|
||||
if (connectFilters (sampleGrabberBase, nullFilter)
|
||||
|
|
@ -277,12 +300,12 @@ struct CameraDevice::Pimpl : public ChangeBroadcaster
|
|||
firstRecordedTime = Time::getCurrentTime() - RelativeTime (defaultCameraLatency);
|
||||
recordNextFrameTime = false;
|
||||
|
||||
ComSmartPtr<ComTypes::IPin> pin;
|
||||
if (getPin (filter, ComTypes::PINDIR_OUTPUT, pin))
|
||||
ComSmartPtr<IPin> pin;
|
||||
if (getPin (filter, PINDIR_OUTPUT, pin))
|
||||
{
|
||||
if (auto pushSource = pin.getInterface<ComTypes::IAMPushSource>())
|
||||
if (auto pushSource = pin.getInterface<IAMPushSource>())
|
||||
{
|
||||
ComTypes::REFERENCE_TIME latency = 0;
|
||||
REFERENCE_TIME latency = 0;
|
||||
pushSource->GetLatency (&latency);
|
||||
|
||||
firstRecordedTime = firstRecordedTime - RelativeTime ((double) latency);
|
||||
|
|
@ -342,11 +365,11 @@ struct CameraDevice::Pimpl : public ChangeBroadcaster
|
|||
recordNextFrameTime = true;
|
||||
previewMaxFPS = 60;
|
||||
|
||||
HRESULT hr = asfWriter.CoCreateInstance (ComTypes::CLSID_WMAsfWriter);
|
||||
HRESULT hr = asfWriter.CoCreateInstance (CLSID_WMAsfWriter);
|
||||
|
||||
if (SUCCEEDED (hr))
|
||||
{
|
||||
if (auto fileSink = asfWriter.getInterface<ComTypes::IFileSinkFilter>())
|
||||
if (auto fileSink = asfWriter.getInterface<IFileSinkFilter>())
|
||||
{
|
||||
hr = fileSink->SetFileName (file.getFullPathName().toWideCharPointer(), nullptr);
|
||||
|
||||
|
|
@ -356,19 +379,12 @@ struct CameraDevice::Pimpl : public ChangeBroadcaster
|
|||
|
||||
if (SUCCEEDED (hr))
|
||||
{
|
||||
if (auto asfConfig = asfWriter.getInterface<ComTypes::IConfigAsfWriter>())
|
||||
if (auto asfConfig = asfWriter.getInterface<IConfigAsfWriter>())
|
||||
{
|
||||
asfConfig->SetIndexMode (true);
|
||||
ComSmartPtr<IWMProfileManager> profileManager;
|
||||
|
||||
using Fn = HRESULT (*) (IWMProfileManager**);
|
||||
|
||||
// This function is available on Windows 2000 and up, but we load it at runtime anyway
|
||||
// because some versions of MinGW ship with libraries that don't include this symbol.
|
||||
if (auto* fn = reinterpret_cast<Fn> (wmvcoreLibrary.getFunction ("WMCreateProfileManager")))
|
||||
hr = fn (profileManager.resetAndGetPointerAddress());
|
||||
else
|
||||
jassertfalse;
|
||||
hr = WMCreateProfileManager (profileManager.resetAndGetPointerAddress());
|
||||
|
||||
// This gibberish is the DirectShow profile for a video-only wmv file.
|
||||
String prof ("<profile version=\"589824\" storageformat=\"1\" name=\"Quality\" description=\"Quality type for output.\">"
|
||||
|
|
@ -405,9 +421,9 @@ struct CameraDevice::Pimpl : public ChangeBroadcaster
|
|||
|
||||
if (SUCCEEDED (hr))
|
||||
{
|
||||
ComSmartPtr<ComTypes::IPin> asfWriterInputPin;
|
||||
ComSmartPtr<IPin> asfWriterInputPin;
|
||||
|
||||
if (getPin (asfWriter, ComTypes::PINDIR_INPUT, asfWriterInputPin, "Video Input 01"))
|
||||
if (getPin (asfWriter, PINDIR_INPUT, asfWriterInputPin, "Video Input 01"))
|
||||
{
|
||||
hr = graphBuilder->Connect (smartTeeCaptureOutputPin, asfWriterInputPin);
|
||||
|
||||
|
|
@ -453,10 +469,10 @@ struct CameraDevice::Pimpl : public ChangeBroadcaster
|
|||
previewMaxFPS = 60;
|
||||
}
|
||||
|
||||
static ComSmartPtr<ComTypes::IBaseFilter> enumerateCameras (StringArray* names, const int deviceIndexToOpen)
|
||||
static ComSmartPtr<IBaseFilter> enumerateCameras (StringArray* names, const int deviceIndexToOpen)
|
||||
{
|
||||
int index = 0;
|
||||
ComSmartPtr<ComTypes::ICreateDevEnum> pDevEnum;
|
||||
ComSmartPtr<ICreateDevEnum> pDevEnum;
|
||||
|
||||
struct Deleter
|
||||
{
|
||||
|
|
@ -465,10 +481,10 @@ struct CameraDevice::Pimpl : public ChangeBroadcaster
|
|||
|
||||
using ContextPtr = std::unique_ptr<IBindCtx, Deleter>;
|
||||
|
||||
if (SUCCEEDED (pDevEnum.CoCreateInstance (ComTypes::CLSID_SystemDeviceEnum)))
|
||||
if (SUCCEEDED (pDevEnum.CoCreateInstance (CLSID_SystemDeviceEnum)))
|
||||
{
|
||||
ComSmartPtr<IEnumMoniker> enumerator;
|
||||
HRESULT hr = pDevEnum->CreateClassEnumerator (ComTypes::CLSID_VideoInputDeviceCategory, enumerator.resetAndGetPointerAddress(), 0);
|
||||
HRESULT hr = pDevEnum->CreateClassEnumerator (CLSID_VideoInputDeviceCategory, enumerator.resetAndGetPointerAddress(), 0);
|
||||
|
||||
if (SUCCEEDED (hr) && enumerator != nullptr)
|
||||
{
|
||||
|
|
@ -484,9 +500,9 @@ struct CameraDevice::Pimpl : public ChangeBroadcaster
|
|||
return ContextPtr (ptr);
|
||||
}();
|
||||
|
||||
ComSmartPtr<ComTypes::IBaseFilter> captureFilter;
|
||||
ComSmartPtr<IBaseFilter> captureFilter;
|
||||
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wlanguage-extension-token")
|
||||
hr = moniker->BindToObject (context.get(), nullptr, __uuidof (ComTypes::IBaseFilter), (void**) captureFilter.resetAndGetPointerAddress());
|
||||
hr = moniker->BindToObject (context.get(), nullptr, __uuidof (IBaseFilter), (void**) captureFilter.resetAndGetPointerAddress());
|
||||
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
|
||||
|
||||
if (SUCCEEDED (hr))
|
||||
|
|
@ -528,7 +544,7 @@ struct CameraDevice::Pimpl : public ChangeBroadcaster
|
|||
return devs;
|
||||
}
|
||||
|
||||
struct GrabberCallback : public ComBaseClassHelperBase<ComTypes::ISampleGrabberCB>
|
||||
struct GrabberCallback : public ComBaseClassHelperBase<ISampleGrabberCB>
|
||||
{
|
||||
explicit GrabberCallback (Pimpl& p)
|
||||
: owner (p) {}
|
||||
|
|
@ -536,14 +552,14 @@ struct CameraDevice::Pimpl : public ChangeBroadcaster
|
|||
JUCE_COMRESULT QueryInterface (REFIID refId, void** result) override
|
||||
{
|
||||
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wlanguage-extension-token")
|
||||
if (refId == __uuidof (ComTypes::ISampleGrabberCB))
|
||||
return castToType<ComTypes::ISampleGrabberCB> (result);
|
||||
if (refId == __uuidof (ISampleGrabberCB))
|
||||
return castToType<ISampleGrabberCB> (result);
|
||||
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
|
||||
|
||||
return ComBaseClassHelperBase<ComTypes::ISampleGrabberCB>::QueryInterface (refId, result);
|
||||
return ComBaseClassHelperBase<ISampleGrabberCB>::QueryInterface (refId, result);
|
||||
}
|
||||
|
||||
JUCE_COMRESULT SampleCB (double, ComTypes::IMediaSample*) override { return E_FAIL; }
|
||||
JUCE_COMRESULT SampleCB (double, IMediaSample*) override { return E_FAIL; }
|
||||
|
||||
JUCE_COMRESULT BufferCB (double time, BYTE* buffer, long bufferSize) override
|
||||
{
|
||||
|
|
@ -556,7 +572,6 @@ struct CameraDevice::Pimpl : public ChangeBroadcaster
|
|||
JUCE_DECLARE_NON_COPYABLE (GrabberCallback)
|
||||
};
|
||||
|
||||
DynamicLibrary wmvcoreLibrary { "wmvcore" };
|
||||
CameraDevice& owner;
|
||||
|
||||
ComSmartPtr<GrabberCallback> callback;
|
||||
|
|
@ -573,12 +588,12 @@ struct CameraDevice::Pimpl : public ChangeBroadcaster
|
|||
|
||||
Array<ViewerComponent*> viewerComps;
|
||||
|
||||
ComSmartPtr<ComTypes::ICaptureGraphBuilder2> captureGraphBuilder;
|
||||
ComSmartPtr<ComTypes::IBaseFilter> filter, smartTee, asfWriter;
|
||||
ComSmartPtr<ComTypes::IGraphBuilder> graphBuilder;
|
||||
ComSmartPtr<ComTypes::ISampleGrabber> sampleGrabber;
|
||||
ComSmartPtr<ComTypes::IMediaControl> mediaControl;
|
||||
ComSmartPtr<ComTypes::IPin> smartTeePreviewOutputPin, smartTeeCaptureOutputPin;
|
||||
ComSmartPtr<ICaptureGraphBuilder2> captureGraphBuilder;
|
||||
ComSmartPtr<IBaseFilter> filter, smartTee, asfWriter;
|
||||
ComSmartPtr<IGraphBuilder> graphBuilder;
|
||||
ComSmartPtr<ISampleGrabber> sampleGrabber;
|
||||
ComSmartPtr<IMediaControl> mediaControl;
|
||||
ComSmartPtr<IPin> smartTeePreviewOutputPin, smartTeeCaptureOutputPin;
|
||||
int activeUsers = 0;
|
||||
Array<int> widths, heights;
|
||||
DWORD graphRegistrationID;
|
||||
|
|
@ -592,7 +607,7 @@ private:
|
|||
CriticalSection imageSwapLock;
|
||||
Image activeImage;
|
||||
|
||||
void getVideoSizes (ComTypes::IAMStreamConfig* const streamConfig)
|
||||
void getVideoSizes (IAMStreamConfig* const streamConfig)
|
||||
{
|
||||
widths.clear();
|
||||
heights.clear();
|
||||
|
|
@ -600,12 +615,12 @@ private:
|
|||
int count = 0, size = 0;
|
||||
streamConfig->GetNumberOfCapabilities (&count, &size);
|
||||
|
||||
if (size == (int) sizeof (ComTypes::VIDEO_STREAM_CONFIG_CAPS))
|
||||
if (size == (int) sizeof (VIDEO_STREAM_CONFIG_CAPS))
|
||||
{
|
||||
for (int i = 0; i < count; ++i)
|
||||
{
|
||||
ComTypes::VIDEO_STREAM_CONFIG_CAPS scc;
|
||||
ComTypes::AM_MEDIA_TYPE* config;
|
||||
VIDEO_STREAM_CONFIG_CAPS scc;
|
||||
AM_MEDIA_TYPE* config;
|
||||
|
||||
HRESULT hr = streamConfig->GetStreamCaps (i, &config, (BYTE*) &scc);
|
||||
|
||||
|
|
@ -637,17 +652,17 @@ private:
|
|||
}
|
||||
}
|
||||
|
||||
bool selectVideoSize (ComTypes::IAMStreamConfig* const streamConfig,
|
||||
bool selectVideoSize (IAMStreamConfig* const streamConfig,
|
||||
const int minWidth, const int minHeight,
|
||||
const int maxWidth, const int maxHeight)
|
||||
{
|
||||
int count = 0, size = 0, bestArea = 0, bestIndex = -1;
|
||||
streamConfig->GetNumberOfCapabilities (&count, &size);
|
||||
|
||||
if (size == (int) sizeof (ComTypes::VIDEO_STREAM_CONFIG_CAPS))
|
||||
if (size == (int) sizeof (VIDEO_STREAM_CONFIG_CAPS))
|
||||
{
|
||||
ComTypes::AM_MEDIA_TYPE* config;
|
||||
ComTypes::VIDEO_STREAM_CONFIG_CAPS scc;
|
||||
AM_MEDIA_TYPE* config;
|
||||
VIDEO_STREAM_CONFIG_CAPS scc;
|
||||
|
||||
for (int i = 0; i < count; ++i)
|
||||
{
|
||||
|
|
@ -685,22 +700,22 @@ private:
|
|||
return false;
|
||||
}
|
||||
|
||||
static bool getPin (ComTypes::IBaseFilter* filter, const ComTypes::PIN_DIRECTION wantedDirection,
|
||||
ComSmartPtr<ComTypes::IPin>& result, const char* pinName = nullptr)
|
||||
static bool getPin (IBaseFilter* filter, const PIN_DIRECTION wantedDirection,
|
||||
ComSmartPtr<IPin>& result, const char* pinName = nullptr)
|
||||
{
|
||||
ComSmartPtr<ComTypes::IEnumPins> enumerator;
|
||||
ComSmartPtr<ComTypes::IPin> pin;
|
||||
ComSmartPtr<IEnumPins> enumerator;
|
||||
ComSmartPtr<IPin> pin;
|
||||
|
||||
filter->EnumPins (enumerator.resetAndGetPointerAddress());
|
||||
|
||||
while (enumerator->Next (1, pin.resetAndGetPointerAddress(), nullptr) == S_OK)
|
||||
{
|
||||
ComTypes::PIN_DIRECTION dir;
|
||||
PIN_DIRECTION dir;
|
||||
pin->QueryDirection (&dir);
|
||||
|
||||
if (wantedDirection == dir)
|
||||
{
|
||||
ComTypes::PIN_INFO info = {};
|
||||
PIN_INFO info = {};
|
||||
pin->QueryPinInfo (&info);
|
||||
|
||||
if (pinName == nullptr || String (pinName).equalsIgnoreCase (String (info.achName)))
|
||||
|
|
@ -714,12 +729,12 @@ private:
|
|||
return false;
|
||||
}
|
||||
|
||||
bool connectFilters (ComTypes::IBaseFilter* const first, ComTypes::IBaseFilter* const second) const
|
||||
bool connectFilters (IBaseFilter* const first, IBaseFilter* const second) const
|
||||
{
|
||||
ComSmartPtr<ComTypes::IPin> in, out;
|
||||
ComSmartPtr<IPin> in, out;
|
||||
|
||||
return getPin (first, ComTypes::PINDIR_OUTPUT, out)
|
||||
&& getPin (second, ComTypes::PINDIR_INPUT, in)
|
||||
return getPin (first, PINDIR_OUTPUT, out)
|
||||
&& getPin (second, PINDIR_INPUT, in)
|
||||
&& SUCCEEDED (graphBuilder->Connect (out, in));
|
||||
}
|
||||
|
||||
|
|
@ -749,7 +764,7 @@ private:
|
|||
|
||||
void disconnectAnyViewers();
|
||||
|
||||
static void deleteMediaType (ComTypes::AM_MEDIA_TYPE* const pmt)
|
||||
static void deleteMediaType (AM_MEDIA_TYPE* const pmt)
|
||||
{
|
||||
if (pmt->cbFormat != 0)
|
||||
CoTaskMemFree ((PVOID) pmt->pbFormat);
|
||||
|
|
|
|||
|
|
@ -1,521 +0,0 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
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
|
||||
{
|
||||
namespace ComTypes
|
||||
{
|
||||
/*
|
||||
These interfaces would normally be included in the system platform headers.
|
||||
However, those headers are likely to be incomplete when building with
|
||||
MinGW. In order to allow building video applications under MinGW,
|
||||
we reproduce all necessary definitions here.
|
||||
*/
|
||||
|
||||
enum PIN_DIRECTION
|
||||
{
|
||||
PINDIR_INPUT = 0,
|
||||
PINDIR_OUTPUT = PINDIR_INPUT + 1
|
||||
};
|
||||
|
||||
enum VMRMode
|
||||
{
|
||||
VMRMode_Windowed = 0x1,
|
||||
VMRMode_Windowless = 0x2,
|
||||
VMRMode_Renderless = 0x4,
|
||||
VMRMode_Mask = 0x7
|
||||
};
|
||||
|
||||
enum VMR_ASPECT_RATIO_MODE
|
||||
{
|
||||
VMR_ARMODE_NONE = 0,
|
||||
VMR_ARMODE_LETTER_BOX = VMR_ARMODE_NONE + 1
|
||||
};
|
||||
|
||||
enum MFVideoAspectRatioMode
|
||||
{
|
||||
MFVideoARMode_None = 0,
|
||||
MFVideoARMode_PreservePicture = 0x1,
|
||||
MFVideoARMode_PreservePixel = 0x2,
|
||||
MFVideoARMode_NonLinearStretch = 0x4,
|
||||
MFVideoARMode_Mask = 0x7
|
||||
};
|
||||
|
||||
enum FILTER_STATE
|
||||
{
|
||||
State_Stopped = 0,
|
||||
State_Paused = State_Stopped + 1,
|
||||
State_Running = State_Paused + 1
|
||||
};
|
||||
|
||||
enum WMT_VERSION
|
||||
{
|
||||
WMT_VER_4_0 = 0x40000,
|
||||
WMT_VER_7_0 = 0x70000,
|
||||
WMT_VER_8_0 = 0x80000,
|
||||
WMT_VER_9_0 = 0x90000
|
||||
};
|
||||
|
||||
// We only ever refer to these through a pointer, so we don't need definitions for them.
|
||||
struct IAMCopyCaptureFileProgress;
|
||||
struct IBaseFilter;
|
||||
struct IEnumFilters;
|
||||
struct IEnumMediaTypes;
|
||||
struct IReferenceClock;
|
||||
struct IVMRImageCompositor;
|
||||
|
||||
struct FILTER_INFO;
|
||||
|
||||
struct AM_MEDIA_TYPE
|
||||
{
|
||||
GUID majortype;
|
||||
GUID subtype;
|
||||
BOOL bFixedSizeSamples;
|
||||
BOOL bTemporalCompression;
|
||||
ULONG lSampleSize;
|
||||
GUID formattype;
|
||||
IUnknown* pUnk;
|
||||
ULONG cbFormat;
|
||||
BYTE* pbFormat;
|
||||
};
|
||||
|
||||
typedef LONGLONG REFERENCE_TIME;
|
||||
typedef LONG_PTR OAEVENT;
|
||||
typedef LONG_PTR OAHWND;
|
||||
typedef double REFTIME;
|
||||
typedef long OAFilterState;
|
||||
|
||||
enum Constants
|
||||
{
|
||||
EC_STATE_CHANGE = 0x32,
|
||||
EC_REPAINT = 0x05,
|
||||
EC_COMPLETE = 0x01,
|
||||
EC_ERRORABORT = 0x03,
|
||||
EC_ERRORABORTEX = 0x45,
|
||||
EC_USERABORT = 0x02,
|
||||
|
||||
VFW_E_INVALID_FILE_FORMAT = (HRESULT) 0x8004022FL,
|
||||
VFW_E_NOT_FOUND = (HRESULT) 0x80040216L,
|
||||
VFW_E_UNKNOWN_FILE_TYPE = (HRESULT) 0x80040240L,
|
||||
VFW_E_UNSUPPORTED_STREAM = (HRESULT) 0x80040265L,
|
||||
VFW_E_CANNOT_CONNECT = (HRESULT) 0x80040217L,
|
||||
VFW_E_CANNOT_LOAD_SOURCE_FILTER = (HRESULT) 0x80040241L,
|
||||
VFW_E_NOT_CONNECTED = (HRESULT) 0x80040209L
|
||||
};
|
||||
|
||||
struct MFVideoNormalizedRect
|
||||
{
|
||||
float left;
|
||||
float top;
|
||||
float right;
|
||||
float bottom;
|
||||
};
|
||||
|
||||
struct VIDEOINFOHEADER
|
||||
{
|
||||
RECT rcSource;
|
||||
RECT rcTarget;
|
||||
DWORD dwBitRate;
|
||||
DWORD dwBitErrorRate;
|
||||
REFERENCE_TIME AvgTimePerFrame;
|
||||
BITMAPINFOHEADER bmiHeader;
|
||||
};
|
||||
|
||||
struct VIDEO_STREAM_CONFIG_CAPS
|
||||
{
|
||||
GUID guid;
|
||||
ULONG VideoStandard;
|
||||
SIZE InputSize;
|
||||
SIZE MinCroppingSize;
|
||||
SIZE MaxCroppingSize;
|
||||
int CropGranularityX;
|
||||
int CropGranularityY;
|
||||
int CropAlignX;
|
||||
int CropAlignY;
|
||||
SIZE MinOutputSize;
|
||||
SIZE MaxOutputSize;
|
||||
int OutputGranularityX;
|
||||
int OutputGranularityY;
|
||||
int StretchTapsX;
|
||||
int StretchTapsY;
|
||||
int ShrinkTapsX;
|
||||
int ShrinkTapsY;
|
||||
LONGLONG MinFrameInterval;
|
||||
LONGLONG MaxFrameInterval;
|
||||
LONG MinBitsPerSecond;
|
||||
LONG MaxBitsPerSecond;
|
||||
};
|
||||
|
||||
struct PIN_INFO
|
||||
{
|
||||
IBaseFilter* pFilter;
|
||||
PIN_DIRECTION dir;
|
||||
WCHAR achName[128];
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (ICreateDevEnum, "29840822-5B84-11D0-BD3B-00A0C911CE86") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL CreateClassEnumerator (REFCLSID clsidDeviceClass, _Out_ IEnumMoniker * *ppEnumMoniker, DWORD dwFlags) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IPin, "56a86891-0ad4-11ce-b03a-0020af0ba770") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL Connect (IPin * pReceivePin, _In_opt_ const AM_MEDIA_TYPE* pmt) = 0;
|
||||
JUCE_COMCALL ReceiveConnection (IPin * pConnector, const AM_MEDIA_TYPE* pmt) = 0;
|
||||
JUCE_COMCALL Disconnect() = 0;
|
||||
JUCE_COMCALL ConnectedTo (_Out_ IPin * *pPin) = 0;
|
||||
JUCE_COMCALL ConnectionMediaType (_Out_ AM_MEDIA_TYPE * pmt) = 0;
|
||||
JUCE_COMCALL QueryPinInfo (_Out_ PIN_INFO * pInfo) = 0;
|
||||
JUCE_COMCALL QueryDirection (_Out_ PIN_DIRECTION * pPinDir) = 0;
|
||||
JUCE_COMCALL QueryId (_Out_ LPWSTR * Id) = 0;
|
||||
JUCE_COMCALL QueryAccept (const AM_MEDIA_TYPE* pmt) = 0;
|
||||
JUCE_COMCALL EnumMediaTypes (_Out_ IEnumMediaTypes * *ppEnum) = 0;
|
||||
JUCE_COMCALL QueryInternalConnections (_Out_writes_to_opt_ (*nPin, *nPin) IPin * *apPin, ULONG * nPin) = 0;
|
||||
JUCE_COMCALL EndOfStream() = 0;
|
||||
JUCE_COMCALL BeginFlush() = 0;
|
||||
JUCE_COMCALL EndFlush() = 0;
|
||||
JUCE_COMCALL NewSegment (REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IFilterGraph, "56a8689f-0ad4-11ce-b03a-0020af0ba770") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL AddFilter (IBaseFilter * pFilter, LPCWSTR pName) = 0;
|
||||
JUCE_COMCALL RemoveFilter (IBaseFilter * pFilter) = 0;
|
||||
JUCE_COMCALL EnumFilters (_Out_ IEnumFilters * *ppEnum) = 0;
|
||||
JUCE_COMCALL FindFilterByName (LPCWSTR pName, _Out_ IBaseFilter * *ppFilter) = 0;
|
||||
JUCE_COMCALL ConnectDirect (IPin * ppinOut, IPin * ppinIn, _In_opt_ const AM_MEDIA_TYPE* pmt) = 0;
|
||||
JUCE_COMCALL Reconnect (IPin * ppin) = 0;
|
||||
JUCE_COMCALL Disconnect (IPin * ppin) = 0;
|
||||
JUCE_COMCALL SetDefaultSyncSource() = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IGraphBuilder, "56a868a9-0ad4-11ce-b03a-0020af0ba770") : public IFilterGraph
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL Connect (IPin * ppinOut, IPin * ppinIn) = 0;
|
||||
JUCE_COMCALL Render (IPin * ppinOut) = 0;
|
||||
JUCE_COMCALL RenderFile (LPCWSTR lpcwstrFile, _In_opt_ LPCWSTR lpcwstrPlayList) = 0;
|
||||
JUCE_COMCALL AddSourceFilter (LPCWSTR lpcwstrFileName, _In_opt_ LPCWSTR lpcwstrFilterName, _Out_ IBaseFilter * *ppFilter) = 0;
|
||||
JUCE_COMCALL SetLogFile (DWORD_PTR hFile) = 0;
|
||||
JUCE_COMCALL Abort() = 0;
|
||||
JUCE_COMCALL ShouldOperationContinue() = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IMediaFilter, "56a86899-0ad4-11ce-b03a-0020af0ba770") : public IPersist
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL Stop() = 0;
|
||||
JUCE_COMCALL Pause() = 0;
|
||||
JUCE_COMCALL Run (REFERENCE_TIME tStart) = 0;
|
||||
JUCE_COMCALL GetState (DWORD dwMilliSecsTimeout, _Out_ FILTER_STATE * State) = 0;
|
||||
JUCE_COMCALL SetSyncSource (_In_opt_ IReferenceClock * pClock) = 0;
|
||||
JUCE_COMCALL GetSyncSource (_Outptr_result_maybenull_ IReferenceClock * *pClock) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IEnumPins, "56a86892-0ad4-11ce-b03a-0020af0ba770") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL Next (ULONG cPins, _Out_writes_to_ (cPins, *pcFetched) IPin * *ppPins, _Out_opt_ ULONG * pcFetched) = 0;
|
||||
JUCE_COMCALL Skip (ULONG cPins) = 0;
|
||||
JUCE_COMCALL Reset() = 0;
|
||||
JUCE_COMCALL Clone (_Out_ IEnumPins * *ppEnum) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IBaseFilter, "56a86895-0ad4-11ce-b03a-0020af0ba770") : public IMediaFilter
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL EnumPins (_Out_ IEnumPins * *ppEnum) = 0;
|
||||
JUCE_COMCALL FindPin (LPCWSTR Id, _Out_ IPin * *ppPin) = 0;
|
||||
JUCE_COMCALL QueryFilterInfo (_Out_ FILTER_INFO * pInfo) = 0;
|
||||
JUCE_COMCALL JoinFilterGraph (_In_opt_ IFilterGraph * pGraph, _In_opt_ LPCWSTR pName) = 0;
|
||||
JUCE_COMCALL QueryVendorInfo (_Out_ LPWSTR * pVendorInfo) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IVMRWindowlessControl, "0eb1088c-4dcd-46f0-878f-39dae86a51b7") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL GetNativeVideoSize (LONG * lpWidth, LONG * lpHeight, LONG * lpARWidth, LONG * lpARHeight) = 0;
|
||||
JUCE_COMCALL GetMinIdealVideoSize (LONG * lpWidth, LONG * lpHeight) = 0;
|
||||
JUCE_COMCALL GetMaxIdealVideoSize (LONG * lpWidth, LONG * lpHeight) = 0;
|
||||
JUCE_COMCALL SetVideoPosition (const LPRECT lpSRCRect, const LPRECT lpDSTRect) = 0;
|
||||
JUCE_COMCALL GetVideoPosition (LPRECT lpSRCRect, LPRECT lpDSTRect) = 0;
|
||||
JUCE_COMCALL GetAspectRatioMode (DWORD * lpAspectRatioMode) = 0;
|
||||
JUCE_COMCALL SetAspectRatioMode (DWORD AspectRatioMode) = 0;
|
||||
JUCE_COMCALL SetVideoClippingWindow (HWND hwnd) = 0;
|
||||
JUCE_COMCALL RepaintVideo (HWND hwnd, HDC hdc) = 0;
|
||||
JUCE_COMCALL DisplayModeChanged() = 0;
|
||||
JUCE_COMCALL GetCurrentImage (BYTE * *lpDib) = 0;
|
||||
JUCE_COMCALL SetBorderColor (COLORREF Clr) = 0;
|
||||
JUCE_COMCALL GetBorderColor (COLORREF * lpClr) = 0;
|
||||
JUCE_COMCALL SetColorKey (COLORREF Clr) = 0;
|
||||
JUCE_COMCALL GetColorKey (COLORREF * lpClr) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IVMRFilterConfig, "9e5530c5-7034-48b4-bb46-0b8a6efc8e36") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL SetImageCompositor (IVMRImageCompositor * lpVMRImgCompositor) = 0;
|
||||
JUCE_COMCALL SetNumberOfStreams (DWORD dwMaxStreams) = 0;
|
||||
JUCE_COMCALL GetNumberOfStreams (DWORD * pdwMaxStreams) = 0;
|
||||
JUCE_COMCALL SetRenderingPrefs (DWORD dwRenderFlags) = 0;
|
||||
JUCE_COMCALL GetRenderingPrefs (DWORD * pdwRenderFlags) = 0;
|
||||
JUCE_COMCALL SetRenderingMode (DWORD Mode) = 0;
|
||||
JUCE_COMCALL GetRenderingMode (DWORD * pMode) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IMFVideoDisplayControl, "a490b1e4-ab84-4d31-a1b2-181e03b1077a") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL GetNativeVideoSize (__RPC__inout_opt SIZE * pszVideo, __RPC__inout_opt SIZE * pszARVideo) = 0;
|
||||
JUCE_COMCALL GetIdealVideoSize (__RPC__inout_opt SIZE * pszMin, __RPC__inout_opt SIZE * pszMax) = 0;
|
||||
JUCE_COMCALL SetVideoPosition (__RPC__in_opt const MFVideoNormalizedRect* pnrcSource, __RPC__in_opt const LPRECT prcDest) = 0;
|
||||
JUCE_COMCALL GetVideoPosition (__RPC__out MFVideoNormalizedRect * pnrcSource, __RPC__out LPRECT prcDest) = 0;
|
||||
JUCE_COMCALL SetAspectRatioMode (DWORD dwAspectRatioMode) = 0;
|
||||
JUCE_COMCALL GetAspectRatioMode (__RPC__out DWORD * pdwAspectRatioMode) = 0;
|
||||
JUCE_COMCALL SetVideoWindow (__RPC__in HWND hwndVideo) = 0;
|
||||
JUCE_COMCALL GetVideoWindow (__RPC__deref_out_opt HWND * phwndVideo) = 0;
|
||||
JUCE_COMCALL RepaintVideo() = 0;
|
||||
JUCE_COMCALL GetCurrentImage (__RPC__inout BITMAPINFOHEADER * pBih, __RPC__deref_out_ecount_full_opt (*pcbDib) BYTE * *pDib, __RPC__out DWORD * pcbDib, __RPC__inout_opt LONGLONG * pTimeStamp) = 0;
|
||||
JUCE_COMCALL SetBorderColor (COLORREF Clr) = 0;
|
||||
JUCE_COMCALL GetBorderColor (__RPC__out COLORREF * pClr) = 0;
|
||||
JUCE_COMCALL SetRenderingPrefs (DWORD dwRenderFlags) = 0;
|
||||
JUCE_COMCALL GetRenderingPrefs (__RPC__out DWORD * pdwRenderFlags) = 0;
|
||||
JUCE_COMCALL SetFullscreen (BOOL fFullscreen) = 0;
|
||||
JUCE_COMCALL GetFullscreen (__RPC__out BOOL * pfFullscreen) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IMFGetService, "fa993888-4383-415a-a930-dd472a8cf6f7") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL GetService (__RPC__in REFGUID guidService, __RPC__in REFIID riid, __RPC__deref_out_opt LPVOID * ppvObject) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IMediaControl, "56a868b1-0ad4-11ce-b03a-0020af0ba770") : public IDispatch
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL Run() = 0;
|
||||
JUCE_COMCALL Pause() = 0;
|
||||
JUCE_COMCALL Stop() = 0;
|
||||
JUCE_COMCALL GetState (LONG msTimeout, __RPC__out OAFilterState * pfs) = 0;
|
||||
JUCE_COMCALL RenderFile (__RPC__in BSTR strFilename) = 0;
|
||||
JUCE_COMCALL AddSourceFilter (__RPC__in BSTR strFilename, __RPC__deref_out_opt IDispatch * *ppUnk) = 0;
|
||||
JUCE_COMCALL get_FilterCollection (__RPC__deref_out_opt IDispatch * *ppUnk) = 0;
|
||||
JUCE_COMCALL get_RegFilterCollection (__RPC__deref_out_opt IDispatch * *ppUnk) = 0;
|
||||
JUCE_COMCALL StopWhenReady() = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IMediaPosition, "56a868b2-0ad4-11ce-b03a-0020af0ba770") : public IDispatch
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL get_Duration (__RPC__out REFTIME * plength) = 0;
|
||||
JUCE_COMCALL put_CurrentPosition (REFTIME llTime) = 0;
|
||||
JUCE_COMCALL get_CurrentPosition (__RPC__out REFTIME * pllTime) = 0;
|
||||
JUCE_COMCALL get_StopTime (__RPC__out REFTIME * pllTime) = 0;
|
||||
JUCE_COMCALL put_StopTime (REFTIME llTime) = 0;
|
||||
JUCE_COMCALL get_PrerollTime (__RPC__out REFTIME * pllTime) = 0;
|
||||
JUCE_COMCALL put_PrerollTime (REFTIME llTime) = 0;
|
||||
JUCE_COMCALL put_Rate (double dRate) = 0;
|
||||
JUCE_COMCALL get_Rate (__RPC__out double* pdRate) = 0;
|
||||
JUCE_COMCALL CanSeekForward (__RPC__out LONG * pCanSeekForward) = 0;
|
||||
JUCE_COMCALL CanSeekBackward (__RPC__out LONG * pCanSeekBackward) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IMediaEvent, "56a868b6-0ad4-11ce-b03a-0020af0ba770") : public IDispatch
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL GetEventHandle (__RPC__out OAEVENT * hEvent) = 0;
|
||||
JUCE_COMCALL GetEvent (__RPC__out long* lEventCode, __RPC__out LONG_PTR* lParam1, __RPC__out LONG_PTR* lParam2, long msTimeout) = 0;
|
||||
JUCE_COMCALL WaitForCompletion (long msTimeout, __RPC__out long* pEvCode) = 0;
|
||||
JUCE_COMCALL CancelDefaultHandling (long lEvCode) = 0;
|
||||
JUCE_COMCALL RestoreDefaultHandling (long lEvCode) = 0;
|
||||
JUCE_COMCALL FreeEventParams (long lEvCode, LONG_PTR lParam1, LONG_PTR lParam2) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IMediaEventEx, "56a868c0-0ad4-11ce-b03a-0020af0ba770") : public IMediaEvent
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL SetNotifyWindow (OAHWND hwnd, long lMsg, LONG_PTR lInstanceData) = 0;
|
||||
JUCE_COMCALL SetNotifyFlags (long lNoNotifyFlags) = 0;
|
||||
JUCE_COMCALL GetNotifyFlags (__RPC__out long* lplNoNotifyFlags) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IBasicAudio, "56a868b3-0ad4-11ce-b03a-0020af0ba770") : public IDispatch
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL put_Volume (long lVolume) = 0;
|
||||
JUCE_COMCALL get_Volume (__RPC__out long* plVolume) = 0;
|
||||
JUCE_COMCALL put_Balance (long lBalance) = 0;
|
||||
JUCE_COMCALL get_Balance (__RPC__out long* plBalance) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IMediaSample, "56a8689a-0ad4-11ce-b03a-0020af0ba770") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL GetPointer (BYTE * *ppBuffer) = 0;
|
||||
virtual long STDMETHODCALLTYPE GetSize() = 0;
|
||||
JUCE_COMCALL GetTime (_Out_ REFERENCE_TIME * pTimeStart, _Out_ REFERENCE_TIME * pTimeEnd) = 0;
|
||||
JUCE_COMCALL SetTime (_In_opt_ REFERENCE_TIME * pTimeStart, _In_opt_ REFERENCE_TIME * pTimeEnd) = 0;
|
||||
JUCE_COMCALL IsSyncPoint() = 0;
|
||||
JUCE_COMCALL SetSyncPoint (BOOL bIsSyncPoint) = 0;
|
||||
JUCE_COMCALL IsPreroll() = 0;
|
||||
JUCE_COMCALL SetPreroll (BOOL bIsPreroll) = 0;
|
||||
virtual long STDMETHODCALLTYPE GetActualDataLength() = 0;
|
||||
JUCE_COMCALL SetActualDataLength (long __MIDL__IMediaSample0000) = 0;
|
||||
JUCE_COMCALL GetMediaType (_Out_ AM_MEDIA_TYPE * *ppMediaType) = 0;
|
||||
JUCE_COMCALL SetMediaType (_In_ AM_MEDIA_TYPE * pMediaType) = 0;
|
||||
JUCE_COMCALL IsDiscontinuity() = 0;
|
||||
JUCE_COMCALL SetDiscontinuity (BOOL bDiscontinuity) = 0;
|
||||
JUCE_COMCALL GetMediaTime (_Out_ LONGLONG * pTimeStart, _Out_ LONGLONG * pTimeEnd) = 0;
|
||||
JUCE_COMCALL SetMediaTime (_In_opt_ LONGLONG * pTimeStart, _In_opt_ LONGLONG * pTimeEnd) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IFileSinkFilter, "a2104830-7c70-11cf-8bce-00aa00a3f1a6") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL SetFileName (LPCOLESTR pszFileName, _In_opt_ const AM_MEDIA_TYPE* pmt) = 0;
|
||||
JUCE_COMCALL GetCurFile (_Out_ LPOLESTR * ppszFileName, _Out_ AM_MEDIA_TYPE * pmt) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (ICaptureGraphBuilder2, "93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL SetFiltergraph (IGraphBuilder * pfg) = 0;
|
||||
JUCE_COMCALL GetFiltergraph (_Out_ IGraphBuilder * *ppfg) = 0;
|
||||
JUCE_COMCALL SetOutputFileName (const GUID* pType, LPCOLESTR lpstrFile, _Outptr_ IBaseFilter** ppf, _Outptr_opt_ IFileSinkFilter** ppSink) = 0;
|
||||
JUCE_COMCALL FindInterface (_In_opt_ const GUID* pCategory, _In_opt_ const GUID* pType, IBaseFilter* pf, REFIID riid, _Out_ void** ppint) = 0;
|
||||
JUCE_COMCALL RenderStream (_In_opt_ const GUID* pCategory, const GUID* pType, IUnknown* pSource, IBaseFilter* pfCompressor, IBaseFilter* pfRenderer) = 0;
|
||||
JUCE_COMCALL ControlStream (const GUID* pCategory, const GUID* pType, IBaseFilter* pFilter, _In_opt_ REFERENCE_TIME* pstart, _In_opt_ REFERENCE_TIME* pstop, WORD wStartCookie, WORD wStopCookie) = 0;
|
||||
JUCE_COMCALL AllocCapFile (LPCOLESTR lpstr, DWORDLONG dwlSize) = 0;
|
||||
JUCE_COMCALL CopyCaptureFile (_In_ LPOLESTR lpwstrOld, _In_ LPOLESTR lpwstrNew, int fAllowEscAbort, IAMCopyCaptureFileProgress* pCallback) = 0;
|
||||
JUCE_COMCALL FindPin (IUnknown * pSource, PIN_DIRECTION pindir, _In_opt_ const GUID* pCategory, _In_opt_ const GUID* pType, BOOL fUnconnected, int num, _Out_ IPin** ppPin) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IAMStreamConfig, "C6E13340-30AC-11d0-A18C-00A0C9118956") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL SetFormat (AM_MEDIA_TYPE * pmt) = 0;
|
||||
JUCE_COMCALL GetFormat (_Out_ AM_MEDIA_TYPE * *ppmt) = 0;
|
||||
JUCE_COMCALL GetNumberOfCapabilities (_Out_ int* piCount, _Out_ int* piSize) = 0;
|
||||
JUCE_COMCALL GetStreamCaps (int iIndex, _Out_ AM_MEDIA_TYPE** ppmt, _Out_ BYTE* pSCC) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (ISampleGrabberCB, "0579154A-2B53-4994-B0D0-E773148EFF85") : public IUnknown
|
||||
{
|
||||
JUCE_COMCALL SampleCB (double, ComTypes::IMediaSample*) = 0;
|
||||
JUCE_COMCALL BufferCB (double, BYTE*, long) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (ISampleGrabber, "6B652FFF-11FE-4fce-92AD-0266B5D7C78F") : public IUnknown
|
||||
{
|
||||
JUCE_COMCALL SetOneShot (BOOL) = 0;
|
||||
JUCE_COMCALL SetMediaType (const ComTypes::AM_MEDIA_TYPE*) = 0;
|
||||
JUCE_COMCALL GetConnectedMediaType (ComTypes::AM_MEDIA_TYPE*) = 0;
|
||||
JUCE_COMCALL SetBufferSamples (BOOL) = 0;
|
||||
JUCE_COMCALL GetCurrentBuffer (long*, long*) = 0;
|
||||
JUCE_COMCALL GetCurrentSample (ComTypes::IMediaSample**) = 0;
|
||||
JUCE_COMCALL SetCallback (ISampleGrabberCB*, long) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IAMLatency, "62EA93BA-EC62-11d2-B770-00C04FB6BD3D") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL GetLatency (_Out_ REFERENCE_TIME * prtLatency) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IAMPushSource, "F185FE76-E64E-11d2-B76E-00C04FB6BD3D") : public IAMLatency
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL GetPushSourceFlags (_Out_ ULONG * pFlags) = 0;
|
||||
JUCE_COMCALL SetPushSourceFlags (ULONG Flags) = 0;
|
||||
JUCE_COMCALL SetStreamOffset (REFERENCE_TIME rtOffset) = 0;
|
||||
JUCE_COMCALL GetStreamOffset (_Out_ REFERENCE_TIME * prtOffset) = 0;
|
||||
JUCE_COMCALL GetMaxStreamOffset (_Out_ REFERENCE_TIME * prtMaxOffset) = 0;
|
||||
JUCE_COMCALL SetMaxStreamOffset (REFERENCE_TIME rtMaxOffset) = 0;
|
||||
};
|
||||
|
||||
JUCE_COMCLASS (IConfigAsfWriter, "45086030-F7E4-486a-B504-826BB5792A3B") : public IUnknown
|
||||
{
|
||||
public:
|
||||
JUCE_COMCALL ConfigureFilterUsingProfileId (DWORD dwProfileId) = 0;
|
||||
JUCE_COMCALL GetCurrentProfileId (__RPC__out DWORD * pdwProfileId) = 0;
|
||||
JUCE_COMCALL ConfigureFilterUsingProfileGuid (__RPC__in REFGUID guidProfile) = 0;
|
||||
JUCE_COMCALL GetCurrentProfileGuid (__RPC__out GUID * pProfileGuid) = 0;
|
||||
JUCE_COMCALL ConfigureFilterUsingProfile (__RPC__in_opt IWMProfile * pProfile) = 0;
|
||||
JUCE_COMCALL GetCurrentProfile (__RPC__deref_out_opt IWMProfile * *ppProfile) = 0;
|
||||
JUCE_COMCALL SetIndexMode (BOOL bIndexFile) = 0;
|
||||
JUCE_COMCALL GetIndexMode (__RPC__out BOOL * pbIndexFile) = 0;
|
||||
};
|
||||
|
||||
constexpr CLSID CLSID_CaptureGraphBuilder2 = { 0xBF87B6E1, 0x8C27, 0x11d0, { 0xB3, 0xF0, 0x00, 0xAA, 0x00, 0x37, 0x61, 0xC5 } };
|
||||
constexpr CLSID CLSID_EnhancedVideoRenderer = { 0xfa10746c, 0x9b63, 0x4b6c, { 0xbc, 0x49, 0xfc, 0x30, 0x0e, 0xa5, 0xf2, 0x56 } };
|
||||
constexpr CLSID CLSID_FilterGraph = { 0xe436ebb3, 0x524f, 0x11ce, { 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 } };
|
||||
constexpr CLSID CLSID_NullRenderer = { 0xC1F400A4, 0x3F08, 0x11d3, { 0x9F, 0x0B, 0x00, 0x60, 0x08, 0x03, 0x9E, 0x37 } };
|
||||
constexpr CLSID CLSID_SampleGrabber = { 0xC1F400A0, 0x3F08, 0x11d3, { 0x9F, 0x0B, 0x00, 0x60, 0x08, 0x03, 0x9E, 0x37 } };
|
||||
constexpr CLSID CLSID_SmartTee = { 0xcc58e280, 0x8aa1, 0x11d1, { 0xb3, 0xf1, 0x00, 0xaa, 0x00, 0x37, 0x61, 0xc5 } };
|
||||
constexpr CLSID CLSID_SystemDeviceEnum = { 0x62BE5D10, 0x60EB, 0x11d0, { 0xBD, 0x3B, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86 } };
|
||||
constexpr CLSID CLSID_VideoInputDeviceCategory = { 0x860BB310, 0x5D01, 0x11d0, { 0xBD, 0x3B, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86 } };
|
||||
constexpr CLSID CLSID_VideoMixingRenderer = { 0xb87beb7b, 0x8d29, 0x423F, { 0xae, 0x4d, 0x65, 0x82, 0xc1, 0x01, 0x75, 0xac } };
|
||||
constexpr CLSID CLSID_WMAsfWriter = { 0x7c23220e, 0x55bb, 0x11d3, { 0x8b, 0x16, 0x00, 0xc0, 0x4f, 0xb6, 0xbd, 0x3d } };
|
||||
constexpr CLSID FORMAT_VideoInfo = { 0x05589f80, 0xc356, 0x11ce, { 0xbf, 0x01, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a } };
|
||||
constexpr CLSID MEDIASUBTYPE_RGB24 = { 0xe436eb7d, 0x524f, 0x11ce, { 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70 } };
|
||||
constexpr CLSID MEDIATYPE_Video = { 0x73646976, 0x0000, 0x0010, { 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 } };
|
||||
constexpr CLSID MR_VIDEO_RENDER_SERVICE = { 0x1092a86c, 0xab1a, 0x459a, { 0xa3, 0x36, 0x83, 0x1f, 0xbc, 0x4d, 0x11, 0xff } };
|
||||
constexpr CLSID PIN_CATEGORY_CAPTURE = { 0xfb6c4281, 0x0353, 0x11d1, { 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba } };
|
||||
|
||||
} // namespace ComTypes
|
||||
} // namespace juce
|
||||
|
||||
#ifdef __CRT_UUID_DECL
|
||||
__CRT_UUID_DECL (juce::ComTypes::IAMPushSource, 0xF185FE76, 0xE64E, 0x11d2, 0xB7, 0x6E, 0x00, 0xC0, 0x4F, 0xB6, 0xBD, 0x3D)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IAMStreamConfig, 0xC6E13340, 0x30AC, 0x11d0, 0xA1, 0x8C, 0x00, 0xA0, 0xC9, 0x11, 0x89, 0x56)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IBaseFilter, 0x56a86895, 0x0ad4, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IBasicAudio, 0x56a868b3, 0x0ad4, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
|
||||
__CRT_UUID_DECL (juce::ComTypes::ICaptureGraphBuilder2, 0x93E5A4E0, 0x2D50, 0x11d2, 0xAB, 0xFA, 0x00, 0xA0, 0xC9, 0xC6, 0xE3, 0x8D)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IConfigAsfWriter, 0x45086030, 0xF7E4, 0x486a, 0xB5, 0x04, 0x82, 0x6B, 0xB5, 0x79, 0x2A, 0x3B)
|
||||
__CRT_UUID_DECL (juce::ComTypes::ICreateDevEnum, 0x29840822, 0x5B84, 0x11D0, 0xBD, 0x3B, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IFileSinkFilter, 0xa2104830, 0x7c70, 0x11cf, 0x8b, 0xce, 0x00, 0xaa, 0x00, 0xa3, 0xf1, 0xa6)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IGraphBuilder, 0x56a868a9, 0x0ad4, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IMFGetService, 0xfa993888, 0x4383, 0x415a, 0xa9, 0x30, 0xdd, 0x47, 0x2a, 0x8c, 0xf6, 0xf7)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IMFVideoDisplayControl, 0xa490b1e4, 0xab84, 0x4d31, 0xa1, 0xb2, 0x18, 0x1e, 0x03, 0xb1, 0x07, 0x7a)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IMediaControl, 0x56a868b1, 0x0ad4, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IMediaEventEx, 0x56a868c0, 0x0ad4, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IMediaPosition, 0x56a868b2, 0x0ad4, 0x11ce, 0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70)
|
||||
__CRT_UUID_DECL (juce::ComTypes::ISampleGrabber, 0x6B652FFF, 0x11FE, 0x4fce, 0x92, 0xAD, 0x02, 0x66, 0xB5, 0xD7, 0xC7, 0x8F)
|
||||
__CRT_UUID_DECL (juce::ComTypes::ISampleGrabberCB, 0x0579154A, 0x2B53, 0x4994, 0xB0, 0xD0, 0xE7, 0x73, 0x14, 0x8E, 0xFF, 0x85)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IVMRFilterConfig, 0x9e5530c5, 0x7034, 0x48b4, 0xbb, 0x46, 0x0b, 0x8a, 0x6e, 0xfc, 0x8e, 0x36)
|
||||
__CRT_UUID_DECL (juce::ComTypes::IVMRWindowlessControl, 0x0eb1088c, 0x4dcd, 0x46f0, 0x87, 0x8f, 0x39, 0xda, 0xe8, 0x6a, 0x51, 0xb7)
|
||||
#endif
|
||||
|
|
@ -39,7 +39,7 @@ namespace VideoRenderers
|
|||
{
|
||||
virtual ~Base() = default;
|
||||
|
||||
virtual HRESULT create (ComSmartPtr<ComTypes::IGraphBuilder>&, ComSmartPtr<ComTypes::IBaseFilter>&, HWND) = 0;
|
||||
virtual HRESULT create (ComSmartPtr<IGraphBuilder>&, ComSmartPtr<IBaseFilter>&, HWND) = 0;
|
||||
virtual void setVideoWindow (HWND) = 0;
|
||||
virtual void setVideoPosition (HWND) = 0;
|
||||
virtual void repaintVideo (HWND, HDC) = 0;
|
||||
|
|
@ -52,19 +52,19 @@ namespace VideoRenderers
|
|||
{
|
||||
VMR7() {}
|
||||
|
||||
HRESULT create (ComSmartPtr<ComTypes::IGraphBuilder>& graphBuilder,
|
||||
ComSmartPtr<ComTypes::IBaseFilter>& baseFilter, HWND hwnd) override
|
||||
HRESULT create (ComSmartPtr<IGraphBuilder>& graphBuilder,
|
||||
ComSmartPtr<IBaseFilter>& baseFilter, HWND hwnd) override
|
||||
{
|
||||
ComSmartPtr<ComTypes::IVMRFilterConfig> filterConfig;
|
||||
ComSmartPtr<IVMRFilterConfig> filterConfig;
|
||||
|
||||
HRESULT hr = baseFilter.CoCreateInstance (ComTypes::CLSID_VideoMixingRenderer);
|
||||
HRESULT hr = baseFilter.CoCreateInstance (CLSID_VideoMixingRenderer);
|
||||
|
||||
if (SUCCEEDED (hr)) hr = graphBuilder->AddFilter (baseFilter, L"VMR-7");
|
||||
if (SUCCEEDED (hr)) hr = baseFilter.QueryInterface (filterConfig);
|
||||
if (SUCCEEDED (hr)) hr = filterConfig->SetRenderingMode (ComTypes::VMRMode_Windowless);
|
||||
if (SUCCEEDED (hr)) hr = filterConfig->SetRenderingMode (VMRMode_Windowless);
|
||||
if (SUCCEEDED (hr)) hr = baseFilter.QueryInterface (windowlessControl);
|
||||
if (SUCCEEDED (hr)) hr = windowlessControl->SetVideoClippingWindow (hwnd);
|
||||
if (SUCCEEDED (hr)) hr = windowlessControl->SetAspectRatioMode (ComTypes::VMR_ARMODE_LETTER_BOX);
|
||||
if (SUCCEEDED (hr)) hr = windowlessControl->SetAspectRatioMode (VMR_ARMODE_LETTER_BOX);
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
|
@ -101,7 +101,7 @@ namespace VideoRenderers
|
|||
return windowlessControl->GetNativeVideoSize (&videoWidth, &videoHeight, nullptr, nullptr);
|
||||
}
|
||||
|
||||
ComSmartPtr<ComTypes::IVMRWindowlessControl> windowlessControl;
|
||||
ComSmartPtr<IVMRWindowlessControl> windowlessControl;
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (VMR7)
|
||||
};
|
||||
|
|
@ -112,21 +112,21 @@ namespace VideoRenderers
|
|||
{
|
||||
EVR() = default;
|
||||
|
||||
HRESULT create (ComSmartPtr<ComTypes::IGraphBuilder>& graphBuilder,
|
||||
ComSmartPtr<ComTypes::IBaseFilter>& baseFilter, HWND hwnd) override
|
||||
HRESULT create (ComSmartPtr<IGraphBuilder>& graphBuilder,
|
||||
ComSmartPtr<IBaseFilter>& baseFilter, HWND hwnd) override
|
||||
{
|
||||
ComSmartPtr<ComTypes::IMFGetService> getService;
|
||||
ComSmartPtr<IMFGetService> getService;
|
||||
|
||||
HRESULT hr = baseFilter.CoCreateInstance (ComTypes::CLSID_EnhancedVideoRenderer);
|
||||
HRESULT hr = baseFilter.CoCreateInstance (CLSID_EnhancedVideoRenderer);
|
||||
|
||||
if (SUCCEEDED (hr)) hr = graphBuilder->AddFilter (baseFilter, L"EVR");
|
||||
if (SUCCEEDED (hr)) hr = baseFilter.QueryInterface (getService);
|
||||
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wlanguage-extension-token")
|
||||
if (SUCCEEDED (hr)) hr = getService->GetService (ComTypes::MR_VIDEO_RENDER_SERVICE, __uuidof (ComTypes::IMFVideoDisplayControl),
|
||||
if (SUCCEEDED (hr)) hr = getService->GetService (MR_VIDEO_RENDER_SERVICE, __uuidof (IMFVideoDisplayControl),
|
||||
(void**) videoDisplayControl.resetAndGetPointerAddress());
|
||||
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
|
||||
if (SUCCEEDED (hr)) hr = videoDisplayControl->SetVideoWindow (hwnd);
|
||||
if (SUCCEEDED (hr)) hr = videoDisplayControl->SetAspectRatioMode (ComTypes::MFVideoARMode_PreservePicture);
|
||||
if (SUCCEEDED (hr)) hr = videoDisplayControl->SetAspectRatioMode (MFVideoARMode_PreservePicture);
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
|
@ -138,7 +138,7 @@ namespace VideoRenderers
|
|||
|
||||
void setVideoPosition (HWND hwnd) override
|
||||
{
|
||||
const ComTypes::MFVideoNormalizedRect src { 0.0f, 0.0f, 1.0f, 1.0f };
|
||||
const MFVideoNormalizedRect src { 0.0f, 0.0f, 1.0f, 1.0f };
|
||||
|
||||
RECT dest;
|
||||
GetClientRect (hwnd, &dest);
|
||||
|
|
@ -162,7 +162,7 @@ namespace VideoRenderers
|
|||
return hr;
|
||||
}
|
||||
|
||||
ComSmartPtr<ComTypes::IMFVideoDisplayControl> videoDisplayControl;
|
||||
ComSmartPtr<IMFVideoDisplayControl> videoDisplayControl;
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (EVR)
|
||||
};
|
||||
|
|
@ -452,8 +452,8 @@ private:
|
|||
|
||||
createNativeWindow();
|
||||
|
||||
mediaEvent->CancelDefaultHandling (ComTypes::EC_STATE_CHANGE);
|
||||
mediaEvent->SetNotifyWindow ((ComTypes::OAHWND) hwnd, graphEventID, 0);
|
||||
mediaEvent->CancelDefaultHandling (EC_STATE_CHANGE);
|
||||
mediaEvent->SetNotifyWindow ((OAHWND) hwnd, graphEventID, 0);
|
||||
|
||||
if (videoRenderer != nullptr)
|
||||
videoRenderer->setVideoWindow (hwnd);
|
||||
|
|
@ -503,7 +503,7 @@ private:
|
|||
if (! createNativeWindow())
|
||||
return Result::fail ("Can't create window");
|
||||
|
||||
HRESULT hr = graphBuilder.CoCreateInstance (ComTypes::CLSID_FilterGraph);
|
||||
HRESULT hr = graphBuilder.CoCreateInstance (CLSID_FilterGraph);
|
||||
|
||||
// basic playback interfaces
|
||||
if (SUCCEEDED (hr)) hr = graphBuilder.QueryInterface (mediaControl);
|
||||
|
|
@ -565,8 +565,8 @@ private:
|
|||
// set window to receive events
|
||||
if (SUCCEEDED (hr))
|
||||
{
|
||||
mediaEvent->CancelDefaultHandling (ComTypes::EC_STATE_CHANGE);
|
||||
hr = mediaEvent->SetNotifyWindow ((ComTypes::OAHWND) hwnd, graphEventID, 0);
|
||||
mediaEvent->CancelDefaultHandling (EC_STATE_CHANGE);
|
||||
hr = mediaEvent->SetNotifyWindow ((OAHWND) hwnd, graphEventID, 0);
|
||||
}
|
||||
|
||||
if (SUCCEEDED (hr))
|
||||
|
|
@ -587,12 +587,12 @@ private:
|
|||
{
|
||||
switch (hr)
|
||||
{
|
||||
case ComTypes::VFW_E_INVALID_FILE_FORMAT: return Result::fail ("Invalid file format");
|
||||
case ComTypes::VFW_E_NOT_FOUND: return Result::fail ("File not found");
|
||||
case ComTypes::VFW_E_UNKNOWN_FILE_TYPE: return Result::fail ("Unknown file type");
|
||||
case ComTypes::VFW_E_UNSUPPORTED_STREAM: return Result::fail ("Unsupported stream");
|
||||
case ComTypes::VFW_E_CANNOT_CONNECT: return Result::fail ("Cannot connect");
|
||||
case ComTypes::VFW_E_CANNOT_LOAD_SOURCE_FILTER: return Result::fail ("Cannot load source filter");
|
||||
case VFW_E_INVALID_FILE_FORMAT: return Result::fail ("Invalid file format");
|
||||
case VFW_E_NOT_FOUND: return Result::fail ("File not found");
|
||||
case VFW_E_UNKNOWN_FILE_TYPE: return Result::fail ("Unknown file type");
|
||||
case VFW_E_UNSUPPORTED_STREAM: return Result::fail ("Unsupported stream");
|
||||
case VFW_E_CANNOT_CONNECT: return Result::fail ("Cannot connect");
|
||||
case VFW_E_CANNOT_LOAD_SOURCE_FILTER: return Result::fail ("Cannot load source filter");
|
||||
}
|
||||
|
||||
TCHAR messageBuffer[512] = { 0 };
|
||||
|
|
@ -643,28 +643,28 @@ private:
|
|||
|
||||
switch (ec)
|
||||
{
|
||||
case ComTypes::EC_REPAINT:
|
||||
case EC_REPAINT:
|
||||
component.repaint();
|
||||
break;
|
||||
|
||||
case ComTypes::EC_COMPLETE:
|
||||
case EC_COMPLETE:
|
||||
component.stop();
|
||||
component.setPosition (0.0);
|
||||
break;
|
||||
|
||||
case ComTypes::EC_ERRORABORT:
|
||||
case ComTypes::EC_ERRORABORTEX:
|
||||
case EC_ERRORABORT:
|
||||
case EC_ERRORABORTEX:
|
||||
component.errorOccurred (getErrorMessageFromResult ((HRESULT) p1).getErrorMessage());
|
||||
// intentional fallthrough
|
||||
case ComTypes::EC_USERABORT:
|
||||
case EC_USERABORT:
|
||||
component.close();
|
||||
break;
|
||||
|
||||
case ComTypes::EC_STATE_CHANGE:
|
||||
case EC_STATE_CHANGE:
|
||||
switch (p1)
|
||||
{
|
||||
case ComTypes::State_Paused: component.playbackStopped(); break;
|
||||
case ComTypes::State_Running: component.playbackStarted(); break;
|
||||
case State_Paused: component.playbackStopped(); break;
|
||||
case State_Running: component.playbackStarted(); break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
|
|
@ -707,7 +707,7 @@ private:
|
|||
//==============================================================================
|
||||
double getDuration() const
|
||||
{
|
||||
ComTypes::REFTIME duration;
|
||||
REFTIME duration;
|
||||
mediaPosition->get_Duration (&duration);
|
||||
return duration;
|
||||
}
|
||||
|
|
@ -721,7 +721,7 @@ private:
|
|||
|
||||
double getPosition() const
|
||||
{
|
||||
ComTypes::REFTIME seconds;
|
||||
REFTIME seconds;
|
||||
mediaPosition->get_CurrentPosition (&seconds);
|
||||
return seconds;
|
||||
}
|
||||
|
|
@ -757,12 +757,12 @@ private:
|
|||
HWND hwnd = {};
|
||||
HDC hdc = {};
|
||||
|
||||
ComSmartPtr<ComTypes::IGraphBuilder> graphBuilder;
|
||||
ComSmartPtr<ComTypes::IMediaControl> mediaControl;
|
||||
ComSmartPtr<ComTypes::IMediaPosition> mediaPosition;
|
||||
ComSmartPtr<ComTypes::IMediaEventEx> mediaEvent;
|
||||
ComSmartPtr<ComTypes::IBasicAudio> basicAudio;
|
||||
ComSmartPtr<ComTypes::IBaseFilter> baseFilter;
|
||||
ComSmartPtr<IGraphBuilder> graphBuilder;
|
||||
ComSmartPtr<IMediaControl> mediaControl;
|
||||
ComSmartPtr<IMediaPosition> mediaPosition;
|
||||
ComSmartPtr<IMediaEventEx> mediaEvent;
|
||||
ComSmartPtr<IBasicAudio> basicAudio;
|
||||
ComSmartPtr<IBaseFilter> baseFilter;
|
||||
|
||||
std::unique_ptr<VideoRenderers::Base> videoRenderer;
|
||||
|
||||
|
|
@ -810,31 +810,31 @@ private:
|
|||
|
||||
bool isRendererConnected()
|
||||
{
|
||||
ComSmartPtr<ComTypes::IEnumPins> enumPins;
|
||||
ComSmartPtr<IEnumPins> enumPins;
|
||||
|
||||
HRESULT hr = baseFilter->EnumPins (enumPins.resetAndGetPointerAddress());
|
||||
|
||||
if (SUCCEEDED (hr))
|
||||
hr = enumPins->Reset();
|
||||
|
||||
ComSmartPtr<ComTypes::IPin> pin;
|
||||
ComSmartPtr<IPin> pin;
|
||||
|
||||
while (SUCCEEDED (hr)
|
||||
&& enumPins->Next (1, pin.resetAndGetPointerAddress(), nullptr) == S_OK)
|
||||
{
|
||||
ComSmartPtr<ComTypes::IPin> otherPin;
|
||||
ComSmartPtr<IPin> otherPin;
|
||||
|
||||
hr = pin->ConnectedTo (otherPin.resetAndGetPointerAddress());
|
||||
|
||||
if (SUCCEEDED (hr))
|
||||
{
|
||||
ComTypes::PIN_DIRECTION direction;
|
||||
PIN_DIRECTION direction;
|
||||
hr = pin->QueryDirection (&direction);
|
||||
|
||||
if (SUCCEEDED (hr) && direction == ComTypes::PINDIR_INPUT)
|
||||
if (SUCCEEDED (hr) && direction == PINDIR_INPUT)
|
||||
return true;
|
||||
}
|
||||
else if (hr == ComTypes::VFW_E_NOT_CONNECTED)
|
||||
else if (hr == VFW_E_NOT_CONNECTED)
|
||||
{
|
||||
hr = S_OK;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue