@@ -535,14 +535,6 @@ SOURCE=..\..\..\src\juce_appframework\audio\processors\juce_GenericAudioProcesso | |||
# PROP Default_Filter "" | |||
# Begin Source File | |||
SOURCE=..\..\..\src\juce_appframework\audio\plugins\formats\juce_AudioUnitPluginFormat.cpp | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=..\..\..\src\juce_appframework\audio\plugins\formats\juce_AudioUnitPluginFormat.h | |||
# End Source File | |||
# Begin Source File | |||
SOURCE=..\..\..\src\juce_appframework\audio\plugins\formats\juce_DirectXPluginFormat.h | |||
# End Source File | |||
# Begin Source File | |||
@@ -602,6 +602,7 @@ | |||
#import <IOKit/network/IONetworkInterface.h> | |||
#import <IOKit/network/IOEthernetController.h> | |||
#import <IOKit/pwr_mgt/IOPMLib.h> | |||
#import <SystemConfiguration/SCDynamicStore.h> | |||
#include <sys/sysctl.h> | |||
#include <sys/stat.h> | |||
@@ -23993,6 +23994,67 @@ void AudioSampleBuffer::copyFrom (const int destChannel, | |||
} | |||
} | |||
void AudioSampleBuffer::copyFrom (const int destChannel, | |||
const int destStartSample, | |||
const float* source, | |||
int numSamples, | |||
const float gain) throw() | |||
{ | |||
jassert (((unsigned int) destChannel) < (unsigned int) numChannels); | |||
jassert (destStartSample >= 0 && destStartSample + numSamples <= size); | |||
jassert (source != 0); | |||
if (numSamples > 0 && gain != 0) | |||
{ | |||
float* d = channels [destChannel] + destStartSample; | |||
if (gain != 1.0f) | |||
{ | |||
while (--numSamples >= 0) | |||
*d++ = gain * *source++; | |||
} | |||
else | |||
{ | |||
memcpy (d, source, sizeof (float) * numSamples); | |||
} | |||
} | |||
} | |||
void AudioSampleBuffer::copyFromWithRamp (const int destChannel, | |||
const int destStartSample, | |||
const float* source, | |||
int numSamples, | |||
float startGain, | |||
float endGain) throw() | |||
{ | |||
jassert (((unsigned int) destChannel) < (unsigned int) numChannels); | |||
jassert (destStartSample >= 0 && destStartSample + numSamples <= size); | |||
jassert (source != 0); | |||
if (startGain == endGain) | |||
{ | |||
copyFrom (destChannel, | |||
destStartSample, | |||
source, | |||
numSamples, | |||
startGain); | |||
} | |||
else | |||
{ | |||
if (numSamples > 0 && (startGain != 0.0f || endGain != 0.0f)) | |||
{ | |||
const float increment = (endGain - startGain) / numSamples; | |||
float* d = channels [destChannel] + destStartSample; | |||
while (--numSamples >= 0) | |||
{ | |||
*d++ = startGain * *source++; | |||
startGain += increment; | |||
} | |||
} | |||
} | |||
} | |||
void AudioSampleBuffer::findMinMax (const int channel, | |||
const int startSample, | |||
int numSamples, | |||
@@ -42477,31 +42539,20 @@ void ImageButton::paintButton (Graphics& g, | |||
} | |||
} | |||
const Colour& overlayColour = (isButtonDown) ? downOverlay | |||
: ((isMouseOverButton) ? overOverlay | |||
: normalOverlay); | |||
if (! overlayColour.isOpaque()) | |||
if (! scaleImageToFit) | |||
{ | |||
g.setOpacity ((isButtonDown) ? downOpacity | |||
: ((isMouseOverButton) ? overOpacity | |||
: normalOpacity)); | |||
if (scaleImageToFit) | |||
g.drawImage (im, imageX, imageY, imageW, imageH, 0, 0, iw, ih, false); | |||
else | |||
g.drawImageAt (im, imageX, imageY, false); | |||
imageW = iw; | |||
imageH = ih; | |||
} | |||
if (! overlayColour.isTransparent()) | |||
{ | |||
g.setColour (overlayColour); | |||
if (scaleImageToFit) | |||
g.drawImage (im, imageX, imageY, imageW, imageH, 0, 0, iw, ih, true); | |||
else | |||
g.drawImageAt (im, imageX, imageY, true); | |||
} | |||
getLookAndFeel().drawImageButton (g, im, imageX, imageY, imageW, imageH, | |||
isButtonDown ? downOverlay | |||
: (isMouseOverButton ? overOverlay | |||
: normalOverlay), | |||
isButtonDown ? downOpacity | |||
: (isMouseOverButton ? overOpacity | |||
: normalOpacity), | |||
*this); | |||
} | |||
} | |||
@@ -61278,6 +61329,29 @@ void LookAndFeel::layoutFilenameComponent (FilenameComponent& filenameComp, | |||
filenameBox->setBounds (0, 0, browseButton->getX(), filenameComp.getHeight()); | |||
} | |||
void LookAndFeel::drawImageButton (Graphics& g, Image* image, | |||
int imageX, int imageY, int imageW, int imageH, | |||
const Colour& overlayColour, | |||
float imageOpacity, | |||
ImageButton& button) | |||
{ | |||
if (! overlayColour.isOpaque()) | |||
{ | |||
g.setOpacity (imageOpacity); | |||
g.drawImage (image, imageX, imageY, imageW, imageH, | |||
0, 0, image->getWidth(), image->getHeight(), false); | |||
} | |||
if (! overlayColour.isTransparent()) | |||
{ | |||
g.setColour (overlayColour); | |||
g.drawImage (image, imageX, imageY, imageW, imageH, | |||
0, 0, image->getWidth(), image->getHeight(), true); | |||
} | |||
} | |||
void LookAndFeel::drawCornerResizer (Graphics& g, | |||
int w, int h, | |||
bool /*isMouseOver*/, | |||
@@ -213920,8 +213994,11 @@ namespace pnglibNamespace | |||
using namespace zlibNamespace; | |||
#if JUCE_INCLUDE_PNGLIB_CODE | |||
using ::malloc; | |||
using ::free; | |||
#if (! defined(_MSC_VER)) || _MSC_VER != 1310 | |||
using ::malloc; // (causes conflict in VS.NET 2003) | |||
using ::free; | |||
#endif | |||
extern "C" | |||
{ | |||
@@ -239320,6 +239397,11 @@ png_write_filtered_row(png_structp png_ptr, png_bytep filtered_row) | |||
BEGIN_JUCE_NAMESPACE | |||
using namespace pnglibNamespace; | |||
#if defined (_MSC_VER) && _MSC_VER == 1310 && ! defined (JUCE_DEBUG) | |||
using ::calloc; // (needed in VS.NET 2003) | |||
#endif | |||
using ::malloc; | |||
using ::free; | |||
@@ -26998,6 +26998,42 @@ public: | |||
const float* source, | |||
int numSamples) throw(); | |||
/** Copies samples from an array of floats into one of the channels, applying a gain to it. | |||
@param destChannel the channel within this buffer to copy the samples to | |||
@param destStartSample the start sample within this buffer's channel | |||
@param source the source buffer to read from | |||
@param numSamples the number of samples to process | |||
@param gain the gain to apply | |||
@see addFrom | |||
*/ | |||
void copyFrom (const int destChannel, | |||
const int destStartSample, | |||
const float* source, | |||
int numSamples, | |||
const float gain) throw(); | |||
/** Copies samples from an array of floats into one of the channels, applying a gain ramp. | |||
@param destChannel the channel within this buffer to copy the samples to | |||
@param destStartSample the start sample within this buffer's channel | |||
@param source the source buffer to read from | |||
@param numSamples the number of samples to process | |||
@param startGain the gain to apply to the first sample (this is multiplied with | |||
the source samples before they are copied to this buffer) | |||
@param endGain the gain to apply to the final sample. The gain is linearly | |||
interpolated between the first and last samples. | |||
@see addFrom | |||
*/ | |||
void copyFromWithRamp (const int destChannel, | |||
const int destStartSample, | |||
const float* source, | |||
int numSamples, | |||
float startGain, | |||
float endGain) throw(); | |||
/** Finds the highest and lowest sample values in a given range. | |||
@param channel the channel to read from | |||
@@ -52970,6 +53006,7 @@ class ProgressBar; | |||
class FileBrowserComponent; | |||
class DirectoryContentsDisplayComponent; | |||
class FilePreviewComponent; | |||
class ImageButton; | |||
/** | |||
LookAndFeel objects define the appearance of all the JUCE widgets, and subclasses | |||
@@ -53415,6 +53452,12 @@ public: | |||
virtual Button* createTabBarExtrasButton(); | |||
virtual void drawImageButton (Graphics& g, Image* image, | |||
int imageX, int imageY, int imageW, int imageH, | |||
const Colour& overlayColour, | |||
float imageOpacity, | |||
ImageButton& button); | |||
virtual void drawTableHeaderBackground (Graphics& g, TableHeaderComponent& header); | |||
virtual void drawTableHeaderColumn (Graphics& g, const String& columnName, int columnId, | |||
@@ -453,6 +453,67 @@ void AudioSampleBuffer::copyFrom (const int destChannel, | |||
} | |||
} | |||
void AudioSampleBuffer::copyFrom (const int destChannel, | |||
const int destStartSample, | |||
const float* source, | |||
int numSamples, | |||
const float gain) throw() | |||
{ | |||
jassert (((unsigned int) destChannel) < (unsigned int) numChannels); | |||
jassert (destStartSample >= 0 && destStartSample + numSamples <= size); | |||
jassert (source != 0); | |||
if (numSamples > 0 && gain != 0) | |||
{ | |||
float* d = channels [destChannel] + destStartSample; | |||
if (gain != 1.0f) | |||
{ | |||
while (--numSamples >= 0) | |||
*d++ = gain * *source++; | |||
} | |||
else | |||
{ | |||
memcpy (d, source, sizeof (float) * numSamples); | |||
} | |||
} | |||
} | |||
void AudioSampleBuffer::copyFromWithRamp (const int destChannel, | |||
const int destStartSample, | |||
const float* source, | |||
int numSamples, | |||
float startGain, | |||
float endGain) throw() | |||
{ | |||
jassert (((unsigned int) destChannel) < (unsigned int) numChannels); | |||
jassert (destStartSample >= 0 && destStartSample + numSamples <= size); | |||
jassert (source != 0); | |||
if (startGain == endGain) | |||
{ | |||
copyFrom (destChannel, | |||
destStartSample, | |||
source, | |||
numSamples, | |||
startGain); | |||
} | |||
else | |||
{ | |||
if (numSamples > 0 && (startGain != 0.0f || endGain != 0.0f)) | |||
{ | |||
const float increment = (endGain - startGain) / numSamples; | |||
float* d = channels [destChannel] + destStartSample; | |||
while (--numSamples >= 0) | |||
{ | |||
*d++ = startGain * *source++; | |||
startGain += increment; | |||
} | |||
} | |||
} | |||
} | |||
void AudioSampleBuffer::findMinMax (const int channel, | |||
const int startSample, | |||
int numSamples, | |||
@@ -306,6 +306,43 @@ public: | |||
const float* source, | |||
int numSamples) throw(); | |||
/** Copies samples from an array of floats into one of the channels, applying a gain to it. | |||
@param destChannel the channel within this buffer to copy the samples to | |||
@param destStartSample the start sample within this buffer's channel | |||
@param source the source buffer to read from | |||
@param numSamples the number of samples to process | |||
@param gain the gain to apply | |||
@see addFrom | |||
*/ | |||
void copyFrom (const int destChannel, | |||
const int destStartSample, | |||
const float* source, | |||
int numSamples, | |||
const float gain) throw(); | |||
/** Copies samples from an array of floats into one of the channels, applying a gain ramp. | |||
@param destChannel the channel within this buffer to copy the samples to | |||
@param destStartSample the start sample within this buffer's channel | |||
@param source the source buffer to read from | |||
@param numSamples the number of samples to process | |||
@param startGain the gain to apply to the first sample (this is multiplied with | |||
the source samples before they are copied to this buffer) | |||
@param endGain the gain to apply to the final sample. The gain is linearly | |||
interpolated between the first and last samples. | |||
@see addFrom | |||
*/ | |||
void copyFromWithRamp (const int destChannel, | |||
const int destStartSample, | |||
const float* source, | |||
int numSamples, | |||
float startGain, | |||
float endGain) throw(); | |||
/** Finds the highest and lowest sample values in a given range. | |||
@param channel the channel to read from | |||
@@ -35,6 +35,7 @@ BEGIN_JUCE_NAMESPACE | |||
#include "juce_ImageButton.h" | |||
#include "../../graphics/imaging/juce_ImageCache.h" | |||
#include "../lookandfeel/juce_LookAndFeel.h" | |||
//============================================================================== | |||
@@ -208,31 +209,20 @@ void ImageButton::paintButton (Graphics& g, | |||
} | |||
} | |||
const Colour& overlayColour = (isButtonDown) ? downOverlay | |||
: ((isMouseOverButton) ? overOverlay | |||
: normalOverlay); | |||
if (! overlayColour.isOpaque()) | |||
if (! scaleImageToFit) | |||
{ | |||
g.setOpacity ((isButtonDown) ? downOpacity | |||
: ((isMouseOverButton) ? overOpacity | |||
: normalOpacity)); | |||
if (scaleImageToFit) | |||
g.drawImage (im, imageX, imageY, imageW, imageH, 0, 0, iw, ih, false); | |||
else | |||
g.drawImageAt (im, imageX, imageY, false); | |||
imageW = iw; | |||
imageH = ih; | |||
} | |||
if (! overlayColour.isTransparent()) | |||
{ | |||
g.setColour (overlayColour); | |||
if (scaleImageToFit) | |||
g.drawImage (im, imageX, imageY, imageW, imageH, 0, 0, iw, ih, true); | |||
else | |||
g.drawImageAt (im, imageX, imageY, true); | |||
} | |||
getLookAndFeel().drawImageButton (g, im, imageX, imageY, imageW, imageH, | |||
isButtonDown ? downOverlay | |||
: (isMouseOverButton ? overOverlay | |||
: normalOverlay), | |||
isButtonDown ? downOpacity | |||
: (isMouseOverButton ? overOpacity | |||
: normalOpacity), | |||
*this); | |||
} | |||
} | |||
@@ -38,6 +38,7 @@ BEGIN_JUCE_NAMESPACE | |||
#include "../buttons/juce_ToggleButton.h" | |||
#include "../buttons/juce_ShapeButton.h" | |||
#include "../buttons/juce_ArrowButton.h" | |||
#include "../buttons/juce_ImageButton.h" | |||
#include "../buttons/juce_DrawableButton.h" | |||
#include "../buttons/juce_HyperlinkButton.h" | |||
#include "../windows/juce_AlertWindow.h" | |||
@@ -1619,6 +1620,31 @@ void LookAndFeel::layoutFilenameComponent (FilenameComponent& filenameComp, | |||
filenameBox->setBounds (0, 0, browseButton->getX(), filenameComp.getHeight()); | |||
} | |||
//============================================================================== | |||
void LookAndFeel::drawImageButton (Graphics& g, Image* image, | |||
int imageX, int imageY, int imageW, int imageH, | |||
const Colour& overlayColour, | |||
float imageOpacity, | |||
ImageButton& button) | |||
{ | |||
if (! overlayColour.isOpaque()) | |||
{ | |||
g.setOpacity (imageOpacity); | |||
g.drawImage (image, imageX, imageY, imageW, imageH, | |||
0, 0, image->getWidth(), image->getHeight(), false); | |||
} | |||
if (! overlayColour.isTransparent()) | |||
{ | |||
g.setColour (overlayColour); | |||
g.drawImage (image, imageX, imageY, imageW, imageH, | |||
0, 0, image->getWidth(), image->getHeight(), true); | |||
} | |||
} | |||
//============================================================================== | |||
void LookAndFeel::drawCornerResizer (Graphics& g, | |||
int w, int h, | |||
@@ -61,6 +61,7 @@ class ProgressBar; | |||
class FileBrowserComponent; | |||
class DirectoryContentsDisplayComponent; | |||
class FilePreviewComponent; | |||
class ImageButton; | |||
//============================================================================== | |||
@@ -534,6 +535,13 @@ public: | |||
virtual Button* createTabBarExtrasButton(); | |||
//============================================================================== | |||
virtual void drawImageButton (Graphics& g, Image* image, | |||
int imageX, int imageY, int imageW, int imageH, | |||
const Colour& overlayColour, | |||
float imageOpacity, | |||
ImageButton& button); | |||
//============================================================================== | |||
virtual void drawTableHeaderBackground (Graphics& g, TableHeaderComponent& header); | |||
@@ -53,8 +53,11 @@ namespace pnglibNamespace | |||
using namespace zlibNamespace; | |||
#if JUCE_INCLUDE_PNGLIB_CODE | |||
using ::malloc; | |||
using ::free; | |||
#if (! defined(_MSC_VER)) || _MSC_VER != 1310 | |||
using ::malloc; // (causes conflict in VS.NET 2003) | |||
using ::free; | |||
#endif | |||
extern "C" | |||
{ | |||
@@ -105,6 +108,11 @@ BEGIN_JUCE_NAMESPACE | |||
#include "../../colour/juce_PixelFormats.h" | |||
using namespace pnglibNamespace; | |||
#if defined (_MSC_VER) && _MSC_VER == 1310 && ! defined (JUCE_DEBUG) | |||
using ::calloc; // (needed in VS.NET 2003) | |||
#endif | |||
using ::malloc; | |||
using ::free; | |||