| @@ -639,6 +639,7 @@ | |||||
| 8484E9D8103C95A6008B7C6C /* juce_posix_SharedCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 8484E9D6103C95A6008B7C6C /* juce_posix_SharedCode.h */; }; | 8484E9D8103C95A6008B7C6C /* juce_posix_SharedCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 8484E9D6103C95A6008B7C6C /* juce_posix_SharedCode.h */; }; | ||||
| 8484E9D9103C95A6008B7C6C /* juce_posix_NamedPipe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8484E9D7103C95A6008B7C6C /* juce_posix_NamedPipe.cpp */; }; | 8484E9D9103C95A6008B7C6C /* juce_posix_NamedPipe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8484E9D7103C95A6008B7C6C /* juce_posix_NamedPipe.cpp */; }; | ||||
| 84A63C02107DF286000326FD /* juce_mac_ObjCSuffix.h in Headers */ = {isa = PBXBuildFile; fileRef = 84A63C01107DF286000326FD /* juce_mac_ObjCSuffix.h */; }; | 84A63C02107DF286000326FD /* juce_mac_ObjCSuffix.h in Headers */ = {isa = PBXBuildFile; fileRef = 84A63C01107DF286000326FD /* juce_mac_ObjCSuffix.h */; }; | ||||
| 84D0F00C109B1546007F73A3 /* juce_mac_CoreGraphicsContext.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84D0F00B109B1546007F73A3 /* juce_mac_CoreGraphicsContext.mm */; }; | |||||
| 84F1E6E710403605006A1807 /* juce_Application.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84F1E6DC10403605006A1807 /* juce_Application.cpp */; }; | 84F1E6E710403605006A1807 /* juce_Application.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84F1E6DC10403605006A1807 /* juce_Application.cpp */; }; | ||||
| 84F1E6E810403605006A1807 /* juce_Application.h in Headers */ = {isa = PBXBuildFile; fileRef = 84F1E6DD10403605006A1807 /* juce_Application.h */; }; | 84F1E6E810403605006A1807 /* juce_Application.h in Headers */ = {isa = PBXBuildFile; fileRef = 84F1E6DD10403605006A1807 /* juce_Application.h */; }; | ||||
| 84F1E6E910403605006A1807 /* juce_ApplicationCommandID.h in Headers */ = {isa = PBXBuildFile; fileRef = 84F1E6DE10403605006A1807 /* juce_ApplicationCommandID.h */; }; | 84F1E6E910403605006A1807 /* juce_ApplicationCommandID.h in Headers */ = {isa = PBXBuildFile; fileRef = 84F1E6DE10403605006A1807 /* juce_ApplicationCommandID.h */; }; | ||||
| @@ -1243,6 +1244,7 @@ | |||||
| 8484E9D6103C95A6008B7C6C /* juce_posix_SharedCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = juce_posix_SharedCode.h; path = ../../src/native/common/juce_posix_SharedCode.h; sourceTree = SOURCE_ROOT; }; | 8484E9D6103C95A6008B7C6C /* juce_posix_SharedCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = juce_posix_SharedCode.h; path = ../../src/native/common/juce_posix_SharedCode.h; sourceTree = SOURCE_ROOT; }; | ||||
| 8484E9D7103C95A6008B7C6C /* juce_posix_NamedPipe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = juce_posix_NamedPipe.cpp; path = ../../src/native/common/juce_posix_NamedPipe.cpp; sourceTree = SOURCE_ROOT; }; | 8484E9D7103C95A6008B7C6C /* juce_posix_NamedPipe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = juce_posix_NamedPipe.cpp; path = ../../src/native/common/juce_posix_NamedPipe.cpp; sourceTree = SOURCE_ROOT; }; | ||||
| 84A63C01107DF286000326FD /* juce_mac_ObjCSuffix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = juce_mac_ObjCSuffix.h; sourceTree = "<group>"; }; | 84A63C01107DF286000326FD /* juce_mac_ObjCSuffix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = juce_mac_ObjCSuffix.h; sourceTree = "<group>"; }; | ||||
| 84D0F00B109B1546007F73A3 /* juce_mac_CoreGraphicsContext.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = juce_mac_CoreGraphicsContext.mm; sourceTree = "<group>"; }; | |||||
| 84F1E6DC10403605006A1807 /* juce_Application.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Application.cpp; path = ../../src/application/juce_Application.cpp; sourceTree = SOURCE_ROOT; }; | 84F1E6DC10403605006A1807 /* juce_Application.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = juce_Application.cpp; path = ../../src/application/juce_Application.cpp; sourceTree = SOURCE_ROOT; }; | ||||
| 84F1E6DD10403605006A1807 /* juce_Application.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = juce_Application.h; path = ../../src/application/juce_Application.h; sourceTree = SOURCE_ROOT; }; | 84F1E6DD10403605006A1807 /* juce_Application.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = juce_Application.h; path = ../../src/application/juce_Application.h; sourceTree = SOURCE_ROOT; }; | ||||
| 84F1E6DE10403605006A1807 /* juce_ApplicationCommandID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = juce_ApplicationCommandID.h; path = ../../src/application/juce_ApplicationCommandID.h; sourceTree = SOURCE_ROOT; }; | 84F1E6DE10403605006A1807 /* juce_ApplicationCommandID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = juce_ApplicationCommandID.h; path = ../../src/application/juce_ApplicationCommandID.h; sourceTree = SOURCE_ROOT; }; | ||||
| @@ -1877,6 +1879,7 @@ | |||||
| 8484E9A9103C9595008B7C6C /* juce_mac_CarbonViewWrapperComponent.h */, | 8484E9A9103C9595008B7C6C /* juce_mac_CarbonViewWrapperComponent.h */, | ||||
| 8484E9AA103C9595008B7C6C /* juce_mac_CoreAudio.cpp */, | 8484E9AA103C9595008B7C6C /* juce_mac_CoreAudio.cpp */, | ||||
| 8484E9AB103C9595008B7C6C /* juce_mac_CoreMidi.cpp */, | 8484E9AB103C9595008B7C6C /* juce_mac_CoreMidi.cpp */, | ||||
| 84D0F00B109B1546007F73A3 /* juce_mac_CoreGraphicsContext.mm */, | |||||
| 8484E9AC103C9595008B7C6C /* juce_mac_Debugging.mm */, | 8484E9AC103C9595008B7C6C /* juce_mac_Debugging.mm */, | ||||
| 8484E9AD103C9595008B7C6C /* juce_mac_FileChooser.mm */, | 8484E9AD103C9595008B7C6C /* juce_mac_FileChooser.mm */, | ||||
| 8484E9AE103C9595008B7C6C /* juce_mac_Files.mm */, | 8484E9AE103C9595008B7C6C /* juce_mac_Files.mm */, | ||||
| @@ -4146,6 +4149,7 @@ | |||||
| 84816E5910809D07008FEC33 /* juce_iphone_MessageManager.mm in Sources */, | 84816E5910809D07008FEC33 /* juce_iphone_MessageManager.mm in Sources */, | ||||
| 84816E5A10809D07008FEC33 /* juce_iphone_MiscUtilities.mm in Sources */, | 84816E5A10809D07008FEC33 /* juce_iphone_MiscUtilities.mm in Sources */, | ||||
| 84816E5C10809D07008FEC33 /* juce_iphone_UIViewComponentPeer.mm in Sources */, | 84816E5C10809D07008FEC33 /* juce_iphone_UIViewComponentPeer.mm in Sources */, | ||||
| 84D0F00C109B1546007F73A3 /* juce_mac_CoreGraphicsContext.mm in Sources */, | |||||
| ); | ); | ||||
| runOnlyForDeploymentPostprocessing = 0; | runOnlyForDeploymentPostprocessing = 0; | ||||
| }; | }; | ||||
| @@ -40,10 +40,15 @@ endif | |||||
| OBJECTS := \ | OBJECTS := \ | ||||
| $(OBJDIR)/ApplicationStartup.o \ | $(OBJDIR)/ApplicationStartup.o \ | ||||
| $(OBJDIR)/juce_LibrarySource.o \ | |||||
| $(OBJDIR)/MainDemoWindow.o \ | |||||
| $(OBJDIR)/BinaryData.o \ | $(OBJDIR)/BinaryData.o \ | ||||
| $(OBJDIR)/AudioDemo.o \ | |||||
| $(OBJDIR)/MainDemoWindow.o \ | |||||
| $(OBJDIR)/juce_LibrarySource.o \ | |||||
| $(OBJDIR)/AudioDemoLatencyPage.o \ | |||||
| $(OBJDIR)/AudioDemoPlaybackPage.o \ | |||||
| $(OBJDIR)/AudioDemoRecordPage.o \ | |||||
| $(OBJDIR)/AudioDemoSetupPage.o \ | |||||
| $(OBJDIR)/AudioDemoSynthPage.o \ | |||||
| $(OBJDIR)/AudioDemoTabComponent.o \ | |||||
| $(OBJDIR)/CameraDemo.o \ | $(OBJDIR)/CameraDemo.o \ | ||||
| $(OBJDIR)/DragAndDropDemo.o \ | $(OBJDIR)/DragAndDropDemo.o \ | ||||
| $(OBJDIR)/FontsAndTextDemo.o \ | $(OBJDIR)/FontsAndTextDemo.o \ | ||||
| @@ -102,7 +107,7 @@ $(OBJDIR)/ApplicationStartup.o: ../../src/ApplicationStartup.cpp | |||||
| @echo $(notdir $<) | @echo $(notdir $<) | ||||
| @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | ||||
| $(OBJDIR)/juce_LibrarySource.o: ../../src/juce_LibrarySource.cpp | |||||
| $(OBJDIR)/BinaryData.o: ../../src/BinaryData.cpp | |||||
| -@$(CMD_MKOBJDIR) | -@$(CMD_MKOBJDIR) | ||||
| @echo $(notdir $<) | @echo $(notdir $<) | ||||
| @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | ||||
| @@ -112,12 +117,37 @@ $(OBJDIR)/MainDemoWindow.o: ../../src/MainDemoWindow.cpp | |||||
| @echo $(notdir $<) | @echo $(notdir $<) | ||||
| @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | ||||
| $(OBJDIR)/BinaryData.o: ../../src/BinaryData.cpp | |||||
| $(OBJDIR)/juce_LibrarySource.o: ../../src/juce_LibrarySource.cpp | |||||
| -@$(CMD_MKOBJDIR) | |||||
| @echo $(notdir $<) | |||||
| @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
| $(OBJDIR)/AudioDemoLatencyPage.o: ../../src/demos/AudioDemoLatencyPage.cpp | |||||
| -@$(CMD_MKOBJDIR) | |||||
| @echo $(notdir $<) | |||||
| @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
| $(OBJDIR)/AudioDemoPlaybackPage.o: ../../src/demos/AudioDemoPlaybackPage.cpp | |||||
| -@$(CMD_MKOBJDIR) | |||||
| @echo $(notdir $<) | |||||
| @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
| $(OBJDIR)/AudioDemoRecordPage.o: ../../src/demos/AudioDemoRecordPage.cpp | |||||
| -@$(CMD_MKOBJDIR) | |||||
| @echo $(notdir $<) | |||||
| @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
| $(OBJDIR)/AudioDemoSetupPage.o: ../../src/demos/AudioDemoSetupPage.cpp | |||||
| -@$(CMD_MKOBJDIR) | |||||
| @echo $(notdir $<) | |||||
| @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||||
| $(OBJDIR)/AudioDemoSynthPage.o: ../../src/demos/AudioDemoSynthPage.cpp | |||||
| -@$(CMD_MKOBJDIR) | -@$(CMD_MKOBJDIR) | ||||
| @echo $(notdir $<) | @echo $(notdir $<) | ||||
| @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | ||||
| $(OBJDIR)/AudioDemo.o: ../../src/demos/AudioDemo.cpp | |||||
| $(OBJDIR)/AudioDemoTabComponent.o: ../../src/demos/AudioDemoTabComponent.cpp | |||||
| -@$(CMD_MKOBJDIR) | -@$(CMD_MKOBJDIR) | ||||
| @echo $(notdir $<) | @echo $(notdir $<) | ||||
| @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | ||||
| @@ -45,7 +45,8 @@ | |||||
| //#define JUCE_LOG_ASSERTIONS 1 | //#define JUCE_LOG_ASSERTIONS 1 | ||||
| #define JUCE_WASAPI 1 | #define JUCE_WASAPI 1 | ||||
| //#define JUCE_ASIO 1 | //#define JUCE_ASIO 1 | ||||
| //#define JUCE_ALSA 1 | |||||
| #define JUCE_ALSA 1 | |||||
| #define JUCE_JACK 1 | |||||
| #if JUCE_WINDOWS || JUCE_IPHONE | #if JUCE_WINDOWS || JUCE_IPHONE | ||||
| #define JUCE_QUICKTIME 0 // (This is disabled here by default because on windows it requires the QT SDK, | #define JUCE_QUICKTIME 0 // (This is disabled here by default because on windows it requires the QT SDK, | ||||
| @@ -91,6 +91,12 @@ | |||||
| #define JUCE_ALSA 1 | #define JUCE_ALSA 1 | ||||
| #endif | #endif | ||||
| /** Comment out this macro to disable building of JACK device support on Linux. | |||||
| */ | |||||
| #ifndef JUCE_JACK | |||||
| #define JUCE_JACK 1 | |||||
| #endif | |||||
| //============================================================================= | //============================================================================= | ||||
| /** Comment out this macro if you don't want to enable QuickTime or if you don't | /** Comment out this macro if you don't want to enable QuickTime or if you don't | ||||
| have the SDK installed. | have the SDK installed. | ||||
| @@ -277,6 +277,12 @@ | |||||
| #define JUCE_ALSA 1 | #define JUCE_ALSA 1 | ||||
| #endif | #endif | ||||
| /** Comment out this macro to disable building of JACK device support on Linux. | |||||
| */ | |||||
| #ifndef JUCE_JACK | |||||
| #define JUCE_JACK 1 | |||||
| #endif | |||||
| /** Comment out this macro if you don't want to enable QuickTime or if you don't | /** Comment out this macro if you don't want to enable QuickTime or if you don't | ||||
| have the SDK installed. | have the SDK installed. | ||||
| @@ -38755,6 +38761,11 @@ public: | |||||
| */ | */ | ||||
| const Colour getColour (const int index) const throw(); | const Colour getColour (const int index) const throw(); | ||||
| /** Returns the an interpolated colour at any position along the gradient. | |||||
| @param position the position along the gradient, between 0 and 1 | |||||
| */ | |||||
| const Colour getColourAtPosition (const float position) const throw(); | |||||
| /** Creates a set of interpolated premultiplied ARGB values. | /** Creates a set of interpolated premultiplied ARGB values. | ||||
| The caller must delete the array that is returned using juce_free(). | The caller must delete the array that is returned using juce_free(). | ||||
| @@ -38975,6 +38986,10 @@ public: | |||||
| int newHeight = -1, | int newHeight = -1, | ||||
| const Graphics::ResamplingQuality quality = Graphics::mediumResamplingQuality) const; | const Graphics::ResamplingQuality quality = Graphics::mediumResamplingQuality) const; | ||||
| /** Returns a new single-channel image which is a copy of the alpha-channel of this image. | |||||
| */ | |||||
| virtual Image* createCopyOfAlphaChannel() const; | |||||
| /** Returns the colour of one of the pixels in the image. | /** Returns the colour of one of the pixels in the image. | ||||
| If the co-ordinates given are beyond the image's boundaries, this will | If the co-ordinates given are beyond the image's boundaries, this will | ||||
| @@ -112,6 +112,7 @@ AudioIODeviceType* juce_createAudioIODeviceType_WASAPI(); | |||||
| AudioIODeviceType* juce_createAudioIODeviceType_DirectSound(); | AudioIODeviceType* juce_createAudioIODeviceType_DirectSound(); | ||||
| AudioIODeviceType* juce_createAudioIODeviceType_ASIO(); | AudioIODeviceType* juce_createAudioIODeviceType_ASIO(); | ||||
| AudioIODeviceType* juce_createAudioIODeviceType_ALSA(); | AudioIODeviceType* juce_createAudioIODeviceType_ALSA(); | ||||
| AudioIODeviceType* juce_createAudioIODeviceType_JACK(); | |||||
| void AudioDeviceManager::createAudioDeviceTypes (OwnedArray <AudioIODeviceType>& list) | void AudioDeviceManager::createAudioDeviceTypes (OwnedArray <AudioIODeviceType>& list) | ||||
| { | { | ||||
| @@ -137,6 +138,10 @@ void AudioDeviceManager::createAudioDeviceTypes (OwnedArray <AudioIODeviceType>& | |||||
| #if JUCE_LINUX && JUCE_ALSA | #if JUCE_LINUX && JUCE_ALSA | ||||
| list.add (juce_createAudioIODeviceType_ALSA()); | list.add (juce_createAudioIODeviceType_ALSA()); | ||||
| #endif | #endif | ||||
| #if JUCE_LINUX && JUCE_JACK | |||||
| list.add (juce_createAudioIODeviceType_JACK()); | |||||
| #endif | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -112,6 +112,36 @@ const Colour ColourGradient::getColour (const int index) const throw() | |||||
| return Colour (colours [(index << 1) + 1]); | return Colour (colours [(index << 1) + 1]); | ||||
| } | } | ||||
| const Colour ColourGradient::getColourAtPosition (const float position) const throw() | |||||
| { | |||||
| jassert (colours.getUnchecked (0) == 0); // the first colour specified has to go at position 0 | |||||
| const int integerPos = jlimit (0, 65535, roundFloatToInt (position * 65536.0f)); | |||||
| if (integerPos <= 0 || colours.size() <= 2) | |||||
| return getColour (0); | |||||
| int i = colours.size() - 2; | |||||
| while (integerPos < colours.getUnchecked(i)) | |||||
| i -= 2; | |||||
| if (i >= colours.size() - 2) | |||||
| return Colour (colours.getUnchecked(i)); | |||||
| const int pos1 = colours.getUnchecked (i); | |||||
| PixelARGB pix1 (colours.getUnchecked (i + 1)); | |||||
| pix1.premultiply(); | |||||
| const int pos2 = colours.getUnchecked (i + 2); | |||||
| PixelARGB pix2 (colours.getUnchecked (i + 3)); | |||||
| pix2.premultiply(); | |||||
| pix1.tween (pix2, ((integerPos - pos1) << 8) / (pos2 - pos1)); | |||||
| pix1.unpremultiply(); | |||||
| return Colour (pix1.getARGB()); | |||||
| } | |||||
| //============================================================================== | //============================================================================== | ||||
| PixelARGB* ColourGradient::createLookupTable (int& numEntries) const throw() | PixelARGB* ColourGradient::createLookupTable (int& numEntries) const throw() | ||||
| { | { | ||||
| @@ -116,6 +116,11 @@ public: | |||||
| */ | */ | ||||
| const Colour getColour (const int index) const throw(); | const Colour getColour (const int index) const throw(); | ||||
| /** Returns the an interpolated colour at any position along the gradient. | |||||
| @param position the position along the gradient, between 0 and 1 | |||||
| */ | |||||
| const Colour getColourAtPosition (const float position) const throw(); | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Creates a set of interpolated premultiplied ARGB values. | /** Creates a set of interpolated premultiplied ARGB values. | ||||
| @@ -218,6 +218,43 @@ Image* Image::createCopy (int newWidth, int newHeight, | |||||
| return newImage; | return newImage; | ||||
| } | } | ||||
| Image* Image::createCopyOfAlphaChannel() const | |||||
| { | |||||
| jassert (format != SingleChannel); | |||||
| Image* const newImage = new Image (SingleChannel, imageWidth, imageHeight, false); | |||||
| if (! hasAlphaChannel()) | |||||
| { | |||||
| newImage->clear (0, 0, imageWidth, imageHeight, Colours::black); | |||||
| } | |||||
| else | |||||
| { | |||||
| int dls, dps; | |||||
| uint8* dstData = newImage->lockPixelDataReadWrite (0, 0, imageWidth, imageHeight, dls, dps); | |||||
| int sls, sps; | |||||
| const uint8* srcData = lockPixelDataReadOnly (0, 0, imageWidth, imageHeight, sls, sps); | |||||
| for (int y = 0; y < imageHeight; ++y) | |||||
| { | |||||
| const PixelARGB* src = (const PixelARGB*) (srcData + y * sls); | |||||
| uint8* dst = dstData + y * dls; | |||||
| for (int x = imageWidth; --x >= 0;) | |||||
| { | |||||
| *dst++ = src->getAlpha(); | |||||
| ++src; | |||||
| } | |||||
| } | |||||
| releasePixelDataReadOnly (srcData); | |||||
| newImage->releasePixelDataReadWrite (dstData); | |||||
| } | |||||
| return newImage; | |||||
| } | |||||
| //============================================================================== | //============================================================================== | ||||
| const Colour Image::getPixelAt (const int x, const int y) const | const Colour Image::getPixelAt (const int x, const int y) const | ||||
| { | { | ||||
| @@ -128,6 +128,10 @@ public: | |||||
| int newHeight = -1, | int newHeight = -1, | ||||
| const Graphics::ResamplingQuality quality = Graphics::mediumResamplingQuality) const; | const Graphics::ResamplingQuality quality = Graphics::mediumResamplingQuality) const; | ||||
| /** Returns a new single-channel image which is a copy of the alpha-channel of this image. | |||||
| */ | |||||
| virtual Image* createCopyOfAlphaChannel() const; | |||||
| //============================================================================== | //============================================================================== | ||||
| /** Returns the colour of one of the pixels in the image. | /** Returns the colour of one of the pixels in the image. | ||||
| @@ -104,6 +104,7 @@ BEGIN_JUCE_NAMESPACE | |||||
| #include "linux/juce_linux_Fonts.cpp" | #include "linux/juce_linux_Fonts.cpp" | ||||
| #include "linux/juce_linux_Windowing.cpp" | #include "linux/juce_linux_Windowing.cpp" | ||||
| #include "linux/juce_linux_Audio.cpp" | #include "linux/juce_linux_Audio.cpp" | ||||
| #include "linux/juce_linux_JackAudio.cpp" | |||||
| #include "linux/juce_linux_Midi.cpp" | #include "linux/juce_linux_Midi.cpp" | ||||
| #include "linux/juce_linux_AudioCDReader.cpp" | #include "linux/juce_linux_AudioCDReader.cpp" | ||||
| #include "linux/juce_linux_FileChooser.cpp" | #include "linux/juce_linux_FileChooser.cpp" | ||||
| @@ -107,6 +107,7 @@ BEGIN_JUCE_NAMESPACE | |||||
| #include "mac/juce_iphone_Audio.cpp" | #include "mac/juce_iphone_Audio.cpp" | ||||
| #include "mac/juce_mac_CoreMidi.cpp" | #include "mac/juce_mac_CoreMidi.cpp" | ||||
| #else | #else | ||||
| #include "mac/juce_mac_CoreGraphicsContext.mm" | |||||
| #include "mac/juce_mac_NSViewComponentPeer.mm" | #include "mac/juce_mac_NSViewComponentPeer.mm" | ||||
| #include "mac/juce_mac_MouseCursor.mm" | #include "mac/juce_mac_MouseCursor.mm" | ||||
| #include "mac/juce_mac_NSViewComponent.mm" | #include "mac/juce_mac_NSViewComponent.mm" | ||||
| @@ -111,6 +111,19 @@ | |||||
| #include <alsa/asoundlib.h> | #include <alsa/asoundlib.h> | ||||
| #endif | #endif | ||||
| #if JUCE_JACK | |||||
| /* Got an include error here? If so, you've either not got jack-audio-connection-kit | |||||
| installed, or you've not got your paths set up correctly to find its header files. | |||||
| The package you need to install to get JACK support is "libjack-dev". | |||||
| If you don't have the jack-audio-connection-kit library and don't want to build | |||||
| Juce with low latency audio support, just disable the JUCE_JACK flag in juce_Config.h | |||||
| */ | |||||
| #include <jack/jack.h> | |||||
| //#include <jack/transport.h> | |||||
| #endif | |||||
| #undef SIZEOF | #undef SIZEOF | ||||
| #endif // __JUCE_LINUX_NATIVEINCLUDES_JUCEHEADER__ | #endif // __JUCE_LINUX_NATIVEINCLUDES_JUCEHEADER__ | ||||
| @@ -482,7 +482,6 @@ private: | |||||
| AudioUnitSetProperty (audioUnit, kAudioUnitProperty_AudioChannelLayout, kAudioUnitScope_Input, 0, &layout, sizeof (layout)); | AudioUnitSetProperty (audioUnit, kAudioUnitProperty_AudioChannelLayout, kAudioUnitScope_Input, 0, &layout, sizeof (layout)); | ||||
| AudioUnitSetProperty (audioUnit, kAudioUnitProperty_AudioChannelLayout, kAudioUnitScope_Output, 0, &layout, sizeof (layout)); | AudioUnitSetProperty (audioUnit, kAudioUnitProperty_AudioChannelLayout, kAudioUnitScope_Output, 0, &layout, sizeof (layout)); | ||||
| AURenderCallbackStruct inputProc; | AURenderCallbackStruct inputProc; | ||||
| inputProc.inputProc = processStatic; | inputProc.inputProc = processStatic; | ||||
| inputProc.inputProcRefCon = this; | inputProc.inputProcRefCon = this; | ||||
| @@ -312,15 +312,19 @@ public: | |||||
| lineStride, pixelStride); | lineStride, pixelStride); | ||||
| CGDataProviderRef provider = CGDataProviderCreateWithData (0, imageData, lineStride * pixelStride, 0); | CGDataProviderRef provider = CGDataProviderCreateWithData (0, imageData, lineStride * pixelStride, 0); | ||||
| CGColorSpaceRef colourSpace = CGColorSpaceCreateDeviceRGB(); | |||||
| imageRef = CGImageCreate (width, height, | |||||
| CGImageRef imageRef = CGImageCreate (width, height, | |||||
| 8, pixelStride * 8, lineStride, | 8, pixelStride * 8, lineStride, | ||||
| CGColorSpaceCreateDeviceRGB(), | |||||
| colourSpace, | |||||
| hasAlpha ? (kCGImageAlphaFirst | kCGBitmapByteOrder32Little) : kCGBitmapByteOrderDefault, | hasAlpha ? (kCGImageAlphaFirst | kCGBitmapByteOrder32Little) : kCGBitmapByteOrderDefault, | ||||
| provider, | provider, | ||||
| 0, | 0, | ||||
| true, kCGRenderingIntentDefault); | true, kCGRenderingIntentDefault); | ||||
| CGColorSpaceRelease (colourSpace); | |||||
| CGDataProviderRelease (provider); | |||||
| juceImage.releasePixelDataReadWrite (imageData); | juceImage.releasePixelDataReadWrite (imageData); | ||||
| uiImage = [[UIImage imageWithCGImage: imageRef] retain]; | uiImage = [[UIImage imageWithCGImage: imageRef] retain]; | ||||
| @@ -329,7 +333,7 @@ public: | |||||
| ~JuceUIImage() | ~JuceUIImage() | ||||
| { | { | ||||
| [uiImage release]; | [uiImage release]; | ||||
| CFRelease (imageRef); | |||||
| CGImageRelease (imageRef); | |||||
| } | } | ||||
| Image& getJuceImage() throw() { return juceImage; } | Image& getJuceImage() throw() { return juceImage; } | ||||
| @@ -27,6 +27,8 @@ | |||||
| // compiled on its own). | // compiled on its own). | ||||
| #if JUCE_INCLUDED_FILE | #if JUCE_INCLUDED_FILE | ||||
| #define USE_COREGRAPHICS_RENDERING 1 | |||||
| class NSViewComponentPeer; | class NSViewComponentPeer; | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -1433,6 +1435,11 @@ void NSViewComponentPeer::drawRect (NSRect r) | |||||
| if (r.size.width < 1.0f || r.size.height < 1.0f) | if (r.size.width < 1.0f || r.size.height < 1.0f) | ||||
| return; | return; | ||||
| #if USE_COREGRAPHICS_RENDERING | |||||
| CoreGraphicsContext context ((CGContextRef) [[NSGraphicsContext currentContext] graphicsPort], | |||||
| [view frame].size.height); | |||||
| handlePaint (context); | |||||
| #else | |||||
| const float y = [view frame].size.height - (r.origin.y + r.size.height); | const float y = [view frame].size.height - (r.origin.y + r.size.height); | ||||
| JuceNSImage temp ((int) (r.size.width + 0.5f), | JuceNSImage temp ((int) (r.size.width + 0.5f), | ||||
| @@ -1465,6 +1472,7 @@ void NSViewComponentPeer::drawRect (NSRect r) | |||||
| temp.draw (r.origin.x, r.origin.y, clip, originX, originY); | temp.draw (r.origin.x, r.origin.y, clip, originX, originY); | ||||
| } | } | ||||
| #endif | |||||
| } | } | ||||
| bool NSViewComponentPeer::canBecomeKeyWindow() | bool NSViewComponentPeer::canBecomeKeyWindow() | ||||
| @@ -1511,7 +1519,7 @@ void NSViewComponentPeer::repaint (int x, int y, int w, int h) | |||||
| if (insideDrawRect) | if (insideDrawRect) | ||||
| { | { | ||||
| [view performSelectorOnMainThread: @selector (asyncRepaint:) | |||||
| [view performSelectorOnMainThread: @selector (asyncRepaint:) | |||||
| withObject: [NSData dataWithBytes: &r length: sizeof (r)] | withObject: [NSData dataWithBytes: &r length: sizeof (r)] | ||||
| waitUntilDone: NO]; | waitUntilDone: NO]; | ||||
| } | } | ||||