| @@ -52,5 +52,6 @@ profile | |||||
| **/CodeBlocks/*.depend | **/CodeBlocks/*.depend | ||||
| **/CodeBlocks/*.layout | **/CodeBlocks/*.layout | ||||
| **/Builds/AndroidStudio | **/Builds/AndroidStudio | ||||
| doxygen/doc | |||||
| **/doxygen/doc | |||||
| **/doxygen/build | |||||
| extras/Projucer/JUCECompileEngine.dylib | extras/Projucer/JUCECompileEngine.dylib | ||||
| @@ -0,0 +1,108 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <JUCERPROJECT id="aa4reI" name="BlocksDrawing" projectType="guiapp" version="1.0.0" | |||||
| bundleIdentifier="com.yourcompany.BlocksDrawing" includeBinaryInAppConfig="1" | |||||
| jucerVersion="4.2.4"> | |||||
| <MAINGROUP id="yXiPIx" name="BlocksDrawing"> | |||||
| <GROUP id="{092A4D5B-31E2-5D03-9B41-81C10EC447E8}" name="Source"> | |||||
| <FILE id="yiP4mu" name="MainComponent.h" compile="0" resource="0" file="Source/MainComponent.h"/> | |||||
| <FILE id="RyfWDq" name="Main.cpp" compile="1" resource="0" file="Source/Main.cpp"/> | |||||
| </GROUP> | |||||
| </MAINGROUP> | |||||
| <EXPORTFORMATS> | |||||
| <XCODE_MAC targetFolder="Builds/MacOSX" extraCompilerFlags=""> | |||||
| <CONFIGURATIONS> | |||||
| <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="BlocksDrawing"/> | |||||
| <CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="BlocksDrawing"/> | |||||
| </CONFIGURATIONS> | |||||
| <MODULEPATHS> | |||||
| <MODULEPATH id="juce_core" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_events" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_graphics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_data_structures" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_extra" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_opengl" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_devices" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_formats" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_blocks_basics" path="../../../modules"/> | |||||
| </MODULEPATHS> | |||||
| </XCODE_MAC> | |||||
| <VS2015 targetFolder="Builds/VisualStudio2015"> | |||||
| <CONFIGURATIONS> | |||||
| <CONFIGURATION name="Debug" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit" | |||||
| isDebug="1" optimisation="1" targetName="BlocksDrawing"/> | |||||
| <CONFIGURATION name="Release" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit" | |||||
| isDebug="0" optimisation="3" targetName="BlocksDrawing"/> | |||||
| </CONFIGURATIONS> | |||||
| <MODULEPATHS> | |||||
| <MODULEPATH id="juce_opengl" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_extra" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_graphics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_events" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_data_structures" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_core" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_blocks_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_formats" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_devices" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_basics" path="../../../modules"/> | |||||
| </MODULEPATHS> | |||||
| </VS2015> | |||||
| <VS2013 targetFolder="Builds/VisualStudio2013"> | |||||
| <CONFIGURATIONS> | |||||
| <CONFIGURATION name="Debug" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit" | |||||
| isDebug="1" optimisation="1" targetName="BlocksDrawing"/> | |||||
| <CONFIGURATION name="Release" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit" | |||||
| isDebug="0" optimisation="3" targetName="BlocksDrawing"/> | |||||
| </CONFIGURATIONS> | |||||
| <MODULEPATHS> | |||||
| <MODULEPATH id="juce_opengl" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_extra" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_graphics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_events" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_data_structures" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_core" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_blocks_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_formats" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_devices" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_basics" path="../../../modules"/> | |||||
| </MODULEPATHS> | |||||
| </VS2013> | |||||
| <LINUX_MAKE targetFolder="Builds/LinuxMakefile"> | |||||
| <CONFIGURATIONS> | |||||
| <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="BlocksDrawing"/> | |||||
| <CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="BlocksDrawing"/> | |||||
| </CONFIGURATIONS> | |||||
| <MODULEPATHS> | |||||
| <MODULEPATH id="juce_opengl" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_extra" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_graphics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_events" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_data_structures" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_core" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_blocks_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_formats" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_devices" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_basics" path="../../../modules"/> | |||||
| </MODULEPATHS> | |||||
| </LINUX_MAKE> | |||||
| </EXPORTFORMATS> | |||||
| <MODULES> | |||||
| <MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_blocks_basics" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0"/> | |||||
| </MODULES> | |||||
| <JUCEOPTIONS/> | |||||
| </JUCERPROJECT> | |||||
| @@ -0,0 +1,154 @@ | |||||
| # Automatically generated makefile, created by the Projucer | |||||
| # Don't edit this file! Your changes will be overwritten when you re-save the Projucer project! | |||||
| # (this disables dependency generation if multiple architectures are set) | |||||
| DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD) | |||||
| ifndef STRIP | |||||
| STRIP=strip | |||||
| endif | |||||
| ifndef AR | |||||
| AR=ar | |||||
| endif | |||||
| ifndef CONFIG | |||||
| CONFIG=Debug | |||||
| endif | |||||
| ifeq ($(CONFIG),Debug) | |||||
| JUCE_BINDIR := build | |||||
| JUCE_LIBDIR := build | |||||
| JUCE_OBJDIR := build/intermediate/Debug | |||||
| JUCE_OUTDIR := build | |||||
| ifeq ($(TARGET_ARCH),) | |||||
| TARGET_ARCH := -march=native | |||||
| endif | |||||
| JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../../modules | |||||
| JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0 | |||||
| JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11 | |||||
| JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt | |||||
| TARGET := BlocksDrawing | |||||
| BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH) | |||||
| CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR) | |||||
| endif | |||||
| ifeq ($(CONFIG),Release) | |||||
| JUCE_BINDIR := build | |||||
| JUCE_LIBDIR := build | |||||
| JUCE_OBJDIR := build/intermediate/Release | |||||
| JUCE_OUTDIR := build | |||||
| ifeq ($(TARGET_ARCH),) | |||||
| TARGET_ARCH := -march=native | |||||
| endif | |||||
| JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../../modules | |||||
| JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3 | |||||
| JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11 | |||||
| JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -fvisibility=hidden $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt | |||||
| TARGET := BlocksDrawing | |||||
| BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH) | |||||
| CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR) | |||||
| endif | |||||
| OBJECTS := \ | |||||
| $(JUCE_OBJDIR)/Main_90ebc5c2.o \ | |||||
| $(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o \ | |||||
| $(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o \ | |||||
| $(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o \ | |||||
| $(JUCE_OBJDIR)/juce_blocks_basics_d4b203f5.o \ | |||||
| $(JUCE_OBJDIR)/juce_core_75b14332.o \ | |||||
| $(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o \ | |||||
| $(JUCE_OBJDIR)/juce_events_d2be882c.o \ | |||||
| $(JUCE_OBJDIR)/juce_graphics_9c18891e.o \ | |||||
| $(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o \ | |||||
| $(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o \ | |||||
| $(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o \ | |||||
| .PHONY: clean | |||||
| $(JUCE_OUTDIR)/$(TARGET): check-pkg-config $(OBJECTS) $(RESOURCES) | |||||
| @echo Linking BlocksDrawing | |||||
| -@mkdir -p $(JUCE_BINDIR) | |||||
| -@mkdir -p $(JUCE_LIBDIR) | |||||
| -@mkdir -p $(JUCE_OUTDIR) | |||||
| @$(BLDCMD) | |||||
| check-pkg-config: | |||||
| @command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; } | |||||
| @pkg-config --print-errors alsa freetype2 libcurl x11 xext xinerama | |||||
| clean: | |||||
| @echo Cleaning BlocksDrawing | |||||
| @$(CLEANCMD) | |||||
| strip: | |||||
| @echo Stripping BlocksDrawing | |||||
| -@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET) | |||||
| $(JUCE_OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling Main.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_audio_basics.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_audio_devices.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_audio_formats.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_blocks_basics_d4b203f5.o: ../../JuceLibraryCode/juce_blocks_basics.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_blocks_basics.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_core.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_data_structures.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_events.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_graphics.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_gui_basics.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_gui_extra.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o: ../../JuceLibraryCode/juce_opengl.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_opengl.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| -include $(OBJECTS:%.o=%.d) | |||||
| @@ -0,0 +1,29 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |||||
| <plist> | |||||
| <dict> | |||||
| <key>CFBundleExecutable</key> | |||||
| <string>${EXECUTABLE_NAME}</string> | |||||
| <key>CFBundleIconFile</key> | |||||
| <string></string> | |||||
| <key>CFBundleIdentifier</key> | |||||
| <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> | |||||
| <key>CFBundleName</key> | |||||
| <string>BlocksDrawing</string> | |||||
| <key>CFBundleDisplayName</key> | |||||
| <string>BlocksDrawing</string> | |||||
| <key>CFBundlePackageType</key> | |||||
| <string>APPL</string> | |||||
| <key>CFBundleSignature</key> | |||||
| <string>????</string> | |||||
| <key>CFBundleShortVersionString</key> | |||||
| <string>1.0.0</string> | |||||
| <key>CFBundleVersion</key> | |||||
| <string>1.0.0</string> | |||||
| <key>NSHumanReadableCopyright</key> | |||||
| <string></string> | |||||
| <key>NSHighResolutionCapable</key> | |||||
| <true/> | |||||
| </dict> | |||||
| </plist> | |||||
| @@ -0,0 +1,19 @@ | |||||
| Microsoft Visual Studio Solution File, Format Version 11.00 | |||||
| # Visual Studio 2013 | |||||
| Project("{0D7965A3-BED9-ABF7-CBD9-0D3743DA1577}") = "BlocksDrawing", "BlocksDrawing.vcxproj", "{83D60C30-1484-EABF-FDB3-14C39E5DD976}" | |||||
| EndProject | |||||
| Global | |||||
| GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||||
| Debug|Win32 = Debug|Win32 | |||||
| Release|Win32 = Release|Win32 | |||||
| EndGlobalSection | |||||
| GlobalSection(ProjectConfigurationPlatforms) = postSolution | |||||
| {83D60C30-1484-EABF-FDB3-14C39E5DD976}.Debug|Win32.ActiveCfg = Debug|Win32 | |||||
| {83D60C30-1484-EABF-FDB3-14C39E5DD976}.Debug|Win32.Build.0 = Debug|Win32 | |||||
| {83D60C30-1484-EABF-FDB3-14C39E5DD976}.Release|Win32.ActiveCfg = Release|Win32 | |||||
| {83D60C30-1484-EABF-FDB3-14C39E5DD976}.Release|Win32.Build.0 = Release|Win32 | |||||
| EndGlobalSection | |||||
| GlobalSection(SolutionProperties) = preSolution | |||||
| HideSolutionNode = FALSE | |||||
| EndGlobalSection | |||||
| EndGlobal | |||||
| @@ -0,0 +1,29 @@ | |||||
| #ifdef JUCE_USER_DEFINED_RC_FILE | |||||
| #include JUCE_USER_DEFINED_RC_FILE | |||||
| #else | |||||
| #undef WIN32_LEAN_AND_MEAN | |||||
| #define WIN32_LEAN_AND_MEAN | |||||
| #include <windows.h> | |||||
| VS_VERSION_INFO VERSIONINFO | |||||
| FILEVERSION 1,0,0,0 | |||||
| BEGIN | |||||
| BLOCK "StringFileInfo" | |||||
| BEGIN | |||||
| BLOCK "040904E4" | |||||
| BEGIN | |||||
| VALUE "FileDescription", "BlocksDrawing\0" | |||||
| VALUE "FileVersion", "1.0.0\0" | |||||
| VALUE "ProductName", "BlocksDrawing\0" | |||||
| VALUE "ProductVersion", "1.0.0\0" | |||||
| END | |||||
| END | |||||
| BLOCK "VarFileInfo" | |||||
| BEGIN | |||||
| VALUE "Translation", 0x409, 1252 | |||||
| END | |||||
| END | |||||
| #endif | |||||
| @@ -0,0 +1,19 @@ | |||||
| Microsoft Visual Studio Solution File, Format Version 11.00 | |||||
| # Visual Studio 2015 | |||||
| Project("{0D7965A3-BED9-ABF7-CBD9-0D3743DA1577}") = "BlocksDrawing", "BlocksDrawing.vcxproj", "{83D60C30-1484-EABF-FDB3-14C39E5DD976}" | |||||
| EndProject | |||||
| Global | |||||
| GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||||
| Debug|Win32 = Debug|Win32 | |||||
| Release|Win32 = Release|Win32 | |||||
| EndGlobalSection | |||||
| GlobalSection(ProjectConfigurationPlatforms) = postSolution | |||||
| {83D60C30-1484-EABF-FDB3-14C39E5DD976}.Debug|Win32.ActiveCfg = Debug|Win32 | |||||
| {83D60C30-1484-EABF-FDB3-14C39E5DD976}.Debug|Win32.Build.0 = Debug|Win32 | |||||
| {83D60C30-1484-EABF-FDB3-14C39E5DD976}.Release|Win32.ActiveCfg = Release|Win32 | |||||
| {83D60C30-1484-EABF-FDB3-14C39E5DD976}.Release|Win32.Build.0 = Release|Win32 | |||||
| EndGlobalSection | |||||
| GlobalSection(SolutionProperties) = preSolution | |||||
| HideSolutionNode = FALSE | |||||
| EndGlobalSection | |||||
| EndGlobal | |||||
| @@ -0,0 +1,29 @@ | |||||
| #ifdef JUCE_USER_DEFINED_RC_FILE | |||||
| #include JUCE_USER_DEFINED_RC_FILE | |||||
| #else | |||||
| #undef WIN32_LEAN_AND_MEAN | |||||
| #define WIN32_LEAN_AND_MEAN | |||||
| #include <windows.h> | |||||
| VS_VERSION_INFO VERSIONINFO | |||||
| FILEVERSION 1,0,0,0 | |||||
| BEGIN | |||||
| BLOCK "StringFileInfo" | |||||
| BEGIN | |||||
| BLOCK "040904E4" | |||||
| BEGIN | |||||
| VALUE "FileDescription", "BlocksDrawing\0" | |||||
| VALUE "FileVersion", "1.0.0\0" | |||||
| VALUE "ProductName", "BlocksDrawing\0" | |||||
| VALUE "ProductVersion", "1.0.0\0" | |||||
| END | |||||
| END | |||||
| BLOCK "VarFileInfo" | |||||
| BEGIN | |||||
| VALUE "Translation", 0x409, 1252 | |||||
| END | |||||
| END | |||||
| #endif | |||||
| @@ -0,0 +1,128 @@ | |||||
| { | |||||
| "images": [ | |||||
| { | |||||
| "idiom": "iphone", | |||||
| "size": "29x29", | |||||
| "filename": "Icon-29.png", | |||||
| "scale": "1x" | |||||
| }, | |||||
| { | |||||
| "idiom": "iphone", | |||||
| "size": "29x29", | |||||
| "filename": "Icon-29@2x.png", | |||||
| "scale": "2x" | |||||
| }, | |||||
| { | |||||
| "idiom": "iphone", | |||||
| "size": "29x29", | |||||
| "filename": "Icon-29@3x.png", | |||||
| "scale": "3x" | |||||
| }, | |||||
| { | |||||
| "idiom": "iphone", | |||||
| "size": "40x40", | |||||
| "filename": "Icon-Spotlight-40@2x.png", | |||||
| "scale": "2x" | |||||
| }, | |||||
| { | |||||
| "idiom": "iphone", | |||||
| "size": "40x40", | |||||
| "filename": "Icon-Spotlight-40@3x.png", | |||||
| "scale": "3x" | |||||
| }, | |||||
| { | |||||
| "idiom": "iphone", | |||||
| "size": "57x57", | |||||
| "filename": "Icon.png", | |||||
| "scale": "1x" | |||||
| }, | |||||
| { | |||||
| "idiom": "iphone", | |||||
| "size": "57x57", | |||||
| "filename": "Icon@2x.png", | |||||
| "scale": "2x" | |||||
| }, | |||||
| { | |||||
| "idiom": "iphone", | |||||
| "size": "60x60", | |||||
| "filename": "Icon-60@2x.png", | |||||
| "scale": "2x" | |||||
| }, | |||||
| { | |||||
| "idiom": "iphone", | |||||
| "size": "60x60", | |||||
| "filename": "Icon-@3x.png", | |||||
| "scale": "3x" | |||||
| }, | |||||
| { | |||||
| "idiom": "ipad", | |||||
| "size": "29x29", | |||||
| "filename": "Icon-Small-1.png", | |||||
| "scale": "1x" | |||||
| }, | |||||
| { | |||||
| "idiom": "ipad", | |||||
| "size": "29x29", | |||||
| "filename": "Icon-Small@2x-1.png", | |||||
| "scale": "2x" | |||||
| }, | |||||
| { | |||||
| "idiom": "ipad", | |||||
| "size": "40x40", | |||||
| "filename": "Icon-Spotlight-40.png", | |||||
| "scale": "1x" | |||||
| }, | |||||
| { | |||||
| "idiom": "ipad", | |||||
| "size": "40x40", | |||||
| "filename": "Icon-Spotlight-40@2x-1.png", | |||||
| "scale": "2x" | |||||
| }, | |||||
| { | |||||
| "idiom": "ipad", | |||||
| "size": "50x50", | |||||
| "filename": "Icon-Small-50.png", | |||||
| "scale": "1x" | |||||
| }, | |||||
| { | |||||
| "idiom": "ipad", | |||||
| "size": "50x50", | |||||
| "filename": "Icon-Small-50@2x.png", | |||||
| "scale": "2x" | |||||
| }, | |||||
| { | |||||
| "idiom": "ipad", | |||||
| "size": "72x72", | |||||
| "filename": "Icon-72.png", | |||||
| "scale": "1x" | |||||
| }, | |||||
| { | |||||
| "idiom": "ipad", | |||||
| "size": "72x72", | |||||
| "filename": "Icon-72@2x.png", | |||||
| "scale": "2x" | |||||
| }, | |||||
| { | |||||
| "idiom": "ipad", | |||||
| "size": "76x76", | |||||
| "filename": "Icon-76.png", | |||||
| "scale": "1x" | |||||
| }, | |||||
| { | |||||
| "idiom": "ipad", | |||||
| "size": "76x76", | |||||
| "filename": "Icon-76@2x.png", | |||||
| "scale": "2x" | |||||
| }, | |||||
| { | |||||
| "idiom": "ipad", | |||||
| "size": "83.5x83.5", | |||||
| "filename": "Icon-83.5@2x.png", | |||||
| "scale": "2x" | |||||
| } | |||||
| ], | |||||
| "info": { | |||||
| "version": 1, | |||||
| "author": "xcode" | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,57 @@ | |||||
| { | |||||
| "images": [ | |||||
| { | |||||
| "orientation": "portrait", | |||||
| "idiom": "iphone", | |||||
| "extent": "full-screen", | |||||
| "minimum-system-version": "7.0", | |||||
| "scale": "2x", | |||||
| "filename": "LaunchImage-iphone-2x.png" | |||||
| }, | |||||
| { | |||||
| "orientation": "portrait", | |||||
| "idiom": "iphone", | |||||
| "extent": "full-screen", | |||||
| "minimum-system-version": "7.0", | |||||
| "scale": "2x", | |||||
| "filename": "LaunchImage-iphone-retina4.png", | |||||
| "subtype": "retina4" | |||||
| }, | |||||
| { | |||||
| "orientation": "portrait", | |||||
| "idiom": "ipad", | |||||
| "extent": "full-screen", | |||||
| "minimum-system-version": "7.0", | |||||
| "scale": "1x", | |||||
| "filename": "LaunchImage-ipad-portrait-1x.png" | |||||
| }, | |||||
| { | |||||
| "orientation": "landscape", | |||||
| "idiom": "ipad", | |||||
| "extent": "full-screen", | |||||
| "minimum-system-version": "7.0", | |||||
| "scale": "1x", | |||||
| "filename": "LaunchImage-ipad-landscape-1x.png" | |||||
| }, | |||||
| { | |||||
| "orientation": "portrait", | |||||
| "idiom": "ipad", | |||||
| "extent": "full-screen", | |||||
| "minimum-system-version": "7.0", | |||||
| "scale": "2x", | |||||
| "filename": "LaunchImage-ipad-portrait-2x.png" | |||||
| }, | |||||
| { | |||||
| "orientation": "landscape", | |||||
| "idiom": "ipad", | |||||
| "extent": "full-screen", | |||||
| "minimum-system-version": "7.0", | |||||
| "scale": "2x", | |||||
| "filename": "LaunchImage-ipad-landscape-2x.png" | |||||
| } | |||||
| ], | |||||
| "info": { | |||||
| "version": 1, | |||||
| "author": "xcode" | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,43 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |||||
| <plist> | |||||
| <dict> | |||||
| <key>LSRequiresIPhoneOS</key> | |||||
| <true/> | |||||
| <key>UIViewControllerBasedStatusBarAppearance</key> | |||||
| <false/> | |||||
| <key>CFBundleExecutable</key> | |||||
| <string>${EXECUTABLE_NAME}</string> | |||||
| <key>CFBundleIdentifier</key> | |||||
| <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> | |||||
| <key>CFBundleName</key> | |||||
| <string>BlocksDrawing</string> | |||||
| <key>CFBundleDisplayName</key> | |||||
| <string>BlocksDrawing</string> | |||||
| <key>CFBundlePackageType</key> | |||||
| <string>APPL</string> | |||||
| <key>CFBundleSignature</key> | |||||
| <string>????</string> | |||||
| <key>CFBundleShortVersionString</key> | |||||
| <string>1.0.0</string> | |||||
| <key>CFBundleVersion</key> | |||||
| <string>1.0.0</string> | |||||
| <key>NSHumanReadableCopyright</key> | |||||
| <string></string> | |||||
| <key>NSHighResolutionCapable</key> | |||||
| <true/> | |||||
| <key>UIRequiresFullScreen</key> | |||||
| <true/> | |||||
| <key>UIStatusBarHidden</key> | |||||
| <true/> | |||||
| <key>UISupportedInterfaceOrientations</key> | |||||
| <array> | |||||
| <string>UIInterfaceOrientationPortrait</string> | |||||
| <string>UIInterfaceOrientationLandscapeLeft</string> | |||||
| <string>UIInterfaceOrientationLandscapeRight</string> | |||||
| </array> | |||||
| <key>UIBackgroundModes</key> | |||||
| <array/> | |||||
| </dict> | |||||
| </plist> | |||||
| @@ -0,0 +1,179 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| There's a section below where you can add your own custom code safely, and the | |||||
| Projucer will preserve the contents of that block, but the best way to change | |||||
| any of these definitions is by using the Projucer's project settings. | |||||
| Any commented-out settings will assume their default values. | |||||
| */ | |||||
| #ifndef __JUCE_APPCONFIG_AA4REI__ | |||||
| #define __JUCE_APPCONFIG_AA4REI__ | |||||
| //============================================================================== | |||||
| // [BEGIN_USER_CODE_SECTION] | |||||
| // (You can add your own code in this section, and the Projucer will not overwrite it) | |||||
| // [END_USER_CODE_SECTION] | |||||
| //============================================================================== | |||||
| #define JUCE_MODULE_AVAILABLE_juce_audio_basics 1 | |||||
| #define JUCE_MODULE_AVAILABLE_juce_audio_devices 1 | |||||
| #define JUCE_MODULE_AVAILABLE_juce_audio_formats 1 | |||||
| #define JUCE_MODULE_AVAILABLE_juce_blocks_basics 1 | |||||
| #define JUCE_MODULE_AVAILABLE_juce_core 1 | |||||
| #define JUCE_MODULE_AVAILABLE_juce_data_structures 1 | |||||
| #define JUCE_MODULE_AVAILABLE_juce_events 1 | |||||
| #define JUCE_MODULE_AVAILABLE_juce_graphics 1 | |||||
| #define JUCE_MODULE_AVAILABLE_juce_gui_basics 1 | |||||
| #define JUCE_MODULE_AVAILABLE_juce_gui_extra 1 | |||||
| #define JUCE_MODULE_AVAILABLE_juce_opengl 1 | |||||
| //============================================================================== | |||||
| #ifndef JUCE_STANDALONE_APPLICATION | |||||
| #ifdef JucePlugin_Build_Standalone | |||||
| #define JUCE_STANDALONE_APPLICATION JucePlugin_Build_Standalone | |||||
| #else | |||||
| #define JUCE_STANDALONE_APPLICATION 1 | |||||
| #endif | |||||
| #endif | |||||
| #define JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED 1 | |||||
| //============================================================================== | |||||
| // juce_audio_devices flags: | |||||
| #ifndef JUCE_ASIO | |||||
| //#define JUCE_ASIO | |||||
| #endif | |||||
| #ifndef JUCE_WASAPI | |||||
| //#define JUCE_WASAPI | |||||
| #endif | |||||
| #ifndef JUCE_WASAPI_EXCLUSIVE | |||||
| //#define JUCE_WASAPI_EXCLUSIVE | |||||
| #endif | |||||
| #ifndef JUCE_DIRECTSOUND | |||||
| //#define JUCE_DIRECTSOUND | |||||
| #endif | |||||
| #ifndef JUCE_ALSA | |||||
| //#define JUCE_ALSA | |||||
| #endif | |||||
| #ifndef JUCE_JACK | |||||
| //#define JUCE_JACK | |||||
| #endif | |||||
| #ifndef JUCE_USE_ANDROID_OPENSLES | |||||
| //#define JUCE_USE_ANDROID_OPENSLES | |||||
| #endif | |||||
| //============================================================================== | |||||
| // juce_audio_formats flags: | |||||
| #ifndef JUCE_USE_FLAC | |||||
| //#define JUCE_USE_FLAC | |||||
| #endif | |||||
| #ifndef JUCE_USE_OGGVORBIS | |||||
| //#define JUCE_USE_OGGVORBIS | |||||
| #endif | |||||
| #ifndef JUCE_USE_MP3AUDIOFORMAT | |||||
| //#define JUCE_USE_MP3AUDIOFORMAT | |||||
| #endif | |||||
| #ifndef JUCE_USE_LAME_AUDIO_FORMAT | |||||
| //#define JUCE_USE_LAME_AUDIO_FORMAT | |||||
| #endif | |||||
| #ifndef JUCE_USE_WINDOWS_MEDIA_FORMAT | |||||
| //#define JUCE_USE_WINDOWS_MEDIA_FORMAT | |||||
| #endif | |||||
| //============================================================================== | |||||
| // juce_core flags: | |||||
| #ifndef JUCE_FORCE_DEBUG | |||||
| //#define JUCE_FORCE_DEBUG | |||||
| #endif | |||||
| #ifndef JUCE_LOG_ASSERTIONS | |||||
| //#define JUCE_LOG_ASSERTIONS | |||||
| #endif | |||||
| #ifndef JUCE_CHECK_MEMORY_LEAKS | |||||
| //#define JUCE_CHECK_MEMORY_LEAKS | |||||
| #endif | |||||
| #ifndef JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES | |||||
| //#define JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES | |||||
| #endif | |||||
| #ifndef JUCE_INCLUDE_ZLIB_CODE | |||||
| //#define JUCE_INCLUDE_ZLIB_CODE | |||||
| #endif | |||||
| #ifndef JUCE_USE_CURL | |||||
| //#define JUCE_USE_CURL | |||||
| #endif | |||||
| #ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS | |||||
| //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS | |||||
| #endif | |||||
| #ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES | |||||
| //#define JUCE_ALLOW_STATIC_NULL_VARIABLES | |||||
| #endif | |||||
| //============================================================================== | |||||
| // juce_graphics flags: | |||||
| #ifndef JUCE_USE_COREIMAGE_LOADER | |||||
| //#define JUCE_USE_COREIMAGE_LOADER | |||||
| #endif | |||||
| #ifndef JUCE_USE_DIRECTWRITE | |||||
| //#define JUCE_USE_DIRECTWRITE | |||||
| #endif | |||||
| //============================================================================== | |||||
| // juce_gui_basics flags: | |||||
| #ifndef JUCE_ENABLE_REPAINT_DEBUGGING | |||||
| //#define JUCE_ENABLE_REPAINT_DEBUGGING | |||||
| #endif | |||||
| #ifndef JUCE_USE_XSHM | |||||
| //#define JUCE_USE_XSHM | |||||
| #endif | |||||
| #ifndef JUCE_USE_XRENDER | |||||
| //#define JUCE_USE_XRENDER | |||||
| #endif | |||||
| #ifndef JUCE_USE_XCURSOR | |||||
| //#define JUCE_USE_XCURSOR | |||||
| #endif | |||||
| //============================================================================== | |||||
| // juce_gui_extra flags: | |||||
| #ifndef JUCE_WEB_BROWSER | |||||
| //#define JUCE_WEB_BROWSER | |||||
| #endif | |||||
| #ifndef JUCE_ENABLE_LIVE_CONSTANT_EDITOR | |||||
| //#define JUCE_ENABLE_LIVE_CONSTANT_EDITOR | |||||
| #endif | |||||
| #endif // __JUCE_APPCONFIG_AA4REI__ | |||||
| @@ -0,0 +1,46 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| This is the header file that your files should include in order to get all the | |||||
| JUCE library headers. You should avoid including the JUCE headers directly in | |||||
| your own source files, because that wouldn't pick up the correct configuration | |||||
| options for your app. | |||||
| */ | |||||
| #ifndef __APPHEADERFILE_AA4REI__ | |||||
| #define __APPHEADERFILE_AA4REI__ | |||||
| #include "AppConfig.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> | |||||
| #include <juce_blocks_basics/juce_blocks_basics.h> | |||||
| #include <juce_core/juce_core.h> | |||||
| #include <juce_data_structures/juce_data_structures.h> | |||||
| #include <juce_events/juce_events.h> | |||||
| #include <juce_graphics/juce_graphics.h> | |||||
| #include <juce_gui_basics/juce_gui_basics.h> | |||||
| #include <juce_gui_extra/juce_gui_extra.h> | |||||
| #include <juce_opengl/juce_opengl.h> | |||||
| #if ! DONT_SET_USING_JUCE_NAMESPACE | |||||
| // If your code uses a lot of JUCE classes, then this will obviously save you | |||||
| // a lot of typing, but can be disabled by setting DONT_SET_USING_JUCE_NAMESPACE. | |||||
| using namespace juce; | |||||
| #endif | |||||
| #if ! JUCE_DONT_DECLARE_PROJECTINFO | |||||
| namespace ProjectInfo | |||||
| { | |||||
| const char* const projectName = "BlocksDrawing"; | |||||
| const char* const versionString = "1.0.0"; | |||||
| const int versionNumber = 0x10000; | |||||
| } | |||||
| #endif | |||||
| #endif // __APPHEADERFILE_AA4REI__ | |||||
| @@ -0,0 +1,12 @@ | |||||
| Important Note!! | |||||
| ================ | |||||
| The purpose of this folder is to contain files that are auto-generated by the Projucer, | |||||
| and ALL files in this folder will be mercilessly DELETED and completely re-written whenever | |||||
| the Projucer saves your project. | |||||
| Therefore, it's a bad idea to make any manual changes to the files in here, or to | |||||
| put any of your own files in here if you don't want to lose them. (Of course you may choose | |||||
| to add the folder's contents to your version-control system so that you can re-merge your own | |||||
| modifications after the Projucer has saved its changes). | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_audio_basics/juce_audio_basics.cpp> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_audio_basics/juce_audio_basics.mm> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_audio_devices/juce_audio_devices.cpp> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_audio_devices/juce_audio_devices.mm> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_audio_formats/juce_audio_formats.cpp> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_audio_formats/juce_audio_formats.mm> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_blocks_basics/juce_blocks_basics.cpp> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_core/juce_core.cpp> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_core/juce_core.mm> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_data_structures/juce_data_structures.cpp> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_data_structures/juce_data_structures.mm> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_events/juce_events.cpp> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_events/juce_events.mm> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_graphics/juce_graphics.cpp> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_graphics/juce_graphics.mm> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_gui_basics/juce_gui_basics.cpp> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_gui_basics/juce_gui_basics.mm> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_gui_extra/juce_gui_extra.cpp> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_gui_extra/juce_gui_extra.mm> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_opengl/juce_opengl.cpp> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_opengl/juce_opengl.mm> | |||||
| @@ -0,0 +1,62 @@ | |||||
| /* | |||||
| ============================================================================== | |||||
| This file was auto-generated! | |||||
| It contains the basic startup code for a Juce application. | |||||
| ============================================================================== | |||||
| */ | |||||
| #include "../JuceLibraryCode/JuceHeader.h" | |||||
| #include "MainComponent.h" | |||||
| //============================================================================== | |||||
| class BlocksDrawingApplication : public JUCEApplication | |||||
| { | |||||
| public: | |||||
| //============================================================================== | |||||
| BlocksDrawingApplication() {} | |||||
| const String getApplicationName() override { return ProjectInfo::projectName; } | |||||
| const String getApplicationVersion() override { return ProjectInfo::versionString; } | |||||
| //============================================================================== | |||||
| void initialise (const String& /*commandLine*/) override { mainWindow = new MainWindow (getApplicationName()); } | |||||
| void shutdown() override { mainWindow = nullptr; } | |||||
| //============================================================================== | |||||
| class MainWindow : public DocumentWindow | |||||
| { | |||||
| public: | |||||
| MainWindow (String name) : DocumentWindow (name, | |||||
| Colours::lightgrey, | |||||
| DocumentWindow::allButtons) | |||||
| { | |||||
| setUsingNativeTitleBar (true); | |||||
| setContentOwned (new MainComponent(), true); | |||||
| centreWithSize (getWidth(), getHeight()); | |||||
| setResizable (true, true); | |||||
| setVisible (true); | |||||
| } | |||||
| void closeButtonPressed() override | |||||
| { | |||||
| JUCEApplication::getInstance()->systemRequestedQuit(); | |||||
| } | |||||
| private: | |||||
| TooltipWindow tooltipWindow; | |||||
| //============================================================================== | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainWindow) | |||||
| }; | |||||
| private: | |||||
| ScopedPointer<MainWindow> mainWindow; | |||||
| }; | |||||
| //============================================================================== | |||||
| START_JUCE_APPLICATION (BlocksDrawingApplication) | |||||
| @@ -0,0 +1,379 @@ | |||||
| #ifndef MAINCOMPONENT_H_INCLUDED | |||||
| #define MAINCOMPONENT_H_INCLUDED | |||||
| #include "../JuceLibraryCode/JuceHeader.h" | |||||
| /** | |||||
| A struct that handles the setup and layout of the DrumPadGridProgram | |||||
| */ | |||||
| struct ColourGrid | |||||
| { | |||||
| ColourGrid (int cols, int rows) | |||||
| : numColumns (cols), | |||||
| numRows (rows) | |||||
| { | |||||
| constructGridFillArray(); | |||||
| } | |||||
| /** Creates a GridFill object for each pad in the grid and sets its colour | |||||
| and fill before adding it to an array of GridFill objects | |||||
| */ | |||||
| void constructGridFillArray() | |||||
| { | |||||
| gridFillArray.clear(); | |||||
| int counter = 0; | |||||
| for (int i = 0; i < numColumns; ++i) | |||||
| { | |||||
| for (int j = 0; j < numRows; ++j) | |||||
| { | |||||
| DrumPadGridProgram::GridFill fill; | |||||
| Colour colourToUse = colourArray.getUnchecked (counter); | |||||
| fill.colour = colourToUse.withBrightness (colourToUse == currentColour ? 1.0 : 0.1); | |||||
| if (colourToUse == Colours::black) | |||||
| fill.fillType = DrumPadGridProgram::GridFill::FillType::hollow; | |||||
| else | |||||
| fill.fillType = DrumPadGridProgram::GridFill::FillType::filled; | |||||
| gridFillArray.add (fill); | |||||
| if (++counter == colourArray.size()) | |||||
| counter = 0; | |||||
| } | |||||
| } | |||||
| } | |||||
| /** Sets which colour should be active for a given touch co-ordinate. Returns | |||||
| true if the colour has changed | |||||
| */ | |||||
| bool setActiveColourForTouch (int x, int y) | |||||
| { | |||||
| bool colourHasChanged = false; | |||||
| int xindex = x / 5; | |||||
| int yindex = y / 5; | |||||
| Colour newColour = colourArray.getUnchecked ((yindex * 3) + xindex); | |||||
| if (currentColour != newColour) | |||||
| { | |||||
| currentColour = newColour; | |||||
| constructGridFillArray(); | |||||
| colourHasChanged = true; | |||||
| } | |||||
| return colourHasChanged; | |||||
| } | |||||
| //============================================================================== | |||||
| int numColumns, numRows; | |||||
| float width, height; | |||||
| Array<DrumPadGridProgram::GridFill> gridFillArray; | |||||
| Array<Colour> colourArray = { Colours::white, Colours::red, Colours::green, Colours::blue, Colours::hotpink, | |||||
| Colours::orange, Colours::magenta, Colours::cyan, Colours::black }; | |||||
| Colour currentColour = Colours::hotpink; | |||||
| //============================================================================== | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ColourGrid) | |||||
| }; | |||||
| /** | |||||
| The main component | |||||
| */ | |||||
| class MainComponent : public Component, | |||||
| public TopologySource::Listener, | |||||
| private TouchSurface::Listener, | |||||
| private ControlButton::Listener, | |||||
| private Timer | |||||
| { | |||||
| public: | |||||
| MainComponent() : layout (3, 3) | |||||
| { | |||||
| setSize (600, 400); | |||||
| activeLeds.clear(); | |||||
| // Register MainContentComponent as a listener to the PhysicalTopologySource object | |||||
| topologySource.addListener (this); | |||||
| } | |||||
| ~MainComponent() | |||||
| { | |||||
| if (activeBlock != nullptr) | |||||
| detachActiveBlock(); | |||||
| } | |||||
| void paint (Graphics& g) override | |||||
| { | |||||
| g.fillAll (Colours::lightgrey); | |||||
| } | |||||
| void resized() override {} | |||||
| /** Overridden from TopologySource::Listener. Called when the topology changes */ | |||||
| void topologyChanged() override | |||||
| { | |||||
| // Reset the activeBlock object | |||||
| if (activeBlock != nullptr) | |||||
| detachActiveBlock(); | |||||
| // Get the array of currently connected Block objects from the PhysicalTopologySource | |||||
| Block::Array blocks = topologySource.getCurrentTopology().blocks; | |||||
| // Iterate over the array of Block objects | |||||
| for (auto b : blocks) | |||||
| { | |||||
| // Find the first Lightpad | |||||
| if (b->getType() == Block::Type::lightPadBlock) | |||||
| { | |||||
| activeBlock = b; | |||||
| // Register MainContentComponent as a listener to the touch surface | |||||
| if (auto surface = activeBlock->getTouchSurface()) | |||||
| surface->addListener (this); | |||||
| // Register MainContentComponent as a listener to any buttons | |||||
| for (auto button : activeBlock->getButtons()) | |||||
| button->addListener (this); | |||||
| // Get the LEDGrid object from the Lightpad and set its program to the program for the current mode | |||||
| if (auto grid = activeBlock->getLEDGrid()) | |||||
| { | |||||
| // Work out scale factors to translate X and Y touches to LED indexes | |||||
| scaleX = (float) (grid->getNumColumns() - 1) / activeBlock->getWidth(); | |||||
| scaleY = (float) (grid->getNumRows() - 1) / activeBlock->getHeight(); | |||||
| setLEDProgram (grid); | |||||
| } | |||||
| break; | |||||
| } | |||||
| } | |||||
| } | |||||
| private: | |||||
| /** Overridden from TouchSurface::Listener. Called when a Touch is received on the Lightpad */ | |||||
| void touchChanged (TouchSurface&, const TouchSurface::Touch& touch) override | |||||
| { | |||||
| // Translate X and Y touch events to LED indexes | |||||
| int xLed = roundToInt (touch.x * scaleX); | |||||
| int yLed = roundToInt (touch.y * scaleY); | |||||
| if (currentMode == colourPalette) | |||||
| { | |||||
| if (layout.setActiveColourForTouch (xLed, yLed)) | |||||
| colourPaletteProgram->setGridFills (layout.numColumns, layout.numRows, layout.gridFillArray); | |||||
| } | |||||
| else if (currentMode == canvas) | |||||
| { | |||||
| drawLEDs ((uint32) xLed, (uint32) yLed, touch.z, layout.currentColour); | |||||
| } | |||||
| } | |||||
| /** Overridden from ControlButton::Listener. Called when a button on the Lightpad is pressed */ | |||||
| void buttonPressed (ControlButton&, Block::Timestamp) override {}; | |||||
| /** Overridden from ControlButton::Listener. Called when a button on the Lightpad is released */ | |||||
| void buttonReleased (ControlButton&, Block::Timestamp) override | |||||
| { | |||||
| if (currentMode == canvas) | |||||
| { | |||||
| // Wait 500ms to see if there is a second press | |||||
| if (! isTimerRunning()) | |||||
| startTimer (500); | |||||
| else | |||||
| doublePress = true; | |||||
| } | |||||
| else if (currentMode == colourPalette) | |||||
| { | |||||
| // Switch to canvas mode and set the LEDGrid program | |||||
| currentMode = canvas; | |||||
| setLEDProgram (activeBlock->getLEDGrid()); | |||||
| } | |||||
| } | |||||
| void timerCallback() override | |||||
| { | |||||
| if (doublePress) | |||||
| { | |||||
| // Clear the LED grid | |||||
| for (uint32 x = 0; x < 15; ++x) | |||||
| for (uint32 y = 0; y < 15; ++ y) | |||||
| canvasProgram->setLED (x, y, Colours::black); | |||||
| // Clear the ActiveLED array | |||||
| activeLeds.clear(); | |||||
| // Reset the doublePress flag | |||||
| doublePress = false; | |||||
| } | |||||
| else | |||||
| { | |||||
| // Switch to colour palette mode and set the LEDGrid program | |||||
| currentMode = colourPalette; | |||||
| setLEDProgram (activeBlock->getLEDGrid()); | |||||
| } | |||||
| stopTimer(); | |||||
| } | |||||
| /** Removes TouchSurface and ControlButton listeners and sets activeBlock to nullptr */ | |||||
| void detachActiveBlock() | |||||
| { | |||||
| if (auto surface = activeBlock->getTouchSurface()) | |||||
| surface->removeListener (this); | |||||
| for (auto button : activeBlock->getButtons()) | |||||
| button->removeListener (this); | |||||
| activeBlock = nullptr; | |||||
| } | |||||
| /** Sets the LEDGrid Program for the selected mode */ | |||||
| void setLEDProgram (LEDGrid* grid) | |||||
| { | |||||
| if (currentMode == canvas) | |||||
| { | |||||
| // Create a new BitmapLEDProgram for the LEDGrid | |||||
| canvasProgram = new BitmapLEDProgram (*grid); | |||||
| // Set the LEDGrid program | |||||
| grid->setProgram (canvasProgram); | |||||
| // Redraw any previously drawn LEDs | |||||
| redrawLEDs(); | |||||
| } | |||||
| else if (currentMode == colourPalette) | |||||
| { | |||||
| // Create a new DrumPadGridProgram for the LEDGrid | |||||
| colourPaletteProgram = new DrumPadGridProgram (*grid); | |||||
| // Set the LEDGrid program | |||||
| grid->setProgram (colourPaletteProgram); | |||||
| // Setup the grid layout | |||||
| colourPaletteProgram->setGridFills (layout.numColumns, layout.numRows, layout.gridFillArray); | |||||
| } | |||||
| } | |||||
| /** Sets an LED on the Lightpad for a given touch co-ordinate and pressure */ | |||||
| void drawLEDs (uint32 x0, uint32 y0, float z, Colour drawColour) | |||||
| { | |||||
| // Check if the activeLeds array already contains an ActiveLED object for this LED | |||||
| int index = -1; | |||||
| for (int i = 0; i < activeLeds.size(); ++i) | |||||
| { | |||||
| if (activeLeds.getReference(i).occupies (x0, y0)) | |||||
| { | |||||
| index = i; | |||||
| break; | |||||
| } | |||||
| } | |||||
| // If the colour is black then just set the LED to black and return | |||||
| if (drawColour == Colours::black) | |||||
| { | |||||
| if (index != -1) | |||||
| { | |||||
| canvasProgram->setLED (x0, y0, Colours::black); | |||||
| activeLeds.remove (index); | |||||
| } | |||||
| return; | |||||
| } | |||||
| // If there is no ActiveLED obejct for this LED then create one, | |||||
| // add it to the array, set the LED on the Block and return | |||||
| if (index == -1) | |||||
| { | |||||
| ActiveLED led; | |||||
| led.x = x0; | |||||
| led.y = y0; | |||||
| led.colour = drawColour; | |||||
| led.brightness = z; | |||||
| activeLeds.add (led); | |||||
| canvasProgram->setLED (led.x, led.y, led.colour.withBrightness (led.brightness)); | |||||
| return; | |||||
| } | |||||
| // Get the ActiveLED object for this LED | |||||
| ActiveLED currentLed = activeLeds.getReference (index); | |||||
| // If the LED colour is the same as the draw colour, add the brightnesses together. | |||||
| // If it is different, blend the colours | |||||
| if (currentLed.colour == drawColour) | |||||
| currentLed.brightness = jmin (currentLed.brightness + z, 1.0f); | |||||
| else | |||||
| currentLed.colour = currentLed.colour.interpolatedWith (drawColour, z); | |||||
| // Set the LED on the Block and change the ActiveLED object in the activeLeds array | |||||
| canvasProgram->setLED (currentLed.x, currentLed.y, currentLed.colour.withBrightness (currentLed.brightness)); | |||||
| activeLeds.set (index, currentLed); | |||||
| } | |||||
| /** Redraws the LEDs on the Lightpad from the activeLeds array */ | |||||
| void redrawLEDs() | |||||
| { | |||||
| // Iterate over the activeLeds array and set the LEDs on the Block | |||||
| for (auto led : activeLeds) | |||||
| canvasProgram->setLED (led.x, led.y, led.colour.withBrightness (led.brightness)); | |||||
| } | |||||
| /** | |||||
| A struct that represents an active LED on the Lightpad. | |||||
| Has a position, colour and brightness. | |||||
| */ | |||||
| struct ActiveLED | |||||
| { | |||||
| uint32 x; | |||||
| uint32 y; | |||||
| Colour colour; | |||||
| float brightness; | |||||
| /** Returns true if this LED occupies the given co-ordiantes */ | |||||
| bool occupies (uint32 xPos, uint32 yPos) const | |||||
| { | |||||
| if (xPos == x && yPos == y) | |||||
| return true; | |||||
| return false; | |||||
| } | |||||
| }; | |||||
| Array<ActiveLED> activeLeds; | |||||
| /** | |||||
| enum for the two modes | |||||
| */ | |||||
| enum DisplayMode | |||||
| { | |||||
| colourPalette = 0, | |||||
| canvas | |||||
| }; | |||||
| DisplayMode currentMode = colourPalette; | |||||
| //============================================================================== | |||||
| BitmapLEDProgram* canvasProgram; | |||||
| DrumPadGridProgram* colourPaletteProgram; | |||||
| ColourGrid layout; | |||||
| PhysicalTopologySource topologySource; | |||||
| Block::Ptr activeBlock; | |||||
| float scaleX = 0.0; | |||||
| float scaleY = 0.0; | |||||
| bool doublePress = false; | |||||
| //============================================================================== | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainComponent) | |||||
| }; | |||||
| #endif // MAINCOMPONENT_H_INCLUDED | |||||
| @@ -0,0 +1,113 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <JUCERPROJECT id="X7eXs7" name="BlocksMonitor" projectType="guiapp" version="1.0.0" | |||||
| bundleIdentifier="com.yourcompany.BlocksInfo" includeBinaryInAppConfig="1" | |||||
| jucerVersion="4.2.4"> | |||||
| <MAINGROUP id="msZ9DB" name="BlocksMonitor"> | |||||
| <GROUP id="{2C318C74-6596-8102-3CA6-602595447F25}" name="Source"> | |||||
| <FILE id="Tw2mMp" name="Main.cpp" compile="1" resource="0" file="Source/Main.cpp"/> | |||||
| <FILE id="lyGFuY" name="BlockComponents.h" compile="0" resource="0" | |||||
| file="Source/BlockComponents.h"/> | |||||
| <FILE id="bXevSG" name="MainComponent.h" compile="0" resource="0" file="Source/MainComponent.h"/> | |||||
| </GROUP> | |||||
| </MAINGROUP> | |||||
| <EXPORTFORMATS> | |||||
| <XCODE_MAC targetFolder="Builds/MacOSX" extraCompilerFlags=""> | |||||
| <CONFIGURATIONS> | |||||
| <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="BlocksMonitor"/> | |||||
| <CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="BlocksMonitor"/> | |||||
| </CONFIGURATIONS> | |||||
| <MODULEPATHS> | |||||
| <MODULEPATH id="juce_core" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_events" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_graphics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_data_structures" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_extra" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_opengl" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_devices" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_formats" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_blocks_basics" path="../../../modules"/> | |||||
| </MODULEPATHS> | |||||
| </XCODE_MAC> | |||||
| <VS2013 targetFolder="Builds/VisualStudio2013"> | |||||
| <CONFIGURATIONS> | |||||
| <CONFIGURATION name="Debug" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit" | |||||
| isDebug="1" optimisation="1" targetName="BlocksMonitor"/> | |||||
| <CONFIGURATION name="Release" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit" | |||||
| isDebug="0" optimisation="3" targetName="BlocksMonitor"/> | |||||
| </CONFIGURATIONS> | |||||
| <MODULEPATHS> | |||||
| <MODULEPATH id="juce_opengl" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_extra" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_graphics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_events" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_data_structures" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_core" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_blocks_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_formats" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_devices" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_basics" path="../../../modules"/> | |||||
| </MODULEPATHS> | |||||
| </VS2013> | |||||
| <VS2015 targetFolder="Builds/VisualStudio2015"> | |||||
| <CONFIGURATIONS> | |||||
| <CONFIGURATION name="Debug" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit" | |||||
| isDebug="1" optimisation="1" targetName="BlocksMonitor"/> | |||||
| <CONFIGURATION name="Release" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit" | |||||
| isDebug="0" optimisation="3" targetName="BlocksMonitor"/> | |||||
| </CONFIGURATIONS> | |||||
| <MODULEPATHS> | |||||
| <MODULEPATH id="juce_opengl" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_extra" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_graphics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_events" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_data_structures" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_core" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_blocks_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_formats" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_devices" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_basics" path="../../../modules"/> | |||||
| </MODULEPATHS> | |||||
| </VS2015> | |||||
| <LINUX_MAKE targetFolder="Builds/LinuxMakefile"> | |||||
| <CONFIGURATIONS> | |||||
| <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="BlocksMonitor"/> | |||||
| <CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="BlocksMonitor"/> | |||||
| </CONFIGURATIONS> | |||||
| <MODULEPATHS> | |||||
| <MODULEPATH id="juce_opengl" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_extra" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_graphics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_events" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_data_structures" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_core" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_blocks_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_formats" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_devices" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_basics" path="../../../modules"/> | |||||
| </MODULEPATHS> | |||||
| </LINUX_MAKE> | |||||
| </EXPORTFORMATS> | |||||
| <MODULES> | |||||
| <MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_blocks_basics" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0"/> | |||||
| </MODULES> | |||||
| <JUCEOPTIONS/> | |||||
| <LIVE_SETTINGS> | |||||
| <OSX/> | |||||
| </LIVE_SETTINGS> | |||||
| </JUCERPROJECT> | |||||
| @@ -0,0 +1,154 @@ | |||||
| # Automatically generated makefile, created by the Projucer | |||||
| # Don't edit this file! Your changes will be overwritten when you re-save the Projucer project! | |||||
| # (this disables dependency generation if multiple architectures are set) | |||||
| DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD) | |||||
| ifndef STRIP | |||||
| STRIP=strip | |||||
| endif | |||||
| ifndef AR | |||||
| AR=ar | |||||
| endif | |||||
| ifndef CONFIG | |||||
| CONFIG=Debug | |||||
| endif | |||||
| ifeq ($(CONFIG),Debug) | |||||
| JUCE_BINDIR := build | |||||
| JUCE_LIBDIR := build | |||||
| JUCE_OBJDIR := build/intermediate/Debug | |||||
| JUCE_OUTDIR := build | |||||
| ifeq ($(TARGET_ARCH),) | |||||
| TARGET_ARCH := -march=native | |||||
| endif | |||||
| JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../../modules | |||||
| JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0 | |||||
| JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11 | |||||
| JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt | |||||
| TARGET := BlocksMonitor | |||||
| BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH) | |||||
| CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR) | |||||
| endif | |||||
| ifeq ($(CONFIG),Release) | |||||
| JUCE_BINDIR := build | |||||
| JUCE_LIBDIR := build | |||||
| JUCE_OBJDIR := build/intermediate/Release | |||||
| JUCE_OUTDIR := build | |||||
| ifeq ($(TARGET_ARCH),) | |||||
| TARGET_ARCH := -march=native | |||||
| endif | |||||
| JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../../modules | |||||
| JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3 | |||||
| JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11 | |||||
| JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -fvisibility=hidden $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt | |||||
| TARGET := BlocksMonitor | |||||
| BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH) | |||||
| CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR) | |||||
| endif | |||||
| OBJECTS := \ | |||||
| $(JUCE_OBJDIR)/Main_90ebc5c2.o \ | |||||
| $(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o \ | |||||
| $(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o \ | |||||
| $(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o \ | |||||
| $(JUCE_OBJDIR)/juce_blocks_basics_d4b203f5.o \ | |||||
| $(JUCE_OBJDIR)/juce_core_75b14332.o \ | |||||
| $(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o \ | |||||
| $(JUCE_OBJDIR)/juce_events_d2be882c.o \ | |||||
| $(JUCE_OBJDIR)/juce_graphics_9c18891e.o \ | |||||
| $(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o \ | |||||
| $(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o \ | |||||
| $(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o \ | |||||
| .PHONY: clean | |||||
| $(JUCE_OUTDIR)/$(TARGET): check-pkg-config $(OBJECTS) $(RESOURCES) | |||||
| @echo Linking BlocksMonitor | |||||
| -@mkdir -p $(JUCE_BINDIR) | |||||
| -@mkdir -p $(JUCE_LIBDIR) | |||||
| -@mkdir -p $(JUCE_OUTDIR) | |||||
| @$(BLDCMD) | |||||
| check-pkg-config: | |||||
| @command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; } | |||||
| @pkg-config --print-errors alsa freetype2 libcurl x11 xext xinerama | |||||
| clean: | |||||
| @echo Cleaning BlocksMonitor | |||||
| @$(CLEANCMD) | |||||
| strip: | |||||
| @echo Stripping BlocksMonitor | |||||
| -@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET) | |||||
| $(JUCE_OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling Main.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_audio_basics.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_audio_devices.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_audio_formats.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_blocks_basics_d4b203f5.o: ../../JuceLibraryCode/juce_blocks_basics.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_blocks_basics.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_core.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_data_structures.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_events.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_graphics.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_gui_basics.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_gui_extra.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o: ../../JuceLibraryCode/juce_opengl.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_opengl.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| -include $(OBJECTS:%.o=%.d) | |||||
| @@ -0,0 +1,29 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |||||
| <plist> | |||||
| <dict> | |||||
| <key>CFBundleExecutable</key> | |||||
| <string>${EXECUTABLE_NAME}</string> | |||||
| <key>CFBundleIconFile</key> | |||||
| <string></string> | |||||
| <key>CFBundleIdentifier</key> | |||||
| <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> | |||||
| <key>CFBundleName</key> | |||||
| <string>BlocksMonitor</string> | |||||
| <key>CFBundleDisplayName</key> | |||||
| <string>BlocksMonitor</string> | |||||
| <key>CFBundlePackageType</key> | |||||
| <string>APPL</string> | |||||
| <key>CFBundleSignature</key> | |||||
| <string>????</string> | |||||
| <key>CFBundleShortVersionString</key> | |||||
| <string>1.0.0</string> | |||||
| <key>CFBundleVersion</key> | |||||
| <string>1.0.0</string> | |||||
| <key>NSHumanReadableCopyright</key> | |||||
| <string></string> | |||||
| <key>NSHighResolutionCapable</key> | |||||
| <true/> | |||||
| </dict> | |||||
| </plist> | |||||
| @@ -0,0 +1,19 @@ | |||||
| Microsoft Visual Studio Solution File, Format Version 11.00 | |||||
| # Visual Studio 2013 | |||||
| Project("{2A58BC08-D4BC-752C-26E3-197C4DF6FFF2}") = "BlocksMonitor", "BlocksMonitor.vcxproj", "{C732A69E-6750-67A4-2834-8CD8A6CDC360}" | |||||
| EndProject | |||||
| Global | |||||
| GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||||
| Debug|Win32 = Debug|Win32 | |||||
| Release|Win32 = Release|Win32 | |||||
| EndGlobalSection | |||||
| GlobalSection(ProjectConfigurationPlatforms) = postSolution | |||||
| {C732A69E-6750-67A4-2834-8CD8A6CDC360}.Debug|Win32.ActiveCfg = Debug|Win32 | |||||
| {C732A69E-6750-67A4-2834-8CD8A6CDC360}.Debug|Win32.Build.0 = Debug|Win32 | |||||
| {C732A69E-6750-67A4-2834-8CD8A6CDC360}.Release|Win32.ActiveCfg = Release|Win32 | |||||
| {C732A69E-6750-67A4-2834-8CD8A6CDC360}.Release|Win32.Build.0 = Release|Win32 | |||||
| EndGlobalSection | |||||
| GlobalSection(SolutionProperties) = preSolution | |||||
| HideSolutionNode = FALSE | |||||
| EndGlobalSection | |||||
| EndGlobal | |||||
| @@ -0,0 +1,29 @@ | |||||
| #ifdef JUCE_USER_DEFINED_RC_FILE | |||||
| #include JUCE_USER_DEFINED_RC_FILE | |||||
| #else | |||||
| #undef WIN32_LEAN_AND_MEAN | |||||
| #define WIN32_LEAN_AND_MEAN | |||||
| #include <windows.h> | |||||
| VS_VERSION_INFO VERSIONINFO | |||||
| FILEVERSION 1,0,0,0 | |||||
| BEGIN | |||||
| BLOCK "StringFileInfo" | |||||
| BEGIN | |||||
| BLOCK "040904E4" | |||||
| BEGIN | |||||
| VALUE "FileDescription", "BlocksMonitor\0" | |||||
| VALUE "FileVersion", "1.0.0\0" | |||||
| VALUE "ProductName", "BlocksMonitor\0" | |||||
| VALUE "ProductVersion", "1.0.0\0" | |||||
| END | |||||
| END | |||||
| BLOCK "VarFileInfo" | |||||
| BEGIN | |||||
| VALUE "Translation", 0x409, 1252 | |||||
| END | |||||
| END | |||||
| #endif | |||||
| @@ -0,0 +1,19 @@ | |||||
| Microsoft Visual Studio Solution File, Format Version 11.00 | |||||
| # Visual Studio 2015 | |||||
| Project("{2A58BC08-D4BC-752C-26E3-197C4DF6FFF2}") = "BlocksMonitor", "BlocksMonitor.vcxproj", "{C732A69E-6750-67A4-2834-8CD8A6CDC360}" | |||||
| EndProject | |||||
| Global | |||||
| GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||||
| Debug|Win32 = Debug|Win32 | |||||
| Release|Win32 = Release|Win32 | |||||
| EndGlobalSection | |||||
| GlobalSection(ProjectConfigurationPlatforms) = postSolution | |||||
| {C732A69E-6750-67A4-2834-8CD8A6CDC360}.Debug|Win32.ActiveCfg = Debug|Win32 | |||||
| {C732A69E-6750-67A4-2834-8CD8A6CDC360}.Debug|Win32.Build.0 = Debug|Win32 | |||||
| {C732A69E-6750-67A4-2834-8CD8A6CDC360}.Release|Win32.ActiveCfg = Release|Win32 | |||||
| {C732A69E-6750-67A4-2834-8CD8A6CDC360}.Release|Win32.Build.0 = Release|Win32 | |||||
| EndGlobalSection | |||||
| GlobalSection(SolutionProperties) = preSolution | |||||
| HideSolutionNode = FALSE | |||||
| EndGlobalSection | |||||
| EndGlobal | |||||
| @@ -0,0 +1,29 @@ | |||||
| #ifdef JUCE_USER_DEFINED_RC_FILE | |||||
| #include JUCE_USER_DEFINED_RC_FILE | |||||
| #else | |||||
| #undef WIN32_LEAN_AND_MEAN | |||||
| #define WIN32_LEAN_AND_MEAN | |||||
| #include <windows.h> | |||||
| VS_VERSION_INFO VERSIONINFO | |||||
| FILEVERSION 1,0,0,0 | |||||
| BEGIN | |||||
| BLOCK "StringFileInfo" | |||||
| BEGIN | |||||
| BLOCK "040904E4" | |||||
| BEGIN | |||||
| VALUE "FileDescription", "BlocksMonitor\0" | |||||
| VALUE "FileVersion", "1.0.0\0" | |||||
| VALUE "ProductName", "BlocksMonitor\0" | |||||
| VALUE "ProductVersion", "1.0.0\0" | |||||
| END | |||||
| END | |||||
| BLOCK "VarFileInfo" | |||||
| BEGIN | |||||
| VALUE "Translation", 0x409, 1252 | |||||
| END | |||||
| END | |||||
| #endif | |||||
| @@ -0,0 +1,179 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| There's a section below where you can add your own custom code safely, and the | |||||
| Projucer will preserve the contents of that block, but the best way to change | |||||
| any of these definitions is by using the Projucer's project settings. | |||||
| Any commented-out settings will assume their default values. | |||||
| */ | |||||
| #ifndef __JUCE_APPCONFIG_X7EXS7__ | |||||
| #define __JUCE_APPCONFIG_X7EXS7__ | |||||
| //============================================================================== | |||||
| // [BEGIN_USER_CODE_SECTION] | |||||
| // (You can add your own code in this section, and the Projucer will not overwrite it) | |||||
| // [END_USER_CODE_SECTION] | |||||
| //============================================================================== | |||||
| #define JUCE_MODULE_AVAILABLE_juce_audio_basics 1 | |||||
| #define JUCE_MODULE_AVAILABLE_juce_audio_devices 1 | |||||
| #define JUCE_MODULE_AVAILABLE_juce_audio_formats 1 | |||||
| #define JUCE_MODULE_AVAILABLE_juce_blocks_basics 1 | |||||
| #define JUCE_MODULE_AVAILABLE_juce_core 1 | |||||
| #define JUCE_MODULE_AVAILABLE_juce_data_structures 1 | |||||
| #define JUCE_MODULE_AVAILABLE_juce_events 1 | |||||
| #define JUCE_MODULE_AVAILABLE_juce_graphics 1 | |||||
| #define JUCE_MODULE_AVAILABLE_juce_gui_basics 1 | |||||
| #define JUCE_MODULE_AVAILABLE_juce_gui_extra 1 | |||||
| #define JUCE_MODULE_AVAILABLE_juce_opengl 1 | |||||
| //============================================================================== | |||||
| #ifndef JUCE_STANDALONE_APPLICATION | |||||
| #ifdef JucePlugin_Build_Standalone | |||||
| #define JUCE_STANDALONE_APPLICATION JucePlugin_Build_Standalone | |||||
| #else | |||||
| #define JUCE_STANDALONE_APPLICATION 1 | |||||
| #endif | |||||
| #endif | |||||
| #define JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED 1 | |||||
| //============================================================================== | |||||
| // juce_audio_devices flags: | |||||
| #ifndef JUCE_ASIO | |||||
| //#define JUCE_ASIO | |||||
| #endif | |||||
| #ifndef JUCE_WASAPI | |||||
| //#define JUCE_WASAPI | |||||
| #endif | |||||
| #ifndef JUCE_WASAPI_EXCLUSIVE | |||||
| //#define JUCE_WASAPI_EXCLUSIVE | |||||
| #endif | |||||
| #ifndef JUCE_DIRECTSOUND | |||||
| //#define JUCE_DIRECTSOUND | |||||
| #endif | |||||
| #ifndef JUCE_ALSA | |||||
| //#define JUCE_ALSA | |||||
| #endif | |||||
| #ifndef JUCE_JACK | |||||
| //#define JUCE_JACK | |||||
| #endif | |||||
| #ifndef JUCE_USE_ANDROID_OPENSLES | |||||
| //#define JUCE_USE_ANDROID_OPENSLES | |||||
| #endif | |||||
| //============================================================================== | |||||
| // juce_audio_formats flags: | |||||
| #ifndef JUCE_USE_FLAC | |||||
| //#define JUCE_USE_FLAC | |||||
| #endif | |||||
| #ifndef JUCE_USE_OGGVORBIS | |||||
| //#define JUCE_USE_OGGVORBIS | |||||
| #endif | |||||
| #ifndef JUCE_USE_MP3AUDIOFORMAT | |||||
| //#define JUCE_USE_MP3AUDIOFORMAT | |||||
| #endif | |||||
| #ifndef JUCE_USE_LAME_AUDIO_FORMAT | |||||
| //#define JUCE_USE_LAME_AUDIO_FORMAT | |||||
| #endif | |||||
| #ifndef JUCE_USE_WINDOWS_MEDIA_FORMAT | |||||
| //#define JUCE_USE_WINDOWS_MEDIA_FORMAT | |||||
| #endif | |||||
| //============================================================================== | |||||
| // juce_core flags: | |||||
| #ifndef JUCE_FORCE_DEBUG | |||||
| //#define JUCE_FORCE_DEBUG | |||||
| #endif | |||||
| #ifndef JUCE_LOG_ASSERTIONS | |||||
| //#define JUCE_LOG_ASSERTIONS | |||||
| #endif | |||||
| #ifndef JUCE_CHECK_MEMORY_LEAKS | |||||
| //#define JUCE_CHECK_MEMORY_LEAKS | |||||
| #endif | |||||
| #ifndef JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES | |||||
| //#define JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES | |||||
| #endif | |||||
| #ifndef JUCE_INCLUDE_ZLIB_CODE | |||||
| //#define JUCE_INCLUDE_ZLIB_CODE | |||||
| #endif | |||||
| #ifndef JUCE_USE_CURL | |||||
| //#define JUCE_USE_CURL | |||||
| #endif | |||||
| #ifndef JUCE_CATCH_UNHANDLED_EXCEPTIONS | |||||
| //#define JUCE_CATCH_UNHANDLED_EXCEPTIONS | |||||
| #endif | |||||
| #ifndef JUCE_ALLOW_STATIC_NULL_VARIABLES | |||||
| //#define JUCE_ALLOW_STATIC_NULL_VARIABLES | |||||
| #endif | |||||
| //============================================================================== | |||||
| // juce_graphics flags: | |||||
| #ifndef JUCE_USE_COREIMAGE_LOADER | |||||
| //#define JUCE_USE_COREIMAGE_LOADER | |||||
| #endif | |||||
| #ifndef JUCE_USE_DIRECTWRITE | |||||
| //#define JUCE_USE_DIRECTWRITE | |||||
| #endif | |||||
| //============================================================================== | |||||
| // juce_gui_basics flags: | |||||
| #ifndef JUCE_ENABLE_REPAINT_DEBUGGING | |||||
| //#define JUCE_ENABLE_REPAINT_DEBUGGING | |||||
| #endif | |||||
| #ifndef JUCE_USE_XSHM | |||||
| //#define JUCE_USE_XSHM | |||||
| #endif | |||||
| #ifndef JUCE_USE_XRENDER | |||||
| //#define JUCE_USE_XRENDER | |||||
| #endif | |||||
| #ifndef JUCE_USE_XCURSOR | |||||
| //#define JUCE_USE_XCURSOR | |||||
| #endif | |||||
| //============================================================================== | |||||
| // juce_gui_extra flags: | |||||
| #ifndef JUCE_WEB_BROWSER | |||||
| //#define JUCE_WEB_BROWSER | |||||
| #endif | |||||
| #ifndef JUCE_ENABLE_LIVE_CONSTANT_EDITOR | |||||
| //#define JUCE_ENABLE_LIVE_CONSTANT_EDITOR | |||||
| #endif | |||||
| #endif // __JUCE_APPCONFIG_X7EXS7__ | |||||
| @@ -0,0 +1,46 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| This is the header file that your files should include in order to get all the | |||||
| JUCE library headers. You should avoid including the JUCE headers directly in | |||||
| your own source files, because that wouldn't pick up the correct configuration | |||||
| options for your app. | |||||
| */ | |||||
| #ifndef __APPHEADERFILE_X7EXS7__ | |||||
| #define __APPHEADERFILE_X7EXS7__ | |||||
| #include "AppConfig.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> | |||||
| #include <juce_blocks_basics/juce_blocks_basics.h> | |||||
| #include <juce_core/juce_core.h> | |||||
| #include <juce_data_structures/juce_data_structures.h> | |||||
| #include <juce_events/juce_events.h> | |||||
| #include <juce_graphics/juce_graphics.h> | |||||
| #include <juce_gui_basics/juce_gui_basics.h> | |||||
| #include <juce_gui_extra/juce_gui_extra.h> | |||||
| #include <juce_opengl/juce_opengl.h> | |||||
| #if ! DONT_SET_USING_JUCE_NAMESPACE | |||||
| // If your code uses a lot of JUCE classes, then this will obviously save you | |||||
| // a lot of typing, but can be disabled by setting DONT_SET_USING_JUCE_NAMESPACE. | |||||
| using namespace juce; | |||||
| #endif | |||||
| #if ! JUCE_DONT_DECLARE_PROJECTINFO | |||||
| namespace ProjectInfo | |||||
| { | |||||
| const char* const projectName = "BlocksMonitor"; | |||||
| const char* const versionString = "1.0.0"; | |||||
| const int versionNumber = 0x10000; | |||||
| } | |||||
| #endif | |||||
| #endif // __APPHEADERFILE_X7EXS7__ | |||||
| @@ -0,0 +1,12 @@ | |||||
| Important Note!! | |||||
| ================ | |||||
| The purpose of this folder is to contain files that are auto-generated by the Projucer, | |||||
| and ALL files in this folder will be mercilessly DELETED and completely re-written whenever | |||||
| the Projucer saves your project. | |||||
| Therefore, it's a bad idea to make any manual changes to the files in here, or to | |||||
| put any of your own files in here if you don't want to lose them. (Of course you may choose | |||||
| to add the folder's contents to your version-control system so that you can re-merge your own | |||||
| modifications after the Projucer has saved its changes). | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_audio_basics/juce_audio_basics.cpp> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_audio_basics/juce_audio_basics.mm> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_audio_devices/juce_audio_devices.cpp> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_audio_devices/juce_audio_devices.mm> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_audio_formats/juce_audio_formats.cpp> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_audio_formats/juce_audio_formats.mm> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_blocks_basics/juce_blocks_basics.cpp> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_core/juce_core.cpp> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_core/juce_core.mm> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_data_structures/juce_data_structures.cpp> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_data_structures/juce_data_structures.mm> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_events/juce_events.cpp> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_events/juce_events.mm> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_graphics/juce_graphics.cpp> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_graphics/juce_graphics.mm> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_gui_basics/juce_gui_basics.cpp> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_gui_basics/juce_gui_basics.mm> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_gui_extra/juce_gui_extra.cpp> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_gui_extra/juce_gui_extra.mm> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_opengl/juce_opengl.cpp> | |||||
| @@ -0,0 +1,9 @@ | |||||
| /* | |||||
| IMPORTANT! This file is auto-generated each time you save your | |||||
| project - if you alter its contents, your changes may be overwritten! | |||||
| */ | |||||
| #include "AppConfig.h" | |||||
| #include <juce_opengl/juce_opengl.mm> | |||||
| @@ -0,0 +1,428 @@ | |||||
| #ifndef BLOCKCOMPONENTS_H_INCLUDED | |||||
| #define BLOCKCOMPONENTS_H_INCLUDED | |||||
| #include "../JuceLibraryCode/JuceHeader.h" | |||||
| //============================================================================== | |||||
| /** | |||||
| Base class that renders a Block on the screen | |||||
| */ | |||||
| class BlockComponent : public Component, | |||||
| public SettableTooltipClient, | |||||
| private TouchSurface::Listener, | |||||
| private ControlButton::Listener, | |||||
| private Timer | |||||
| { | |||||
| public: | |||||
| /** Constructor */ | |||||
| BlockComponent (Block::Ptr blockToUse) | |||||
| : block (blockToUse) | |||||
| { | |||||
| updateStatsAndTooltip(); | |||||
| // Register BlockComponent as a listener to the touch surface | |||||
| if (auto touchSurface = block->getTouchSurface()) | |||||
| touchSurface->addListener (this); | |||||
| // Register BlockComponent as a listener to any buttons | |||||
| for (auto button : block->getButtons()) | |||||
| button->addListener (this); | |||||
| // If this is a Lightpad then set the grid program to be blank | |||||
| if (auto grid = block->getLEDGrid()) | |||||
| grid->setProgram (new BitmapLEDProgram(*grid)); | |||||
| // If this is a Lightpad then redraw it at 25Hz | |||||
| if (block->getType() == Block::lightPadBlock) | |||||
| startTimerHz (25); | |||||
| } | |||||
| /** Destructor */ | |||||
| ~BlockComponent() | |||||
| { | |||||
| // Remove any listeners | |||||
| if (auto touchSurface = block->getTouchSurface()) | |||||
| touchSurface->removeListener (this); | |||||
| for (auto button : block->getButtons()) | |||||
| button->removeListener (this); | |||||
| } | |||||
| /** Called periodically to update the tooltip with inforamtion about the Block */ | |||||
| void updateStatsAndTooltip() | |||||
| { | |||||
| // Get the battery level of this Block and inform any subclasses | |||||
| const float batteryLevel = block->getBatteryLevel(); | |||||
| handleBatteryLevelUpdate (batteryLevel); | |||||
| // Format the tooltip string | |||||
| const String ttString = "Name = " + block->getDeviceDescription() + "\n" | |||||
| + "UID = " + String (block->uid) + "\n" | |||||
| + "Serial number = " + block->serialNumber + "\n" | |||||
| + "Battery level = " + String ((int) (batteryLevel * 100)) + "%" | |||||
| + (block->isBatteryCharging() ? "++" : "--"); | |||||
| // Update the tooltip string if it has changed | |||||
| if (ttString != getTooltip()) | |||||
| setTooltip (ttString); | |||||
| } | |||||
| /** Subclasses should override this to paint the Block object on the screen */ | |||||
| virtual void paint (Graphics&) override = 0; | |||||
| /** Subclasses can override this to receive button down events from the Block */ | |||||
| virtual void handleButtonPressed (ControlButton::ButtonFunction, uint32) {} | |||||
| /** Subclasses can override this to receive button up events from the Block */ | |||||
| virtual void handleButtonReleased (ControlButton::ButtonFunction, uint32) {} | |||||
| /** Subclasses can override this to receive touch events from the Block */ | |||||
| virtual void handleTouchChange (TouchSurface::Touch) {} | |||||
| /** Subclasses can override this to battery level updates from the Block */ | |||||
| virtual void handleBatteryLevelUpdate (float) {} | |||||
| /** The Block object that this class represents */ | |||||
| Block::Ptr block; | |||||
| //============================================================================== | |||||
| /** Returns an integer index corresponding to a physical position on the hardware | |||||
| for each type of Control Block. */ | |||||
| static int controlButtonFunctionToIndex (ControlButton::ButtonFunction f) | |||||
| { | |||||
| static std::initializer_list<ControlButton::ButtonFunction> map[] = | |||||
| {{ControlButton::mode, ControlButton::button0}, | |||||
| {ControlButton::volume, ControlButton::button1}, | |||||
| {ControlButton::scale, ControlButton::button2, ControlButton::click}, | |||||
| {ControlButton::chord, ControlButton::button3, ControlButton::snap}, | |||||
| {ControlButton::arp,ControlButton:: button4, ControlButton::back}, | |||||
| {ControlButton::sustain, ControlButton::button5, ControlButton::playOrPause}, | |||||
| {ControlButton::octave, ControlButton::button6, ControlButton::record}, | |||||
| {ControlButton::love, ControlButton::button7, ControlButton::learn}, | |||||
| {ControlButton::up}, | |||||
| {ControlButton::down}}; | |||||
| for (size_t i = 0; i < (sizeof (map) / sizeof (map[0])); ++i) | |||||
| if (std::find (map[i].begin(), map[i].end(), f) != map[i].end()) | |||||
| return static_cast<int> (i); | |||||
| return -1; | |||||
| } | |||||
| private: | |||||
| /** Used to call repaint() periodically */ | |||||
| void timerCallback() override { repaint(); } | |||||
| /** Overridden from TouchSurface::Listener */ | |||||
| void touchChanged (TouchSurface&, const TouchSurface::Touch& t) override { handleTouchChange (t); } | |||||
| /** Overridden from ControlButton::Listener */ | |||||
| void buttonPressed (ControlButton& b, Block::Timestamp t) override { handleButtonPressed (b.getType(), t); } | |||||
| /** Overridden from ControlButton::Listener */ | |||||
| void buttonReleased (ControlButton& b, Block::Timestamp t) override { handleButtonReleased (b.getType(), t); } | |||||
| //============================================================================== | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (BlockComponent) | |||||
| }; | |||||
| /** | |||||
| Class that renders a Lightpad on the screen | |||||
| */ | |||||
| class LightpadComponent : public BlockComponent | |||||
| { | |||||
| public: | |||||
| LightpadComponent (Block::Ptr blockToUse) | |||||
| : BlockComponent (blockToUse) | |||||
| { | |||||
| } | |||||
| void paint (Graphics& g) override | |||||
| { | |||||
| auto r = getLocalBounds().toFloat(); | |||||
| // clip the drawing area to only draw in the block area | |||||
| { | |||||
| Path clipArea; | |||||
| clipArea.addRoundedRectangle (r, r.getWidth() / 20.0f); | |||||
| g.reduceClipRegion (clipArea); | |||||
| } | |||||
| // Fill a black square for the Lightpad | |||||
| g.fillAll (Colours::black); | |||||
| // size ration between physical and on-screen blocks | |||||
| const Point<float> ratio (r.getWidth() / block->getWidth(), | |||||
| r.getHeight() / block->getHeight()); | |||||
| const float maxCircleSize = block->getWidth() / 3.0f; | |||||
| // iterate over the list of current touches and draw them on the onscreen Block | |||||
| for (auto touch : touches) | |||||
| { | |||||
| const float circleSize = touch.touch.z * maxCircleSize; | |||||
| const Point<float> touchPosition = Point<float> (touch.touch.x, touch.touch.y); | |||||
| const Colour c = colourArray[touch.touch.index]; | |||||
| const Rectangle<float> blob = | |||||
| (Rectangle<float> (circleSize, circleSize).withCentre (touchPosition)) * ratio; | |||||
| const ColourGradient cg = ColourGradient (colourArray[touch.touch.index], blob.getCentreX(), blob.getCentreY(), | |||||
| Colours::transparentBlack, blob.getRight(), blob.getBottom(), | |||||
| true); | |||||
| g.setGradientFill (cg); | |||||
| g.fillEllipse (blob); | |||||
| } | |||||
| } | |||||
| void handleTouchChange (TouchSurface::Touch touch) override { touches.updateTouch (touch); } | |||||
| private: | |||||
| /** An Array of colours to use for touches */ | |||||
| Array<Colour> colourArray = { Colours::red, Colours::blue, Colours::green, | |||||
| Colours::yellow, Colours::white, Colours::hotpink, | |||||
| Colours::mediumpurple }; | |||||
| /** A list of current Touch events */ | |||||
| TouchList<TouchSurface::Touch> touches; | |||||
| //============================================================================== | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (LightpadComponent) | |||||
| }; | |||||
| /** | |||||
| Class that renders a Control Block on the screen | |||||
| */ | |||||
| class ControlBlockComponent : public BlockComponent | |||||
| { | |||||
| public: | |||||
| ControlBlockComponent (Block::Ptr blockToUse) | |||||
| : BlockComponent (blockToUse), | |||||
| numLeds (block->getLEDRow()->getNumLEDs()) | |||||
| { | |||||
| addAndMakeVisible (roundedRectangleButton); | |||||
| // Display the battery level on the LEDRow | |||||
| int numLedsToTurnOn = static_cast<int> (static_cast<float> (numLeds) * block->getBatteryLevel()); | |||||
| // add LEDs | |||||
| LEDComponent* ledComponent; | |||||
| for (int i = 0; i < numLeds; ++i) | |||||
| { | |||||
| ledComponent = new LEDComponent(); | |||||
| ledComponent->setOnState (i < numLedsToTurnOn); | |||||
| addAndMakeVisible (leds.add (ledComponent)); | |||||
| } | |||||
| previousNumLedsOn = numLedsToTurnOn; | |||||
| // add buttons | |||||
| for (int i = 0; i < 8; ++i) | |||||
| addAndMakeVisible (circleButtons[i]); | |||||
| } | |||||
| void resized() override | |||||
| { | |||||
| const auto r = getLocalBounds().reduced (10); | |||||
| const int rowHeight = r.getHeight() / 5; | |||||
| const int ledWidth = (r.getWidth() - 70) / numLeds; | |||||
| const int buttonWidth = (r.getWidth() - 40) / 5; | |||||
| auto row = r; | |||||
| auto ledRow = row.removeFromTop (rowHeight) .withSizeKeepingCentre (r.getWidth(), ledWidth); | |||||
| auto buttonRow1 = row.removeFromTop (rowHeight * 2).withSizeKeepingCentre (r.getWidth(), buttonWidth); | |||||
| auto buttonRow2 = row.removeFromTop (rowHeight * 2).withSizeKeepingCentre (r.getWidth(), buttonWidth); | |||||
| for (int i = 0; i < numLeds; ++i) | |||||
| { | |||||
| leds.getUnchecked (i)->setBounds (ledRow.removeFromLeft (ledWidth).reduced (2)); | |||||
| ledRow.removeFromLeft (5); | |||||
| } | |||||
| for (int i = 0; i < 5; ++i) | |||||
| { | |||||
| circleButtons[i].setBounds (buttonRow1.removeFromLeft (buttonWidth).reduced (2)); | |||||
| buttonRow1.removeFromLeft (10); | |||||
| } | |||||
| for (int i = 5; i < 8; ++i) | |||||
| { | |||||
| circleButtons[i].setBounds (buttonRow2.removeFromLeft (buttonWidth).reduced (2)); | |||||
| buttonRow2.removeFromLeft (10); | |||||
| } | |||||
| roundedRectangleButton.setBounds (buttonRow2); | |||||
| } | |||||
| void paint (Graphics& g) override | |||||
| { | |||||
| const auto r = getLocalBounds().toFloat(); | |||||
| // Fill a black rectangle for the Control Block | |||||
| g.setColour (Colours::black); | |||||
| g.fillRoundedRectangle (r, r.getWidth() / 20.0f); | |||||
| } | |||||
| void handleButtonPressed (ControlButton::ButtonFunction function, uint32) override | |||||
| { | |||||
| displayButtonInteraction (controlButtonFunctionToIndex (function), true); | |||||
| } | |||||
| void handleButtonReleased (ControlButton::ButtonFunction function, uint32) override | |||||
| { | |||||
| displayButtonInteraction (controlButtonFunctionToIndex (function), false); | |||||
| } | |||||
| void handleBatteryLevelUpdate (float batteryLevel) override | |||||
| { | |||||
| // Update the number of LEDs that are on to represent the battery level | |||||
| int numLedsOn = static_cast<int> (static_cast<float> (numLeds) * batteryLevel); | |||||
| if (numLedsOn != previousNumLedsOn) | |||||
| for (int i = 0; i < numLeds; ++i) | |||||
| leds.getUnchecked (i)->setOnState (i < numLedsOn); | |||||
| previousNumLedsOn = numLedsOn; | |||||
| repaint(); | |||||
| } | |||||
| private: | |||||
| /** | |||||
| Base class that renders a Control Block button | |||||
| */ | |||||
| struct ControlBlockSubComponent : public Component, | |||||
| public TooltipClient | |||||
| { | |||||
| ControlBlockSubComponent (Colour componentColourToUse) | |||||
| : componentColour (componentColourToUse), | |||||
| onState (false) | |||||
| {} | |||||
| /** Subclasses should override this to paint the button on the screen */ | |||||
| virtual void paint (Graphics&) override = 0; | |||||
| /** Sets the colour of the button */ | |||||
| void setColour (Colour c) { componentColour = c; } | |||||
| /** Sets the on state of the button */ | |||||
| void setOnState (bool isOn) | |||||
| { | |||||
| onState = isOn; | |||||
| repaint(); | |||||
| } | |||||
| /** Returns the Control Block tooltip */ | |||||
| String getTooltip() override | |||||
| { | |||||
| for (Component* comp = this; comp != nullptr; comp = comp->getParentComponent()) | |||||
| if (SettableTooltipClient* sttc = dynamic_cast<SettableTooltipClient*> (comp)) | |||||
| return sttc->getTooltip(); | |||||
| return String(); | |||||
| } | |||||
| //============================================================================== | |||||
| Colour componentColour; | |||||
| bool onState; | |||||
| //============================================================================== | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ControlBlockSubComponent) | |||||
| }; | |||||
| /** | |||||
| Class that renders a Control Block LED on the screen | |||||
| */ | |||||
| struct LEDComponent : public ControlBlockSubComponent | |||||
| { | |||||
| LEDComponent() : ControlBlockSubComponent (Colours::green) {} | |||||
| void paint (Graphics& g) override | |||||
| { | |||||
| g.setColour (componentColour.withAlpha (onState ? 1.0f : 0.2f)); | |||||
| g.fillEllipse (getLocalBounds().toFloat()); | |||||
| } | |||||
| }; | |||||
| /** | |||||
| Class that renders a Control Block single circular button on the screen | |||||
| */ | |||||
| struct CircleButtonComponent : public ControlBlockSubComponent | |||||
| { | |||||
| CircleButtonComponent() : ControlBlockSubComponent (Colours::blue) {} | |||||
| void paint (Graphics& g) override | |||||
| { | |||||
| g.setColour (componentColour.withAlpha (onState ? 1.0f : 0.2f)); | |||||
| g.fillEllipse (getLocalBounds().toFloat()); | |||||
| } | |||||
| }; | |||||
| /** | |||||
| Class that renders a Control Block rounded rectangular button containing two buttons | |||||
| on the screen | |||||
| */ | |||||
| struct RoundedRectangleButtonComponent : public ControlBlockSubComponent | |||||
| { | |||||
| RoundedRectangleButtonComponent() : ControlBlockSubComponent (Colours::blue) {} | |||||
| void paint (Graphics& g) override | |||||
| { | |||||
| const auto r = getLocalBounds().toFloat(); | |||||
| g.setColour (componentColour.withAlpha (0.2f)); | |||||
| g.fillRoundedRectangle (r.toFloat(), 20.0f); | |||||
| g.setColour (componentColour.withAlpha (1.0f)); | |||||
| // is a button pressed? | |||||
| if (doubleButtonOnState[0] || doubleButtonOnState[1]) | |||||
| { | |||||
| const float semiButtonWidth = r.getWidth() / 2.0f; | |||||
| const auto semiButtonBounds = r.withWidth (semiButtonWidth) | |||||
| .withX (doubleButtonOnState[1] ? semiButtonWidth : 0) | |||||
| .reduced (5.0f, 2.0f); | |||||
| g.fillEllipse (semiButtonBounds); | |||||
| } | |||||
| } | |||||
| void setPressedState (bool isPressed, int button) | |||||
| { | |||||
| doubleButtonOnState[button] = isPressed; | |||||
| repaint(); | |||||
| } | |||||
| private: | |||||
| bool doubleButtonOnState[2] = {false, false}; | |||||
| }; | |||||
| /** Displays a button press or release interaction for a button at a given index */ | |||||
| void displayButtonInteraction (int buttonIndex, bool isPressed) | |||||
| { | |||||
| if (! isPositiveAndBelow (buttonIndex, 10)) | |||||
| return; | |||||
| if (buttonIndex >= 8) | |||||
| roundedRectangleButton.setPressedState (isPressed, buttonIndex == 8); | |||||
| else | |||||
| circleButtons[buttonIndex].setOnState (isPressed); | |||||
| } | |||||
| //============================================================================== | |||||
| int numLeds; | |||||
| OwnedArray<LEDComponent> leds; | |||||
| CircleButtonComponent circleButtons[8]; | |||||
| RoundedRectangleButtonComponent roundedRectangleButton; | |||||
| int previousNumLedsOn; | |||||
| //============================================================================== | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ControlBlockComponent) | |||||
| }; | |||||
| #endif // BLOCKCOMPONENTS_H_INCLUDED | |||||
| @@ -0,0 +1,53 @@ | |||||
| #include "../JuceLibraryCode/JuceHeader.h" | |||||
| #include "MainComponent.h" | |||||
| //============================================================================== | |||||
| class BlocksInfoApplication : public JUCEApplication | |||||
| { | |||||
| public: | |||||
| //============================================================================== | |||||
| BlocksInfoApplication() {} | |||||
| const String getApplicationName() override { return ProjectInfo::projectName; } | |||||
| const String getApplicationVersion() override { return ProjectInfo::versionString; } | |||||
| //============================================================================== | |||||
| void initialise (const String& /*commandLine*/) override { mainWindow = new MainWindow (getApplicationName()); } | |||||
| void shutdown() override { mainWindow = nullptr; } | |||||
| //============================================================================== | |||||
| class MainWindow : public DocumentWindow | |||||
| { | |||||
| public: | |||||
| MainWindow (String name) : DocumentWindow (name, | |||||
| Colours::lightgrey, | |||||
| DocumentWindow::allButtons) | |||||
| { | |||||
| setUsingNativeTitleBar (true); | |||||
| setContentOwned (new MainComponent(), true); | |||||
| centreWithSize (getWidth(), getHeight()); | |||||
| setResizable (true, true); | |||||
| setVisible (true); | |||||
| } | |||||
| void closeButtonPressed() override | |||||
| { | |||||
| JUCEApplication::getInstance()->systemRequestedQuit(); | |||||
| } | |||||
| private: | |||||
| TooltipWindow tooltipWindow; | |||||
| //============================================================================== | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainWindow) | |||||
| }; | |||||
| private: | |||||
| ScopedPointer<MainWindow> mainWindow; | |||||
| }; | |||||
| //============================================================================== | |||||
| START_JUCE_APPLICATION (BlocksInfoApplication) | |||||
| @@ -0,0 +1,154 @@ | |||||
| #ifndef MAINCOMPONENT_H_INCLUDED | |||||
| #define MAINCOMPONENT_H_INCLUDED | |||||
| #include "../JuceLibraryCode/JuceHeader.h" | |||||
| #include "BlockComponents.h" | |||||
| /** | |||||
| The main component where the Block components will be displayed | |||||
| */ | |||||
| class MainComponent : public Component, | |||||
| public TopologySource::Listener, | |||||
| private Timer | |||||
| { | |||||
| public: | |||||
| MainComponent() | |||||
| { | |||||
| setSize (600, 600); | |||||
| noBlocksLabel.setText ("No BLOCKS connected...", dontSendNotification); | |||||
| noBlocksLabel.setJustificationType (Justification::centred); | |||||
| addAndMakeVisible (noBlocksLabel); | |||||
| // Register MainComponent as a listener to the PhysicalTopologySource object | |||||
| topologySource.addListener (this); | |||||
| startTimer (10000); | |||||
| } | |||||
| void paint (Graphics& g) override | |||||
| { | |||||
| g.fillAll (Colours::lightgrey); | |||||
| } | |||||
| void resized() override | |||||
| { | |||||
| noBlocksLabel.setVisible (false); | |||||
| const int numBlockComponents = blockComponents.size(); | |||||
| // If there are no currently connected Blocks then display some text on the screen | |||||
| if (numBlockComponents == 0) | |||||
| { | |||||
| noBlocksLabel.setVisible (true); | |||||
| noBlocksLabel.setBounds (0, (getHeight() / 2) - 50, getWidth(), 100); | |||||
| return; | |||||
| } | |||||
| // Work out the maximum diplay area for each Block | |||||
| const Rectangle<int> bounds = getLocalBounds().reduced (20); | |||||
| auto squareRoot = sqrt (numBlockComponents); | |||||
| int gridSize = (int)squareRoot; | |||||
| if (squareRoot - gridSize > 0) | |||||
| gridSize++; | |||||
| int sideLength = bounds.getWidth() / gridSize; | |||||
| int xCounter = 0; | |||||
| int yCounter = 0; | |||||
| bool hasSpaceForControlBlock = false; | |||||
| Rectangle<int> lastControlBlockBounds; | |||||
| for (auto block : blockComponents) | |||||
| { | |||||
| Rectangle<int> blockBounds; | |||||
| const Block::Type type = block->block->getType(); | |||||
| // Can fit 2 ControlBlockComponents in the space of one LightpadBlockComponent | |||||
| if (type == Block::liveBlock || type == Block::loopBlock) | |||||
| { | |||||
| if (hasSpaceForControlBlock) | |||||
| { | |||||
| blockBounds = lastControlBlockBounds.withY (lastControlBlockBounds.getY() + (int)(sideLength * 0.5)); | |||||
| hasSpaceForControlBlock = false; | |||||
| } | |||||
| else | |||||
| { | |||||
| blockBounds = Rectangle<int> (bounds.getX() + (xCounter * sideLength), bounds.getY() + (yCounter * sideLength), | |||||
| sideLength, (int)(sideLength * 0.5)); | |||||
| hasSpaceForControlBlock = true; | |||||
| lastControlBlockBounds = blockBounds; | |||||
| } | |||||
| } | |||||
| else | |||||
| { | |||||
| blockBounds = Rectangle<int> (bounds.getX() + (xCounter * sideLength), bounds.getY() + (yCounter * sideLength), | |||||
| sideLength, sideLength); | |||||
| } | |||||
| block->setBounds (blockBounds.reduced (5)); | |||||
| if (++xCounter >= gridSize) | |||||
| { | |||||
| yCounter++; | |||||
| xCounter = 0; | |||||
| } | |||||
| } | |||||
| } | |||||
| /** Overridden from TopologySource::Listener, called when the topology changes */ | |||||
| void topologyChanged() override | |||||
| { | |||||
| // Clear the array of Block components | |||||
| blockComponents.clear(); | |||||
| // Get the array of currently connected Block objects from the PhysicalTopologySource | |||||
| Block::Array blocksArray = topologySource.getCurrentTopology().blocks; | |||||
| // Create a BlockComponent object for each Block object | |||||
| for (auto& block : blocksArray) | |||||
| if (BlockComponent* blockComponent = createBlockComponent (block)) | |||||
| addAndMakeVisible (blockComponents.add (blockComponent)); | |||||
| // Update the display | |||||
| resized(); | |||||
| } | |||||
| private: | |||||
| /** Creates a BlockComponent object for a new Block and adds it to the content component */ | |||||
| BlockComponent* createBlockComponent (Block::Ptr newBlock) | |||||
| { | |||||
| const Block::Type type = newBlock->getType(); | |||||
| if (type == Block::lightPadBlock) | |||||
| return new LightpadComponent (newBlock); | |||||
| if (type == Block::loopBlock || type == Block::liveBlock) | |||||
| return new ControlBlockComponent (newBlock); | |||||
| // should only be connecting a Lightpad or Control Block! | |||||
| jassertfalse; | |||||
| return nullptr; | |||||
| } | |||||
| /** Periodically updates the displayed BlockComponent tooltips */ | |||||
| void timerCallback() override | |||||
| { | |||||
| for (auto c : blockComponents) | |||||
| c->updateStatsAndTooltip(); | |||||
| } | |||||
| //============================================================================== | |||||
| PhysicalTopologySource topologySource; | |||||
| OwnedArray<BlockComponent> blockComponents; | |||||
| Label noBlocksLabel; | |||||
| //============================================================================== | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainComponent) | |||||
| }; | |||||
| #endif // MAINCOMPONENT_H_INCLUDED | |||||
| @@ -0,0 +1,112 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <JUCERPROJECT id="XsTycT" name="BlocksSynth" projectType="guiapp" version="1.0.0" | |||||
| bundleIdentifier="com.yourcompany.BlocksSynth" includeBinaryInAppConfig="1" | |||||
| jucerVersion="4.2.4"> | |||||
| <MAINGROUP id="onTNql" name="BlocksSynth"> | |||||
| <GROUP id="{0CEBC63B-4C52-E77F-CD6E-A2E65F0C9B2B}" name="Source"> | |||||
| <GROUP id="{06BF67F9-0F56-6AD3-00A9-443125750AAE}" name="Audio"> | |||||
| <FILE id="SfPbCK" name="Oscillators.h" compile="0" resource="0" file="Source/Oscillators.h"/> | |||||
| <FILE id="K6DQIH" name="Audio.h" compile="0" resource="0" file="Source/Audio.h"/> | |||||
| </GROUP> | |||||
| <FILE id="atp2Hj" name="MainComponent.h" compile="0" resource="0" file="Source/MainComponent.h"/> | |||||
| <FILE id="r82Xw7" name="Main.cpp" compile="1" resource="0" file="Source/Main.cpp"/> | |||||
| </GROUP> | |||||
| </MAINGROUP> | |||||
| <EXPORTFORMATS> | |||||
| <XCODE_MAC targetFolder="Builds/MacOSX" extraCompilerFlags=""> | |||||
| <CONFIGURATIONS> | |||||
| <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="BlocksSynth"/> | |||||
| <CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="BlocksSynth"/> | |||||
| </CONFIGURATIONS> | |||||
| <MODULEPATHS> | |||||
| <MODULEPATH id="juce_core" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_events" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_graphics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_data_structures" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_extra" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_opengl" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_devices" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_formats" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_blocks_basics" path="../../../modules"/> | |||||
| </MODULEPATHS> | |||||
| </XCODE_MAC> | |||||
| <VS2013 targetFolder="Builds/VisualStudio2013"> | |||||
| <CONFIGURATIONS> | |||||
| <CONFIGURATION name="Debug" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit" | |||||
| isDebug="1" optimisation="1" targetName="BlocksSynth"/> | |||||
| <CONFIGURATION name="Release" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit" | |||||
| isDebug="0" optimisation="3" targetName="BlocksSynth"/> | |||||
| </CONFIGURATIONS> | |||||
| <MODULEPATHS> | |||||
| <MODULEPATH id="juce_opengl" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_extra" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_graphics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_events" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_data_structures" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_core" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_blocks_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_formats" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_devices" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_basics" path="../../../modules"/> | |||||
| </MODULEPATHS> | |||||
| </VS2013> | |||||
| <VS2015 targetFolder="Builds/VisualStudio2015"> | |||||
| <CONFIGURATIONS> | |||||
| <CONFIGURATION name="Debug" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit" | |||||
| isDebug="1" optimisation="1" targetName="BlocksSynth"/> | |||||
| <CONFIGURATION name="Release" winWarningLevel="4" generateManifest="1" winArchitecture="32-bit" | |||||
| isDebug="0" optimisation="3" targetName="BlocksSynth"/> | |||||
| </CONFIGURATIONS> | |||||
| <MODULEPATHS> | |||||
| <MODULEPATH id="juce_opengl" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_extra" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_graphics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_events" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_data_structures" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_core" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_blocks_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_formats" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_devices" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_basics" path="../../../modules"/> | |||||
| </MODULEPATHS> | |||||
| </VS2015> | |||||
| <LINUX_MAKE targetFolder="Builds/LinuxMakefile"> | |||||
| <CONFIGURATIONS> | |||||
| <CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="BlocksSynth"/> | |||||
| <CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="BlocksSynth"/> | |||||
| </CONFIGURATIONS> | |||||
| <MODULEPATHS> | |||||
| <MODULEPATH id="juce_opengl" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_extra" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_gui_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_graphics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_events" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_data_structures" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_core" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_blocks_basics" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_formats" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_devices" path="../../../modules"/> | |||||
| <MODULEPATH id="juce_audio_basics" path="../../../modules"/> | |||||
| </MODULEPATHS> | |||||
| </LINUX_MAKE> | |||||
| </EXPORTFORMATS> | |||||
| <MODULES> | |||||
| <MODULE id="juce_audio_basics" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_audio_devices" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_audio_formats" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_blocks_basics" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_core" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_data_structures" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_events" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_graphics" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_gui_basics" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_gui_extra" showAllCode="1" useLocalCopy="0"/> | |||||
| <MODULE id="juce_opengl" showAllCode="1" useLocalCopy="0"/> | |||||
| </MODULES> | |||||
| <JUCEOPTIONS/> | |||||
| </JUCERPROJECT> | |||||
| @@ -0,0 +1,154 @@ | |||||
| # Automatically generated makefile, created by the Projucer | |||||
| # Don't edit this file! Your changes will be overwritten when you re-save the Projucer project! | |||||
| # (this disables dependency generation if multiple architectures are set) | |||||
| DEPFLAGS := $(if $(word 2, $(TARGET_ARCH)), , -MMD) | |||||
| ifndef STRIP | |||||
| STRIP=strip | |||||
| endif | |||||
| ifndef AR | |||||
| AR=ar | |||||
| endif | |||||
| ifndef CONFIG | |||||
| CONFIG=Debug | |||||
| endif | |||||
| ifeq ($(CONFIG),Debug) | |||||
| JUCE_BINDIR := build | |||||
| JUCE_LIBDIR := build | |||||
| JUCE_OBJDIR := build/intermediate/Debug | |||||
| JUCE_OUTDIR := build | |||||
| ifeq ($(TARGET_ARCH),) | |||||
| TARGET_ARCH := -march=native | |||||
| endif | |||||
| JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../../modules | |||||
| JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -g -ggdb -O0 | |||||
| JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11 | |||||
| JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt | |||||
| TARGET := BlocksSynth | |||||
| BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH) | |||||
| CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR) | |||||
| endif | |||||
| ifeq ($(CONFIG),Release) | |||||
| JUCE_BINDIR := build | |||||
| JUCE_LIBDIR := build | |||||
| JUCE_OBJDIR := build/intermediate/Release | |||||
| JUCE_OUTDIR := build | |||||
| ifeq ($(TARGET_ARCH),) | |||||
| TARGET_ARCH := -march=native | |||||
| endif | |||||
| JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa freetype2 libcurl x11 xext xinerama) -pthread -I../../JuceLibraryCode -I../../../../../modules | |||||
| JUCE_CFLAGS += $(CFLAGS) $(JUCE_CPPFLAGS) $(TARGET_ARCH) -O3 | |||||
| JUCE_CXXFLAGS += $(CXXFLAGS) $(JUCE_CFLAGS) -std=c++11 | |||||
| JUCE_LDFLAGS += $(LDFLAGS) $(TARGET_ARCH) -L$(JUCE_BINDIR) -L$(JUCE_LIBDIR) -fvisibility=hidden $(shell pkg-config --libs alsa freetype2 libcurl x11 xext xinerama) -lGL -ldl -lpthread -lrt | |||||
| TARGET := BlocksSynth | |||||
| BLDCMD = $(CXX) -o $(JUCE_OUTDIR)/$(TARGET) $(OBJECTS) $(JUCE_LDFLAGS) $(RESOURCES) $(TARGET_ARCH) | |||||
| CLEANCMD = rm -rf $(JUCE_OUTDIR)/$(TARGET) $(JUCE_OBJDIR) | |||||
| endif | |||||
| OBJECTS := \ | |||||
| $(JUCE_OBJDIR)/Main_90ebc5c2.o \ | |||||
| $(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o \ | |||||
| $(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o \ | |||||
| $(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o \ | |||||
| $(JUCE_OBJDIR)/juce_blocks_basics_d4b203f5.o \ | |||||
| $(JUCE_OBJDIR)/juce_core_75b14332.o \ | |||||
| $(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o \ | |||||
| $(JUCE_OBJDIR)/juce_events_d2be882c.o \ | |||||
| $(JUCE_OBJDIR)/juce_graphics_9c18891e.o \ | |||||
| $(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o \ | |||||
| $(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o \ | |||||
| $(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o \ | |||||
| .PHONY: clean | |||||
| $(JUCE_OUTDIR)/$(TARGET): check-pkg-config $(OBJECTS) $(RESOURCES) | |||||
| @echo Linking BlocksSynth | |||||
| -@mkdir -p $(JUCE_BINDIR) | |||||
| -@mkdir -p $(JUCE_LIBDIR) | |||||
| -@mkdir -p $(JUCE_OUTDIR) | |||||
| @$(BLDCMD) | |||||
| check-pkg-config: | |||||
| @command -v pkg-config >/dev/null 2>&1 || { echo >&2 "pkg-config not installed. Please, install it."; exit 1; } | |||||
| @pkg-config --print-errors alsa freetype2 libcurl x11 xext xinerama | |||||
| clean: | |||||
| @echo Cleaning BlocksSynth | |||||
| @$(CLEANCMD) | |||||
| strip: | |||||
| @echo Stripping BlocksSynth | |||||
| -@$(STRIP) --strip-unneeded $(JUCE_OUTDIR)/$(TARGET) | |||||
| $(JUCE_OBJDIR)/Main_90ebc5c2.o: ../../Source/Main.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling Main.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_audio_basics_6b797ca1.o: ../../JuceLibraryCode/juce_audio_basics.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_audio_basics.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_audio_devices_a742c38b.o: ../../JuceLibraryCode/juce_audio_devices.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_audio_devices.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_audio_formats_5a29c68a.o: ../../JuceLibraryCode/juce_audio_formats.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_audio_formats.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_blocks_basics_d4b203f5.o: ../../JuceLibraryCode/juce_blocks_basics.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_blocks_basics.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_core_75b14332.o: ../../JuceLibraryCode/juce_core.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_core.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_data_structures_72d3da2c.o: ../../JuceLibraryCode/juce_data_structures.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_data_structures.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_events_d2be882c.o: ../../JuceLibraryCode/juce_events.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_events.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_graphics_9c18891e.o: ../../JuceLibraryCode/juce_graphics.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_graphics.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_gui_basics_8a6da59c.o: ../../JuceLibraryCode/juce_gui_basics.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_gui_basics.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_gui_extra_4a026f23.o: ../../JuceLibraryCode/juce_gui_extra.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_gui_extra.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| $(JUCE_OBJDIR)/juce_opengl_cd70b4c2.o: ../../JuceLibraryCode/juce_opengl.cpp | |||||
| -@mkdir -p $(JUCE_OBJDIR) | |||||
| @echo "Compiling juce_opengl.cpp" | |||||
| @$(CXX) $(JUCE_CXXFLAGS) -o "$@" -c "$<" | |||||
| -include $(OBJECTS:%.o=%.d) | |||||
| @@ -0,0 +1,29 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |||||
| <plist> | |||||
| <dict> | |||||
| <key>CFBundleExecutable</key> | |||||
| <string>${EXECUTABLE_NAME}</string> | |||||
| <key>CFBundleIconFile</key> | |||||
| <string></string> | |||||
| <key>CFBundleIdentifier</key> | |||||
| <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> | |||||
| <key>CFBundleName</key> | |||||
| <string>BlocksSynth</string> | |||||
| <key>CFBundleDisplayName</key> | |||||
| <string>BlocksSynth</string> | |||||
| <key>CFBundlePackageType</key> | |||||
| <string>APPL</string> | |||||
| <key>CFBundleSignature</key> | |||||
| <string>????</string> | |||||
| <key>CFBundleShortVersionString</key> | |||||
| <string>1.0.0</string> | |||||
| <key>CFBundleVersion</key> | |||||
| <string>1.0.0</string> | |||||
| <key>NSHumanReadableCopyright</key> | |||||
| <string></string> | |||||
| <key>NSHighResolutionCapable</key> | |||||
| <true/> | |||||
| </dict> | |||||
| </plist> | |||||
| @@ -0,0 +1,19 @@ | |||||
| Microsoft Visual Studio Solution File, Format Version 11.00 | |||||
| # Visual Studio 2013 | |||||
| Project("{1ADF3DE4-36E9-080C-9E5A-03B9A3DA399C}") = "BlocksSynth", "BlocksSynth.vcxproj", "{95CDA882-A3D2-8344-A1B4-E341383A631E}" | |||||
| EndProject | |||||
| Global | |||||
| GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||||
| Debug|Win32 = Debug|Win32 | |||||
| Release|Win32 = Release|Win32 | |||||
| EndGlobalSection | |||||
| GlobalSection(ProjectConfigurationPlatforms) = postSolution | |||||
| {95CDA882-A3D2-8344-A1B4-E341383A631E}.Debug|Win32.ActiveCfg = Debug|Win32 | |||||
| {95CDA882-A3D2-8344-A1B4-E341383A631E}.Debug|Win32.Build.0 = Debug|Win32 | |||||
| {95CDA882-A3D2-8344-A1B4-E341383A631E}.Release|Win32.ActiveCfg = Release|Win32 | |||||
| {95CDA882-A3D2-8344-A1B4-E341383A631E}.Release|Win32.Build.0 = Release|Win32 | |||||
| EndGlobalSection | |||||
| GlobalSection(SolutionProperties) = preSolution | |||||
| HideSolutionNode = FALSE | |||||
| EndGlobalSection | |||||
| EndGlobal | |||||
| @@ -0,0 +1,29 @@ | |||||
| #ifdef JUCE_USER_DEFINED_RC_FILE | |||||
| #include JUCE_USER_DEFINED_RC_FILE | |||||
| #else | |||||
| #undef WIN32_LEAN_AND_MEAN | |||||
| #define WIN32_LEAN_AND_MEAN | |||||
| #include <windows.h> | |||||
| VS_VERSION_INFO VERSIONINFO | |||||
| FILEVERSION 1,0,0,0 | |||||
| BEGIN | |||||
| BLOCK "StringFileInfo" | |||||
| BEGIN | |||||
| BLOCK "040904E4" | |||||
| BEGIN | |||||
| VALUE "FileDescription", "BlocksSynth\0" | |||||
| VALUE "FileVersion", "1.0.0\0" | |||||
| VALUE "ProductName", "BlocksSynth\0" | |||||
| VALUE "ProductVersion", "1.0.0\0" | |||||
| END | |||||
| END | |||||
| BLOCK "VarFileInfo" | |||||
| BEGIN | |||||
| VALUE "Translation", 0x409, 1252 | |||||
| END | |||||
| END | |||||
| #endif | |||||
| @@ -0,0 +1,19 @@ | |||||
| Microsoft Visual Studio Solution File, Format Version 11.00 | |||||
| # Visual Studio 2015 | |||||
| Project("{1ADF3DE4-36E9-080C-9E5A-03B9A3DA399C}") = "BlocksSynth", "BlocksSynth.vcxproj", "{95CDA882-A3D2-8344-A1B4-E341383A631E}" | |||||
| EndProject | |||||
| Global | |||||
| GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||||
| Debug|Win32 = Debug|Win32 | |||||
| Release|Win32 = Release|Win32 | |||||
| EndGlobalSection | |||||
| GlobalSection(ProjectConfigurationPlatforms) = postSolution | |||||
| {95CDA882-A3D2-8344-A1B4-E341383A631E}.Debug|Win32.ActiveCfg = Debug|Win32 | |||||
| {95CDA882-A3D2-8344-A1B4-E341383A631E}.Debug|Win32.Build.0 = Debug|Win32 | |||||
| {95CDA882-A3D2-8344-A1B4-E341383A631E}.Release|Win32.ActiveCfg = Release|Win32 | |||||
| {95CDA882-A3D2-8344-A1B4-E341383A631E}.Release|Win32.Build.0 = Release|Win32 | |||||
| EndGlobalSection | |||||
| GlobalSection(SolutionProperties) = preSolution | |||||
| HideSolutionNode = FALSE | |||||
| EndGlobalSection | |||||
| EndGlobal | |||||