Browse Source

tags/2021-05-28
jules 18 years ago
parent
commit
067e400d4e
19 changed files with 5339 additions and 5317 deletions
  1. +1
    -1
      build/linux/platform_specific_code/juce_linux_Threads.cpp
  2. +3
    -1
      build/linux/platform_specific_code/juce_linux_Windowing.cpp
  3. +1
    -1
      build/macosx/platform_specific_code/juce_mac_Threads.cpp
  4. +3065
    -3068
      build/macosx/platform_specific_code/juce_mac_Windowing.cpp
  5. +0
    -1
      build/win32/platform_specific_code/juce_win32_SystemStats.cpp
  6. +1
    -1
      build/win32/platform_specific_code/juce_win32_Threads.cpp
  7. +194
    -194
      extras/audio plugins/demo/src/DemoEditorComponent.cpp
  8. +827
    -827
      extras/audio plugins/wrapper/formats/AudioUnit/juce_AudioUnitWrapper.cpp
  9. +1
    -1
      src/juce_appframework/audio/midi/juce_MidiKeyboardState.cpp
  10. +1130
    -1130
      src/juce_appframework/audio/midi/juce_MidiMessage.cpp
  11. +37
    -7
      src/juce_appframework/gui/components/keyboard/juce_KeyPress.cpp
  12. +2
    -0
      src/juce_appframework/gui/components/keyboard/juce_KeyPress.h
  13. +0
    -26
      src/juce_appframework/gui/components/keyboard/juce_ModifierKeys.cpp
  14. +47
    -29
      src/juce_appframework/gui/components/keyboard/juce_ModifierKeys.h
  15. +1
    -1
      src/juce_core/text/juce_XmlDocument.cpp
  16. +4
    -4
      src/juce_core/text/juce_XmlElement.cpp
  17. +4
    -4
      src/juce_core/text/juce_XmlElement.h
  18. +10
    -10
      src/juce_core/threads/juce_Thread.cpp
  19. +11
    -11
      src/juce_core/threads/juce_Thread.h

+ 1
- 1
build/linux/platform_specific_code/juce_linux_Threads.cpp View File

@@ -133,7 +133,7 @@ void juce_setThreadPriority (void* handle, int priority) throw()
}
}
void Thread::setCurrentThreadAffinityMask (const uint32 affinityMask)
void Thread::setCurrentThreadAffinityMask (const uint32 affinityMask) throw()
{
#if SUPPORT_AFFINITIES
cpu_set_t affinity;


+ 3
- 1
build/linux/platform_specific_code/juce_linux_Windowing.cpp View File

@@ -302,7 +302,7 @@ void ModifierKeys::updateCurrentModifiers()
currentModifierFlags = currentModifiers;
}
const ModifierKeys ModifierKeys::getCurrentModifiersRealtime()
const ModifierKeys ModifierKeys::getCurrentModifiersRealtime() throw()
{
int x, y, mouseMods;
getMousePos (x, y, mouseMods);
@@ -3090,6 +3090,8 @@ const int KeyPress::numberPadMultiply = (XK_KP_Multiply & 0xff)| extendedK
const int KeyPress::numberPadDivide = (XK_KP_Divide & 0xff)| extendedKeyModifier;
const int KeyPress::numberPadSeparator = (XK_KP_Separator & 0xff)| extendedKeyModifier;
const int KeyPress::numberPadDecimalPoint = (XK_KP_Decimal & 0xff)| extendedKeyModifier;
const int KeyPress::numberPadEquals = (XK_KP_Equal & 0xff)| extendedKeyModifier;
const int KeyPress::numberPadDelete = (XK_KP_Delete & 0xff)| extendedKeyModifier;
const int KeyPress::playKey = (0xffeeff00) | extendedKeyModifier;
const int KeyPress::stopKey = (0xffeeff01) | extendedKeyModifier;
const int KeyPress::fastForwardKey = (0xffeeff02) | extendedKeyModifier;


+ 1
- 1
build/macosx/platform_specific_code/juce_mac_Threads.cpp View File

@@ -207,7 +207,7 @@ void Thread::yield() throw()
sched_yield();
}
void Thread::setCurrentThreadAffinityMask (const uint32 affinityMask)
void Thread::setCurrentThreadAffinityMask (const uint32 affinityMask) throw()
{
// xxx
jassertfalse


+ 3065
- 3068
build/macosx/platform_specific_code/juce_mac_Windowing.cpp
File diff suppressed because it is too large
View File


+ 0
- 1
build/win32/platform_specific_code/juce_win32_SystemStats.cpp View File

@@ -61,7 +61,6 @@ BEGIN_JUCE_NAMESPACE
#include "../../../src/juce_core/io/files/juce_File.h"
#include "../../../src/juce_core/basics/juce_SystemStats.h"
#include "juce_win32_DynamicLibraryLoader.h"
extern void juce_updateMultiMonitorInfo() throw();


+ 1
- 1
build/win32/platform_specific_code/juce_win32_Threads.cpp View File

@@ -208,7 +208,7 @@ void juce_setThreadPriority (void* threadHandle, int priority) throw()
SetThreadPriority (threadHandle, pri);
}
void Thread::setCurrentThreadAffinityMask (const uint32 affinityMask)
void Thread::setCurrentThreadAffinityMask (const uint32 affinityMask) throw()
{
SetThreadAffinityMask (GetCurrentThread(), affinityMask);
}


+ 194
- 194
extras/audio plugins/demo/src/DemoEditorComponent.cpp View File

@@ -1,194 +1,194 @@
/*
==============================================================================
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 "DemoEditorComponent.h"
//==============================================================================
// quick-and-dirty function to format a timecode string
static const String timeToTimecodeString (const double seconds)
{
const double absSecs = fabs (seconds);
const tchar* const sign = (seconds < 0) ? T("-") : T("");
const int hours = (int) (absSecs / (60.0 * 60.0));
const int mins = ((int) (absSecs / 60.0)) % 60;
const int secs = ((int) absSecs) % 60;
return String::formatted (T("%s%02d:%02d:%02d:%03d"),
sign, hours, mins, secs,
roundDoubleToInt (absSecs * 1000) % 1000);
}
// quick-and-dirty function to format a bars/beats string
static const String ppqToBarsBeatsString (const double ppq,
const double lastBarPPQ,
const int numerator,
const int denominator)
{
if (numerator == 0 || denominator == 0)
return T("1|1|0");
const int ppqPerBar = (numerator * 4 / denominator);
const double beats = (fmod (ppq, ppqPerBar) / ppqPerBar) * numerator;
const int bar = ((int) ppq) / ppqPerBar + 1;
const int beat = ((int) beats) + 1;
const int ticks = ((int) (fmod (beats, 1.0) * 960.0));
String s;
s << bar << T('|') << beat << T('|') << ticks;
return s;
}
//==============================================================================
DemoEditorComponent::DemoEditorComponent (DemoJuceFilter* const ownerFilter)
: AudioFilterEditor (ownerFilter)
{
// create our gain slider..
addAndMakeVisible (gainSlider = new Slider (T("gain")));
gainSlider->addListener (this);
gainSlider->setRange (0.0, 1.0, 0.01);
gainSlider->setTooltip (T("changes the volume of the audio that runs through the plugin.."));
// get the gain parameter from the filter and use it to set up our slider
gainSlider->setValue (ownerFilter->getParameter (0), false);
// create and add the midi keyboard component..
addAndMakeVisible (midiKeyboard
= new MidiKeyboardComponent (ownerFilter->keyboardState,
MidiKeyboardComponent::horizontalKeyboard));
// add a label that will display the current timecode and status..
addAndMakeVisible (infoLabel = new Label (String::empty, String::empty));
// add the triangular resizer component for the bottom-right of the UI
addAndMakeVisible (resizer = new ResizableCornerComponent (this, &resizeLimits));
resizeLimits.setSizeLimits (150, 150, 800, 300);
// set our component's initial size to be the last one that was stored in the filter's settings
setSize (ownerFilter->lastUIWidth,
ownerFilter->lastUIHeight);
// register ourselves with the filter - it will use its ChangeBroadcaster base
// class to tell us when something has changed, and this will call our changeListenerCallback()
// method.
ownerFilter->addChangeListener (this);
}
DemoEditorComponent::~DemoEditorComponent()
{
getFilter()->removeChangeListener (this);
deleteAllChildren();
}
//==============================================================================
void DemoEditorComponent::paint (Graphics& g)
{
// just clear the window
g.fillAll (Colour::greyLevel (0.9f));
}
void DemoEditorComponent::resized()
{
gainSlider->setBounds (10, 10, 200, 22);
infoLabel->setBounds (10, 35, 450, 20);
const int keyboardHeight = 70;
midiKeyboard->setBounds (4, getHeight() - keyboardHeight - 4,
getWidth() - 8, keyboardHeight);
resizer->setBounds (getWidth() - 16, getHeight() - 16, 16, 16);
// if we've been resized, tell the filter so that it can store the new size
// in its settings
getFilter()->lastUIWidth = getWidth();
getFilter()->lastUIHeight = getHeight();
}
//==============================================================================
void DemoEditorComponent::changeListenerCallback (void* source)
{
// this is the filter telling us that it's changed, so we'll update our
// display of the time, midi message, etc.
updateParametersFromFilter();
}
void DemoEditorComponent::sliderValueChanged (Slider*)
{
getFilter()->setParameterNotifyingHost (0, (float) gainSlider->getValue());
}
//==============================================================================
void DemoEditorComponent::updateParametersFromFilter()
{
DemoJuceFilter* const filter = getFilter();
// we use this lock to make sure the processBlock() method isn't writing to the
// lastMidiMessage variable while we're trying to read it, but be extra-careful to
// only hold the lock for a minimum amount of time..
filter->getCallbackLock().enter();
// take a local copy of the info we need while we've got the lock..
const AudioFilterBase::CurrentPositionInfo positionInfo (filter->lastPosInfo);
const float newGain = filter->getParameter (0);
// ..release the lock ASAP
filter->getCallbackLock().exit();
// ..and after releasing the lock, we're free to do the time-consuming UI stuff..
String infoText;
infoText << String (positionInfo.bpm, 2) << T(" bpm, ")
<< positionInfo.timeSigNumerator << T("/") << positionInfo.timeSigDenominator
<< T(" - ") << timeToTimecodeString (positionInfo.timeInSeconds)
<< T(" - ") << ppqToBarsBeatsString (positionInfo.ppqPosition,
positionInfo.ppqPositionOfLastBarStart,
positionInfo.timeSigNumerator,
positionInfo.timeSigDenominator);
if (positionInfo.isPlaying)
infoText << T(" (playing)");
infoLabel->setText (infoText, false);
/* Update our slider.
(note that it's important here to tell the slider not to send a change
message, because that would cause it to call the filter with a parameter
change message again, and the values would drift out.
*/
gainSlider->setValue (newGain, false);
setSize (filter->lastUIWidth,
filter->lastUIHeight);
}
/*
==============================================================================
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 "DemoEditorComponent.h"
//==============================================================================
// quick-and-dirty function to format a timecode string
static const String timeToTimecodeString (const double seconds)
{
const double absSecs = fabs (seconds);
const tchar* const sign = (seconds < 0) ? T("-") : T("");
const int hours = (int) (absSecs / (60.0 * 60.0));
const int mins = ((int) (absSecs / 60.0)) % 60;
const int secs = ((int) absSecs) % 60;
return String::formatted (T("%s%02d:%02d:%02d:%03d"),
sign, hours, mins, secs,
roundDoubleToInt (absSecs * 1000) % 1000);
}
// quick-and-dirty function to format a bars/beats string
static const String ppqToBarsBeatsString (const double ppq,
const double lastBarPPQ,
const int numerator,
const int denominator)
{
if (numerator == 0 || denominator == 0)
return T("1|1|0");
const int ppqPerBar = (numerator * 4 / denominator);
const double beats = (fmod (ppq, ppqPerBar) / ppqPerBar) * numerator;
const int bar = ((int) ppq) / ppqPerBar + 1;
const int beat = ((int) beats) + 1;
const int ticks = ((int) (fmod (beats, 1.0) * 960.0));
String s;
s << bar << T('|') << beat << T('|') << ticks;
return s;
}
//==============================================================================
DemoEditorComponent::DemoEditorComponent (DemoJuceFilter* const ownerFilter)
: AudioFilterEditor (ownerFilter)
{
// create our gain slider..
addAndMakeVisible (gainSlider = new Slider (T("gain")));
gainSlider->addListener (this);
gainSlider->setRange (0.0, 1.0, 0.01);
gainSlider->setTooltip (T("changes the volume of the audio that runs through the plugin.."));
// get the gain parameter from the filter and use it to set up our slider
gainSlider->setValue (ownerFilter->getParameter (0), false);
// create and add the midi keyboard component..
addAndMakeVisible (midiKeyboard
= new MidiKeyboardComponent (ownerFilter->keyboardState,
MidiKeyboardComponent::horizontalKeyboard));
// add a label that will display the current timecode and status..
addAndMakeVisible (infoLabel = new Label (String::empty, String::empty));
// add the triangular resizer component for the bottom-right of the UI
addAndMakeVisible (resizer = new ResizableCornerComponent (this, &resizeLimits));
resizeLimits.setSizeLimits (150, 150, 800, 300);
// set our component's initial size to be the last one that was stored in the filter's settings
setSize (ownerFilter->lastUIWidth,
ownerFilter->lastUIHeight);
// register ourselves with the filter - it will use its ChangeBroadcaster base
// class to tell us when something has changed, and this will call our changeListenerCallback()
// method.
ownerFilter->addChangeListener (this);
}
DemoEditorComponent::~DemoEditorComponent()
{
getFilter()->removeChangeListener (this);
deleteAllChildren();
}
//==============================================================================
void DemoEditorComponent::paint (Graphics& g)
{
// just clear the window
g.fillAll (Colour::greyLevel (0.9f));
}
void DemoEditorComponent::resized()
{
gainSlider->setBounds (10, 10, 200, 22);
infoLabel->setBounds (10, 35, 450, 20);
const int keyboardHeight = 70;
midiKeyboard->setBounds (4, getHeight() - keyboardHeight - 4,
getWidth() - 8, keyboardHeight);
resizer->setBounds (getWidth() - 16, getHeight() - 16, 16, 16);
// if we've been resized, tell the filter so that it can store the new size
// in its settings
getFilter()->lastUIWidth = getWidth();
getFilter()->lastUIHeight = getHeight();
}
//==============================================================================
void DemoEditorComponent::changeListenerCallback (void* source)
{
// this is the filter telling us that it's changed, so we'll update our
// display of the time, midi message, etc.
updateParametersFromFilter();
}
void DemoEditorComponent::sliderValueChanged (Slider*)
{
getFilter()->setParameterNotifyingHost (0, (float) gainSlider->getValue());
}
//==============================================================================
void DemoEditorComponent::updateParametersFromFilter()
{
DemoJuceFilter* const filter = getFilter();
// we use this lock to make sure the processBlock() method isn't writing to the
// lastMidiMessage variable while we're trying to read it, but be extra-careful to
// only hold the lock for a minimum amount of time..
filter->getCallbackLock().enter();
// take a local copy of the info we need while we've got the lock..
const AudioFilterBase::CurrentPositionInfo positionInfo (filter->lastPosInfo);
const float newGain = filter->getParameter (0);
// ..release the lock ASAP
filter->getCallbackLock().exit();
// ..and after releasing the lock, we're free to do the time-consuming UI stuff..
String infoText;
infoText << String (positionInfo.bpm, 2) << T(" bpm, ")
<< positionInfo.timeSigNumerator << T("/") << positionInfo.timeSigDenominator
<< T(" - ") << timeToTimecodeString (positionInfo.timeInSeconds)
<< T(" - ") << ppqToBarsBeatsString (positionInfo.ppqPosition,
positionInfo.ppqPositionOfLastBarStart,
positionInfo.timeSigNumerator,
positionInfo.timeSigDenominator);
if (positionInfo.isPlaying)
infoText << T(" (playing)");
infoLabel->setText (infoText, false);
/* Update our slider.
(note that it's important here to tell the slider not to send a change
message, because that would cause it to call the filter with a parameter
change message again, and the values would drift out.
*/
gainSlider->setValue (newGain, false);
setSize (filter->lastUIWidth,
filter->lastUIHeight);
}

+ 827
- 827
extras/audio plugins/wrapper/formats/AudioUnit/juce_AudioUnitWrapper.cpp
File diff suppressed because it is too large
View File


+ 1
- 1
src/juce_appframework/audio/midi/juce_MidiKeyboardState.cpp View File

@@ -164,7 +164,7 @@ void MidiKeyboardState::processNextMidiBuffer (MidiBuffer& buffer,
const bool injectIndirectEvents)
{
MidiBuffer::Iterator i (buffer);
MidiMessage message (0, 0.0);
MidiMessage message (0xf4, 0.0);
int time;
const ScopedLock sl (lock);


+ 1130
- 1130
src/juce_appframework/audio/midi/juce_MidiMessage.cpp
File diff suppressed because it is too large
View File


+ 37
- 7
src/juce_appframework/gui/components/keyboard/juce_KeyPress.cpp View File

@@ -188,9 +188,29 @@ const KeyPress KeyPress::createFromDescription (const String& desc)
if (key == 0)
{
// see if it's a numpad key..
for (int i = 0; i < 10; ++i)
if (desc.containsWholeWordIgnoreCase (numberPadPrefix + String (i)))
key = numberPad0 + i;
if (desc.containsIgnoreCase (numberPadPrefix))
{
const tchar lastChar = desc.trimEnd().getLastCharacter();
if (lastChar >= T('0') && lastChar <= T('9'))
key = numberPad0 + lastChar - T('0');
else if (lastChar == T('+'))
key = numberPadAdd;
else if (lastChar == T('-'))
key = numberPadSubtract;
else if (lastChar == T('*'))
key = numberPadMultiply;
else if (lastChar == T('/'))
key = numberPadDivide;
else if (lastChar == T('.'))
key = numberPadDecimalPoint;
else if (lastChar == T('='))
key = numberPadEquals;
else if (desc.endsWith (T("separator")))
key = numberPadSeparator;
else if (desc.endsWith (T("delete")))
key = numberPadDelete;
}
if (key == 0)
{
@@ -208,13 +228,9 @@ const KeyPress KeyPress::createFromDescription (const String& desc)
.getHexValue32();
if (hexCode > 0)
{
key = hexCode;
}
else
{
key = CharacterFunctions::toUpperCase (desc.getLastCharacter());
}
}
}
}
@@ -257,6 +273,20 @@ const String KeyPress::getTextDescription() const
desc << numberPadPrefix << (keyCode - numberPad0);
else if (keyCode >= 33 && keyCode < 176)
desc += CharacterFunctions::toUpperCase ((tchar) keyCode);
else if (keyCode == numberPadAdd)
desc << numberPadPrefix << '+';
else if (keyCode == numberPadSubtract)
desc << numberPadPrefix << '-';
else if (keyCode == numberPadMultiply)
desc << numberPadPrefix << '*';
else if (keyCode == numberPadDivide)
desc << numberPadPrefix << '/';
else if (keyCode == numberPadSeparator)
desc << numberPadPrefix << "separator";
else if (keyCode == numberPadDecimalPoint)
desc << numberPadPrefix << '.';
else if (keyCode == numberPadDelete)
desc << numberPadPrefix << "delete";
else
desc << '#' << String::toHexString (keyCode);
}


+ 2
- 0
src/juce_appframework/gui/components/keyboard/juce_KeyPress.h View File

@@ -231,6 +231,8 @@ public:
static const int numberPadDivide; /**< key-code for the divide sign on the numeric keypad. */
static const int numberPadSeparator; /**< key-code for the comma on the numeric keypad. */
static const int numberPadDecimalPoint; /**< key-code for the decimal point sign on the numeric keypad. */
static const int numberPadEquals; /**< key-code for the equals key on the numeric keypad. */
static const int numberPadDelete; /**< key-code for the delete key on the numeric keypad. */
static const int playKey; /**< key-code for a multimedia 'play' key, (not all keyboards will have one) */
static const int stopKey; /**< key-code for a multimedia 'stop' key, (not all keyboards will have one) */


+ 0
- 26
src/juce_appframework/gui/components/keyboard/juce_ModifierKeys.cpp View File

@@ -36,32 +36,6 @@ BEGIN_JUCE_NAMESPACE
#include "juce_ModifierKeys.h"
//==============================================================================
const int ModifierKeys::shiftModifier = 1;
const int ModifierKeys::ctrlModifier = 2;
const int ModifierKeys::altModifier = 4;
const int ModifierKeys::leftButtonModifier = 16;
const int ModifierKeys::rightButtonModifier = 32;
const int ModifierKeys::middleButtonModifier = 64;
#if JUCE_MAC
const int ModifierKeys::commandModifier = 8;
const int ModifierKeys::popupMenuClickModifier = ModifierKeys::rightButtonModifier
| ModifierKeys::ctrlModifier;
#else
const int ModifierKeys::commandModifier = ModifierKeys::ctrlModifier;
const int ModifierKeys::popupMenuClickModifier = ModifierKeys::rightButtonModifier;
#endif
const int ModifierKeys::allKeyboardModifiers = ModifierKeys::shiftModifier
| ModifierKeys::ctrlModifier
| ModifierKeys::altModifier
| ModifierKeys::commandModifier;
const int ModifierKeys::allMouseButtonModifiers = ModifierKeys::leftButtonModifier
| ModifierKeys::rightButtonModifier
| ModifierKeys::middleButtonModifier;
//==============================================================================
ModifierKeys::ModifierKeys (const int flags_) throw()
: flags (flags_)


+ 47
- 29
src/juce_appframework/gui/components/keyboard/juce_ModifierKeys.h View File

@@ -113,39 +113,57 @@ public:
inline bool isAltDown() const throw() { return (flags & altModifier) != 0; }
//==============================================================================
// modifier bitmasks
/** Shift key flag. */
static const int shiftModifier;
/** CTRL key flag. */
static const int ctrlModifier;
/** ALT key flag. */
static const int altModifier;
/** Left mouse button flag. */
static const int leftButtonModifier;
/** Right mouse button flag. */
static const int rightButtonModifier;
/** Middle mouse button flag. */
static const int middleButtonModifier;
/** Command key flag - on windows this is the same as the CTRL key flag. */
static const int commandModifier;
/** Popup menu flag - on windows this is the same as rightButtonModifier, on the
Mac it's the same as (rightButtonModifier | ctrlModifier). */
static const int popupMenuClickModifier;
/** Represents a combination of all the shift, alt, ctrl and command key modifiers. */
static const int allKeyboardModifiers;
/** Represents a combination of all the mouse buttons at once. */
static const int allMouseButtonModifiers;
/** Flags that represent the different keys. */
enum Flags
{
/** Shift key flag. */
shiftModifier = 1,
/** CTRL key flag. */
ctrlModifier = 2,
/** ALT key flag. */
altModifier = 4,
/** Left mouse button flag. */
leftButtonModifier = 16,
/** Right mouse button flag. */
rightButtonModifier = 32,
/** Middle mouse button flag. */
middleButtonModifier = 64,
#if JUCE_MAC
/** Command key flag - on windows this is the same as the CTRL key flag. */
commandModifier = 8,
/** Popup menu flag - on windows this is the same as rightButtonModifier, on the
Mac it's the same as (rightButtonModifier | ctrlModifier). */
popupMenuClickModifier = rightButtonModifier | ctrlModifier,
#else
/** Command key flag - on windows this is the same as the CTRL key flag. */
commandModifier = ctrlModifier,
/** Popup menu flag - on windows this is the same as rightButtonModifier, on the
Mac it's the same as (rightButtonModifier | ctrlModifier). */
popupMenuClickModifier = rightButtonModifier,
#endif
/** Represents a combination of all the shift, alt, ctrl and command key modifiers. */
allKeyboardModifiers = shiftModifier | ctrlModifier | altModifier | commandModifier,
/** Represents a combination of all the mouse buttons at once. */
allMouseButtonModifiers = leftButtonModifier | rightButtonModifier | middleButtonModifier,
};
//==============================================================================
/** Returns the raw flags for direct testing. */
inline int getRawFlags() const throw() { return flags; }
inline int getRawFlags() const throw() { return flags; }
/** Tests a combination of flags and returns true if any of them are set. */
inline bool testFlags (const int flagsToTest) const throw() { return (flags & flagsToTest) != 0; }
inline bool testFlags (const int flagsToTest) const throw() { return (flags & flagsToTest) != 0; }
//==============================================================================
/** Creates a ModifierKeys object to represent the last-known state of the
@@ -165,7 +183,7 @@ public:
This is only needed in special circumstances for up-to-date modifier information
at times when the app's event loop isn't running normally.
*/
static const ModifierKeys getCurrentModifiersRealtime();
static const ModifierKeys getCurrentModifiersRealtime() throw();
private:


+ 1
- 1
src/juce_core/text/juce_XmlDocument.cpp View File

@@ -48,7 +48,7 @@ XmlInputSource::~XmlInputSource()
//==============================================================================
static bool isXmlIdentifierChar_Slow (const tchar c)
static bool isXmlIdentifierChar_Slow (const tchar c) throw()
{
return CharacterFunctions::isLetterOrDigit (c)
|| c == T('_')


+ 4
- 4
src/juce_core/text/juce_XmlElement.cpp View File

@@ -40,7 +40,7 @@ BEGIN_JUCE_NAMESPACE
//==============================================================================
XmlElement::XmlAttributeNode::XmlAttributeNode (const XmlAttributeNode& other)
XmlElement::XmlAttributeNode::XmlAttributeNode (const XmlAttributeNode& other) throw()
: name (other.name),
value (other.value),
next (0)
@@ -48,7 +48,7 @@ XmlElement::XmlAttributeNode::XmlAttributeNode (const XmlAttributeNode& other)
}
XmlElement::XmlAttributeNode::XmlAttributeNode (const String& name_,
const String& value_)
const String& value_) throw()
: name (name_),
value (value_),
next (0)
@@ -1057,7 +1057,7 @@ XmlElement* XmlElement::findParentElementOf (const XmlElement* const elementToLo
return 0;
}
XmlElement** XmlElement::getChildElementsAsArray (const int num) const
XmlElement** XmlElement::getChildElementsAsArray (const int num) const throw()
{
XmlElement** const elems = new XmlElement* [num];
@@ -1073,7 +1073,7 @@ XmlElement** XmlElement::getChildElementsAsArray (const int num) const
return elems;
}
void XmlElement::reorderChildElements (XmlElement** const elems, const int num)
void XmlElement::reorderChildElements (XmlElement** const elems, const int num) throw()
{
XmlElement* e = firstChildElement = elems[0];


+ 4
- 4
src/juce_core/text/juce_XmlElement.h View File

@@ -657,8 +657,8 @@ private:
struct XmlAttributeNode
{
XmlAttributeNode (const XmlAttributeNode& other);
XmlAttributeNode (const String& name, const String& value);
XmlAttributeNode (const XmlAttributeNode& other) throw();
XmlAttributeNode (const String& name, const String& value) throw();
String name, value;
XmlAttributeNode* next;
@@ -673,8 +673,8 @@ private:
void writeElementAsText (OutputStream& out, const int indentationLevel) const throw();
XmlElement** getChildElementsAsArray (const int) const;
void reorderChildElements (XmlElement** const, const int);
XmlElement** getChildElementsAsArray (const int) const throw();
void reorderChildElements (XmlElement** const, const int) throw();
};


+ 10
- 10
src/juce_core/threads/juce_Thread.cpp View File

@@ -50,7 +50,7 @@ static VoidArray runningThreads (4);
static CriticalSection runningThreadsLock;
//==============================================================================
void Thread::threadEntryPoint (Thread* thread)
void Thread::threadEntryPoint (Thread* const thread) throw()
{
runningThreadsLock.enter();
runningThreads.add (thread);
@@ -106,7 +106,7 @@ Thread::~Thread()
}
//==============================================================================
void Thread::startThread()
void Thread::startThread() throw()
{
const ScopedLock sl (startStopLock);
@@ -120,7 +120,7 @@ void Thread::startThread()
}
}
void Thread::startThread (const int priority)
void Thread::startThread (const int priority) throw()
{
const ScopedLock sl (startStopLock);
@@ -146,7 +146,7 @@ void Thread::signalThreadShouldExit() throw()
threadShouldExit_ = true;
}
bool Thread::waitForThreadToExit (const int timeOutMilliseconds) const
bool Thread::waitForThreadToExit (const int timeOutMilliseconds) const throw()
{
// Doh! So how exactly do you expect this thread to wait for itself to stop??
jassert (getThreadId() != getCurrentThreadId());
@@ -165,7 +165,7 @@ bool Thread::waitForThreadToExit (const int timeOutMilliseconds) const
return true;
}
void Thread::stopThread (const int timeOutMilliseconds)
void Thread::stopThread (const int timeOutMilliseconds) throw()
{
const ScopedLock sl (startStopLock);
@@ -196,7 +196,7 @@ void Thread::stopThread (const int timeOutMilliseconds)
}
//==============================================================================
void Thread::setPriority (const int priority)
void Thread::setPriority (const int priority) throw()
{
const ScopedLock sl (startStopLock);
@@ -204,12 +204,12 @@ void Thread::setPriority (const int priority)
juce_setThreadPriority (threadHandle_, priority);
}
void Thread::setCurrentThreadPriority (const int priority)
void Thread::setCurrentThreadPriority (const int priority) throw()
{
juce_setThreadPriority (0, priority);
}
void Thread::setAffinityMask (const uint32 affinityMask)
void Thread::setAffinityMask (const uint32 affinityMask) throw()
{
affinityMask_ = affinityMask;
}
@@ -231,12 +231,12 @@ void Thread::notify() const throw()
}
//==============================================================================
int Thread::getNumRunningThreads()
int Thread::getNumRunningThreads() throw()
{
return runningThreads.size();
}
void Thread::stopAllThreads (const int timeoutInMillisecs)
void Thread::stopAllThreads (const int timeoutInMillisecs) throw()
{
while (getNumRunningThreads() > 0)
{


+ 11
- 11
src/juce_core/threads/juce_Thread.h View File

@@ -92,7 +92,7 @@ public:
@see stopThread
*/
void startThread();
void startThread() throw();
/** Starts the thread with a given priority.
@@ -101,7 +101,7 @@ public:
@see startThread, setPriority
*/
void startThread (const int priority);
void startThread (const int priority) throw();
/** Attempts to stop the thread running.
@@ -121,7 +121,7 @@ public:
value in here will wait forever.
@see signalThreadShouldExit, threadShouldExit, waitForThreadToExit, isThreadRunning
*/
void stopThread (const int timeOutMilliseconds);
void stopThread (const int timeOutMilliseconds) throw();
//==============================================================================
/** Returns true if the thread is currently active */
@@ -154,7 +154,7 @@ public:
is less than zero, it will wait forever.
@returns true if the thread exits, or false if the timeout expires first.
*/
bool waitForThreadToExit (const int timeOutMilliseconds) const;
bool waitForThreadToExit (const int timeOutMilliseconds) const throw();
//==============================================================================
/** Changes the thread's priority.
@@ -162,7 +162,7 @@ public:
@param priority the new priority, in the range 0 (lowest) to 10 (highest). A priority
of 5 is normal.
*/
void setPriority (const int priority);
void setPriority (const int priority) throw();
/** Changes the priority of the caller thread.
@@ -170,7 +170,7 @@ public:
@see setPriority
*/
static void setCurrentThreadPriority (const int priority);
static void setCurrentThreadPriority (const int priority) throw();
//==============================================================================
/** Sets the affinity mask for the thread.
@@ -180,7 +180,7 @@ public:
@see setCurrentThreadAffinityMask
*/
void setAffinityMask (const uint32 affinityMask);
void setAffinityMask (const uint32 affinityMask) throw();
/** Changes the affinity mask for the caller thread.
@@ -188,7 +188,7 @@ public:
@see setAffinityMask
*/
static void setCurrentThreadAffinityMask (const uint32 affinityMask);
static void setCurrentThreadAffinityMask (const uint32 affinityMask) throw();
//==============================================================================
// this can be called from any thread that needs to pause..
@@ -248,13 +248,13 @@ public:
@returns the number of Thread objects known to be currently running.
@see stopAllThreads
*/
static int getNumRunningThreads();
static int getNumRunningThreads() throw();
/** Tries to stop all currently-running threads.
This will attempt to stop all the threads known to be running at the moment.
*/
static void stopAllThreads (const int timeoutInMillisecs);
static void stopAllThreads (const int timeoutInMillisecs) throw();
//==============================================================================
@@ -271,7 +271,7 @@ private:
bool volatile threadShouldExit_;
friend void JUCE_API juce_threadEntryPoint (void*);
static void threadEntryPoint (Thread* thread);
static void threadEntryPoint (Thread* thread) throw();
Thread (const Thread&);
const Thread& operator= (const Thread&);


Loading…
Cancel
Save