mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-09 23:34:20 +00:00
Animation: Add animation demos
This commit is contained in:
parent
bc3600cde8
commit
4274b835f6
18 changed files with 2138 additions and 323 deletions
|
|
@ -34,9 +34,9 @@ include_directories( AFTER
|
|||
enable_language(ASM)
|
||||
|
||||
if(JUCE_BUILD_CONFIGURATION MATCHES "DEBUG")
|
||||
add_definitions([[-DJUCE_PROJUCER_VERSION=0x80000]] [[-DJUCE_MODULE_AVAILABLE_juce_analytics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1]] [[-DJUCE_MODULE_AVAILABLE_juce_box2d=1]] [[-DJUCE_MODULE_AVAILABLE_juce_core=1]] [[-DJUCE_MODULE_AVAILABLE_juce_cryptography=1]] [[-DJUCE_MODULE_AVAILABLE_juce_data_structures=1]] [[-DJUCE_MODULE_AVAILABLE_juce_dsp=1]] [[-DJUCE_MODULE_AVAILABLE_juce_events=1]] [[-DJUCE_MODULE_AVAILABLE_juce_graphics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1]] [[-DJUCE_MODULE_AVAILABLE_juce_opengl=1]] [[-DJUCE_MODULE_AVAILABLE_juce_osc=1]] [[-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1]] [[-DJUCE_MODULE_AVAILABLE_juce_video=1]] [[-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1]] [[-DJUCE_USE_MP3AUDIOFORMAT=1]] [[-DJUCE_PLUGINHOST_VST3=1]] [[-DJUCE_PLUGINHOST_LV2=1]] [[-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0]] [[-DJUCE_STRICT_REFCOUNTEDPOINTER=1]] [[-DJUCE_USE_CAMERA=1]] [[-DJUCE_STANDALONE_APPLICATION=1]] [[-DJUCE_DEMO_RUNNER=1]] [[-DJUCE_UNIT_TESTS=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=8.0.0]] [[-DJUCE_APP_VERSION_HEX=0x80000]] [[-DDEBUG=1]] [[-D_DEBUG=1]])
|
||||
add_definitions([[-DJUCE_PROJUCER_VERSION=0x80000]] [[-DJUCE_MODULE_AVAILABLE_juce_analytics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_animation=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1]] [[-DJUCE_MODULE_AVAILABLE_juce_box2d=1]] [[-DJUCE_MODULE_AVAILABLE_juce_core=1]] [[-DJUCE_MODULE_AVAILABLE_juce_cryptography=1]] [[-DJUCE_MODULE_AVAILABLE_juce_data_structures=1]] [[-DJUCE_MODULE_AVAILABLE_juce_dsp=1]] [[-DJUCE_MODULE_AVAILABLE_juce_events=1]] [[-DJUCE_MODULE_AVAILABLE_juce_graphics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1]] [[-DJUCE_MODULE_AVAILABLE_juce_opengl=1]] [[-DJUCE_MODULE_AVAILABLE_juce_osc=1]] [[-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1]] [[-DJUCE_MODULE_AVAILABLE_juce_video=1]] [[-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1]] [[-DJUCE_USE_MP3AUDIOFORMAT=1]] [[-DJUCE_PLUGINHOST_VST3=1]] [[-DJUCE_PLUGINHOST_LV2=1]] [[-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0]] [[-DJUCE_STRICT_REFCOUNTEDPOINTER=1]] [[-DJUCE_USE_CAMERA=1]] [[-DJUCE_STANDALONE_APPLICATION=1]] [[-DJUCE_DEMO_RUNNER=1]] [[-DJUCE_UNIT_TESTS=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=8.0.0]] [[-DJUCE_APP_VERSION_HEX=0x80000]] [[-DDEBUG=1]] [[-D_DEBUG=1]])
|
||||
elseif(JUCE_BUILD_CONFIGURATION MATCHES "RELEASE")
|
||||
add_definitions([[-DJUCE_PROJUCER_VERSION=0x80000]] [[-DJUCE_MODULE_AVAILABLE_juce_analytics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1]] [[-DJUCE_MODULE_AVAILABLE_juce_box2d=1]] [[-DJUCE_MODULE_AVAILABLE_juce_core=1]] [[-DJUCE_MODULE_AVAILABLE_juce_cryptography=1]] [[-DJUCE_MODULE_AVAILABLE_juce_data_structures=1]] [[-DJUCE_MODULE_AVAILABLE_juce_dsp=1]] [[-DJUCE_MODULE_AVAILABLE_juce_events=1]] [[-DJUCE_MODULE_AVAILABLE_juce_graphics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1]] [[-DJUCE_MODULE_AVAILABLE_juce_opengl=1]] [[-DJUCE_MODULE_AVAILABLE_juce_osc=1]] [[-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1]] [[-DJUCE_MODULE_AVAILABLE_juce_video=1]] [[-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1]] [[-DJUCE_USE_MP3AUDIOFORMAT=1]] [[-DJUCE_PLUGINHOST_VST3=1]] [[-DJUCE_PLUGINHOST_LV2=1]] [[-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0]] [[-DJUCE_STRICT_REFCOUNTEDPOINTER=1]] [[-DJUCE_USE_CAMERA=1]] [[-DJUCE_STANDALONE_APPLICATION=1]] [[-DJUCE_DEMO_RUNNER=1]] [[-DJUCE_UNIT_TESTS=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=8.0.0]] [[-DJUCE_APP_VERSION_HEX=0x80000]] [[-DNDEBUG=1]])
|
||||
add_definitions([[-DJUCE_PROJUCER_VERSION=0x80000]] [[-DJUCE_MODULE_AVAILABLE_juce_analytics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_animation=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1]] [[-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1]] [[-DJUCE_MODULE_AVAILABLE_juce_box2d=1]] [[-DJUCE_MODULE_AVAILABLE_juce_core=1]] [[-DJUCE_MODULE_AVAILABLE_juce_cryptography=1]] [[-DJUCE_MODULE_AVAILABLE_juce_data_structures=1]] [[-DJUCE_MODULE_AVAILABLE_juce_dsp=1]] [[-DJUCE_MODULE_AVAILABLE_juce_events=1]] [[-DJUCE_MODULE_AVAILABLE_juce_graphics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1]] [[-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1]] [[-DJUCE_MODULE_AVAILABLE_juce_opengl=1]] [[-DJUCE_MODULE_AVAILABLE_juce_osc=1]] [[-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1]] [[-DJUCE_MODULE_AVAILABLE_juce_video=1]] [[-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1]] [[-DJUCE_USE_MP3AUDIOFORMAT=1]] [[-DJUCE_PLUGINHOST_VST3=1]] [[-DJUCE_PLUGINHOST_LV2=1]] [[-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0]] [[-DJUCE_STRICT_REFCOUNTEDPOINTER=1]] [[-DJUCE_USE_CAMERA=1]] [[-DJUCE_STANDALONE_APPLICATION=1]] [[-DJUCE_DEMO_RUNNER=1]] [[-DJUCE_UNIT_TESTS=1]] [[-DJUCER_ANDROIDSTUDIO_7F0E4A25=1]] [[-DJUCE_APP_VERSION=8.0.0]] [[-DJUCE_APP_VERSION_HEX=0x80000]] [[-DNDEBUG=1]])
|
||||
else()
|
||||
message( FATAL_ERROR "No matching build-configuration found." )
|
||||
endif()
|
||||
|
|
@ -66,6 +66,23 @@ add_library( ${BINARY_NAME}
|
|||
"../../../../../modules/juce_analytics/destinations/juce_ThreadedAnalyticsDestination.h"
|
||||
"../../../../../modules/juce_analytics/juce_analytics.cpp"
|
||||
"../../../../../modules/juce_analytics/juce_analytics.h"
|
||||
"../../../../../modules/juce_animation/animation/juce_Animator.cpp"
|
||||
"../../../../../modules/juce_animation/animation/juce_Animator.h"
|
||||
"../../../../../modules/juce_animation/animation/juce_AnimatorSetBuilder.cpp"
|
||||
"../../../../../modules/juce_animation/animation/juce_AnimatorSetBuilder.h"
|
||||
"../../../../../modules/juce_animation/animation/juce_AnimatorUpdater.cpp"
|
||||
"../../../../../modules/juce_animation/animation/juce_AnimatorUpdater.h"
|
||||
"../../../../../modules/juce_animation/animation/juce_Easings.cpp"
|
||||
"../../../../../modules/juce_animation/animation/juce_Easings.h"
|
||||
"../../../../../modules/juce_animation/animation/juce_StaticAnimationLimits.h"
|
||||
"../../../../../modules/juce_animation/animation/juce_ValueAnimatorBuilder.cpp"
|
||||
"../../../../../modules/juce_animation/animation/juce_ValueAnimatorBuilder.h"
|
||||
"../../../../../modules/juce_animation/animation/juce_VBlankAnimatorUpdater.h"
|
||||
"../../../../../modules/juce_animation/detail/chromium/cubic_bezier.cc"
|
||||
"../../../../../modules/juce_animation/detail/chromium/cubic_bezier.h"
|
||||
"../../../../../modules/juce_animation/detail/juce_ArrayAndTupleOps.h"
|
||||
"../../../../../modules/juce_animation/juce_animation.cpp"
|
||||
"../../../../../modules/juce_animation/juce_animation.h"
|
||||
"../../../../../modules/juce_audio_basics/audio_play_head/juce_AudioPlayHead.cpp"
|
||||
"../../../../../modules/juce_audio_basics/audio_play_head/juce_AudioPlayHead.h"
|
||||
"../../../../../modules/juce_audio_basics/buffers/juce_AudioChannelSet.cpp"
|
||||
|
|
@ -2125,6 +2142,7 @@ add_library( ${BINARY_NAME}
|
|||
"../../../../../modules/juce_video/juce_video.mm"
|
||||
"../../../../../modules/juce_video/juce_video.h"
|
||||
"../../../JuceLibraryCode/include_juce_analytics.cpp"
|
||||
"../../../JuceLibraryCode/include_juce_animation.cpp"
|
||||
"../../../JuceLibraryCode/include_juce_audio_basics.cpp"
|
||||
"../../../JuceLibraryCode/include_juce_audio_devices.cpp"
|
||||
"../../../JuceLibraryCode/include_juce_audio_formats.cpp"
|
||||
|
|
@ -2164,6 +2182,23 @@ set_source_files_properties(
|
|||
"../../../../../modules/juce_analytics/destinations/juce_ThreadedAnalyticsDestination.h"
|
||||
"../../../../../modules/juce_analytics/juce_analytics.cpp"
|
||||
"../../../../../modules/juce_analytics/juce_analytics.h"
|
||||
"../../../../../modules/juce_animation/animation/juce_Animator.cpp"
|
||||
"../../../../../modules/juce_animation/animation/juce_Animator.h"
|
||||
"../../../../../modules/juce_animation/animation/juce_AnimatorSetBuilder.cpp"
|
||||
"../../../../../modules/juce_animation/animation/juce_AnimatorSetBuilder.h"
|
||||
"../../../../../modules/juce_animation/animation/juce_AnimatorUpdater.cpp"
|
||||
"../../../../../modules/juce_animation/animation/juce_AnimatorUpdater.h"
|
||||
"../../../../../modules/juce_animation/animation/juce_Easings.cpp"
|
||||
"../../../../../modules/juce_animation/animation/juce_Easings.h"
|
||||
"../../../../../modules/juce_animation/animation/juce_StaticAnimationLimits.h"
|
||||
"../../../../../modules/juce_animation/animation/juce_ValueAnimatorBuilder.cpp"
|
||||
"../../../../../modules/juce_animation/animation/juce_ValueAnimatorBuilder.h"
|
||||
"../../../../../modules/juce_animation/animation/juce_VBlankAnimatorUpdater.h"
|
||||
"../../../../../modules/juce_animation/detail/chromium/cubic_bezier.cc"
|
||||
"../../../../../modules/juce_animation/detail/chromium/cubic_bezier.h"
|
||||
"../../../../../modules/juce_animation/detail/juce_ArrayAndTupleOps.h"
|
||||
"../../../../../modules/juce_animation/juce_animation.cpp"
|
||||
"../../../../../modules/juce_animation/juce_animation.h"
|
||||
"../../../../../modules/juce_audio_basics/audio_play_head/juce_AudioPlayHead.cpp"
|
||||
"../../../../../modules/juce_audio_basics/audio_play_head/juce_AudioPlayHead.h"
|
||||
"../../../../../modules/juce_audio_basics/buffers/juce_AudioChannelSet.cpp"
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ ifeq ($(CONFIG),Debug)
|
|||
TARGET_ARCH :=
|
||||
endif
|
||||
|
||||
JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DDEBUG=1" "-D_DEBUG=1" "-DJUCE_PROJUCER_VERSION=0x80000" "-DJUCE_MODULE_AVAILABLE_juce_analytics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_box2d=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_MODULE_AVAILABLE_juce_osc=1" "-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1" "-DJUCE_MODULE_AVAILABLE_juce_video=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_USE_MP3AUDIOFORMAT=1" "-DJUCE_PLUGINHOST_VST3=1" "-DJUCE_PLUGINHOST_LV2=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_USE_CAMERA=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCE_DEMO_RUNNER=1" "-DJUCE_UNIT_TESTS=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=8.0.0" "-DJUCE_APP_VERSION_HEX=0x80000" $(shell $(PKG_CONFIG) --cflags alsa freetype2 gl libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 -I../../../../modules/juce_audio_processors/format_types/LV2_SDK -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
|
||||
JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DDEBUG=1" "-D_DEBUG=1" "-DJUCE_PROJUCER_VERSION=0x80000" "-DJUCE_MODULE_AVAILABLE_juce_analytics=1" "-DJUCE_MODULE_AVAILABLE_juce_animation=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_box2d=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_MODULE_AVAILABLE_juce_osc=1" "-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1" "-DJUCE_MODULE_AVAILABLE_juce_video=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_USE_MP3AUDIOFORMAT=1" "-DJUCE_PLUGINHOST_VST3=1" "-DJUCE_PLUGINHOST_LV2=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_USE_CAMERA=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCE_DEMO_RUNNER=1" "-DJUCE_UNIT_TESTS=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=8.0.0" "-DJUCE_APP_VERSION_HEX=0x80000" $(shell $(PKG_CONFIG) --cflags alsa freetype2 gl libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 -I../../../../modules/juce_audio_processors/format_types/LV2_SDK -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
|
||||
JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" "-DJucePlugin_Build_LV2=0"
|
||||
JUCE_TARGET_APP := DemoRunner
|
||||
|
||||
|
|
@ -60,7 +60,7 @@ ifeq ($(CONFIG),Release)
|
|||
TARGET_ARCH :=
|
||||
endif
|
||||
|
||||
JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_PROJUCER_VERSION=0x80000" "-DJUCE_MODULE_AVAILABLE_juce_analytics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_box2d=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_MODULE_AVAILABLE_juce_osc=1" "-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1" "-DJUCE_MODULE_AVAILABLE_juce_video=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_USE_MP3AUDIOFORMAT=1" "-DJUCE_PLUGINHOST_VST3=1" "-DJUCE_PLUGINHOST_LV2=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_USE_CAMERA=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCE_DEMO_RUNNER=1" "-DJUCE_UNIT_TESTS=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=8.0.0" "-DJUCE_APP_VERSION_HEX=0x80000" $(shell $(PKG_CONFIG) --cflags alsa freetype2 gl libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 -I../../../../modules/juce_audio_processors/format_types/LV2_SDK -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
|
||||
JUCE_CPPFLAGS := $(DEPFLAGS) "-DLINUX=1" "-DNDEBUG=1" "-DJUCE_PROJUCER_VERSION=0x80000" "-DJUCE_MODULE_AVAILABLE_juce_analytics=1" "-DJUCE_MODULE_AVAILABLE_juce_animation=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_devices=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_formats=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_processors=1" "-DJUCE_MODULE_AVAILABLE_juce_audio_utils=1" "-DJUCE_MODULE_AVAILABLE_juce_box2d=1" "-DJUCE_MODULE_AVAILABLE_juce_core=1" "-DJUCE_MODULE_AVAILABLE_juce_cryptography=1" "-DJUCE_MODULE_AVAILABLE_juce_data_structures=1" "-DJUCE_MODULE_AVAILABLE_juce_dsp=1" "-DJUCE_MODULE_AVAILABLE_juce_events=1" "-DJUCE_MODULE_AVAILABLE_juce_graphics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_basics=1" "-DJUCE_MODULE_AVAILABLE_juce_gui_extra=1" "-DJUCE_MODULE_AVAILABLE_juce_opengl=1" "-DJUCE_MODULE_AVAILABLE_juce_osc=1" "-DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1" "-DJUCE_MODULE_AVAILABLE_juce_video=1" "-DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1" "-DJUCE_USE_MP3AUDIOFORMAT=1" "-DJUCE_PLUGINHOST_VST3=1" "-DJUCE_PLUGINHOST_LV2=1" "-DJUCE_ALLOW_STATIC_NULL_VARIABLES=0" "-DJUCE_STRICT_REFCOUNTEDPOINTER=1" "-DJUCE_USE_CAMERA=1" "-DJUCE_STANDALONE_APPLICATION=1" "-DJUCE_DEMO_RUNNER=1" "-DJUCE_UNIT_TESTS=1" "-DJUCER_LINUX_MAKE_6D53C8B4=1" "-DJUCE_APP_VERSION=8.0.0" "-DJUCE_APP_VERSION_HEX=0x80000" $(shell $(PKG_CONFIG) --cflags alsa freetype2 gl libcurl webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd -I../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 -I../../../../modules/juce_audio_processors/format_types/LV2_SDK -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
|
||||
JUCE_CPPFLAGS_APP := "-DJucePlugin_Build_VST=0" "-DJucePlugin_Build_VST3=0" "-DJucePlugin_Build_AU=0" "-DJucePlugin_Build_AUv3=0" "-DJucePlugin_Build_AAX=0" "-DJucePlugin_Build_Standalone=0" "-DJucePlugin_Build_Unity=0" "-DJucePlugin_Build_LV2=0"
|
||||
JUCE_TARGET_APP := DemoRunner
|
||||
|
||||
|
|
@ -79,6 +79,7 @@ OBJECTS_APP := \
|
|||
$(JUCE_OBJDIR)/MainComponent_a54318d2.o \
|
||||
$(JUCE_OBJDIR)/Main_90ebc5c2.o \
|
||||
$(JUCE_OBJDIR)/include_juce_analytics_f8e9fa94.o \
|
||||
$(JUCE_OBJDIR)/include_juce_animation_c2224b92.o \
|
||||
$(JUCE_OBJDIR)/include_juce_audio_basics_8a4e984a.o \
|
||||
$(JUCE_OBJDIR)/include_juce_audio_devices_63111d02.o \
|
||||
$(JUCE_OBJDIR)/include_juce_audio_formats_15f82001.o \
|
||||
|
|
@ -148,6 +149,11 @@ $(JUCE_OBJDIR)/include_juce_analytics_f8e9fa94.o: ../../JuceLibraryCode/include_
|
|||
@echo "Compiling include_juce_analytics.cpp"
|
||||
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<"
|
||||
|
||||
$(JUCE_OBJDIR)/include_juce_animation_c2224b92.o: ../../JuceLibraryCode/include_juce_animation.cpp
|
||||
-$(V_AT)mkdir -p $(@D)
|
||||
@echo "Compiling include_juce_animation.cpp"
|
||||
$(V_AT)$(CXX) $(JUCE_CXXFLAGS) $(JUCE_CPPFLAGS_APP) $(JUCE_CFLAGS_APP) -o "$@" -c "$<"
|
||||
|
||||
$(JUCE_OBJDIR)/include_juce_audio_basics_8a4e984a.o: ../../JuceLibraryCode/include_juce_audio_basics.cpp
|
||||
-$(V_AT)mkdir -p $(@D)
|
||||
@echo "Compiling include_juce_audio_basics.cpp"
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
48CF0B02E1D06E5DA51E6270 /* Accelerate.framework */ = {isa = PBXBuildFile; fileRef = A04E4408525F24F7DCBA000E; };
|
||||
4FBBB55F4E347757F74F1F41 /* MainComponent.cpp */ = {isa = PBXBuildFile; fileRef = 25E5ED33876A2C752378C859; };
|
||||
527DA2E6827BAFDDD3E8E80F /* CoreAudioKit.framework */ = {isa = PBXBuildFile; fileRef = B4389672DA4CC8E0A531062D; };
|
||||
55F120E70543228568573D4A /* include_juce_animation.cpp */ = {isa = PBXBuildFile; fileRef = CB4C64BACC1CA4AAD6D69565; };
|
||||
5CB78489F16E82144914972D /* include_juce_gui_extra.mm */ = {isa = PBXBuildFile; fileRef = 979F23EA9E5E76131299E886; };
|
||||
5E4310B3F6BB639875D3E9B8 /* Foundation.framework */ = {isa = PBXBuildFile; fileRef = 49ECA8B998B339A083674A22; };
|
||||
5EB6872A39122A5AB67E544E /* include_juce_audio_processors_ara.cpp */ = {isa = PBXBuildFile; fileRef = 8D44097417573B38729A0179; };
|
||||
|
|
@ -109,6 +110,7 @@
|
|||
71A91516AFD980FEE694C0E1 /* IOKit.framework */ /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; };
|
||||
7A5AAE9EE573FC6105CC4AAC /* SettingsContent.h */ /* SettingsContent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SettingsContent.h; path = ../../Source/UI/SettingsContent.h; sourceTree = SOURCE_ROOT; };
|
||||
7B3243C92248D379A0489AA4 /* Utilities */ /* Utilities */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Utilities; path = ../../../Utilities; sourceTree = "<group>"; };
|
||||
8447FC9882D85E6DAF0A4852 /* juce_animation */ /* juce_animation */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_animation; path = ../../../../modules/juce_animation; sourceTree = SOURCE_ROOT; };
|
||||
87D5F938A115568F9CF3BE5A /* Security.framework */ /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
|
||||
8CE533D611CD0984AD028D73 /* juce_graphics */ /* juce_graphics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_graphics; path = ../../../../modules/juce_graphics; sourceTree = SOURCE_ROOT; };
|
||||
8D44097417573B38729A0179 /* include_juce_audio_processors_ara.cpp */ /* include_juce_audio_processors_ara.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_processors_ara.cpp; path = ../../JuceLibraryCode/include_juce_audio_processors_ara.cpp; sourceTree = SOURCE_ROOT; };
|
||||
|
|
@ -128,6 +130,7 @@
|
|||
B2BC383CE102EECCF49C7AF7 /* IntroScreen.h */ /* IntroScreen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = IntroScreen.h; path = ../../Source/Demos/IntroScreen.h; sourceTree = SOURCE_ROOT; };
|
||||
B4389672DA4CC8E0A531062D /* CoreAudioKit.framework */ /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; };
|
||||
C1E93FAF6C68A40A664422CD /* include_juce_dsp.mm */ /* include_juce_dsp.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_dsp.mm; path = ../../JuceLibraryCode/include_juce_dsp.mm; sourceTree = SOURCE_ROOT; };
|
||||
CB4C64BACC1CA4AAD6D69565 /* include_juce_animation.cpp */ /* include_juce_animation.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_animation.cpp; path = ../../JuceLibraryCode/include_juce_animation.cpp; sourceTree = SOURCE_ROOT; };
|
||||
CE38E6469D98462A2C22C915 /* include_juce_osc.cpp */ /* include_juce_osc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_osc.cpp; path = ../../JuceLibraryCode/include_juce_osc.cpp; sourceTree = SOURCE_ROOT; };
|
||||
CFF2BBEB242CC8B3B904B5F9 /* App */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DemoRunner.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
DC192EFA899E6CBE6B5CD394 /* AVFoundation.framework */ /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
|
||||
|
|
@ -203,6 +206,7 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
112FFCB73597157E721BCDF2,
|
||||
8447FC9882D85E6DAF0A4852,
|
||||
6847A9B2C5E3C2ED56D8D4E7,
|
||||
60F2869DC345EAF2314D6C09,
|
||||
491641F7632BCC81BBA0ED85,
|
||||
|
|
@ -229,6 +233,7 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
5965349393850F41DF76F350,
|
||||
CB4C64BACC1CA4AAD6D69565,
|
||||
03B0F9318FD583525AB195A9,
|
||||
03A63C3CA6F24977F19C316D,
|
||||
E061A1C75FA5722167FC4997,
|
||||
|
|
@ -432,6 +437,7 @@
|
|||
4FBBB55F4E347757F74F1F41,
|
||||
F619F3887CEC064441BB6EE6,
|
||||
C2BB2B6DA237FE0CB64C7EDA,
|
||||
55F120E70543228568573D4A,
|
||||
F28112945CEBEA4CE8975833,
|
||||
9EACEA6BE8D0ACC72C12C080,
|
||||
26652AB1BB77C8A39434775F,
|
||||
|
|
@ -523,6 +529,7 @@
|
|||
"NDEBUG=1",
|
||||
"JUCE_PROJUCER_VERSION=0x80000",
|
||||
"JUCE_MODULE_AVAILABLE_juce_analytics=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_animation=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_basics=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_devices=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_formats=1",
|
||||
|
|
@ -613,6 +620,7 @@
|
|||
"DEBUG=1",
|
||||
"JUCE_PROJUCER_VERSION=0x80000",
|
||||
"JUCE_MODULE_AVAILABLE_juce_analytics=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_animation=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_basics=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_devices=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_formats=1",
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@
|
|||
<Optimization>Disabled</Optimization>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<AdditionalIncludeDirectories>..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_animation=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
|
|
@ -79,7 +79,7 @@
|
|||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_animation=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)\DemoRunner.exe</OutputFile>
|
||||
|
|
@ -107,7 +107,7 @@
|
|||
<ClCompile>
|
||||
<Optimization>Full</Optimization>
|
||||
<AdditionalIncludeDirectories>..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_animation=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
|
|
@ -122,7 +122,7 @@
|
|||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_animation=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)\DemoRunner.exe</OutputFile>
|
||||
|
|
@ -161,6 +161,27 @@
|
|||
<ClCompile Include="..\..\..\..\modules\juce_analytics\juce_analytics.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_Animator.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorSetBuilder.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorUpdater.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_Easings.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_ValueAnimatorBuilder.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\detail\chromium\cubic_bezier.cc">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\juce_animation.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\audio_play_head\juce_AudioPlayHead.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
|
|
@ -2796,6 +2817,7 @@
|
|||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_analytics.cpp"/>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_animation.cpp"/>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_basics.cpp"/>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_devices.cpp"/>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_formats.cpp"/>
|
||||
|
|
@ -2834,6 +2856,16 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_analytics\destinations\juce_AnalyticsDestination.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_analytics\destinations\juce_ThreadedAnalyticsDestination.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_analytics\juce_analytics.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_Animator.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorSetBuilder.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorUpdater.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_Easings.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_StaticAnimationLimits.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_ValueAnimatorBuilder.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_VBlankAnimatorUpdater.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\detail\chromium\cubic_bezier.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\detail\juce_ArrayAndTupleOps.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\juce_animation.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\audio_play_head\juce_AudioPlayHead.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\buffers\juce_AudioChannelSet.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\buffers\juce_AudioDataConverters.h"/>
|
||||
|
|
|
|||
|
|
@ -23,6 +23,18 @@
|
|||
<Filter Include="JUCE Modules\juce_analytics">
|
||||
<UniqueIdentifier>{97F7F593-75F8-D6B2-DC96-C946C3976226}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="JUCE Modules\juce_animation\animation">
|
||||
<UniqueIdentifier>{F5989655-DEF5-0837-C752-9CCB88B3C1FB}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="JUCE Modules\juce_animation\detail\chromium">
|
||||
<UniqueIdentifier>{98B39178-8939-7749-8B88-C3B52C7EBF42}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="JUCE Modules\juce_animation\detail">
|
||||
<UniqueIdentifier>{6ABAE878-BEE8-D294-DCBD-783AC7562B3B}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="JUCE Modules\juce_animation">
|
||||
<UniqueIdentifier>{CBB2B5E6-0E34-A956-8FFF-B4365E57F077}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="JUCE Modules\juce_audio_basics\audio_play_head">
|
||||
<UniqueIdentifier>{EB58F05A-A968-CEBE-40C4-107CDD8F240F}</UniqueIdentifier>
|
||||
</Filter>
|
||||
|
|
@ -751,6 +763,27 @@
|
|||
<ClCompile Include="..\..\..\..\modules\juce_analytics\juce_analytics.cpp">
|
||||
<Filter>JUCE Modules\juce_analytics</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_Animator.cpp">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorSetBuilder.cpp">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorUpdater.cpp">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_Easings.cpp">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_ValueAnimatorBuilder.cpp">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\detail\chromium\cubic_bezier.cc">
|
||||
<Filter>JUCE Modules\juce_animation\detail\chromium</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\juce_animation.cpp">
|
||||
<Filter>JUCE Modules\juce_animation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\audio_play_head\juce_AudioPlayHead.cpp">
|
||||
<Filter>JUCE Modules\juce_audio_basics\audio_play_head</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -3547,6 +3580,9 @@
|
|||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_analytics.cpp">
|
||||
<Filter>JUCE Library Code</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_animation.cpp">
|
||||
<Filter>JUCE Library Code</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_basics.cpp">
|
||||
<Filter>JUCE Library Code</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -3639,6 +3675,36 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_analytics\juce_analytics.h">
|
||||
<Filter>JUCE Modules\juce_analytics</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_Animator.h">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorSetBuilder.h">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorUpdater.h">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_Easings.h">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_StaticAnimationLimits.h">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_ValueAnimatorBuilder.h">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_VBlankAnimatorUpdater.h">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\detail\chromium\cubic_bezier.h">
|
||||
<Filter>JUCE Modules\juce_animation\detail\chromium</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\detail\juce_ArrayAndTupleOps.h">
|
||||
<Filter>JUCE Modules\juce_animation\detail</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\juce_animation.h">
|
||||
<Filter>JUCE Modules\juce_animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\audio_play_head\juce_AudioPlayHead.h">
|
||||
<Filter>JUCE Modules\juce_audio_basics\audio_play_head</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@
|
|||
<Optimization>Disabled</Optimization>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<AdditionalIncludeDirectories>..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_animation=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
|
|
@ -79,7 +79,7 @@
|
|||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_animation=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)\DemoRunner.exe</OutputFile>
|
||||
|
|
@ -107,7 +107,7 @@
|
|||
<ClCompile>
|
||||
<Optimization>Full</Optimization>
|
||||
<AdditionalIncludeDirectories>..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_animation=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
|
|
@ -122,7 +122,7 @@
|
|||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_animation=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)\DemoRunner.exe</OutputFile>
|
||||
|
|
@ -161,6 +161,27 @@
|
|||
<ClCompile Include="..\..\..\..\modules\juce_analytics\juce_analytics.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_Animator.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorSetBuilder.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorUpdater.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_Easings.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_ValueAnimatorBuilder.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\detail\chromium\cubic_bezier.cc">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\juce_animation.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\audio_play_head\juce_AudioPlayHead.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
|
|
@ -2796,6 +2817,7 @@
|
|||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_analytics.cpp"/>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_animation.cpp"/>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_basics.cpp"/>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_devices.cpp"/>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_formats.cpp"/>
|
||||
|
|
@ -2834,6 +2856,16 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_analytics\destinations\juce_AnalyticsDestination.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_analytics\destinations\juce_ThreadedAnalyticsDestination.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_analytics\juce_analytics.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_Animator.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorSetBuilder.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorUpdater.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_Easings.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_StaticAnimationLimits.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_ValueAnimatorBuilder.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_VBlankAnimatorUpdater.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\detail\chromium\cubic_bezier.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\detail\juce_ArrayAndTupleOps.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\juce_animation.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\audio_play_head\juce_AudioPlayHead.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\buffers\juce_AudioChannelSet.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\buffers\juce_AudioDataConverters.h"/>
|
||||
|
|
|
|||
|
|
@ -23,6 +23,18 @@
|
|||
<Filter Include="JUCE Modules\juce_analytics">
|
||||
<UniqueIdentifier>{97F7F593-75F8-D6B2-DC96-C946C3976226}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="JUCE Modules\juce_animation\animation">
|
||||
<UniqueIdentifier>{F5989655-DEF5-0837-C752-9CCB88B3C1FB}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="JUCE Modules\juce_animation\detail\chromium">
|
||||
<UniqueIdentifier>{98B39178-8939-7749-8B88-C3B52C7EBF42}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="JUCE Modules\juce_animation\detail">
|
||||
<UniqueIdentifier>{6ABAE878-BEE8-D294-DCBD-783AC7562B3B}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="JUCE Modules\juce_animation">
|
||||
<UniqueIdentifier>{CBB2B5E6-0E34-A956-8FFF-B4365E57F077}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="JUCE Modules\juce_audio_basics\audio_play_head">
|
||||
<UniqueIdentifier>{EB58F05A-A968-CEBE-40C4-107CDD8F240F}</UniqueIdentifier>
|
||||
</Filter>
|
||||
|
|
@ -751,6 +763,27 @@
|
|||
<ClCompile Include="..\..\..\..\modules\juce_analytics\juce_analytics.cpp">
|
||||
<Filter>JUCE Modules\juce_analytics</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_Animator.cpp">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorSetBuilder.cpp">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorUpdater.cpp">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_Easings.cpp">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_ValueAnimatorBuilder.cpp">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\detail\chromium\cubic_bezier.cc">
|
||||
<Filter>JUCE Modules\juce_animation\detail\chromium</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\juce_animation.cpp">
|
||||
<Filter>JUCE Modules\juce_animation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\audio_play_head\juce_AudioPlayHead.cpp">
|
||||
<Filter>JUCE Modules\juce_audio_basics\audio_play_head</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -3547,6 +3580,9 @@
|
|||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_analytics.cpp">
|
||||
<Filter>JUCE Library Code</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_animation.cpp">
|
||||
<Filter>JUCE Library Code</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_basics.cpp">
|
||||
<Filter>JUCE Library Code</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -3639,6 +3675,36 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_analytics\juce_analytics.h">
|
||||
<Filter>JUCE Modules\juce_analytics</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_Animator.h">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorSetBuilder.h">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorUpdater.h">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_Easings.h">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_StaticAnimationLimits.h">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_ValueAnimatorBuilder.h">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_VBlankAnimatorUpdater.h">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\detail\chromium\cubic_bezier.h">
|
||||
<Filter>JUCE Modules\juce_animation\detail\chromium</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\detail\juce_ArrayAndTupleOps.h">
|
||||
<Filter>JUCE Modules\juce_animation\detail</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\juce_animation.h">
|
||||
<Filter>JUCE Modules\juce_animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\audio_play_head\juce_AudioPlayHead.h">
|
||||
<Filter>JUCE Modules\juce_audio_basics\audio_play_head</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@
|
|||
<Optimization>Disabled</Optimization>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<AdditionalIncludeDirectories>..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_animation=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
|
|
@ -79,7 +79,7 @@
|
|||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_animation=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)\DemoRunner.exe</OutputFile>
|
||||
|
|
@ -107,7 +107,7 @@
|
|||
<ClCompile>
|
||||
<Optimization>Full</Optimization>
|
||||
<AdditionalIncludeDirectories>..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_animation=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
|
|
@ -122,7 +122,7 @@
|
|||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lilv;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sratom;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord\src;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\sord;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\serd;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK\lv2;..\..\..\..\modules\juce_audio_processors\format_types\LV2_SDK;..\..\..\..\modules\juce_audio_processors\format_types\VST3_SDK;..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_PROJUCER_VERSION=0x80000;JUCE_MODULE_AVAILABLE_juce_analytics=1;JUCE_MODULE_AVAILABLE_juce_animation=1;JUCE_MODULE_AVAILABLE_juce_audio_basics=1;JUCE_MODULE_AVAILABLE_juce_audio_devices=1;JUCE_MODULE_AVAILABLE_juce_audio_formats=1;JUCE_MODULE_AVAILABLE_juce_audio_processors=1;JUCE_MODULE_AVAILABLE_juce_audio_utils=1;JUCE_MODULE_AVAILABLE_juce_box2d=1;JUCE_MODULE_AVAILABLE_juce_core=1;JUCE_MODULE_AVAILABLE_juce_cryptography=1;JUCE_MODULE_AVAILABLE_juce_data_structures=1;JUCE_MODULE_AVAILABLE_juce_dsp=1;JUCE_MODULE_AVAILABLE_juce_events=1;JUCE_MODULE_AVAILABLE_juce_graphics=1;JUCE_MODULE_AVAILABLE_juce_gui_basics=1;JUCE_MODULE_AVAILABLE_juce_gui_extra=1;JUCE_MODULE_AVAILABLE_juce_opengl=1;JUCE_MODULE_AVAILABLE_juce_osc=1;JUCE_MODULE_AVAILABLE_juce_product_unlocking=1;JUCE_MODULE_AVAILABLE_juce_video=1;JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1;JUCE_USE_MP3AUDIOFORMAT=1;JUCE_PLUGINHOST_VST3=1;JUCE_PLUGINHOST_LV2=1;JUCE_ALLOW_STATIC_NULL_VARIABLES=0;JUCE_STRICT_REFCOUNTEDPOINTER=1;JUCE_USE_CAMERA=1;JUCE_STANDALONE_APPLICATION=1;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2022_78A503E=1;JUCE_APP_VERSION=8.0.0;JUCE_APP_VERSION_HEX=0x80000;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;JucePlugin_Build_LV2=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)\DemoRunner.exe</OutputFile>
|
||||
|
|
@ -161,6 +161,27 @@
|
|||
<ClCompile Include="..\..\..\..\modules\juce_analytics\juce_analytics.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_Animator.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorSetBuilder.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorUpdater.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_Easings.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_ValueAnimatorBuilder.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\detail\chromium\cubic_bezier.cc">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\juce_animation.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\audio_play_head\juce_AudioPlayHead.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
|
|
@ -2796,6 +2817,7 @@
|
|||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_analytics.cpp"/>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_animation.cpp"/>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_basics.cpp"/>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_devices.cpp"/>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_formats.cpp"/>
|
||||
|
|
@ -2834,6 +2856,16 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_analytics\destinations\juce_AnalyticsDestination.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_analytics\destinations\juce_ThreadedAnalyticsDestination.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_analytics\juce_analytics.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_Animator.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorSetBuilder.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorUpdater.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_Easings.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_StaticAnimationLimits.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_ValueAnimatorBuilder.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_VBlankAnimatorUpdater.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\detail\chromium\cubic_bezier.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\detail\juce_ArrayAndTupleOps.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\juce_animation.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\audio_play_head\juce_AudioPlayHead.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\buffers\juce_AudioChannelSet.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\buffers\juce_AudioDataConverters.h"/>
|
||||
|
|
|
|||
|
|
@ -23,6 +23,18 @@
|
|||
<Filter Include="JUCE Modules\juce_analytics">
|
||||
<UniqueIdentifier>{97F7F593-75F8-D6B2-DC96-C946C3976226}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="JUCE Modules\juce_animation\animation">
|
||||
<UniqueIdentifier>{F5989655-DEF5-0837-C752-9CCB88B3C1FB}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="JUCE Modules\juce_animation\detail\chromium">
|
||||
<UniqueIdentifier>{98B39178-8939-7749-8B88-C3B52C7EBF42}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="JUCE Modules\juce_animation\detail">
|
||||
<UniqueIdentifier>{6ABAE878-BEE8-D294-DCBD-783AC7562B3B}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="JUCE Modules\juce_animation">
|
||||
<UniqueIdentifier>{CBB2B5E6-0E34-A956-8FFF-B4365E57F077}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="JUCE Modules\juce_audio_basics\audio_play_head">
|
||||
<UniqueIdentifier>{EB58F05A-A968-CEBE-40C4-107CDD8F240F}</UniqueIdentifier>
|
||||
</Filter>
|
||||
|
|
@ -751,6 +763,27 @@
|
|||
<ClCompile Include="..\..\..\..\modules\juce_analytics\juce_analytics.cpp">
|
||||
<Filter>JUCE Modules\juce_analytics</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_Animator.cpp">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorSetBuilder.cpp">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorUpdater.cpp">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_Easings.cpp">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\animation\juce_ValueAnimatorBuilder.cpp">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\detail\chromium\cubic_bezier.cc">
|
||||
<Filter>JUCE Modules\juce_animation\detail\chromium</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_animation\juce_animation.cpp">
|
||||
<Filter>JUCE Modules\juce_animation</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_audio_basics\audio_play_head\juce_AudioPlayHead.cpp">
|
||||
<Filter>JUCE Modules\juce_audio_basics\audio_play_head</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -3547,6 +3580,9 @@
|
|||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_analytics.cpp">
|
||||
<Filter>JUCE Library Code</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_animation.cpp">
|
||||
<Filter>JUCE Library Code</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\JuceLibraryCode\include_juce_audio_basics.cpp">
|
||||
<Filter>JUCE Library Code</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -3639,6 +3675,36 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_analytics\juce_analytics.h">
|
||||
<Filter>JUCE Modules\juce_analytics</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_Animator.h">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorSetBuilder.h">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_AnimatorUpdater.h">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_Easings.h">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_StaticAnimationLimits.h">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_ValueAnimatorBuilder.h">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\animation\juce_VBlankAnimatorUpdater.h">
|
||||
<Filter>JUCE Modules\juce_animation\animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\detail\chromium\cubic_bezier.h">
|
||||
<Filter>JUCE Modules\juce_animation\detail\chromium</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\detail\juce_ArrayAndTupleOps.h">
|
||||
<Filter>JUCE Modules\juce_animation\detail</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_animation\juce_animation.h">
|
||||
<Filter>JUCE Modules\juce_animation</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_audio_basics\audio_play_head\juce_AudioPlayHead.h">
|
||||
<Filter>JUCE Modules\juce_audio_basics\audio_play_head</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
48CF0B02E1D06E5DA51E6270 /* Accelerate.framework */ = {isa = PBXBuildFile; fileRef = A04E4408525F24F7DCBA000E; };
|
||||
4FBBB55F4E347757F74F1F41 /* MainComponent.cpp */ = {isa = PBXBuildFile; fileRef = 25E5ED33876A2C752378C859; };
|
||||
527DA2E6827BAFDDD3E8E80F /* CoreAudioKit.framework */ = {isa = PBXBuildFile; fileRef = B4389672DA4CC8E0A531062D; };
|
||||
55F120E70543228568573D4A /* include_juce_animation.cpp */ = {isa = PBXBuildFile; fileRef = CB4C64BACC1CA4AAD6D69565; };
|
||||
5CB78489F16E82144914972D /* include_juce_gui_extra.mm */ = {isa = PBXBuildFile; fileRef = 979F23EA9E5E76131299E886; };
|
||||
5E4310B3F6BB639875D3E9B8 /* Foundation.framework */ = {isa = PBXBuildFile; fileRef = 49ECA8B998B339A083674A22; };
|
||||
5EB6872A39122A5AB67E544E /* include_juce_audio_processors_ara.cpp */ = {isa = PBXBuildFile; fileRef = 8D44097417573B38729A0179; };
|
||||
|
|
@ -109,6 +110,7 @@
|
|||
7A5AAE9EE573FC6105CC4AAC /* SettingsContent.h */ /* SettingsContent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SettingsContent.h; path = ../../Source/UI/SettingsContent.h; sourceTree = SOURCE_ROOT; };
|
||||
7FBD555B32197FEACDFF5AFB /* LaunchScreen.storyboard */ /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = LaunchScreen.storyboard; sourceTree = SOURCE_ROOT; };
|
||||
8135645508EEFDBDCDF2ADC6 /* Images.xcassets */ /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = DemoRunner/Images.xcassets; sourceTree = SOURCE_ROOT; };
|
||||
8447FC9882D85E6DAF0A4852 /* juce_animation */ /* juce_animation */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_animation; path = ../../../../modules/juce_animation; sourceTree = SOURCE_ROOT; };
|
||||
873F9DD54978E601102353B4 /* CoreText.framework */ /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; };
|
||||
8CE533D611CD0984AD028D73 /* juce_graphics */ /* juce_graphics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_graphics; path = ../../../../modules/juce_graphics; sourceTree = SOURCE_ROOT; };
|
||||
8D44097417573B38729A0179 /* include_juce_audio_processors_ara.cpp */ /* include_juce_audio_processors_ara.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_audio_processors_ara.cpp; path = ../../JuceLibraryCode/include_juce_audio_processors_ara.cpp; sourceTree = SOURCE_ROOT; };
|
||||
|
|
@ -127,6 +129,7 @@
|
|||
B2BC383CE102EECCF49C7AF7 /* IntroScreen.h */ /* IntroScreen.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = IntroScreen.h; path = ../../Source/Demos/IntroScreen.h; sourceTree = SOURCE_ROOT; };
|
||||
B4389672DA4CC8E0A531062D /* CoreAudioKit.framework */ /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; };
|
||||
C1E93FAF6C68A40A664422CD /* include_juce_dsp.mm */ /* include_juce_dsp.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_dsp.mm; path = ../../JuceLibraryCode/include_juce_dsp.mm; sourceTree = SOURCE_ROOT; };
|
||||
CB4C64BACC1CA4AAD6D69565 /* include_juce_animation.cpp */ /* include_juce_animation.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_animation.cpp; path = ../../JuceLibraryCode/include_juce_animation.cpp; sourceTree = SOURCE_ROOT; };
|
||||
CE38E6469D98462A2C22C915 /* include_juce_osc.cpp */ /* include_juce_osc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_osc.cpp; path = ../../JuceLibraryCode/include_juce_osc.cpp; sourceTree = SOURCE_ROOT; };
|
||||
CFF2BBEB242CC8B3B904B5F9 /* App */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DemoRunner.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
DC192EFA899E6CBE6B5CD394 /* AVFoundation.framework */ /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
|
||||
|
|
@ -210,6 +213,7 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
112FFCB73597157E721BCDF2,
|
||||
8447FC9882D85E6DAF0A4852,
|
||||
6847A9B2C5E3C2ED56D8D4E7,
|
||||
60F2869DC345EAF2314D6C09,
|
||||
491641F7632BCC81BBA0ED85,
|
||||
|
|
@ -236,6 +240,7 @@
|
|||
isa = PBXGroup;
|
||||
children = (
|
||||
5965349393850F41DF76F350,
|
||||
CB4C64BACC1CA4AAD6D69565,
|
||||
03B0F9318FD583525AB195A9,
|
||||
03A63C3CA6F24977F19C316D,
|
||||
E061A1C75FA5722167FC4997,
|
||||
|
|
@ -436,6 +441,7 @@
|
|||
4FBBB55F4E347757F74F1F41,
|
||||
F619F3887CEC064441BB6EE6,
|
||||
C2BB2B6DA237FE0CB64C7EDA,
|
||||
55F120E70543228568573D4A,
|
||||
F28112945CEBEA4CE8975833,
|
||||
9EACEA6BE8D0ACC72C12C080,
|
||||
26652AB1BB77C8A39434775F,
|
||||
|
|
@ -530,6 +536,7 @@
|
|||
"JUCE_CONTENT_SHARING=1",
|
||||
"JUCE_PROJUCER_VERSION=0x80000",
|
||||
"JUCE_MODULE_AVAILABLE_juce_analytics=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_animation=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_basics=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_devices=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_formats=1",
|
||||
|
|
@ -620,6 +627,7 @@
|
|||
"JUCE_CONTENT_SHARING=1",
|
||||
"JUCE_PROJUCER_VERSION=0x80000",
|
||||
"JUCE_MODULE_AVAILABLE_juce_analytics=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_animation=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_basics=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_devices=1",
|
||||
"JUCE_MODULE_AVAILABLE_juce_audio_formats=1",
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@ target_compile_definitions(DemoRunner PRIVATE
|
|||
|
||||
target_link_libraries(DemoRunner PRIVATE
|
||||
juce::juce_analytics
|
||||
juce::juce_animation
|
||||
juce::juce_audio_utils
|
||||
juce::juce_box2d
|
||||
juce::juce_dsp
|
||||
|
|
|
|||
|
|
@ -60,6 +60,7 @@
|
|||
<MODULEPATH id="juce_dsp" path="../../modules"/>
|
||||
<MODULEPATH id="juce_osc" path="../../modules"/>
|
||||
<MODULEPATH id="juce_product_unlocking" path="../../modules"/>
|
||||
<MODULEPATH id="juce_animation" path="../../modules"/>
|
||||
</MODULEPATHS>
|
||||
</XCODE_MAC>
|
||||
<LINUX_MAKE targetFolder="Builds/LinuxMakefile" smallIcon="YyqWd2" bigIcon="YyqWd2">
|
||||
|
|
@ -87,6 +88,7 @@
|
|||
<MODULEPATH id="juce_audio_devices" path="../../modules"/>
|
||||
<MODULEPATH id="juce_audio_basics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_analytics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_animation" path="../../modules"/>
|
||||
</MODULEPATHS>
|
||||
</LINUX_MAKE>
|
||||
<ANDROIDSTUDIO targetFolder="Builds/Android" androidMinimumSDK="23" microphonePermissionNeeded="1"
|
||||
|
|
@ -120,6 +122,7 @@
|
|||
<MODULEPATH id="juce_audio_devices" path="../../modules"/>
|
||||
<MODULEPATH id="juce_audio_basics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_analytics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_animation" path="../../modules"/>
|
||||
</MODULEPATHS>
|
||||
</ANDROIDSTUDIO>
|
||||
<XCODE_IPHONE targetFolder="Builds/iOS" UISupportsDocumentBrowser="1" microphonePermissionNeeded="1"
|
||||
|
|
@ -153,6 +156,7 @@
|
|||
<MODULEPATH id="juce_audio_devices" path="../../modules"/>
|
||||
<MODULEPATH id="juce_audio_basics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_analytics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_animation" path="../../modules"/>
|
||||
</MODULEPATHS>
|
||||
</XCODE_IPHONE>
|
||||
<VS2017 targetFolder="Builds/VisualStudio2017" smallIcon="YyqWd2" bigIcon="YyqWd2"
|
||||
|
|
@ -181,6 +185,7 @@
|
|||
<MODULEPATH id="juce_audio_devices" path="../../modules"/>
|
||||
<MODULEPATH id="juce_audio_basics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_analytics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_animation" path="../../modules"/>
|
||||
</MODULEPATHS>
|
||||
</VS2017>
|
||||
<VS2019 targetFolder="Builds/VisualStudio2019" smallIcon="YyqWd2" bigIcon="YyqWd2"
|
||||
|
|
@ -209,6 +214,7 @@
|
|||
<MODULEPATH id="juce_audio_devices" path="../../modules"/>
|
||||
<MODULEPATH id="juce_audio_basics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_analytics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_animation" path="../../modules"/>
|
||||
</MODULEPATHS>
|
||||
</VS2019>
|
||||
<VS2022 targetFolder="Builds/VisualStudio2022" smallIcon="YyqWd2" bigIcon="YyqWd2"
|
||||
|
|
@ -237,11 +243,13 @@
|
|||
<MODULEPATH id="juce_audio_devices" path="../../modules"/>
|
||||
<MODULEPATH id="juce_audio_basics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_analytics" path="../../modules"/>
|
||||
<MODULEPATH id="juce_animation" path="../../modules"/>
|
||||
</MODULEPATHS>
|
||||
</VS2022>
|
||||
</EXPORTFORMATS>
|
||||
<MODULES>
|
||||
<MODULE id="juce_analytics" showAllCode="1" useLocalCopy="0" useGlobalPath="0"/>
|
||||
<MODULE id="juce_animation" showAllCode="1" useLocalCopy="0" useGlobalPath="0"/>
|
||||
<MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0" useGlobalPath="0"/>
|
||||
<MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0" useGlobalPath="0"/>
|
||||
<MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0" useGlobalPath="0"/>
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
|
||||
|
||||
#include <juce_analytics/juce_analytics.h>
|
||||
#include <juce_animation/juce_animation.h>
|
||||
#include <juce_audio_basics/juce_audio_basics.h>
|
||||
#include <juce_audio_devices/juce_audio_devices.h>
|
||||
#include <juce_audio_formats/juce_audio_formats.h>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
/*
|
||||
|
||||
IMPORTANT! This file is auto-generated each time you save your
|
||||
project - if you alter its contents, your changes may be overwritten!
|
||||
|
||||
*/
|
||||
|
||||
#include <juce_animation/juce_animation.cpp>
|
||||
|
|
@ -32,7 +32,8 @@
|
|||
#include "../../../GUI/AccessibilityDemo.h"
|
||||
#endif
|
||||
#include "../../../GUI/AnimationAppDemo.h"
|
||||
#include "../../../GUI/AnimationDemo.h"
|
||||
#include "../../../GUI/AnimationEasingDemo.h"
|
||||
#include "../../../GUI/AnimatorsDemo.h"
|
||||
#include "../../../GUI/BouncingBallWavetableDemo.h"
|
||||
#if JUCE_USE_CAMERA && ! (JUCE_LINUX || JUCE_BSD)
|
||||
#include "../../../GUI/CameraDemo.h"
|
||||
|
|
@ -72,7 +73,8 @@ void registerDemos_Two() noexcept
|
|||
REGISTER_DEMO (AccessibilityDemo, GUI, false)
|
||||
#endif
|
||||
REGISTER_DEMO (AnimationAppDemo, GUI, false)
|
||||
REGISTER_DEMO (AnimationDemo, GUI, false)
|
||||
REGISTER_DEMO (AnimationEasingDemo, GUI, false)
|
||||
REGISTER_DEMO (AnimatorsDemo, GUI, false)
|
||||
REGISTER_DEMO (BouncingBallWavetableDemo, GUI, false)
|
||||
#if JUCE_USE_CAMERA && ! (JUCE_LINUX || JUCE_BSD)
|
||||
REGISTER_DEMO (CameraDemo, GUI, true)
|
||||
|
|
|
|||
|
|
@ -1,305 +0,0 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE framework examples.
|
||||
Copyright (c) Raw Material Software Limited
|
||||
|
||||
The code included in this file is provided under the terms of the ISC license
|
||||
http://www.isc.org/downloads/software-support-policy/isc-license. Permission
|
||||
to use, copy, modify, and/or distribute this software for any purpose with or
|
||||
without fee is hereby granted provided that the above copyright notice and
|
||||
this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
The block below describes the properties of this PIP. A PIP is a short snippet
|
||||
of code that can be read by the Projucer and used to generate a JUCE project.
|
||||
|
||||
BEGIN_JUCE_PIP_METADATA
|
||||
|
||||
name: AnimationDemo
|
||||
version: 1.0.0
|
||||
vendor: JUCE
|
||||
website: http://juce.com
|
||||
description: Displays an animated draggable ball.
|
||||
|
||||
dependencies: juce_core, juce_data_structures, juce_events, juce_graphics,
|
||||
juce_gui_basics
|
||||
exporters: xcode_mac, vs2022, linux_make, androidstudio, xcode_iphone
|
||||
|
||||
moduleFlags: JUCE_STRICT_REFCOUNTEDPOINTER=1
|
||||
|
||||
type: Component
|
||||
mainClass: AnimationDemo
|
||||
|
||||
useLocalCopy: 1
|
||||
|
||||
END_JUCE_PIP_METADATA
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../Assets/DemoUtilities.h"
|
||||
|
||||
//==============================================================================
|
||||
/** This will be the source of our balls and can be dragged around. */
|
||||
class BallGeneratorComponent final : public Component
|
||||
{
|
||||
public:
|
||||
BallGeneratorComponent() {}
|
||||
|
||||
void paint (Graphics& g) override
|
||||
{
|
||||
auto area = getLocalBounds().reduced (2);
|
||||
|
||||
g.setColour (Colours::orange);
|
||||
g.drawRoundedRectangle (area.toFloat(), 10.0f, 2.0f);
|
||||
|
||||
g.setColour (findColour (TextButton::textColourOffId));
|
||||
g.drawFittedText ("Drag Me!", area, Justification::centred, 1);
|
||||
}
|
||||
|
||||
void resized() override
|
||||
{
|
||||
// Just set the limits of our constrainer so that we don't drag ourselves off the screen
|
||||
constrainer.setMinimumOnscreenAmounts (getHeight(), getWidth(),
|
||||
getHeight(), getWidth());
|
||||
}
|
||||
|
||||
void mouseDown (const MouseEvent& e) override
|
||||
{
|
||||
// Prepares our dragger to drag this Component
|
||||
dragger.startDraggingComponent (this, e);
|
||||
}
|
||||
|
||||
void mouseDrag (const MouseEvent& e) override
|
||||
{
|
||||
// Moves this Component according to the mouse drag event and applies our constraints to it
|
||||
dragger.dragComponent (this, e, &constrainer);
|
||||
}
|
||||
|
||||
private:
|
||||
ComponentBoundsConstrainer constrainer;
|
||||
ComponentDragger dragger;
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (BallGeneratorComponent)
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
struct BallComponent final : public Component
|
||||
{
|
||||
BallComponent (Point<float> pos)
|
||||
: position (pos),
|
||||
speed (Random::getSystemRandom().nextFloat() * 4.0f - 2.0f,
|
||||
Random::getSystemRandom().nextFloat() * -6.0f - 2.0f),
|
||||
colour (Colours::white)
|
||||
{
|
||||
setSize (20, 20);
|
||||
step();
|
||||
}
|
||||
|
||||
bool step()
|
||||
{
|
||||
position += speed;
|
||||
speed.y += 0.1f;
|
||||
|
||||
setCentrePosition ((int) position.x,
|
||||
(int) position.y);
|
||||
|
||||
if (auto* parent = getParentComponent())
|
||||
return isPositiveAndBelow (position.x, (float) parent->getWidth())
|
||||
&& position.y < (float) parent->getHeight();
|
||||
|
||||
return position.y < 400.0f && position.x >= -10.0f;
|
||||
}
|
||||
|
||||
void paint (Graphics& g) override
|
||||
{
|
||||
g.setColour (colour);
|
||||
g.fillEllipse (2.0f, 2.0f, (float) getWidth() - 4.0f, (float) getHeight() - 4.0f);
|
||||
|
||||
g.setColour (Colours::darkgrey);
|
||||
g.drawEllipse (2.0f, 2.0f, (float) getWidth() - 4.0f, (float) getHeight() - 4.0f, 1.0f);
|
||||
}
|
||||
|
||||
Point<float> position, speed;
|
||||
Colour colour;
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (BallComponent)
|
||||
};
|
||||
|
||||
//==============================================================================
|
||||
class AnimationDemo final : public Component,
|
||||
private Timer
|
||||
{
|
||||
public:
|
||||
AnimationDemo()
|
||||
{
|
||||
setOpaque (true);
|
||||
|
||||
for (auto i = 0; i < 11; ++i)
|
||||
{
|
||||
auto* b = createButton();
|
||||
componentsToAnimate.add (b);
|
||||
addAndMakeVisible (b);
|
||||
b->onClick = [this] { triggerAnimation(); };
|
||||
}
|
||||
|
||||
addAndMakeVisible (ballGenerator);
|
||||
|
||||
cycleCount = 2;
|
||||
startTimerHz (60);
|
||||
|
||||
setSize (620, 620);
|
||||
}
|
||||
|
||||
void paint (Graphics& g) override
|
||||
{
|
||||
g.fillAll (findColour (ResizableWindow::backgroundColourId));
|
||||
}
|
||||
|
||||
void resized() override
|
||||
{
|
||||
ballGenerator.centreWithSize (80, 50);
|
||||
triggerAnimation();
|
||||
}
|
||||
|
||||
private:
|
||||
OwnedArray<Component> componentsToAnimate;
|
||||
OwnedArray<BallComponent> balls;
|
||||
BallGeneratorComponent ballGenerator;
|
||||
|
||||
ComponentAnimator animator;
|
||||
int cycleCount;
|
||||
|
||||
bool firstCallback = true;
|
||||
|
||||
Button* createRandomButton()
|
||||
{
|
||||
DrawablePath normal, over;
|
||||
|
||||
Path star1;
|
||||
star1.addStar ({}, 5, 20.0f, 50.0f, 0.2f);
|
||||
normal.setPath (star1);
|
||||
normal.setFill (Colours::red);
|
||||
|
||||
Path star2;
|
||||
star2.addStar ({}, 7, 30.0f, 50.0f, 0.0f);
|
||||
over.setPath (star2);
|
||||
over.setFill (Colours::pink);
|
||||
over.setStrokeFill (Colours::black);
|
||||
over.setStrokeThickness (5.0f);
|
||||
|
||||
auto juceIcon = getImageFromAssets ("juce_icon.png");
|
||||
|
||||
DrawableImage down;
|
||||
down.setImage (juceIcon);
|
||||
down.setOverlayColour (Colours::black.withAlpha (0.3f));
|
||||
|
||||
if (Random::getSystemRandom().nextInt (10) > 2)
|
||||
{
|
||||
auto type = Random::getSystemRandom().nextInt (3);
|
||||
|
||||
auto* d = new DrawableButton ("Button",
|
||||
type == 0 ? DrawableButton::ImageOnButtonBackground
|
||||
: (type == 1 ? DrawableButton::ImageFitted
|
||||
: DrawableButton::ImageAboveTextLabel));
|
||||
d->setImages (&normal,
|
||||
Random::getSystemRandom().nextBool() ? &over : nullptr,
|
||||
Random::getSystemRandom().nextBool() ? &down : nullptr);
|
||||
|
||||
if (Random::getSystemRandom().nextBool())
|
||||
{
|
||||
d->setColour (DrawableButton::backgroundColourId, getRandomBrightColour());
|
||||
d->setColour (DrawableButton::backgroundOnColourId, getRandomBrightColour());
|
||||
}
|
||||
|
||||
d->setClickingTogglesState (Random::getSystemRandom().nextBool());
|
||||
return d;
|
||||
}
|
||||
|
||||
auto* b = new ImageButton ("ImageButton");
|
||||
|
||||
b->setImages (true, true, true,
|
||||
juceIcon, 0.7f, Colours::transparentBlack,
|
||||
juceIcon, 1.0f, getRandomDarkColour() .withAlpha (0.2f),
|
||||
juceIcon, 1.0f, getRandomBrightColour().withAlpha (0.8f),
|
||||
0.5f);
|
||||
return b;
|
||||
}
|
||||
|
||||
Button* createButton()
|
||||
{
|
||||
auto juceIcon = getImageFromAssets ("juce_icon.png").rescaled (128, 128);
|
||||
|
||||
auto* b = new ImageButton ("ImageButton");
|
||||
|
||||
b->setImages (true, true, true,
|
||||
juceIcon, 1.0f, Colours::transparentBlack,
|
||||
juceIcon, 1.0f, Colours::white,
|
||||
juceIcon, 1.0f, Colours::white,
|
||||
0.5f);
|
||||
|
||||
return b;
|
||||
}
|
||||
|
||||
void triggerAnimation()
|
||||
{
|
||||
auto width = getWidth();
|
||||
auto height = getHeight();
|
||||
|
||||
bool useWidth = (height > width);
|
||||
|
||||
for (auto* component : componentsToAnimate)
|
||||
{
|
||||
auto newIndex = (componentsToAnimate.indexOf (component) + 3 * cycleCount)
|
||||
% componentsToAnimate.size();
|
||||
|
||||
auto angle = (float) newIndex * MathConstants<float>::twoPi / (float) componentsToAnimate.size();
|
||||
|
||||
auto radius = useWidth ? (float) width * 0.35f
|
||||
: (float) height * 0.35f;
|
||||
|
||||
Rectangle<int> r (getWidth() / 2 + (int) (radius * std::sin (angle)) - 50,
|
||||
getHeight() / 2 + (int) (radius * std::cos (angle)) - 50,
|
||||
100, 100);
|
||||
|
||||
animator.animateComponent (component, r.reduced (10), 1.0f,
|
||||
900 + (int) (300 * std::sin (angle)),
|
||||
false, 0.0, 0.0);
|
||||
}
|
||||
|
||||
++cycleCount;
|
||||
}
|
||||
|
||||
void timerCallback() override
|
||||
{
|
||||
if (firstCallback)
|
||||
{
|
||||
triggerAnimation();
|
||||
firstCallback = false;
|
||||
}
|
||||
|
||||
// Go through each of our balls and update their position
|
||||
for (int i = balls.size(); --i >= 0;)
|
||||
if (! balls.getUnchecked (i)->step())
|
||||
balls.remove (i);
|
||||
|
||||
// Randomly generate new balls
|
||||
if (Random::getSystemRandom().nextInt (100) < 4)
|
||||
addAndMakeVisible (balls.add (new BallComponent (ballGenerator.getBounds().getCentre().toFloat())));
|
||||
}
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AnimationDemo)
|
||||
};
|
||||
849
examples/GUI/AnimationEasingDemo.h
Normal file
849
examples/GUI/AnimationEasingDemo.h
Normal file
|
|
@ -0,0 +1,849 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE framework examples.
|
||||
Copyright (c) Raw Material Software Limited
|
||||
|
||||
The code included in this file is provided under the terms of the ISC license
|
||||
http://www.isc.org/downloads/software-support-policy/isc-license. Permission
|
||||
to use, copy, modify, and/or distribute this software for any purpose with or
|
||||
without fee is hereby granted provided that the above copyright notice and
|
||||
this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
The block below describes the properties of this PIP. A PIP is a short snippet
|
||||
of code that can be read by the Projucer and used to generate a JUCE project.
|
||||
|
||||
BEGIN_JUCE_PIP_METADATA
|
||||
|
||||
name: AnimationEasingDemo
|
||||
version: 1.0.0
|
||||
vendor: JUCE
|
||||
website: http://juce.com
|
||||
description: Application for comparing animation easings.
|
||||
|
||||
dependencies: juce_gui_basics, juce_animation
|
||||
|
||||
exporters: xcode_mac, vs2022, androidstudio, xcode_iphone
|
||||
|
||||
moduleFlags: JUCE_STRICT_REFCOUNTEDPOINTER=1
|
||||
|
||||
type: Component
|
||||
mainClass: AnimationEasingDemo
|
||||
|
||||
useLocalCopy: 1
|
||||
|
||||
END_JUCE_PIP_METADATA
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../Assets/DemoUtilities.h"
|
||||
|
||||
struct AnimationEasingDemoConstants
|
||||
{
|
||||
static constexpr auto smallGapSize = 5;
|
||||
static constexpr auto mediumGapSize = smallGapSize * 2;
|
||||
static constexpr auto largeGapSize = mediumGapSize * 2;
|
||||
static constexpr auto defaultComponentHeight = 35;
|
||||
inline static const auto cp1AccentColour = Colour { 0xffff0088 };
|
||||
inline static const auto cp2AccentColour = Colour { 0xff00aabb };
|
||||
};
|
||||
|
||||
struct AnimationEasingDemoHelpers
|
||||
{
|
||||
static int calculateSectionSize (int originalSize, int numberOfSections, int gapSize)
|
||||
{
|
||||
const auto totalGapSize = (float) gapSize * ((float) numberOfSections - 1.0f);
|
||||
const auto totalSizeOfAllSections = (float) originalSize - totalGapSize;
|
||||
return roundToInt (totalSizeOfAllSections / (float) numberOfSections);
|
||||
}
|
||||
|
||||
static void layoutComponentsHorizontally (Rectangle<int> bounds, const std::vector<Component*>& components, int gapSize = AnimationEasingDemoConstants::smallGapSize)
|
||||
{
|
||||
const auto componentWidth = calculateSectionSize (bounds.getWidth(), (int) components.size(), gapSize);
|
||||
|
||||
for (auto* component : components)
|
||||
{
|
||||
const auto newComponentBounds = bounds.removeFromLeft (componentWidth);
|
||||
|
||||
if (component != nullptr)
|
||||
component->setBounds (newComponentBounds);
|
||||
|
||||
bounds.removeFromLeft (gapSize);
|
||||
}
|
||||
}
|
||||
|
||||
static void layoutComponentsVertically (Rectangle<int> bounds, const std::vector<Component*>& components, int gapSize = AnimationEasingDemoConstants::smallGapSize)
|
||||
{
|
||||
const auto componentHeight = calculateSectionSize (bounds.getHeight(), (int) components.size(), gapSize);
|
||||
|
||||
for (auto* component : components)
|
||||
{
|
||||
const auto newComponentBounds = bounds.removeFromTop (componentHeight);
|
||||
|
||||
if (component != nullptr)
|
||||
component->setBounds (newComponentBounds);
|
||||
|
||||
bounds.removeFromTop (gapSize);
|
||||
}
|
||||
}
|
||||
|
||||
static void layoutComponentsVerticallyOrHorizontally (Rectangle<int> bounds, const std::vector<Component*>& components, int gapSize = AnimationEasingDemoConstants::smallGapSize)
|
||||
{
|
||||
if (bounds.getHeight() > bounds.getWidth())
|
||||
layoutComponentsVertically (bounds, components, gapSize);
|
||||
else
|
||||
layoutComponentsHorizontally (bounds, components, gapSize);
|
||||
}
|
||||
};
|
||||
|
||||
struct AnimationSettings
|
||||
{
|
||||
Value shouldAnimatePosition;
|
||||
Value shouldAnimateSize;
|
||||
Value shouldAnimateAlpha ;
|
||||
Value durationMs;
|
||||
};
|
||||
|
||||
class AnimationSettingsComponent final : public Component
|
||||
{
|
||||
public:
|
||||
explicit AnimationSettingsComponent (const AnimationSettings& settingsIn)
|
||||
{
|
||||
playbackControls.button.onClick = [&]{ NullCheckedInvocation::invoke (onAnimate); };
|
||||
|
||||
durationControls.slider.getValueObject().referTo (settingsIn.durationMs);
|
||||
playbackControls.positionToggle.getToggleStateValue().referTo (settingsIn.shouldAnimatePosition);
|
||||
playbackControls.sizeToggle.getToggleStateValue().referTo (settingsIn.shouldAnimateSize);
|
||||
playbackControls.alphaToggle.getToggleStateValue().referTo (settingsIn.shouldAnimateAlpha);
|
||||
|
||||
addAndMakeVisible (durationControls);
|
||||
addAndMakeVisible (playbackControls);
|
||||
}
|
||||
|
||||
void resized() final
|
||||
{
|
||||
AnimationEasingDemoHelpers::layoutComponentsVertically (getLocalBounds(), { &playbackControls, &durationControls });
|
||||
}
|
||||
|
||||
std::function<void()> onAnimate;
|
||||
|
||||
private:
|
||||
struct DurationControls final : public Component
|
||||
{
|
||||
DurationControls()
|
||||
{
|
||||
slider.setRange (50.0, 5000.0, 10.0);
|
||||
slider.setValue (1000.0);
|
||||
slider.setTextValueSuffix (" ms");
|
||||
|
||||
addAndMakeVisible (label);
|
||||
addAndMakeVisible (slider);
|
||||
}
|
||||
|
||||
void resized() final
|
||||
{
|
||||
auto bounds = getLocalBounds();
|
||||
const auto labelWidth = label.getFont().getStringWidth (label.getText()) + AnimationEasingDemoConstants::largeGapSize;
|
||||
label.setBounds (bounds.removeFromLeft (labelWidth));
|
||||
slider.setBounds (bounds);
|
||||
}
|
||||
|
||||
Label label { "", "Duration:" };
|
||||
Slider slider { Slider::SliderStyle::LinearHorizontal, Slider::TextEntryBoxPosition::TextBoxRight };
|
||||
};
|
||||
|
||||
struct PlaybackControls final : public Component
|
||||
{
|
||||
PlaybackControls()
|
||||
{
|
||||
addAndMakeVisible (button);
|
||||
addAndMakeVisible (positionToggle);
|
||||
addAndMakeVisible (sizeToggle);
|
||||
addAndMakeVisible (alphaToggle);
|
||||
}
|
||||
|
||||
void resized() final
|
||||
{
|
||||
AnimationEasingDemoHelpers::layoutComponentsHorizontally (getLocalBounds(), { &button, nullptr, &positionToggle, &sizeToggle, &alphaToggle });
|
||||
}
|
||||
|
||||
TextButton button { "Animate" };
|
||||
ToggleButton positionToggle { "Position" };
|
||||
ToggleButton sizeToggle { "Size" };
|
||||
ToggleButton alphaToggle { "Alpha" };
|
||||
};
|
||||
|
||||
DurationControls durationControls;
|
||||
PlaybackControls playbackControls;
|
||||
};
|
||||
|
||||
static Point<float> convertPointInBoundsToBezierPoint (const Point<float>& point, const Rectangle<float>& bounds)
|
||||
{
|
||||
return { jlimit (0.0f, 1.0f, jmap (point.getX(), bounds.getX(), bounds.getRight(), 0.0f, 1.0f)),
|
||||
jmap (point.getY(), bounds.getBottom(), bounds.getY(), 0.0f, 1.0f) };
|
||||
}
|
||||
|
||||
static Point<float> convertBezierPointToPointInBounds (const Point<float>& bezierPoint, const Rectangle<float>& bounds)
|
||||
{
|
||||
return bounds.getRelativePoint (bezierPoint.getX(), 1.0f - bezierPoint.getY());
|
||||
}
|
||||
|
||||
struct CubicBezier
|
||||
{
|
||||
CubicBezier() = default;
|
||||
CubicBezier (const Point<float>& cp1In,
|
||||
const Point<float>& cp2In)
|
||||
: cp1 (cp1In),
|
||||
cp2 (cp2In) {}
|
||||
|
||||
Point<float> cp0 { 0.0f, 0.0f };
|
||||
Point<float> cp1 {};
|
||||
Point<float> cp2 {};
|
||||
Point<float> cp3 { 1.0f, 1.0f };
|
||||
|
||||
bool operator!= (const CubicBezier& other)
|
||||
{
|
||||
const auto tie = [](const CubicBezier& x) { return std::tie (x.cp0, x.cp1, x.cp2, x.cp3); };
|
||||
return tie (*this) != tie (other);
|
||||
}
|
||||
};
|
||||
|
||||
class CubicBezierSettingsComponent final : public Component
|
||||
{
|
||||
public:
|
||||
CubicBezierSettingsComponent()
|
||||
{
|
||||
textEditor.setFont (Font (18.0f));
|
||||
textEditor.setColour (TextEditor::ColourIds::backgroundColourId, {});
|
||||
textEditor.setColour (TextEditor::ColourIds::highlightColourId, {});
|
||||
textEditor.setColour (TextEditor::ColourIds::outlineColourId, {});
|
||||
textEditor.setColour (TextEditor::ColourIds::focusedOutlineColourId, {});
|
||||
textEditor.setColour (TextEditor::ColourIds::shadowColourId, {});
|
||||
textEditor.setJustification (Justification::centred);
|
||||
|
||||
updateText();
|
||||
textEditor.onTextChange = [&]
|
||||
{
|
||||
const auto strippedText = textEditor.getText().retainCharacters ("0123456789.-,");
|
||||
const auto stringValues = StringArray::fromTokens (strippedText, ",", "");
|
||||
|
||||
if (stringValues.size() == 4)
|
||||
{
|
||||
setCubicBezierCurve ({{ jlimit (0.0f, 1.0f, stringValues[0].getFloatValue()), stringValues[1].getFloatValue() },
|
||||
{ jlimit (0.0f, 1.0f, stringValues[2].getFloatValue()), stringValues[3].getFloatValue() }});
|
||||
}
|
||||
|
||||
updateText();
|
||||
};
|
||||
|
||||
addAndMakeVisible (textEditor);
|
||||
}
|
||||
|
||||
void setCubicBezierCurve (const CubicBezier& newBezierCurve)
|
||||
{
|
||||
if (std::exchange (bezierCurve, newBezierCurve) != newBezierCurve)
|
||||
return;
|
||||
|
||||
updateText();
|
||||
NullCheckedInvocation::invoke (onValueChange);
|
||||
}
|
||||
|
||||
CubicBezier getCubicBezierCurve() const
|
||||
{
|
||||
return bezierCurve;
|
||||
}
|
||||
|
||||
void resized() final
|
||||
{
|
||||
textEditor.setBounds (getLocalBounds());
|
||||
}
|
||||
|
||||
std::function<void()> onValueChange;
|
||||
|
||||
private:
|
||||
void updateText()
|
||||
{
|
||||
ScopedValueSetter<std::function<void()>> pauseOnTextChangeCallbacks (textEditor.onTextChange, nullptr);
|
||||
|
||||
ScopeGuard restoreCaretPosition {[p = textEditor.getCaretPosition(), this]
|
||||
{
|
||||
textEditor.setCaretPosition (p);
|
||||
}};
|
||||
|
||||
textEditor.clear();
|
||||
|
||||
textEditor.setColour (TextEditor::ColourIds::textColourId, Colours::white);
|
||||
textEditor.insertTextAtCaret ("cubicBezier (");
|
||||
|
||||
textEditor.setColour (TextEditor::ColourIds::textColourId, AnimationEasingDemoConstants::cp1AccentColour);
|
||||
textEditor.insertTextAtCaret (String (bezierCurve.cp1.getX(), 2));
|
||||
|
||||
textEditor.setColour (TextEditor::ColourIds::textColourId, Colours::white);
|
||||
textEditor.insertTextAtCaret (", ");
|
||||
|
||||
textEditor.setColour (TextEditor::ColourIds::textColourId, AnimationEasingDemoConstants::cp1AccentColour);
|
||||
textEditor.insertTextAtCaret (String (bezierCurve.cp1.getY(), 2));
|
||||
|
||||
textEditor.setColour (TextEditor::ColourIds::textColourId, Colours::white);
|
||||
textEditor.insertTextAtCaret (", ");
|
||||
|
||||
textEditor.setColour (TextEditor::ColourIds::textColourId, AnimationEasingDemoConstants::cp2AccentColour);
|
||||
textEditor.insertTextAtCaret (String (bezierCurve.cp2.getX(), 2));
|
||||
|
||||
textEditor.setColour (TextEditor::ColourIds::textColourId, Colours::white);
|
||||
textEditor.insertTextAtCaret (", ");
|
||||
|
||||
textEditor.setColour (TextEditor::ColourIds::textColourId, AnimationEasingDemoConstants::cp2AccentColour);
|
||||
textEditor.insertTextAtCaret (String (bezierCurve.cp2.getY(), 2));
|
||||
|
||||
textEditor.setColour (TextEditor::ColourIds::textColourId, Colours::white);
|
||||
textEditor.insertTextAtCaret (")");
|
||||
}
|
||||
|
||||
CubicBezier bezierCurve;
|
||||
TextEditor textEditor;
|
||||
};
|
||||
|
||||
class CubicBezierGraphComponent final : public Component
|
||||
{
|
||||
public:
|
||||
void setCubicBezierCurve (const CubicBezier& newBezierCurve)
|
||||
{
|
||||
if (std::exchange (bezierCurve, newBezierCurve) != newBezierCurve)
|
||||
return;
|
||||
|
||||
NullCheckedInvocation::invoke (onValueChange);
|
||||
repaint();
|
||||
}
|
||||
|
||||
CubicBezier getCubicBezierCurve() const
|
||||
{
|
||||
return bezierCurve;
|
||||
}
|
||||
|
||||
void paint (Graphics& g) final
|
||||
{
|
||||
const auto bounds = getGraphArea();
|
||||
const auto lineThickness = 6.0f;
|
||||
const auto cp0 = getControlPointOnGraph (bezierCurve.cp0);
|
||||
const auto cp1 = getControlPointOnGraph (bezierCurve.cp1);
|
||||
const auto cp2 = getControlPointOnGraph (bezierCurve.cp2);
|
||||
const auto cp3 = getControlPointOnGraph (bezierCurve.cp3);
|
||||
const auto outlineColour = getUIColourIfAvailable (LookAndFeel_V4::ColourScheme::UIColour::outline);
|
||||
const auto highlightColour = getUIColourIfAvailable (LookAndFeel_V4::ColourScheme::UIColour::highlightedFill);
|
||||
const auto foregroundColour = getUIColourIfAvailable (LookAndFeel_V4::ColourScheme::UIColour::defaultText);
|
||||
|
||||
// graph background
|
||||
drawColouredLines (g, bounds, 15, { Colour{}, highlightColour.withAlpha (0.2f) });
|
||||
|
||||
// graph outline
|
||||
g.setColour (outlineColour);
|
||||
g.drawRect (bounds);
|
||||
|
||||
// semi-transparent linear line
|
||||
g.setColour (foregroundColour.withAlpha (0.15f));
|
||||
g.drawLine ({ cp0, cp3 }, lineThickness);
|
||||
|
||||
// cubic-bezier curve
|
||||
Path curve;
|
||||
curve.startNewSubPath (cp0);
|
||||
curve.cubicTo (cp1, cp2, cp3);
|
||||
|
||||
g.setColour (foregroundColour);
|
||||
g.strokePath (curve, PathStrokeType (lineThickness));
|
||||
|
||||
// lines between control points
|
||||
g.setColour (foregroundColour);
|
||||
g.drawLine ({ cp0, cp1 }, 2.0f);
|
||||
g.drawLine ({ cp2, cp3 }, 2.0f);
|
||||
|
||||
// control points
|
||||
drawControlPoint (g, cp0, highlightColour.brighter());
|
||||
drawControlPoint (g, cp3, highlightColour.brighter());
|
||||
drawControlPoint (g, cp1, AnimationEasingDemoConstants::cp1AccentColour);
|
||||
drawControlPoint (g, cp2, AnimationEasingDemoConstants::cp2AccentColour);
|
||||
}
|
||||
|
||||
void mouseDown (const MouseEvent& event) final
|
||||
{
|
||||
const auto pos = event.position;
|
||||
const auto distanceToCp1 = pos.getDistanceFrom (getControlPointOnGraph (bezierCurve.cp1));
|
||||
const auto distanceToCp2 = pos.getDistanceFrom (getControlPointOnGraph (bezierCurve.cp2));
|
||||
|
||||
selectedControlPoint = distanceToCp1 <= distanceToCp2 ? &bezierCurve.cp1
|
||||
: &bezierCurve.cp2;
|
||||
updateSelectedControlPoint (pos);
|
||||
}
|
||||
|
||||
void mouseDrag (const MouseEvent& event) final
|
||||
{
|
||||
updateSelectedControlPoint (event.position);
|
||||
}
|
||||
|
||||
std::function<void()> onValueChange;
|
||||
|
||||
private:
|
||||
Point<float> getControlPointOnGraph (const Point<float>& relativeControlPoint)
|
||||
{
|
||||
return convertBezierPointToPointInBounds (relativeControlPoint, getGraphArea());
|
||||
}
|
||||
|
||||
void updateSelectedControlPoint (const Point<float>& newPoint)
|
||||
{
|
||||
jassert (selectedControlPoint != nullptr);
|
||||
|
||||
const auto newControlPoint = convertPointInBoundsToBezierPoint (newPoint, getGraphArea());
|
||||
|
||||
if (*selectedControlPoint == newControlPoint)
|
||||
return;
|
||||
|
||||
*selectedControlPoint = newControlPoint;
|
||||
NullCheckedInvocation::invoke (onValueChange);
|
||||
repaint();
|
||||
}
|
||||
|
||||
Rectangle<float> getGraphArea() const
|
||||
{
|
||||
const auto bounds = getLocalBounds().toFloat();
|
||||
const auto size = std::min (bounds.getWidth(), bounds.getHeight());
|
||||
return bounds.withSizeKeepingCentre (size, size).reduced (AnimationEasingDemoConstants::largeGapSize);
|
||||
}
|
||||
|
||||
void drawControlPoint (Graphics& g, const Point<float>& point, Colour colour)
|
||||
{
|
||||
const auto size = jlimit (10.0f, 35.0f, (float) std::min (getWidth(), getHeight()) / 12.0f);
|
||||
Rectangle<float> bounds;
|
||||
bounds.setSize (size, size);
|
||||
bounds.setCentre (point);
|
||||
|
||||
g.setColour (getUIColourIfAvailable (LookAndFeel_V4::ColourScheme::UIColour::outline));
|
||||
g.drawEllipse (bounds, 2.0f);
|
||||
|
||||
g.setColour (colour);
|
||||
g.fillEllipse (bounds);
|
||||
}
|
||||
|
||||
void drawColouredLines (Graphics& g, Rectangle<float> bounds, int numLines, std::vector<Colour> colours)
|
||||
{
|
||||
const auto lineHeight = bounds.getHeight() / (float) numLines;
|
||||
|
||||
for (size_t line = 0; line < (size_t) numLines; ++line)
|
||||
{
|
||||
g.setColour (colours[line % colours.size()]);
|
||||
g.fillRect (bounds.removeFromTop (lineHeight));
|
||||
}
|
||||
}
|
||||
|
||||
CubicBezier bezierCurve;
|
||||
Point<float>* selectedControlPoint{};
|
||||
};
|
||||
|
||||
class AnimationView : public Component
|
||||
{
|
||||
public:
|
||||
AnimationView (const AnimationSettings& animationSettingsIn,
|
||||
std::function<ValueAnimatorBuilder::EasingFn()> easingFunctionFactoryIn)
|
||||
: animationSettings (animationSettingsIn),
|
||||
easingFunctionFactory (std::move (easingFunctionFactoryIn))
|
||||
{
|
||||
jassert (easingFunctionFactory != nullptr);
|
||||
|
||||
componentToAnimate.setInterceptsMouseClicks (false, false);
|
||||
addAndMakeVisible (componentToAnimate);
|
||||
}
|
||||
|
||||
void animate()
|
||||
{
|
||||
showSettingsPage (false);
|
||||
|
||||
const auto valueChangedCallback = [&](float v)
|
||||
{
|
||||
animateFrame (animationSettings.shouldAnimatePosition.getValue() ? v : 1.0f,
|
||||
animationSettings.shouldAnimateSize.getValue() ? v : 1.0f,
|
||||
animationSettings.shouldAnimateAlpha.getValue() ? v : 1.0f);
|
||||
};
|
||||
|
||||
const auto animateIn = ValueAnimatorBuilder{}.withEasing (easingFunctionFactory())
|
||||
.withDurationMs (animationSettings.durationMs.getValue())
|
||||
.withValueChangedCallback (valueChangedCallback);
|
||||
|
||||
const auto animateOut = animateIn.withValueChangedCallback ([=](auto v){ valueChangedCallback (1.0f - v); });
|
||||
|
||||
animator = std::make_unique<Animator> (AnimatorSetBuilder (animateOut.build())
|
||||
.followedBy (400.0)
|
||||
.followedBy (animateIn.build())
|
||||
.build());
|
||||
|
||||
updater.addAnimator (*animator);
|
||||
animator->start();
|
||||
}
|
||||
|
||||
void mouseDown (const MouseEvent&) final
|
||||
{
|
||||
animate();
|
||||
}
|
||||
|
||||
void resized() override
|
||||
{
|
||||
auto bounds = getLocalBounds();
|
||||
componentToAnimate.setBounds (bounds);
|
||||
settingsPageBackground.setBounds (bounds);
|
||||
|
||||
editViewButton.setBounds (bounds.removeFromTop (AnimationEasingDemoConstants::defaultComponentHeight)
|
||||
.removeFromRight (AnimationEasingDemoConstants::defaultComponentHeight * 2));
|
||||
|
||||
if (customSettingsPage != nullptr)
|
||||
customSettingsPage->setBounds (bounds);
|
||||
}
|
||||
|
||||
protected:
|
||||
void setCustomSettingsPage (Component& settingsPage)
|
||||
{
|
||||
customSettingsPage = &settingsPage;
|
||||
editViewButton.onClick = [&]{ toggleSettingsPage(); };
|
||||
addChildComponent (settingsPageBackground);
|
||||
addChildComponent (customSettingsPage);
|
||||
|
||||
editViewButton.setButtonText ("Edit");
|
||||
addAndMakeVisible (editViewButton);
|
||||
}
|
||||
|
||||
private:
|
||||
void showSettingsPage (bool shouldShowSettingsPage)
|
||||
{
|
||||
if (customSettingsPage == nullptr)
|
||||
return;
|
||||
|
||||
editViewButton.setButtonText (shouldShowSettingsPage ? "View" : "Edit");
|
||||
settingsPageBackground.setVisible (shouldShowSettingsPage);
|
||||
customSettingsPage->setVisible (shouldShowSettingsPage);
|
||||
}
|
||||
|
||||
void toggleSettingsPage()
|
||||
{
|
||||
showSettingsPage (editViewButton.getButtonText() == "Edit");
|
||||
}
|
||||
|
||||
struct JUCELogoComponent final : Component
|
||||
{
|
||||
void paint (Graphics& g) final
|
||||
{
|
||||
const auto bounds = getLocalBounds();
|
||||
g.setColour (getUIColourIfAvailable (LookAndFeel_V4::ColourScheme::UIColour::highlightedFill));
|
||||
g.fillRect (bounds);
|
||||
|
||||
g.setColour (getUIColourIfAvailable (LookAndFeel_V4::ColourScheme::UIColour::defaultText));
|
||||
|
||||
const auto logo = getJUCELogoPath();
|
||||
g.addTransform (logo.getTransformToScaleToFit (bounds.toFloat().reduced (AnimationEasingDemoConstants::mediumGapSize), true));
|
||||
g.fillPath (logo);
|
||||
}
|
||||
};
|
||||
|
||||
void animateFrame (float position, float size, float alpha)
|
||||
{
|
||||
// Transforms don't work when scaling to 0 so this work around hides
|
||||
// the component when the size is 0. As the alpha is also animated it's
|
||||
// guaranteed to be correctly set when the size is not 0
|
||||
if (approximatelyEqual (size, 0.0f))
|
||||
{
|
||||
componentToAnimate.setAlpha (0.0f);
|
||||
return;
|
||||
}
|
||||
|
||||
const auto bounds = getLocalBounds().toFloat();
|
||||
const auto centre = bounds.getCentre();
|
||||
const auto xLimits = makeAnimationLimits (-bounds.getWidth(), 0.0f);
|
||||
componentToAnimate.setTransform (AffineTransform{}.scaled (size, size, centre.getX(), centre.getY())
|
||||
.translated (xLimits.lerp (position), 0.0f));
|
||||
componentToAnimate.setAlpha (alpha);
|
||||
}
|
||||
|
||||
struct BackgroundFill : Component
|
||||
{
|
||||
void paint (Graphics& g)
|
||||
{
|
||||
g.fillAll (getUIColourIfAvailable (LookAndFeel_V4::ColourScheme::UIColour::windowBackground));
|
||||
}
|
||||
};
|
||||
|
||||
AnimationSettings animationSettings;
|
||||
std::function<ValueAnimatorBuilder::EasingFn()> easingFunctionFactory {};
|
||||
BackgroundFill settingsPageBackground;
|
||||
Component* customSettingsPage {};
|
||||
TextButton editViewButton;
|
||||
std::unique_ptr<Animator> animator;
|
||||
VBlankAnimatorUpdater updater { this };
|
||||
JUCELogoComponent componentToAnimate;
|
||||
};
|
||||
|
||||
class StandardEasingAnimationView final : public AnimationView
|
||||
{
|
||||
public:
|
||||
StandardEasingAnimationView (const AnimationSettings& settings,
|
||||
ValueAnimatorBuilder::EasingFn easingFunction)
|
||||
: AnimationView (settings, [=]{ return easingFunction; })
|
||||
{}
|
||||
};
|
||||
|
||||
class CubicBezierEasingAnimationView final : public AnimationView
|
||||
{
|
||||
public:
|
||||
CubicBezierEasingAnimationView (const AnimationSettings& animationSettings)
|
||||
: AnimationView (animationSettings,
|
||||
[&]{ return Easings::createCubicBezier (bezierCurve.cp1, bezierCurve.cp2); })
|
||||
{
|
||||
settingsPage.graph.onValueChange = [&] { setCubicBezierCurve (settingsPage.graph.getCubicBezierCurve()); };
|
||||
settingsPage.settings.onValueChange = [&] { setCubicBezierCurve (settingsPage.settings.getCubicBezierCurve()); };
|
||||
settingsPage.graph.setCubicBezierCurve ({ { 0.2f, 0.0f }, { 0.0f, 1.0f } });
|
||||
|
||||
setCustomSettingsPage (settingsPage);
|
||||
}
|
||||
|
||||
private:
|
||||
struct SettingsPage : Component
|
||||
{
|
||||
SettingsPage()
|
||||
{
|
||||
addAndMakeVisible (graph);
|
||||
addAndMakeVisible (settings);
|
||||
}
|
||||
|
||||
void resized() final
|
||||
{
|
||||
auto bounds = getLocalBounds();
|
||||
settings.setBounds (bounds.removeFromBottom (AnimationEasingDemoConstants::defaultComponentHeight));
|
||||
graph.setBounds (bounds);
|
||||
}
|
||||
|
||||
CubicBezierGraphComponent graph;
|
||||
CubicBezierSettingsComponent settings;
|
||||
};
|
||||
|
||||
void setCubicBezierCurve (const CubicBezier& newBezierCurve)
|
||||
{
|
||||
bezierCurve = newBezierCurve;
|
||||
settingsPage.graph.setCubicBezierCurve (newBezierCurve);
|
||||
settingsPage.settings.setCubicBezierCurve (newBezierCurve);
|
||||
}
|
||||
|
||||
|
||||
CubicBezier bezierCurve;
|
||||
SettingsPage settingsPage;
|
||||
};
|
||||
|
||||
struct SliderAndLabel final : public Component
|
||||
{
|
||||
SliderAndLabel()
|
||||
{
|
||||
addAndMakeVisible (slider);
|
||||
addAndMakeVisible (label);
|
||||
}
|
||||
|
||||
void resized() final
|
||||
{
|
||||
auto bounds = getLocalBounds();
|
||||
label.setBounds (bounds.removeFromTop (bounds.getHeight() / 2)
|
||||
.removeFromBottom (AnimationEasingDemoConstants::defaultComponentHeight));
|
||||
slider.setBounds (bounds.removeFromTop (AnimationEasingDemoConstants::defaultComponentHeight));
|
||||
}
|
||||
|
||||
Slider slider;
|
||||
Label label;
|
||||
};
|
||||
|
||||
class SpringEasingAnimationView final : public AnimationView
|
||||
{
|
||||
public:
|
||||
SpringEasingAnimationView (const AnimationSettings& animationSettings)
|
||||
: AnimationView (animationSettings,
|
||||
[&]{ return Easings::createSpring (SpringEasingOptions{}.withFrequency (getFrequency())
|
||||
.withAttenuation (getAttenuation())
|
||||
.withExtraAttenuationRange (getExtraAttenuationRange())); })
|
||||
{
|
||||
setCustomSettingsPage (settingsPage);
|
||||
}
|
||||
|
||||
private:
|
||||
float getFrequency() { return (float) settingsPage.frequency.slider.getValue(); }
|
||||
float getAttenuation() { return (float) settingsPage.attenuation.slider.getValue(); }
|
||||
float getExtraAttenuationRange() { return (float) settingsPage.extraAttenuationRange.slider.getValue(); }
|
||||
|
||||
struct SettingsPage : Component
|
||||
{
|
||||
SettingsPage()
|
||||
{
|
||||
frequency.label.setText ("Frequency", NotificationType::dontSendNotification);
|
||||
frequency.slider.setRange (1.0, 10.0, 1.0);
|
||||
frequency.slider.setValue (3.0);
|
||||
|
||||
attenuation.label.setText ("Attenuation", NotificationType::dontSendNotification);
|
||||
attenuation.slider.setRange (1.0, 10.0, 1.0);
|
||||
attenuation.slider.setValue (3.0);
|
||||
|
||||
extraAttenuationRange.label.setText ("Extra attenuation range", NotificationType::dontSendNotification);
|
||||
extraAttenuationRange.slider.setRange (0.05, 0.98, 0.01);
|
||||
extraAttenuationRange.slider.setValue (0.25);
|
||||
|
||||
addAndMakeVisible (frequency);
|
||||
addAndMakeVisible (attenuation);
|
||||
addAndMakeVisible (extraAttenuationRange);
|
||||
}
|
||||
|
||||
void resized() final
|
||||
{
|
||||
AnimationEasingDemoHelpers::layoutComponentsVertically (getLocalBounds(), { &frequency, &attenuation, &extraAttenuationRange });
|
||||
}
|
||||
|
||||
SliderAndLabel frequency;
|
||||
SliderAndLabel attenuation;
|
||||
SliderAndLabel extraAttenuationRange;
|
||||
};
|
||||
|
||||
SettingsPage settingsPage;
|
||||
};
|
||||
|
||||
class BounceOutEasingAnimationView final : public AnimationView
|
||||
{
|
||||
public:
|
||||
BounceOutEasingAnimationView (const AnimationSettings& animationSettings)
|
||||
: AnimationView (animationSettings,
|
||||
[&]{ return Easings::createBounce (roundToInt (numberOfBounces.slider.getValue())); })
|
||||
{
|
||||
numberOfBounces.label.setText ("Number of bounces", NotificationType::dontSendNotification);
|
||||
numberOfBounces.slider.setRange (1.0, 10.0, 1.0);
|
||||
numberOfBounces.slider.setValue (3.0);
|
||||
|
||||
setCustomSettingsPage (numberOfBounces);
|
||||
}
|
||||
|
||||
private:
|
||||
SliderAndLabel numberOfBounces;
|
||||
};
|
||||
|
||||
class AnimationSelectorAndView final : public Component
|
||||
{
|
||||
struct AnimationViewAndName
|
||||
{
|
||||
String name;
|
||||
std::unique_ptr<AnimationView> component;
|
||||
};
|
||||
|
||||
public:
|
||||
AnimationSelectorAndView (const AnimationSettings& settings)
|
||||
{
|
||||
views.push_back ({ "linear", std::make_unique <StandardEasingAnimationView> (settings, Easings::createLinear()) });
|
||||
views.push_back ({ "ease (default)", std::make_unique <StandardEasingAnimationView> (settings, Easings::createEase()) });
|
||||
views.push_back ({ "easeIn", std::make_unique <StandardEasingAnimationView> (settings, Easings::createEaseIn()) });
|
||||
views.push_back ({ "easeOut", std::make_unique <StandardEasingAnimationView> (settings, Easings::createEaseOut()) });
|
||||
views.push_back ({ "easeInOut", std::make_unique <StandardEasingAnimationView> (settings, Easings::createEaseInOut()) });
|
||||
views.push_back ({ "easeOutBack", std::make_unique <StandardEasingAnimationView> (settings, Easings::createEaseOutBack()) });
|
||||
views.push_back ({ "easeInOutCubic", std::make_unique <StandardEasingAnimationView> (settings, Easings::createEaseInOutCubic()) });
|
||||
views.push_back ({ "cubicBezier", std::make_unique <CubicBezierEasingAnimationView> (settings) });
|
||||
views.push_back ({ "spring", std::make_unique <SpringEasingAnimationView> (settings) });
|
||||
views.push_back ({ "bounce", std::make_unique <BounceOutEasingAnimationView> (settings) });
|
||||
|
||||
for (auto [itemId, view] : enumerate (views, int { 1 }))
|
||||
easingSelector.addItem (view.name, itemId);
|
||||
|
||||
// select "ease" as the default
|
||||
easingSelector.setSelectedItemIndex (1);
|
||||
easingSelector.onChange = [&]
|
||||
{
|
||||
for (auto& view : views)
|
||||
view.component->setVisible (false);
|
||||
|
||||
views[(size_t) easingSelector.getSelectedItemIndex()].component->setVisible (true);
|
||||
};
|
||||
|
||||
for (auto& view : views)
|
||||
addChildComponent (view.component.get());
|
||||
|
||||
addAndMakeVisible (easingSelector);
|
||||
}
|
||||
|
||||
void animate()
|
||||
{
|
||||
for (auto& view : views)
|
||||
view.component->animate();
|
||||
}
|
||||
|
||||
void resized() final
|
||||
{
|
||||
auto bounds = getLocalBounds();
|
||||
|
||||
easingSelector.setBounds (bounds.removeFromTop (AnimationEasingDemoConstants::defaultComponentHeight));
|
||||
|
||||
bounds.removeFromTop (AnimationEasingDemoConstants::smallGapSize);
|
||||
|
||||
for (auto& view : views)
|
||||
view.component->setBounds (bounds);
|
||||
}
|
||||
|
||||
private:
|
||||
ComboBox easingSelector;
|
||||
std::vector<AnimationViewAndName> views;
|
||||
};
|
||||
|
||||
class AnimationEasingDemo final : public Component
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
AnimationEasingDemo()
|
||||
{
|
||||
animationSettings.durationMs = 1000.0;
|
||||
animationSettings.shouldAnimatePosition = true;
|
||||
animationSettings.shouldAnimateSize = false;
|
||||
animationSettings.shouldAnimateAlpha = false;
|
||||
|
||||
animationSettingsComponent.onAnimate = [=]
|
||||
{
|
||||
animationView1.animate();
|
||||
animationView2.animate();
|
||||
};
|
||||
|
||||
addAndMakeVisible (animationSettingsComponent);
|
||||
addAndMakeVisible (animationView1);
|
||||
addAndMakeVisible (animationView2);
|
||||
|
||||
setSize (600, 400);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void paint (Graphics& g) final
|
||||
{
|
||||
g.fillAll (getUIColourIfAvailable (LookAndFeel_V4::ColourScheme::UIColour::windowBackground));
|
||||
}
|
||||
|
||||
void resized() override
|
||||
{
|
||||
auto bounds = getLocalBounds().reduced (AnimationEasingDemoConstants::largeGapSize);
|
||||
|
||||
animationSettingsComponent.setBounds (bounds.removeFromTop (AnimationEasingDemoConstants::defaultComponentHeight * 2));
|
||||
bounds.removeFromTop (AnimationEasingDemoConstants::smallGapSize);
|
||||
AnimationEasingDemoHelpers::layoutComponentsVerticallyOrHorizontally (bounds, { &animationView1, &animationView2 });
|
||||
}
|
||||
|
||||
private:
|
||||
//==============================================================================
|
||||
AnimationSettings animationSettings;
|
||||
AnimationSettingsComponent animationSettingsComponent { animationSettings };
|
||||
AnimationSelectorAndView animationView1 { animationSettings };
|
||||
AnimationSelectorAndView animationView2 { animationSettings };
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AnimationEasingDemo)
|
||||
};
|
||||
900
examples/GUI/AnimatorsDemo.h
Normal file
900
examples/GUI/AnimatorsDemo.h
Normal file
|
|
@ -0,0 +1,900 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
This file is part of the JUCE framework examples.
|
||||
Copyright (c) Raw Material Software Limited
|
||||
|
||||
The code included in this file is provided under the terms of the ISC license
|
||||
http://www.isc.org/downloads/software-support-policy/isc-license. Permission
|
||||
to use, copy, modify, and/or distribute this software for any purpose with or
|
||||
without fee is hereby granted provided that the above copyright notice and
|
||||
this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
/*******************************************************************************
|
||||
The block below describes the properties of this PIP. A PIP is a short snippet
|
||||
of code that can be read by the Projucer and used to generate a JUCE project.
|
||||
|
||||
BEGIN_JUCE_PIP_METADATA
|
||||
|
||||
name: AnimatorsDemo
|
||||
version: 1.0.0
|
||||
vendor: JUCE
|
||||
website: http://juce.com
|
||||
description: Application demonstrating how the JUCE provided Animator
|
||||
classes can be used to create dynamic, composable, smooth
|
||||
animations.
|
||||
|
||||
dependencies: juce_core, juce_data_structures, juce_events, juce_graphics,
|
||||
juce_gui_basics, juce_animation
|
||||
exporters: xcode_mac, vs2022, androidstudio, xcode_iphone
|
||||
|
||||
moduleFlags: JUCE_STRICT_REFCOUNTEDPOINTER=1
|
||||
|
||||
type: Component
|
||||
mainClass: AnimatorsDemo
|
||||
|
||||
useLocalCopy: 1
|
||||
|
||||
END_JUCE_PIP_METADATA
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
struct Paintable
|
||||
{
|
||||
virtual ~Paintable() = default;
|
||||
virtual void paint (Graphics& g) const = 0;
|
||||
};
|
||||
|
||||
namespace Shapes
|
||||
{
|
||||
|
||||
class Arc final : public Paintable
|
||||
{
|
||||
static constexpr auto pi = MathConstants<float>::pi;
|
||||
static constexpr auto arcStart = pi / 2.0f;
|
||||
|
||||
public:
|
||||
Arc() = default;
|
||||
|
||||
Arc (Point<float> centreIn, float radiusIn, float thicknessIn, Colour colourIn)
|
||||
: centre (centreIn),
|
||||
initialRadius (radiusIn - thicknessIn / 2),
|
||||
initialThickness (thicknessIn),
|
||||
colour (colourIn)
|
||||
{
|
||||
}
|
||||
|
||||
void paint (Graphics& g) const override
|
||||
{
|
||||
if (! active)
|
||||
return;
|
||||
|
||||
const Graphics::ScopedSaveState s { g };
|
||||
|
||||
Path p;
|
||||
p.addCentredArc (centre.getX(),
|
||||
centre.getY(),
|
||||
radius,
|
||||
radius,
|
||||
0.0f,
|
||||
arcStart,
|
||||
arcStart + sweepAngle,
|
||||
true);
|
||||
|
||||
g.setColour (colour);
|
||||
g.strokePath (p, { thickness, PathStrokeType::mitered });
|
||||
}
|
||||
|
||||
void setActive (bool activeIn)
|
||||
{
|
||||
active = activeIn;
|
||||
}
|
||||
|
||||
auto getFanoutAnimator() const { return fanoutAnimator; }
|
||||
|
||||
auto getFillAnimator() const { return fillAnimator; }
|
||||
|
||||
Point<float> centre;
|
||||
float initialRadius = 0.0f, initialThickness = 0.0f;
|
||||
Colour colour = Colours::white;
|
||||
|
||||
private:
|
||||
bool active = false;
|
||||
float radius = 0.0f, thickness = 0.0f, sweepAngle = 0.0f;
|
||||
|
||||
void reset()
|
||||
{
|
||||
sweepAngle = 0.0f;
|
||||
radius = initialRadius;
|
||||
thickness = initialThickness;
|
||||
}
|
||||
|
||||
Animator fanoutAnimator = ValueAnimatorBuilder{}
|
||||
.withOnStartCallback ([this]
|
||||
{
|
||||
reset();
|
||||
active = true;
|
||||
})
|
||||
.withValueChangedCallback ([this] (auto value)
|
||||
{
|
||||
sweepAngle = makeAnimationLimits (2.1f * MathConstants<float>::pi).lerp (value);
|
||||
})
|
||||
.withEasing (Easings::createLinear())
|
||||
.build();
|
||||
|
||||
Animator fillAnimator = ValueAnimatorBuilder{}
|
||||
.withOnStartReturningValueChangedCallback (
|
||||
[this]
|
||||
{
|
||||
const auto thicknessChange = radius - 5.0f;
|
||||
const std::tuple begin { initialRadius, initialThickness };
|
||||
const std::tuple end { initialRadius - thicknessChange / 2.0f, initialThickness + thicknessChange };
|
||||
const auto limits = makeAnimationLimits (begin, end);
|
||||
|
||||
return [this, limits] (auto value)
|
||||
{
|
||||
std::tie (radius, thickness) = limits.lerp (value);
|
||||
};
|
||||
})
|
||||
.withEasing (Easings::createLinear())
|
||||
.build();
|
||||
};
|
||||
|
||||
class Circle : public Paintable
|
||||
{
|
||||
public:
|
||||
Circle (Point<float> centreIn, float radiusIn, Colour colourIn)
|
||||
: centre (centreIn), radius (radiusIn), colour (colourIn)
|
||||
{
|
||||
}
|
||||
|
||||
void paint (Graphics& g) const override
|
||||
{
|
||||
if (! active)
|
||||
return;
|
||||
|
||||
const Graphics::ScopedSaveState s { g };
|
||||
|
||||
g.setColour (colour);
|
||||
g.fillEllipse (centre.getX() - radius, centre.getY() - radius, 2.0f * radius, 2.0f * radius);
|
||||
}
|
||||
|
||||
void setActive (bool activeIn) { active = activeIn; }
|
||||
|
||||
private:
|
||||
Point<float> centre;
|
||||
float radius = 0.0f;
|
||||
Colour colour;
|
||||
bool active = false;
|
||||
};
|
||||
|
||||
/* Can return a subpath based on a proportion between [0, 1.0]. Useful for creating an animation
|
||||
where a path is drawn over time.
|
||||
*/
|
||||
class PartialPath
|
||||
{
|
||||
public:
|
||||
explicit PartialPath (std::initializer_list<Point<float>> points)
|
||||
{
|
||||
bool pathIsEmpty = false;
|
||||
|
||||
for (auto p : points)
|
||||
{
|
||||
if (std::exchange (pathIsEmpty, true) == false)
|
||||
{
|
||||
path.startNewSubPath (p);
|
||||
pts.push_back (std::make_pair (p, 0.0f));
|
||||
}
|
||||
else
|
||||
{
|
||||
path.lineTo (p);
|
||||
pts.push_back (std::make_pair (p, path.getLength()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Path getPartialPath (float proportion) const
|
||||
{
|
||||
proportion = jmin (1.0f, proportion);
|
||||
|
||||
Path partialPath;
|
||||
bool pathIsEmpty = false;
|
||||
|
||||
if (pts.size() < 2)
|
||||
return partialPath;
|
||||
|
||||
const auto proportionalLength = path.getLength() * proportion;
|
||||
|
||||
const auto lineTo = [&partialPath, &pathIsEmpty] (Point<float> p)
|
||||
{
|
||||
if (std::exchange (pathIsEmpty, true) == false)
|
||||
partialPath.startNewSubPath (p);
|
||||
else
|
||||
partialPath.lineTo (p);
|
||||
};
|
||||
|
||||
for (const auto& point : pts)
|
||||
{
|
||||
if (point.second > proportionalLength)
|
||||
{
|
||||
lineTo (path.getPointAlongPath (proportionalLength));
|
||||
break;
|
||||
}
|
||||
|
||||
lineTo (point.first);
|
||||
}
|
||||
|
||||
return partialPath;
|
||||
}
|
||||
|
||||
private:
|
||||
Path path;
|
||||
std::vector<std::pair<Point<float>, float>> pts;
|
||||
};
|
||||
|
||||
class Checkmark : public Paintable
|
||||
{
|
||||
public:
|
||||
Checkmark (Rectangle<float> placementIn, float thicknessIn)
|
||||
: placement (placementIn),
|
||||
partialPath { { placement.getX(), placement.getY() + 0.7f * placement.getHeight() },
|
||||
{ placement.getX() + 0.4f * placement.getWidth(), placement.getBottom() },
|
||||
{ placement.getRight(), placement.getY() + 0.2f * placement.getHeight() } },
|
||||
thickness (thicknessIn)
|
||||
{
|
||||
}
|
||||
|
||||
void paint (Graphics& g) const override
|
||||
{
|
||||
if (exactlyEqual (progress, 0.0f))
|
||||
return;
|
||||
|
||||
const Graphics::ScopedSaveState s { g };
|
||||
|
||||
g.setColour (colour);
|
||||
|
||||
const auto p = partialPath.getPartialPath (progress);
|
||||
g.strokePath (p, PathStrokeType { thickness, PathStrokeType::JointStyle::curved, PathStrokeType::EndCapStyle::rounded });
|
||||
}
|
||||
|
||||
void setProgress (float p) { progress = p; }
|
||||
|
||||
private:
|
||||
Rectangle<float> placement;
|
||||
PartialPath partialPath;
|
||||
float progress = 0.0f;
|
||||
float thickness = 10.0f;
|
||||
Colour colour { Colours::white };
|
||||
};
|
||||
|
||||
} // namespace Shapes
|
||||
|
||||
inline auto createComponentMover (Component& component, Rectangle<int> targetBounds)
|
||||
{
|
||||
const auto boundsToTuple = [] (auto b)
|
||||
{
|
||||
return std::make_tuple (b.getX(), b.getY(), b.getWidth(), b.getHeight());
|
||||
};
|
||||
|
||||
const auto begin = boundsToTuple (component.getBoundsInParent());
|
||||
const auto end = boundsToTuple (targetBounds);
|
||||
const auto limits = makeAnimationLimits (begin, end);
|
||||
|
||||
return [&component, limits] (auto v)
|
||||
{
|
||||
const auto [x, y, w, h] = limits.lerp (v);
|
||||
component.setBounds (x, y, w, h);
|
||||
};
|
||||
}
|
||||
|
||||
class AnimatedCheckmark : public Paintable
|
||||
{
|
||||
public:
|
||||
AnimatedCheckmark (Point<float> centre, float radius, float thickness, Colour colour)
|
||||
: arc (centre, radius, thickness, colour),
|
||||
circle (centre, radius, colour),
|
||||
checkmark (Rectangle<float> { centre.getX() - radius,
|
||||
centre.getY() - radius,
|
||||
2.0f * radius,
|
||||
2.0f * radius }.reduced (radius * 0.4f),
|
||||
thickness)
|
||||
{
|
||||
}
|
||||
|
||||
void paint (Graphics& g) const override
|
||||
{
|
||||
arc.paint (g);
|
||||
circle.paint (g);
|
||||
checkmark.paint (g);
|
||||
}
|
||||
|
||||
auto getAnimator() const { return animator; }
|
||||
|
||||
private:
|
||||
Shapes::Arc arc;
|
||||
Shapes::Circle circle;
|
||||
Shapes::Checkmark checkmark;
|
||||
|
||||
Animator animator = [&]
|
||||
{
|
||||
circle.setActive (false);
|
||||
|
||||
const auto checkmarkAnimator = ValueAnimatorBuilder{}
|
||||
.withEasing (Easings::createEaseOutBack())
|
||||
.withDurationMs (450)
|
||||
.withValueChangedCallback ([this] (auto value)
|
||||
{
|
||||
checkmark.setProgress (value);
|
||||
})
|
||||
.build();
|
||||
|
||||
return AnimatorSetBuilder (arc.getFanoutAnimator())
|
||||
.followedBy (arc.getFillAnimator())
|
||||
.followedBy ([this]
|
||||
{
|
||||
arc.setActive (false);
|
||||
circle.setActive (true);
|
||||
})
|
||||
.followedBy (checkmarkAnimator)
|
||||
.build();
|
||||
}();
|
||||
};
|
||||
|
||||
class FallingBall : public Component
|
||||
{
|
||||
private:
|
||||
template <typename T>
|
||||
auto getDimensions (Rectangle<T> r)
|
||||
{
|
||||
return std::make_tuple (r.getX(), r.getY(), r.getWidth(), r.getHeight());
|
||||
}
|
||||
|
||||
public:
|
||||
void paint (Graphics& g) override
|
||||
{
|
||||
g.setColour (Colour { 0xff179af0 });
|
||||
const auto [x, y, width, height] = getDimensions (getLocalBounds().toFloat());
|
||||
g.fillEllipse (x, y, width, height);
|
||||
}
|
||||
|
||||
Animator updateAndGetAnimator()
|
||||
{
|
||||
newBounds = getBoundsInParent().withY (getParentHeight() - getHeight());
|
||||
return fallAnimator;
|
||||
}
|
||||
|
||||
private:
|
||||
Rectangle<int> newBounds;
|
||||
|
||||
Animator fallAnimator = ValueAnimatorBuilder{}
|
||||
.withOnStartReturningValueChangedCallback ([this] { return createComponentMover (*this, newBounds); })
|
||||
.withEasing (Easings::createBounce())
|
||||
.withDurationMs (600)
|
||||
.build();
|
||||
};
|
||||
|
||||
class PulsingCheckmark : public Component
|
||||
{
|
||||
public:
|
||||
PulsingCheckmark (Point<float> centre, float radius)
|
||||
: checkmark ({ radius, radius }, radius, radius / 6.25f, Colour { 0xff1bc211 })
|
||||
{
|
||||
const auto widthAndHeight = 2 * (int) radius;
|
||||
const auto x = (int) (centre.getX() - radius);
|
||||
const auto y = (int) (centre.getY() - radius);
|
||||
|
||||
setBounds (x, y, widthAndHeight, widthAndHeight);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void paint (Graphics& g) override
|
||||
{
|
||||
checkmark.paint (g);
|
||||
}
|
||||
|
||||
void mouseDown (const MouseEvent&) override
|
||||
{
|
||||
animator.complete();
|
||||
}
|
||||
|
||||
Animator getAnimator() const { return animator; }
|
||||
|
||||
private:
|
||||
//==============================================================================
|
||||
AnimatedCheckmark checkmark;
|
||||
|
||||
Animator animator = [&]
|
||||
{
|
||||
const auto checkmarkAnimator = checkmark.getAnimator();
|
||||
const auto checkmarkDuration = checkmarkAnimator.getDurationMs();
|
||||
|
||||
const auto pulseAnimator = ValueAnimatorBuilder{}
|
||||
.withEasing (Easings::createOnOffRamp())
|
||||
.withOnStartReturningValueChangedCallback (
|
||||
[this]
|
||||
{
|
||||
const auto radius = (float) getWidth() / 2.0f;
|
||||
const auto centreInParent = getBoundsInParent().toFloat().getPosition()
|
||||
+ Point<float> { radius, radius };
|
||||
|
||||
return [this, centreInParent] (auto value)
|
||||
{
|
||||
setTransform (AffineTransform::translation (-centreInParent)
|
||||
.followedBy (AffineTransform::scale (1.0f + 0.2f * value))
|
||||
.followedBy (AffineTransform::translation (centreInParent)));
|
||||
};
|
||||
})
|
||||
.build();
|
||||
|
||||
const auto timeBeforePulseAnimation = checkmarkDuration - pulseAnimator.getDurationMs();
|
||||
|
||||
const auto repaintAnimator = ValueAnimatorBuilder{}
|
||||
.withValueChangedCallback ([this] (auto) { repaint(); })
|
||||
.runningInfinitely()
|
||||
.build();
|
||||
|
||||
return AnimatorSetBuilder (checkmarkAnimator)
|
||||
.togetherWith (repaintAnimator)
|
||||
.togetherWith (timeBeforePulseAnimation)
|
||||
.followedBy (pulseAnimator)
|
||||
.followedBy ([repaintAnimator] { repaintAnimator.complete(); })
|
||||
.build();
|
||||
}();
|
||||
};
|
||||
|
||||
// Displays the PulsingCheckmark as it looks when its animation is complete
|
||||
class CompletedCheckmark : public Component
|
||||
{
|
||||
public:
|
||||
explicit CompletedCheckmark (std::function<void()> onClickIn)
|
||||
: onClick (std::move (onClickIn)) {}
|
||||
|
||||
void resized() override
|
||||
{
|
||||
const auto getCentre = [this]
|
||||
{
|
||||
return Point<float> { (float) getWidth() / 2, (float) getHeight() / 2 };
|
||||
};
|
||||
|
||||
const auto radius = (float) std::min (getWidth(), getHeight()) / 2.0f;
|
||||
checkmark = std::make_unique<PulsingCheckmark> (getCentre(), radius);
|
||||
checkmark->setInterceptsMouseClicks (false, false);
|
||||
addAndMakeVisible (*checkmark);
|
||||
checkmark->getAnimator().start();
|
||||
checkmark->getAnimator().complete();
|
||||
checkmark->getAnimator().update (0);
|
||||
}
|
||||
|
||||
void mouseDown (const MouseEvent&) override
|
||||
{
|
||||
NullCheckedInvocation::invoke (onClick);
|
||||
}
|
||||
|
||||
private:
|
||||
std::unique_ptr<PulsingCheckmark> checkmark;
|
||||
std::function<void()> onClick;
|
||||
};
|
||||
|
||||
class BallToolComponent : public Component
|
||||
{
|
||||
public:
|
||||
explicit BallToolComponent (std::function<void()> onClickIn)
|
||||
: onClick (std::move (onClickIn)) {}
|
||||
|
||||
void paint (Graphics& g) override
|
||||
{
|
||||
g.setColour (Colour { 0xff179af0 });
|
||||
g.fillEllipse (getLocalBounds().toFloat());
|
||||
}
|
||||
|
||||
void mouseDown (const MouseEvent&) override
|
||||
{
|
||||
NullCheckedInvocation::invoke (onClick);
|
||||
}
|
||||
|
||||
private:
|
||||
std::function<void()> onClick;
|
||||
};
|
||||
|
||||
class AnimatorsDemo : public Component
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
AnimatorsDemo()
|
||||
{
|
||||
welcomeComponent.setOnAnimatedClickEnd ([this]
|
||||
{
|
||||
toolsPanel.open();
|
||||
});
|
||||
addAndMakeVisible (welcomeComponent);
|
||||
|
||||
toolsPanel.onClose = [this] { welcomeComponent.reset(); };
|
||||
toolsPanel.addToolComponent (std::make_unique<CompletedCheckmark> ([this] { selectedTool = SelectedTool::checkmark; }));
|
||||
toolsPanel.addToolComponent (std::make_unique<BallToolComponent> ([this]
|
||||
{
|
||||
selectedTool = SelectedTool::ball;
|
||||
}));
|
||||
addAndMakeVisible (toolsPanel);
|
||||
|
||||
setSize (600, 400);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void paint (Graphics& g) override
|
||||
{
|
||||
g.fillAll (getLookAndFeel().findColour (ResizableWindow::backgroundColourId));
|
||||
|
||||
for (const auto& paintable : objects)
|
||||
paintable.second->paint (g);
|
||||
}
|
||||
|
||||
void resized() override
|
||||
{
|
||||
welcomeComponent.setBounds (getLocalBounds());
|
||||
}
|
||||
|
||||
void mouseDown (const MouseEvent& event) override
|
||||
{
|
||||
switch (selectedTool)
|
||||
{
|
||||
case SelectedTool::checkmark:
|
||||
makeCheckmark (event.getPosition().toFloat());
|
||||
break;
|
||||
|
||||
case SelectedTool::ball:
|
||||
makeBall (event.getPosition().toFloat());
|
||||
break;
|
||||
|
||||
case SelectedTool::none:
|
||||
toolsPanel.wobbleLabel();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
void makeCheckmark (Point<float> centre)
|
||||
{
|
||||
auto checkmark = std::make_unique<PulsingCheckmark> (centre, 50.0f);
|
||||
updater.addAnimator (checkmark->getAnimator(), [this] { toolComponent.reset(); });
|
||||
checkmark->getAnimator().start();
|
||||
addAndMakeVisible (*checkmark, 0);
|
||||
toolComponent = std::move (checkmark);
|
||||
}
|
||||
|
||||
void makeBall (Point<float> centre)
|
||||
{
|
||||
auto ball = std::make_unique<FallingBall>();
|
||||
addAndMakeVisible (*ball, 0);
|
||||
const auto radius = 50.0f;
|
||||
const Rectangle<float> bounds { centre.getX() - radius, centre.getY() - radius, 2 * radius, 2 * radius };
|
||||
ball->setBounds (bounds.toNearestInt());
|
||||
auto animator = ball->updateAndGetAnimator();
|
||||
updater.addAnimator (animator, [this] { toolComponent.reset(); });
|
||||
animator.start();
|
||||
toolComponent = std::move (ball);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
VBlankAnimatorUpdater updater { this };
|
||||
|
||||
struct WelcomeComponent : public Component
|
||||
{
|
||||
WelcomeComponent()
|
||||
{
|
||||
startButton.onClick = [this]
|
||||
{
|
||||
animateForward = true;
|
||||
buttonAnimator.start();
|
||||
updater.addAnimator (buttonAnimator, [this] { updater.removeAnimator (buttonAnimator); });
|
||||
};
|
||||
|
||||
addAndMakeVisible (startButton);
|
||||
}
|
||||
|
||||
void setOnAnimatedClickEnd (std::function<void()> onClickIn)
|
||||
{
|
||||
onClick = std::move (onClickIn);
|
||||
}
|
||||
|
||||
void reset()
|
||||
{
|
||||
animateForward = false;
|
||||
buttonAnimator.start();
|
||||
updater.addAnimator (buttonAnimator, [this] { updater.removeAnimator (buttonAnimator); });
|
||||
}
|
||||
|
||||
void resized() override
|
||||
{
|
||||
startButton.setBounds (getLocalBounds().withSizeKeepingCentre (140, 40));
|
||||
}
|
||||
|
||||
private:
|
||||
TextButton startButton { "Start demo" };
|
||||
bool animateForward = false;
|
||||
Animator buttonAnimator = [&]
|
||||
{
|
||||
return ValueAnimatorBuilder{}
|
||||
.withOnStartCallback ([this] { setVisible (true); })
|
||||
.withValueChangedCallback ([this] (auto value)
|
||||
{
|
||||
const auto progress = animateForward ? value : (1.0 - value);
|
||||
setAlpha (1.0f - (float) progress);
|
||||
})
|
||||
.withOnCompleteCallback ([this]
|
||||
{
|
||||
setVisible (! animateForward);
|
||||
|
||||
if (animateForward)
|
||||
NullCheckedInvocation::invoke (onClick);
|
||||
})
|
||||
.build();
|
||||
}();
|
||||
|
||||
VBlankAnimatorUpdater updater { this };
|
||||
std::function<void()> onClick;
|
||||
};
|
||||
|
||||
class WobblyLabel : public Component
|
||||
{
|
||||
public:
|
||||
explicit WobblyLabel (const String& text)
|
||||
: label ({}, text)
|
||||
{
|
||||
label.setJustificationType (Justification::right);
|
||||
addAndMakeVisible (label);
|
||||
}
|
||||
|
||||
void resized() override
|
||||
{
|
||||
label.setBounds (getLocalBounds().withX ((int) offset));
|
||||
}
|
||||
|
||||
void wobble()
|
||||
{
|
||||
updater.addAnimator (animator, [this] { updater.removeAnimator (animator); });
|
||||
animator.start();
|
||||
}
|
||||
|
||||
private:
|
||||
float offset = 0.0f;
|
||||
Label label;
|
||||
Animator animator = ValueAnimatorBuilder{}.withValueChangedCallback (
|
||||
[this] (float progress)
|
||||
{
|
||||
offset = 10.0f * std::sin (progress * 20.0f) * (1.0f - progress);
|
||||
resized();
|
||||
})
|
||||
.withDurationMs (600)
|
||||
.build();
|
||||
VBlankAnimatorUpdater updater { this };
|
||||
};
|
||||
|
||||
struct ToolsPanel : public Component
|
||||
{
|
||||
static constexpr auto margin = 15;
|
||||
|
||||
ToolsPanel()
|
||||
{
|
||||
shadower.setOwner (this);
|
||||
closeButton.onClick = [this] { close(); };
|
||||
addAndMakeVisible (closeButton);
|
||||
addAndMakeVisible (label);
|
||||
addAndMakeVisible (instructions);
|
||||
addChildComponent (selectionComponent, 0);
|
||||
|
||||
instructions.setJustificationType (Justification::centred);
|
||||
}
|
||||
|
||||
void paint (Graphics& g) override
|
||||
{
|
||||
g.fillAll (getLookAndFeel().findColour (juce::ResizableWindow::backgroundColourId).brighter (0.1f));
|
||||
}
|
||||
|
||||
void resized() override
|
||||
{
|
||||
closeButton.setBounds (getLocalBounds().removeFromTop (40)
|
||||
.removeFromRight (40)
|
||||
.reduced (5));
|
||||
|
||||
auto bounds = getLocalBounds();
|
||||
instructions.setBounds (bounds.removeFromBottom (30));
|
||||
|
||||
FlexBox flexBox;
|
||||
flexBox.flexDirection = FlexBox::Direction::row;
|
||||
flexBox.flexWrap = FlexBox::Wrap::noWrap;
|
||||
flexBox.justifyContent = FlexBox::JustifyContent::center;
|
||||
flexBox.alignItems = FlexBox::AlignItems::center;
|
||||
|
||||
const auto height = (float) (bounds.getHeight() - 2 * margin);
|
||||
|
||||
flexBox.items.add (FlexItem (label).withWidth (200.0f).withHeight (height));
|
||||
|
||||
for (auto& c : toolComponents)
|
||||
flexBox.items.add (FlexItem (*c).withWidth (height).withHeight (height).withMargin (margin));
|
||||
|
||||
flexBox.performLayout (bounds);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void open()
|
||||
{
|
||||
shouldOpen = true;
|
||||
updater.addAnimator (slideInAnimator, [this] { updater.removeAnimator (slideInAnimator); });
|
||||
slideInAnimator.start();
|
||||
}
|
||||
|
||||
void close()
|
||||
{
|
||||
shouldOpen = false;
|
||||
updater.addAnimator (slideInAnimator, [this]
|
||||
{
|
||||
NullCheckedInvocation::invoke (onClose);
|
||||
updater.removeAnimator (slideInAnimator);
|
||||
});
|
||||
slideInAnimator.start();
|
||||
}
|
||||
|
||||
void addToolComponent (std::unique_ptr<Component> component)
|
||||
{
|
||||
addAndMakeVisible (*component);
|
||||
component->addMouseListener (this, false);
|
||||
toolComponents.push_back (std::move (component));
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void mouseUp (const MouseEvent& event) override
|
||||
{
|
||||
if (event.originalComponent == this)
|
||||
return;
|
||||
|
||||
const auto targetBounds = event.originalComponent->getBounds().expanded (std::min (10, margin));
|
||||
|
||||
if (! selectionComponent.isVisible())
|
||||
{
|
||||
selectionComponent.setBounds (targetBounds);
|
||||
selectionComponent.appear (updater);
|
||||
}
|
||||
else
|
||||
{
|
||||
selectionComponent.moveTo (updater, targetBounds);
|
||||
}
|
||||
}
|
||||
|
||||
void wobbleLabel()
|
||||
{
|
||||
label.wobble();
|
||||
}
|
||||
|
||||
private:
|
||||
//==============================================================================
|
||||
class SelectionComponent : public Component
|
||||
{
|
||||
public:
|
||||
SelectionComponent()
|
||||
{
|
||||
setVisible (false);
|
||||
}
|
||||
|
||||
void paint (Graphics& g) override
|
||||
{
|
||||
arc.paint (g);
|
||||
}
|
||||
|
||||
void appear (VBlankAnimatorUpdater& animatorUpdater)
|
||||
{
|
||||
appearAnimator.start();
|
||||
animatorUpdater.addAnimator (appearAnimator,
|
||||
[this, &animatorUpdater]
|
||||
{
|
||||
animatorUpdater.removeAnimator (appearAnimator);
|
||||
});
|
||||
}
|
||||
|
||||
void moveTo (VBlankAnimatorUpdater& animatorUpdater, Rectangle<int> newBoundsIn)
|
||||
{
|
||||
newBounds = newBoundsIn;
|
||||
moveToNewBoundsAnimator.start();
|
||||
animatorUpdater.addAnimator (moveToNewBoundsAnimator,
|
||||
[this, &animatorUpdater]
|
||||
{
|
||||
animatorUpdater.removeAnimator (moveToNewBoundsAnimator);
|
||||
});
|
||||
}
|
||||
|
||||
private:
|
||||
Shapes::Arc arc;
|
||||
Rectangle<int> newBounds;
|
||||
|
||||
Animator appearAnimator = [&]
|
||||
{
|
||||
const auto repaintAnimator =
|
||||
ValueAnimatorBuilder{}
|
||||
.withValueChangedCallback ([this] (auto) { repaint(); })
|
||||
.runningInfinitely()
|
||||
.build();
|
||||
|
||||
return AnimatorSetBuilder { [this]
|
||||
{
|
||||
setVisible (true);
|
||||
arc.centre = Point { getWidth(), getHeight() }.toFloat() / 2;
|
||||
arc.initialRadius = (float) (getWidth()) / 2 - 2.0f;
|
||||
arc.initialThickness = 4.0f;
|
||||
} }
|
||||
.followedBy (repaintAnimator)
|
||||
.togetherWith (arc.getFanoutAnimator())
|
||||
.followedBy ([repaintAnimator] { repaintAnimator.complete(); })
|
||||
.withTimeTransform ([] (auto v) { return 1.5 * v; })
|
||||
.build();
|
||||
}();
|
||||
|
||||
Animator moveToNewBoundsAnimator = ValueAnimatorBuilder{}
|
||||
.withOnStartReturningValueChangedCallback ([this] { return createComponentMover (*this, newBounds); })
|
||||
.withEasing (Easings::createSpring())
|
||||
.withDurationMs (600)
|
||||
.build();
|
||||
};
|
||||
|
||||
WobblyLabel label { "Select animation:" };
|
||||
Label instructions { "", "Click below to animate" };
|
||||
SelectionComponent selectionComponent;
|
||||
std::vector<std::unique_ptr<Component>> toolComponents;
|
||||
DropShadow shadow { Colour { 0x90000000 }, 12, {} };
|
||||
DropShadower shadower { shadow };
|
||||
TextButton closeButton { "X" };
|
||||
|
||||
Animator slideInAnimator = ValueAnimatorBuilder{}
|
||||
.withEasing (Easings::createEaseInOutCubic())
|
||||
.withOnStartReturningValueChangedCallback (
|
||||
[this]
|
||||
{
|
||||
const auto width = getParentWidth() - 2 * margin;
|
||||
const auto height = 130;
|
||||
setBounds (-width, margin, width, height);
|
||||
setVisible (true);
|
||||
|
||||
const auto limits = makeAnimationLimits (-width, margin);
|
||||
|
||||
return [this, limits] (auto value)
|
||||
{
|
||||
const auto progress = std::clamp (shouldOpen ? value : 1.0 - value, 0.0, 1.0);
|
||||
setTopLeftPosition (roundToInt (limits.lerp ((float) progress)), margin);
|
||||
};
|
||||
})
|
||||
.withDurationMs (500)
|
||||
.build();
|
||||
|
||||
VBlankAnimatorUpdater updater { this };
|
||||
bool shouldOpen = true;
|
||||
|
||||
public:
|
||||
std::function<void()> onClose;
|
||||
};
|
||||
|
||||
enum class SelectedTool
|
||||
{
|
||||
none,
|
||||
checkmark,
|
||||
ball
|
||||
};
|
||||
|
||||
WelcomeComponent welcomeComponent;
|
||||
ToolsPanel toolsPanel;
|
||||
SelectedTool selectedTool = SelectedTool::none;
|
||||
std::unique_ptr<Component> toolComponent;
|
||||
std::map<Paintable*, std::unique_ptr<Paintable>> objects;
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AnimatorsDemo)
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue