1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00
This commit is contained in:
jules 2008-07-09 10:54:06 +00:00
parent ac86c4f307
commit bb1ae06606
7 changed files with 233 additions and 271 deletions

View file

@ -1,50 +1,50 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
------------------------------------------------------------------------------
If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.
==============================================================================
*/
#include "../../../src/juce_core/basics/juce_StandardHeader.h"
#include <Cocoa/Cocoa.h>
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
------------------------------------------------------------------------------
If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.
==============================================================================
*/
#include "../../../src/juce_core/basics/juce_StandardHeader.h"
#include <Cocoa/Cocoa.h>
//==============================================================================
BEGIN_JUCE_NAMESPACE
class AutoPool
{
public:
AutoPool() { pool = [[NSAutoreleasePool alloc] init]; }
~AutoPool() { [pool release]; }
private:
NSAutoreleasePool* pool;
};
END_JUCE_NAMESPACE
//==============================================================================
BEGIN_JUCE_NAMESPACE
class AutoPool
{
public:
AutoPool() { pool = [[NSAutoreleasePool alloc] init]; }
~AutoPool() { [pool release]; }
private:
NSAutoreleasePool* pool;
};
END_JUCE_NAMESPACE

View file

@ -441,9 +441,9 @@ void MainHostWindow::showAudioSettings()
AudioDeviceSelectorComponent audioSettingsComp (deviceManager,
0, 256,
0, 256,
true, true);
true, true, true);
audioSettingsComp.setSize (500, 350);
audioSettingsComp.setSize (500, 450);
DialogWindow::showModalDialog (T("Audio Settings"),
&audioSettingsComp,

View file

@ -243,9 +243,9 @@ void StandaloneFilterWindow::showAudioSettingsDialog()
filter->getNumInputChannels(),
filter->getNumOutputChannels(),
filter->getNumOutputChannels(),
true, false);
true, false, true);
selectorComp.setSize (500, 350);
selectorComp.setSize (500, 450);
DialogWindow::showModalDialog (TRANS("Audio Settings"), &selectorComp, this, Colours::lightgrey, true, false, false);
}

View file

@ -132,7 +132,7 @@ public:
currentDemoId (0),
demoSourceCodeText (0)
{
invokeDirectly (showWidgets, true);
invokeDirectly (showAudio, true);
}
~ContentComp()

View file

@ -578,10 +578,11 @@ public:
0, 1,
2, 2,
true,
false);
false,
true);
// ...and show it in a DialogWindow...
audioSettingsComp.setSize (500, 400);
audioSettingsComp.setSize (500, 450);
DialogWindow::showModalDialog (T("Audio Settings"),
&audioSettingsComp,

View file

@ -4236,6 +4236,8 @@ void OutputStream::printf (const char* pf, ...)
const int num = CharacterFunctions::vprintf (buf, bufSize, pf, list);
va_end (list);
if (num > 0)
{
write (buf, num);
@ -20883,7 +20885,7 @@ void AudioDeviceManager::createDeviceTypesIfNeeded()
const OwnedArray <AudioIODeviceType>& AudioDeviceManager::getAvailableDeviceTypes()
{
createDeviceTypesIfNeeded();
scanDevicesIfNeeded();
return availableDeviceTypes;
}
@ -65075,7 +65077,7 @@ public:
}
if (setup.maxNumInputChannels > 0
&& setup.minNumOutputChannels < setup.manager->getCurrentAudioDevice()->getInputChannelNames().size())
&& setup.minNumInputChannels < setup.manager->getCurrentAudioDevice()->getInputChannelNames().size())
{
if (inputChanList == 0)
{
@ -65500,12 +65502,14 @@ AudioDeviceSelectorComponent::AudioDeviceSelectorComponent (AudioDeviceManager&
const int minOutputChannels_,
const int maxOutputChannels_,
const bool showMidiInputOptions,
const bool showMidiOutputSelector)
const bool showMidiOutputSelector,
const bool showChannelsAsStereoPairs_)
: deviceManager (deviceManager_),
minOutputChannels (minOutputChannels_),
maxOutputChannels (maxOutputChannels_),
minInputChannels (minInputChannels_),
maxInputChannels (maxInputChannels_),
showChannelsAsStereoPairs (showChannelsAsStereoPairs_),
deviceTypeDropDown (0),
deviceTypeDropDownLabel (0),
audioDeviceSettingsComp (0)
@ -65674,7 +65678,7 @@ void AudioDeviceSelectorComponent::changeListenerCallback (void*)
details.maxNumInputChannels = maxInputChannels;
details.minNumOutputChannels = minOutputChannels;
details.maxNumOutputChannels = maxOutputChannels;
details.useStereoPairs = true;
details.useStereoPairs = showChannelsAsStereoPairs;
audioDeviceSettingsComp = new AudioDeviceSettingsPanel (type, details);
@ -244412,9 +244416,7 @@ END_JUCE_NAMESPACE
// As well as being for the mac, this file is included by the linux build.
#if JUCE_MAC
#include <Carbon/Carbon.h>
#else
#if ! JUCE_MAC
#include <sys/wait.h>
#include <errno.h>
#include <unistd.h>
@ -251285,7 +251287,6 @@ END_JUCE_NAMESPACE
#include <utime.h>
#include <pwd.h>
#include <fcntl.h>
#include <Carbon/Carbon.h>
BEGIN_JUCE_NAMESPACE
@ -252494,9 +252495,7 @@ END_JUCE_NAMESPACE
// As well as being for the mac, this file is included by the linux build.
#if JUCE_MAC
#include <Carbon/Carbon.h>
#else
#if ! JUCE_MAC
#include <sys/wait.h>
#include <errno.h>
#include <unistd.h>
@ -252691,7 +252690,6 @@ END_JUCE_NAMESPACE
/********* Start of inlined file: juce_mac_SystemStats.mm *********/
#include <AppKit/AppKit.h>
#include <Carbon/Carbon.h>
#include <CoreAudio/HostTime.h>
#include <ctime>
#include <sys/resource.h>
@ -252814,13 +252812,6 @@ void SystemStats::initialiseStats() throw()
highResTimerFrequency = (int64) AudioGetHostClockFrequency();
#if ! JUCE_ONLY_BUILD_CORE_LIBRARY
if (JUCEApplication::getInstance() != 0)
RegisterAppearanceClient();
#endif
TXNInitTextension (0, 0, kTXNWantMoviesMask | kTXNWantGraphicsMask);
String s (SystemStats::getJUCEVersion());
rlimit lim;
@ -253105,7 +253096,25 @@ END_JUCE_NAMESPACE
/********* Start of inlined file: juce_mac_Network.mm *********/
/********* Start of inlined file: juce_mac_NativeHeaders.h *********/
#include <Cocoa/Cocoa.h>
BEGIN_JUCE_NAMESPACE
class AutoPool
{
public:
AutoPool() { pool = [[NSAutoreleasePool alloc] init]; }
~AutoPool() { [pool release]; }
private:
NSAutoreleasePool* pool;
};
END_JUCE_NAMESPACE
/********* End of inlined file: juce_mac_NativeHeaders.h *********/
#include <IOKit/IOKitLib.h>
#include <IOKit/network/IOEthernetInterface.h>
#include <IOKit/network/IONetworkInterface.h>
@ -253568,16 +253577,6 @@ int SystemStats::getMACAddresses (int64* addresses, int maxNum, const bool littl
return numResults;
}
class AutoPool
{
public:
AutoPool() { pool = [[NSAutoreleasePool alloc] init]; }
~AutoPool() { [pool release]; }
private:
NSAutoreleasePool* pool;
};
bool PlatformUtilities::launchEmailWithAttachments (const String& targetEmailAddress,
const String& emailSubject,
const String& bodyText,
@ -253627,9 +253626,27 @@ END_JUCE_NAMESPACE
/********* Start of inlined file: juce_mac_AudioCDBurner.mm *********/
/********* Start of inlined file: juce_mac_NativeHeaders.h *********/
#include <Cocoa/Cocoa.h>
BEGIN_JUCE_NAMESPACE
class AutoPool
{
public:
AutoPool() { pool = [[NSAutoreleasePool alloc] init]; }
~AutoPool() { [pool release]; }
private:
NSAutoreleasePool* pool;
};
END_JUCE_NAMESPACE
/********* End of inlined file: juce_mac_NativeHeaders.h *********/
#if JUCE_USE_CDBURNER
#import <Cocoa/Cocoa.h>
#import <DiscRecording/DiscRecording.h>
BEGIN_JUCE_NAMESPACE
@ -253921,33 +253938,29 @@ BEGIN_JUCE_NAMESPACE
AudioCDBurner::AudioCDBurner (const int deviceIndex)
: internal (0)
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
const AutoPool pool;
OpenDiskDevice* dev = [[OpenDiskDevice alloc] initWithDevice: [[DRDevice devices] objectAtIndex: deviceIndex]];
internal = (void*) dev;
[pool release];
}
AudioCDBurner::~AudioCDBurner()
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
const AutoPool pool;
OpenDiskDevice* dev = (OpenDiskDevice*) internal;
if (dev != 0)
[dev release];
[pool release];
}
AudioCDBurner* AudioCDBurner::openDevice (const int deviceIndex)
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
const AutoPool pool;
AudioCDBurner* b = new AudioCDBurner (deviceIndex);
if (b->internal == 0)
deleteAndZero (b);
[pool release];
return b;
}
@ -253974,14 +253987,13 @@ static NSArray* findDiskBurnerDevices()
const StringArray AudioCDBurner::findAvailableDevices()
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
const AutoPool pool;
NSArray* names = findDiskBurnerDevices();
StringArray s;
for (int i = 0; i < [names count]; ++i)
s.add (String::fromUTF8 ((juce::uint8*) [[names objectAtIndex: i] UTF8String]));
[pool release];
return s;
}
@ -254001,17 +254013,15 @@ int AudioCDBurner::getNumAvailableAudioBlocks() const
bool AudioCDBurner::addAudioTrack (AudioSource* source, int numSamps)
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
const AutoPool pool;
OpenDiskDevice* dev = (OpenDiskDevice*) internal;
if (dev != 0)
{
[dev addSourceTrack: source numSamples: numSamps];
[pool release];
return true;
}
[pool release];
return false;
}
@ -254019,7 +254029,7 @@ const String AudioCDBurner::burn (juce::AudioCDBurner::BurnProgressListener* lis
const bool ejectDiscAfterwards,
const bool peformFakeBurnForTesting)
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
const AutoPool pool;
juce::String error ("Couldn't open or write to the CD device");
OpenDiskDevice* dev = (OpenDiskDevice*) internal;
@ -254033,7 +254043,6 @@ const String AudioCDBurner::burn (juce::AudioCDBurner::BurnProgressListener* lis
isFake: peformFakeBurnForTesting];
}
[pool release];
return error;
}
@ -255826,7 +255835,26 @@ END_JUCE_NAMESPACE
/********* End of inlined file: juce_mac_CoreMidi.cpp *********/
/********* Start of inlined file: juce_mac_FileChooser.mm *********/
/********* Start of inlined file: juce_mac_NativeHeaders.h *********/
#include <Cocoa/Cocoa.h>
BEGIN_JUCE_NAMESPACE
class AutoPool
{
public:
AutoPool() { pool = [[NSAutoreleasePool alloc] init]; }
~AutoPool() { [pool release]; }
private:
NSAutoreleasePool* pool;
};
END_JUCE_NAMESPACE
/********* End of inlined file: juce_mac_NativeHeaders.h *********/
#include <fnmatch.h>
BEGIN_JUCE_NAMESPACE
@ -255896,6 +255924,8 @@ void FileChooser::showPlatformDialog (OwnedArray<File>& results,
bool selectMultipleFiles,
FilePreviewComponent* extraInfoComponent)
{
const AutoPool pool;
StringArray* filters = new StringArray();
filters->addTokens (filter.replaceCharacters (T(",:"), T(";;")), T(";"), 0);
filters->trim();
@ -255943,7 +255973,7 @@ void FileChooser::showPlatformDialog (OwnedArray<File>& results,
END_JUCE_NAMESPACE
/********* End of inlined file: juce_mac_FileChooser.mm *********/
/********* Start of inlined file: juce_mac_Fonts.cpp *********/
/********* Start of inlined file: juce_mac_Fonts.mm *********/
#include <ApplicationServices/ApplicationServices.h>
@ -256442,9 +256472,9 @@ void Font::getDefaultFontNames (String& defaultSans, String& defaultSerif, Strin
}
END_JUCE_NAMESPACE
/********* End of inlined file: juce_mac_Fonts.cpp *********/
/********* End of inlined file: juce_mac_Fonts.mm *********/
/********* Start of inlined file: juce_mac_Messaging.cpp *********/
/********* Start of inlined file: juce_mac_Messaging.mm *********/
#include <Carbon/Carbon.h>
@ -256750,7 +256780,7 @@ void* MessageManager::callFunctionOnMessageThread (MessageCallbackFunction* call
}
END_JUCE_NAMESPACE
/********* End of inlined file: juce_mac_Messaging.cpp *********/
/********* End of inlined file: juce_mac_Messaging.mm *********/
/********* Start of inlined file: juce_mac_WebBrowserComponent.mm *********/
@ -257159,9 +257189,10 @@ bool WebBrowserComponent::pageAboutToLoad (const String& url)
END_JUCE_NAMESPACE
/********* End of inlined file: juce_mac_WebBrowserComponent.mm *********/
/********* Start of inlined file: juce_mac_Windowing.cpp *********/
/********* Start of inlined file: juce_mac_Windowing.mm *********/
#include <Carbon/Carbon.h>
#include <Cocoa/Cocoa.h>
#include <IOKit/IOKitLib.h>
#include <IOKit/IOCFPlugIn.h>
#include <IOKit/hid/IOHIDLib.h>
@ -259550,204 +259581,152 @@ void juce_updateMultiMonitorInfo (Array <Rectangle>& monitorCoords, const bool c
monitorCoords.add (Rectangle (0, 0, 1024, 768));
}
struct CursorWrapper
static NSImage* juceImageToNSImage (const Image& image)
{
Cursor* cursor;
ThemeCursor themeCursor;
};
int lineStride, pixelStride;
const uint8* pixels = image.lockPixelDataReadOnly (0, 0, image.getWidth(), image.getHeight(),
lineStride, pixelStride);
NSBitmapImageRep* rep = [[NSBitmapImageRep alloc]
initWithBitmapDataPlanes: NULL
pixelsWide: image.getWidth()
pixelsHigh: image.getHeight()
bitsPerSample: 8
samplesPerPixel: image.hasAlphaChannel() ? 4 : 3
hasAlpha: image.hasAlphaChannel()
isPlanar: NO
colorSpaceName: NSCalibratedRGBColorSpace
bitmapFormat: 0
bytesPerRow: lineStride
bitsPerPixel: pixelStride * 8];
unsigned char* newData = [rep bitmapData];
memcpy (newData, pixels, lineStride * image.getHeight());
image.releasePixelDataReadOnly (pixels);
NSImage* im = [[NSImage alloc] init];
[im addRepresentation: rep];
[rep release];
return im;
}
void* juce_createMouseCursorFromImage (const Image& image, int hotspotX, int hotspotY) throw()
{
const int maxW = 16;
const int maxH = 16;
NSImage* im = juceImageToNSImage (image);
[im autorelease];
const Image* im = &image;
Image* newIm = 0;
NSPoint hs;
hs.x = (int) hotspotX;
hs.y = (int) hotspotY;
if (image.getWidth() > maxW || image.getHeight() > maxH)
{
im = newIm = image.createCopy (maxW, maxH);
hotspotX = (hotspotX * maxW) / image.getWidth();
hotspotY = (hotspotY * maxH) / image.getHeight();
}
Cursor* const c = new Cursor();
c->hotSpot.h = hotspotX;
c->hotSpot.v = hotspotY;
for (int y = 0; y < maxH; ++y)
{
c->data[y] = 0;
c->mask[y] = 0;
for (int x = 0; x < maxW; ++x)
{
const Colour pixelColour (im->getPixelAt (15 - x, y));
if (pixelColour.getAlpha() > 0.5f)
{
c->mask[y] |= (1 << x);
if (pixelColour.getBrightness() < 0.5f)
c->data[y] |= (1 << x);
}
}
c->data[y] = CFSwapInt16BigToHost (c->data[y]);
c->mask[y] = CFSwapInt16BigToHost (c->mask[y]);
}
if (newIm != 0)
delete newIm;
CursorWrapper* const cw = new CursorWrapper();
cw->cursor = c;
cw->themeCursor = kThemeArrowCursor;
return (void*) cw;
NSCursor* c = [[NSCursor alloc] initWithImage: im hotSpot: hs];
return (void*) c;
}
static void* cursorFromData (const unsigned char* data, const int size, int hx, int hy) throw()
static void* juce_cursorFromData (const unsigned char* data, const int size, float hx, float hy) throw()
{
Image* const im = ImageFileFormat::loadFrom ((const char*) data, size);
jassert (im != 0);
void* curs = juce_createMouseCursorFromImage (*im, hx, hy);
if (im == 0)
return 0;
void* const curs = juce_createMouseCursorFromImage (*im,
(int) (hx * im->getWidth()),
(int) (hy * im->getHeight()));
delete im;
return curs;
}
const unsigned int kSpecialNoCursor = 'nocr';
static void* juce_cursorFromWebKitFile (const char* filename, float hx, float hy)
{
File f ("/System/Library/Frameworks/WebKit.framework/Frameworks/WebCore.framework/Resources");
MemoryBlock mb;
if (f.getChildFile (filename).loadFileAsData (mb))
return juce_cursorFromData ((const unsigned char*) mb.getData(), mb.getSize(), hx, hy);
return 0;
}
void* juce_createStandardMouseCursor (MouseCursor::StandardCursorType type) throw()
{
ThemeCursor cursorId = kThemeArrowCursor;
NSCursor* c = 0;
switch (type)
{
case MouseCursor::NormalCursor:
cursorId = kThemeArrowCursor;
c = [NSCursor arrowCursor];
break;
case MouseCursor::NoCursor:
cursorId = kSpecialNoCursor;
break;
{
Image blank (Image::ARGB, 8, 8, true);
return juce_createMouseCursorFromImage (blank, 0, 0);
}
case MouseCursor::DraggingHandCursor:
{
static const unsigned char cursData[] = {71,73,70,56,57,97,16,0,16,0,145,2,0,0,0,0,255,255,255,0,
0,0,0,0,0,33,249,4,1,0,0,2,0,44,0,0,0,0,16,0,
16,0,0,2,52,148,47,0,200,185,16,130,90,12,74,139,107,84,123,39,
132,117,151,116,132,146,248,60,209,138,98,22,203,114,34,236,37,52,77,217,
247,154,191,119,110,240,193,128,193,95,163,56,60,234,98,135,2,0,59 };
const int cursDataSize = 99;
return cursorFromData (cursData, cursDataSize, 8, 8);
}
c = [NSCursor openHandCursor];
break;
case MouseCursor::CopyingCursor:
cursorId = kThemeCopyArrowCursor;
break;
return juce_cursorFromWebKitFile ("copyCursor.png", 0, 0);
case MouseCursor::WaitCursor:
cursorId = kThemeWatchCursor;
c = [NSCursor arrowCursor]; // avoid this on the mac, let the OS provide the beachball
break;
//return juce_cursorFromWebKitFile ("waitCursor.png", 0.5f, 0.5f);
case MouseCursor::IBeamCursor:
cursorId = kThemeIBeamCursor;
c = [NSCursor IBeamCursor];
break;
case MouseCursor::PointingHandCursor:
cursorId = kThemePointingHandCursor;
c = [NSCursor pointingHandCursor];
break;
case MouseCursor::LeftRightResizeCursor:
case MouseCursor::LeftEdgeResizeCursor:
case MouseCursor::RightEdgeResizeCursor:
{
static const unsigned char cursData[] = {71,73,70,56,57,97,16,0,16,0,145,0,0,255,255,255,0,0,0,255,
255,255,0,0,0,33,249,4,1,0,0,2,0,44,0,0,0,0,16,0,
16,0,0,2,38,148,143,169,203,237,15,19,0,106,202,64,111,22,32,224,
9,78,30,213,121,230,121,146,99,8,142,71,183,189,152,20,27,86,132,231,
58,83,0,0,59 };
const int cursDataSize = 85;
c = [NSCursor resizeLeftRightCursor];
break;
return cursorFromData (cursData, cursDataSize, 8, 8);
}
case MouseCursor::LeftEdgeResizeCursor:
c = [NSCursor resizeLeftCursor];
break;
case MouseCursor::RightEdgeResizeCursor:
c = [NSCursor resizeRightCursor];
break;
case MouseCursor::UpDownResizeCursor:
case MouseCursor::TopEdgeResizeCursor:
case MouseCursor::BottomEdgeResizeCursor:
{
static const unsigned char cursData[] = {71,73,70,56,57,97,16,0,16,0,145,0,0,255,255,255,0,0,0,255,
255,255,0,0,0,33,249,4,1,0,0,2,0,44,0,0,0,0,16,0,
16,0,0,2,38,148,111,128,187,16,202,90,152,48,10,55,169,189,192,245,
106,121,27,34,142,201,99,158,224,86,154,109,216,61,29,155,105,180,61,190,
121,84,0,0,59 };
const int cursDataSize = 85;
return cursorFromData (cursData, cursDataSize, 8, 8);
}
return juce_cursorFromWebKitFile ("northSouthResizeCursor.png", 0.5f, 0.5f);
case MouseCursor::TopLeftCornerResizeCursor:
case MouseCursor::BottomRightCornerResizeCursor:
{
static const unsigned char cursData[] = {71,73,70,56,57,97,16,0,16,0,145,0,0,255,255,255,0,0,0,255,
255,255,0,0,0,33,249,4,1,0,0,2,0,44,0,0,0,0,16,0,
16,0,0,2,43,132,15,162,187,16,255,18,99,14,202,217,44,158,213,221,
237,9,225,38,94,35,73,5,31,42,170,108,106,174,112,43,195,209,91,185,
104,174,131,208,77,66,28,10,0,59 };
const int cursDataSize = 90;
return cursorFromData (cursData, cursDataSize, 8, 8);
}
return juce_cursorFromWebKitFile ("northWestSouthEastResizeCursor.png", 0.5f, 0.5f);
case MouseCursor::TopRightCornerResizeCursor:
case MouseCursor::BottomLeftCornerResizeCursor:
{
static const unsigned char cursData[] = {71,73,70,56,57,97,16,0,16,0,145,0,0,255,255,255,0,0,0,255,
255,255,0,0,0,33,249,4,1,0,0,2,0,44,0,0,0,0,16,0,
16,0,0,2,45,148,127,160,11,232,16,98,108,14,65,73,107,194,122,223,
92,65,141,216,145,134,162,153,221,25,128,73,166,62,173,16,203,237,188,94,
120,46,237,105,239,123,48,80,157,2,0,59 };
const int cursDataSize = 92;
return cursorFromData (cursData, cursDataSize, 8, 8);
}
return juce_cursorFromWebKitFile ("northEastSouthWestResizeCursor.png", 0.5f, 0.5f);
case MouseCursor::UpDownLeftRightResizeCursor:
{
static const unsigned char cursData[] = {71,73,70,56,57,97,15,0,15,0,145,0,0,0,0,0,255,255,255,0,
128,128,255,255,255,33,249,4,1,0,0,3,0,44,0,0,0,0,15,0,
15,0,0,2,46,156,63,129,139,1,202,26,152,48,186,73,109,114,65,85,
195,37,143,88,93,29,215,101,23,198,178,30,149,158,25,56,134,97,179,61,
158,213,126,203,234,99,220,34,56,70,1,0,59,0,0 };
const int cursDataSize = 93;
return cursorFromData (cursData, cursDataSize, 7, 7);
}
return juce_cursorFromWebKitFile ("moveCursor.png", 0.5f, 0.5f);
case MouseCursor::CrosshairCursor:
cursorId = kThemeCrossCursor;
c = [NSCursor crosshairCursor];
break;
}
CursorWrapper* cw = new CursorWrapper();
cw->cursor = 0;
cw->themeCursor = cursorId;
return (void*) cw;
[c retain];
return (void*) c;
}
void juce_deleteMouseCursor (void* const cursorHandle, const bool isStandard) throw()
{
CursorWrapper* const cw = (CursorWrapper*) cursorHandle;
if (cw != 0)
{
delete cw->cursor;
delete cw;
}
NSCursor* c = (NSCursor*) cursorHandle;
[c release];
}
void MouseCursor::showInAllWindows() const throw()
@ -259757,37 +259736,10 @@ void MouseCursor::showInAllWindows() const throw()
void MouseCursor::showInWindow (ComponentPeer*) const throw()
{
const CursorWrapper* const cw = (CursorWrapper*) getHandle();
NSCursor* const c = (NSCursor*) getHandle();
if (cw != 0)
{
static bool isCursorHidden = false;
static bool showingWaitCursor = false;
const bool shouldShowWaitCursor = (cw->themeCursor == kThemeWatchCursor);
const bool shouldHideCursor = (cw->themeCursor == kSpecialNoCursor);
if (shouldShowWaitCursor != showingWaitCursor
&& Process::isForegroundProcess())
{
showingWaitCursor = shouldShowWaitCursor;
QDDisplayWaitCursor (shouldShowWaitCursor);
}
if (shouldHideCursor != isCursorHidden)
{
isCursorHidden = shouldHideCursor;
if (shouldHideCursor)
HideCursor();
else
ShowCursor();
}
if (cw->cursor != 0)
SetCursor (cw->cursor);
else if (! (shouldShowWaitCursor || shouldHideCursor))
SetThemeCursor (cw->themeCursor);
}
if (c != 0)
[c set];
}
Image* juce_createIconForFile (const File& file)
@ -260674,7 +260626,7 @@ void OpenGLPixelFormat::getAvailablePixelFormats (Component* /*component*/,
#endif
END_JUCE_NAMESPACE
/********* End of inlined file: juce_mac_Windowing.cpp *********/
/********* End of inlined file: juce_mac_Windowing.mm *********/
#endif

View file

@ -50464,6 +50464,8 @@ public:
@param maxAudioOutputChannels the maximum number of audio output channels that the application needs
@param showMidiInputOptions if true, the component will allow the user to select which midi inputs are enabled
@param showMidiOutputSelector if true, the component will let the user choose a default midi output device
@param showChannelsAsStereoPairs if true, channels will be treated as pairs; if false, channels will be
treated as a set of separate mono channels.
*/
AudioDeviceSelectorComponent (AudioDeviceManager& deviceManager,
const int minAudioInputChannels,
@ -50471,7 +50473,8 @@ public:
const int minAudioOutputChannels,
const int maxAudioOutputChannels,
const bool showMidiInputOptions,
const bool showMidiOutputSelector);
const bool showMidiOutputSelector,
const bool showChannelsAsStereoPairs);
/** Destructor */
~AudioDeviceSelectorComponent();
@ -50494,6 +50497,7 @@ private:
Component* audioDeviceSettingsComp;
String audioDeviceSettingsCompType;
const int minOutputChannels, maxOutputChannels, minInputChannels, maxInputChannels;
const bool showChannelsAsStereoPairs;
MidiInputSelectorComponentListBox* midiInputsList;
Label* midiInputsLabel;
@ -51534,6 +51538,11 @@ public:
*/
void shareWith (OpenGLContext* contextToShareListsWith);
/** Returns the context that this component is sharing with.
@see shareWith
*/
OpenGLContext* getShareContext() const throw() { return contextToShareListsWith; }
/** Flips the openGL buffers over. */
void swapBuffers();