@@ -10,11 +10,11 @@ | |||
pluginIsSynth="0" pluginWantsMidiIn="0" pluginProducesMidiOut="0" | |||
pluginSilenceInIsSilenceOut="0" pluginTailLength="0" pluginEditorRequiresKeys="0" | |||
pluginAUExportPrefix="TheIntrojucerAU" pluginAUViewClass="TheIntrojucerAU_V1" | |||
pluginRTASCategory="" bundleIdentifier="com.rawmaterialsoftware.introjucer" | |||
bigIcon="rVgowdy"> | |||
pluginRTASCategory="" bundleIdentifier="com.rawmaterialsoftware.introjucer"> | |||
<EXPORTFORMATS> | |||
<XCODE_MAC targetFolder="Builds/MacOSX" vstFolder="~/SDKs/vstsdk2.4" rtasFolder="~/SDKs/PT_80_SDK" | |||
juceFolder="../.." documentExtensions=".jucer" objCExtraSuffix="zNNCr"> | |||
juceFolder="../.." documentExtensions=".jucer" objCExtraSuffix="zNNCr" | |||
bigIcon="rVgowdy"> | |||
<CONFIGURATIONS> | |||
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="Introjucer" | |||
osxSDK="default" osxCompatibility="default" osxArchitecture="default"/> | |||
@@ -23,27 +23,31 @@ | |||
</CONFIGURATIONS> | |||
</XCODE_MAC> | |||
<VS2005 targetFolder="Builds/VisualStudio2005" vstFolder="c:\SDKs\vstsdk2.4" | |||
rtasFolder="c:\SDKs\PT_80_SDK" juceFolder="../.." libraryType="1"> | |||
rtasFolder="c:\SDKs\PT_80_SDK" juceFolder="../.." libraryType="1" | |||
bigIcon="rVgowdy"> | |||
<CONFIGURATIONS> | |||
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="Introjucer"/> | |||
<CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="Introjucer"/> | |||
</CONFIGURATIONS> | |||
</VS2005> | |||
<VS2008 targetFolder="Builds/VisualStudio2008" vstFolder="c:\SDKs\vstsdk2.4" | |||
rtasFolder="c:\SDKs\PT_80_SDK" juceFolder="../.." libraryType="1"> | |||
rtasFolder="c:\SDKs\PT_80_SDK" juceFolder="../.." libraryType="1" | |||
bigIcon="rVgowdy"> | |||
<CONFIGURATIONS> | |||
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="Introjucer"/> | |||
<CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="Introjucer"/> | |||
</CONFIGURATIONS> | |||
</VS2008> | |||
<LINUX_MAKE targetFolder="Builds/Linux" vstFolder="~/SDKs/vstsdk2.4" juceFolder="../.."> | |||
<LINUX_MAKE targetFolder="Builds/Linux" vstFolder="~/SDKs/vstsdk2.4" juceFolder="../.." | |||
bigIcon="rVgowdy"> | |||
<CONFIGURATIONS> | |||
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="Introjucer"/> | |||
<CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="Introjucer"/> | |||
</CONFIGURATIONS> | |||
</LINUX_MAKE> | |||
<VS2010 targetFolder="Builds/VisualStudio2010" vstFolder="c:\SDKs\vstsdk2.4" | |||
rtasFolder="c:\SDKs\PT_80_SDK" libraryType="1" juceFolder="../.."> | |||
rtasFolder="c:\SDKs\PT_80_SDK" libraryType="1" juceFolder="../.." | |||
bigIcon="rVgowdy"> | |||
<CONFIGURATIONS> | |||
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="Introjucer"/> | |||
<CONFIGURATION name="Release" isDebug="0" optimisation="3" targetName="Introjucer"/> | |||
@@ -388,11 +388,11 @@ private: | |||
{ | |||
Array<Image> images; | |||
Image bigIcon (project.getBigIcon()); | |||
Image bigIcon (getBigIcon()); | |||
if (bigIcon.isValid()) | |||
images.add (bigIcon); | |||
Image smallIcon (project.getSmallIcon()); | |||
Image smallIcon (getSmallIcon()); | |||
if (smallIcon.isValid()) | |||
images.add (smallIcon); | |||
@@ -220,6 +220,31 @@ void ProjectExporter::createPropertyEditors (PropertyListBuilder& props) | |||
"Extra command-line flags to be passed to the compiler. This string can contain references to preprocessor definitions in the form ${NAME_OF_DEFINITION}, which will be replaced with their values."); | |||
props.add (new TextPropertyComponent (getExtraLinkerFlags(), "Extra linker flags", 2048, false), | |||
"Extra command-line flags to be passed to the linker. You might want to use this for adding additional libraries. This string can contain references to preprocessor definitions in the form ${NAME_OF_VALUE}, which will be replaced with their values."); | |||
{ | |||
OwnedArray<Project::Item> images; | |||
project.findAllImageItems (images); | |||
StringArray choices; | |||
Array<var> ids; | |||
choices.add ("<None>"); | |||
ids.add (var::null); | |||
choices.add (String::empty); | |||
ids.add (var::null); | |||
for (int i = 0; i < images.size(); ++i) | |||
{ | |||
choices.add (images.getUnchecked(i)->getName().toString()); | |||
ids.add (images.getUnchecked(i)->getID()); | |||
} | |||
props.add (new ChoicePropertyComponent (getSmallIconImageItemID(), "Icon (small)", choices, ids), | |||
"Sets an icon to use for the executable."); | |||
props.add (new ChoicePropertyComponent (getBigIconImageItemID(), "Icon (large)", choices, ids), | |||
"Sets an icon to use for the executable."); | |||
} | |||
} | |||
StringPairArray ProjectExporter::getAllPreprocessorDefs (const ProjectExporter::BuildConfiguration& config) const | |||
@@ -243,42 +268,6 @@ String ProjectExporter::replacePreprocessorTokens (const ProjectExporter::BuildC | |||
return replacePreprocessorDefs (getAllPreprocessorDefs (config), sourceString); | |||
} | |||
Image ProjectExporter::getBestIconForSize (int size, bool returnNullIfNothingBigEnough) | |||
{ | |||
Image im; | |||
const Image im1 (project.getSmallIcon()); | |||
const Image im2 (project.getBigIcon()); | |||
if (im1.isValid() && im2.isValid()) | |||
{ | |||
if (im1.getWidth() >= size && im2.getWidth() >= size) | |||
im = im1.getWidth() < im2.getWidth() ? im1 : im2; | |||
else if (im1.getWidth() >= size) | |||
im = im1; | |||
else if (im2.getWidth() >= size) | |||
im = im2; | |||
else | |||
return Image::null; | |||
} | |||
else | |||
{ | |||
im = im1.isValid() ? im1 : im2; | |||
} | |||
if (size == im.getWidth() && size == im.getHeight()) | |||
return im; | |||
if (returnNullIfNothingBigEnough && im.getWidth() < size && im.getHeight() < size) | |||
return Image::null; | |||
Image newIm (Image::ARGB, size, size, true, SoftwareImageType()); | |||
Graphics g (newIm); | |||
g.drawImageWithin (im, 0, 0, size, size, | |||
RectanglePlacement::centred | RectanglePlacement::onlyReduceInSize, false); | |||
return newIm; | |||
} | |||
Project::Item& ProjectExporter::getModulesGroup() | |||
{ | |||
if (modulesGroup == nullptr) | |||
@@ -389,6 +378,52 @@ void ProjectExporter::createDefaultConfigs() | |||
} | |||
} | |||
Image ProjectExporter::getBigIcon() | |||
{ | |||
return project.getMainGroup().findItemWithID (getBigIconImageItemID().toString()).loadAsImageFile(); | |||
} | |||
Image ProjectExporter::getSmallIcon() | |||
{ | |||
return project.getMainGroup().findItemWithID (getSmallIconImageItemID().toString()).loadAsImageFile(); | |||
} | |||
Image ProjectExporter::getBestIconForSize (int size, bool returnNullIfNothingBigEnough) | |||
{ | |||
Image im; | |||
const Image im1 (getSmallIcon()); | |||
const Image im2 (getBigIcon()); | |||
if (im1.isValid() && im2.isValid()) | |||
{ | |||
if (im1.getWidth() >= size && im2.getWidth() >= size) | |||
im = im1.getWidth() < im2.getWidth() ? im1 : im2; | |||
else if (im1.getWidth() >= size) | |||
im = im1; | |||
else if (im2.getWidth() >= size) | |||
im = im2; | |||
else | |||
return Image::null; | |||
} | |||
else | |||
{ | |||
im = im1.isValid() ? im1 : im2; | |||
} | |||
if (size == im.getWidth() && size == im.getHeight()) | |||
return im; | |||
if (returnNullIfNothingBigEnough && im.getWidth() < size && im.getHeight() < size) | |||
return Image::null; | |||
Image newIm (Image::ARGB, size, size, true, SoftwareImageType()); | |||
Graphics g (newIm); | |||
g.drawImageWithin (im, 0, 0, size, size, | |||
RectanglePlacement::centred | RectanglePlacement::onlyReduceInSize, false); | |||
return newIm; | |||
} | |||
//============================================================================== | |||
ProjectExporter::ConfigIterator::ConfigIterator (ProjectExporter& exporter_) | |||
: index (-1), exporter (exporter_) | |||
@@ -86,6 +86,12 @@ public: | |||
RelativePath rebaseFromProjectFolderToBuildTarget (const RelativePath& path) const; | |||
void addToExtraSearchPaths (const RelativePath& pathFromProjectFolder); | |||
Value getBigIconImageItemID() const { return getSetting (Ids::bigIcon); } | |||
Value getSmallIconImageItemID() const { return getSetting (Ids::smallIcon); } | |||
Image getBigIcon(); | |||
Image getSmallIcon(); | |||
Image getBestIconForSize (int size, bool returnNullIfNothingBigEnough); | |||
String getExporterIdentifierMacro() const | |||
{ | |||
return "JUCER_" + settings.getType().toString() + "_" | |||
@@ -247,8 +253,6 @@ protected: | |||
return name; | |||
} | |||
Image getBestIconForSize (int size, bool returnNullIfNothingBigEnough); | |||
//============================================================================== | |||
static void overwriteFileIfDifferentOrThrow (const File& file, const MemoryOutputStream& newData) | |||
{ | |||
@@ -111,6 +111,8 @@ void Project::setMissingDefaultValues() | |||
getVersion() = "1.0.0"; | |||
updateOldStyleConfigList(); | |||
moveOldPropertyFromProjectToAllExporters (Ids::bigIcon); | |||
moveOldPropertyFromProjectToAllExporters (Ids::smallIcon); | |||
for (Project::ExporterIterator exporter (*this); exporter.next();) | |||
if (exporter->getNumConfigurations() == 0) | |||
@@ -160,6 +162,17 @@ void Project::updateOldStyleConfigList() | |||
} | |||
} | |||
void Project::moveOldPropertyFromProjectToAllExporters (Identifier name) | |||
{ | |||
if (projectRoot.hasProperty (name)) | |||
{ | |||
for (Project::ExporterIterator exporter (*this); exporter.next();) | |||
exporter->settings.setProperty (name, projectRoot [name], nullptr); | |||
projectRoot.removeProperty (name, nullptr); | |||
} | |||
} | |||
void Project::addDefaultModules (bool shouldCopyFilesLocally) | |||
{ | |||
addModule ("juce_core", shouldCopyFilesLocally); | |||
@@ -337,32 +350,7 @@ void Project::createPropertyEditors (PropertyListBuilder& props) | |||
props.add (new TextPropertyComponent (getBundleIdentifier(), "Bundle Identifier", 256, false), | |||
"A unique identifier for this product, mainly for use in Mac builds. It should be something like 'com.yourcompanyname.yourproductname'"); | |||
{ | |||
OwnedArray<Project::Item> images; | |||
findAllImageItems (images); | |||
StringArray choices; | |||
Array<var> ids; | |||
choices.add ("<None>"); | |||
ids.add (var::null); | |||
choices.add (String::empty); | |||
ids.add (var::null); | |||
for (int i = 0; i < images.size(); ++i) | |||
{ | |||
choices.add (images.getUnchecked(i)->getName().toString()); | |||
ids.add (images.getUnchecked(i)->getID()); | |||
} | |||
props.add (new ChoicePropertyComponent (getSmallIconImageItemID(), "Icon (small)", choices, ids), | |||
"Sets an icon to use for the executable."); | |||
props.add (new ChoicePropertyComponent (getBigIconImageItemID(), "Icon (large)", choices, ids), | |||
"Sets an icon to use for the executable."); | |||
} | |||
getProjectType().createPropertyEditors(*this, props); | |||
getProjectType().createPropertyEditors (*this, props); | |||
props.add (new TextPropertyComponent (getProjectPreprocessorDefs(), "Preprocessor definitions", 32768, false), | |||
"Extra preprocessor definitions. Use the form \"NAME1=value NAME2=value\", using whitespace or commas to separate the items - to include a space or comma in a definition, precede it with a backslash."); | |||
@@ -385,16 +373,6 @@ String Project::getVersionAsHex() const | |||
return "0x" + String::toHexString (value); | |||
} | |||
Image Project::getBigIcon() | |||
{ | |||
return getMainGroup().findItemWithID (getBigIconImageItemID().toString()).loadAsImageFile(); | |||
} | |||
Image Project::getSmallIcon() | |||
{ | |||
return getMainGroup().findItemWithID (getSmallIconImageItemID().toString()).loadAsImageFile(); | |||
} | |||
StringPairArray Project::getPreprocessorDefs() const | |||
{ | |||
return parsePreprocessorDefs (getProjectPreprocessorDefs().toString()); | |||
@@ -87,11 +87,6 @@ public: | |||
Value getProjectPreprocessorDefs() const { return getProjectValue (Ids::defines); } | |||
StringPairArray getPreprocessorDefs() const; | |||
Value getBigIconImageItemID() const { return getProjectValue ("bigIcon"); } | |||
Value getSmallIconImageItemID() const { return getProjectValue ("smallIcon"); } | |||
Image getBigIcon(); | |||
Image getSmallIcon(); | |||
//============================================================================== | |||
File getAppIncludeFile() const { return getGeneratedCodeFolder().getChildFile (getJuceSourceHFilename()); } | |||
File getGeneratedCodeFolder() const { return getFile().getSiblingFile ("JuceLibraryCode"); } | |||
@@ -268,6 +263,7 @@ private: | |||
ValueTree getModulesNode(); | |||
void updateOldStyleConfigList(); | |||
void moveOldPropertyFromProjectToAllExporters (Identifier name); | |||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Project); | |||
}; | |||
@@ -64,6 +64,8 @@ namespace Ids | |||
DECLARE_ID (osxArchitecture); | |||
DECLARE_ID (winArchitecture); | |||
DECLARE_ID (winWarningLevel); | |||
DECLARE_ID (bigIcon); | |||
DECLARE_ID (smallIcon); | |||
DECLARE_ID (jucerVersion); | |||
DECLARE_ID (projectType); | |||
DECLARE_ID (prebuildCommand); | |||
@@ -7,11 +7,10 @@ | |||
pluginCode="Abcd" pluginChannelConfigs="{ {1, 1}, {2, 2} }" pluginIsSynth="0" | |||
pluginWantsMidiIn="0" pluginProducesMidiOut="0" pluginSilenceInIsSilenceOut="0" | |||
pluginTailLength="0" pluginEditorRequiresKeys="0" pluginAUExportPrefix="JuceDemoAU" | |||
pluginAUViewClass="JuceDemoAU_V1" pluginRTASCategory="" icon="Duj062Top" | |||
bigIcon="f4hwldS"> | |||
pluginAUViewClass="JuceDemoAU_V1" pluginRTASCategory="" icon="Duj062Top"> | |||
<EXPORTFORMATS> | |||
<XCODE_MAC targetFolder="Builds/MacOSX" vstFolder="~/SDKs/vstsdk2.4" rtasFolder="~/SDKs/PT_80_SDK" | |||
juceFolder="../../../juce" objCExtraSuffix="JSLvvV6j"> | |||
juceFolder="../../../juce" objCExtraSuffix="JSLvvV6j" bigIcon="f4hwldS"> | |||
<CONFIGURATIONS> | |||
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="JuceDemo" | |||
osxSDK="default" osxCompatibility="default" defines="JUCE_UNIT_TESTS=1" | |||
@@ -22,7 +21,7 @@ | |||
</CONFIGURATIONS> | |||
</XCODE_MAC> | |||
<XCODE_IPHONE targetFolder="Builds/iOS" vstFolder="~/SDKs/vstsdk2.4" rtasFolder="~/SDKs/PT_80_SDK" | |||
juceFolder="../../../juce" objCExtraSuffix="JSLvvV6j"> | |||
juceFolder="../../../juce" objCExtraSuffix="JSLvvV6j" bigIcon="f4hwldS"> | |||
<CONFIGURATIONS> | |||
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="JuceDemo" | |||
osxSDK="default" osxCompatibility="default" defines="JUCE_UNIT_TESTS=1" | |||
@@ -33,7 +32,8 @@ | |||
</CONFIGURATIONS> | |||
</XCODE_IPHONE> | |||
<VS2005 targetFolder="Builds/VisualStudio2005" vstFolder="c:\SDKs\vstsdk2.4" | |||
rtasFolder="c:\SDKs\PT_80_SDK" juceFolder="../../../juce" libraryType="1"> | |||
rtasFolder="c:\SDKs\PT_80_SDK" juceFolder="../../../juce" libraryType="1" | |||
bigIcon="f4hwldS"> | |||
<CONFIGURATIONS> | |||
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="JuceDemo" | |||
defines="JUCE_UNIT_TESTS=1"/> | |||
@@ -42,7 +42,8 @@ | |||
</CONFIGURATIONS> | |||
</VS2005> | |||
<VS2008 targetFolder="Builds/VisualStudio2008" vstFolder="c:\SDKs\vstsdk2.4" | |||
rtasFolder="c:\SDKs\PT_80_SDK" juceFolder="../../../juce" libraryType="1"> | |||
rtasFolder="c:\SDKs\PT_80_SDK" juceFolder="../../../juce" libraryType="1" | |||
bigIcon="f4hwldS"> | |||
<CONFIGURATIONS> | |||
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="JuceDemo" | |||
defines="JUCE_UNIT_TESTS=1"/> | |||
@@ -50,7 +51,8 @@ | |||
defines="JUCE_UNIT_TESTS=1"/> | |||
</CONFIGURATIONS> | |||
</VS2008> | |||
<LINUX_MAKE targetFolder="Builds/Linux" vstFolder="~/SDKs/vstsdk2.4" juceFolder="../../../juce"> | |||
<LINUX_MAKE targetFolder="Builds/Linux" vstFolder="~/SDKs/vstsdk2.4" juceFolder="../../../juce" | |||
bigIcon="f4hwldS"> | |||
<CONFIGURATIONS> | |||
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="JuceDemo" | |||
defines="JUCE_UNIT_TESTS=1"/> | |||
@@ -59,7 +61,8 @@ | |||
</CONFIGURATIONS> | |||
</LINUX_MAKE> | |||
<VS2010 targetFolder="Builds/VisualStudio2010" vstFolder="c:\SDKs\vstsdk2.4" | |||
rtasFolder="c:\SDKs\PT_80_SDK" libraryType="1" juceFolder="../../../juce"> | |||
rtasFolder="c:\SDKs\PT_80_SDK" libraryType="1" juceFolder="../../../juce" | |||
bigIcon="f4hwldS"> | |||
<CONFIGURATIONS> | |||
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="JuceDemo" | |||
defines="JUCE_UNIT_TESTS=1" winArchitecture="32-bit"/> | |||
@@ -69,7 +72,7 @@ | |||
</VS2010> | |||
<ANDROID targetFolder="Builds/Android" androidSDKPath="${user.home}/SDKs/android-sdk-macosx" | |||
androidNDKPath="${user.home}/SDKs/android-ndk-r7" juceFolder="../../../juce" | |||
androidInternetNeeded="1"> | |||
androidInternetNeeded="1" bigIcon="f4hwldS"> | |||
<CONFIGURATIONS> | |||
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="JuceDemo" | |||
defines="JUCE_UNIT_TESTS=1"/> | |||
@@ -1,28 +1,30 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<JUCERPROJECT id="Uy86Nk" name="Jucer" projectType="guiapp" version="1.0.0" | |||
bundleIdentifier="com.yourcompany.Jucer" jucerVersion="3.0.0" | |||
bigIcon="HFdB13"> | |||
bundleIdentifier="com.yourcompany.Jucer" jucerVersion="3.0.0"> | |||
<EXPORTFORMATS> | |||
<XCODE_MAC targetFolder="Builds/MacOSX" objCExtraSuffix="wQBvzo" juceFolder="../.."> | |||
<XCODE_MAC targetFolder="Builds/MacOSX" objCExtraSuffix="wQBvzo" juceFolder="../.." | |||
bigIcon="HFdB13"> | |||
<CONFIGURATIONS> | |||
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="Jucer"/> | |||
<CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="Jucer"/> | |||
</CONFIGURATIONS> | |||
</XCODE_MAC> | |||
<VS2008 targetFolder="Builds/VisualStudio2008" libraryType="1" juceFolder="../.."> | |||
<VS2008 targetFolder="Builds/VisualStudio2008" libraryType="1" juceFolder="../.." | |||
bigIcon="HFdB13"> | |||
<CONFIGURATIONS> | |||
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="Jucer"/> | |||
<CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="Jucer"/> | |||
</CONFIGURATIONS> | |||
</VS2008> | |||
<VS2010 targetFolder="Builds/VisualStudio2010" libraryType="1" juceFolder="../.."> | |||
<VS2010 targetFolder="Builds/VisualStudio2010" libraryType="1" juceFolder="../.." | |||
bigIcon="HFdB13"> | |||
<CONFIGURATIONS> | |||
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="Jucer"/> | |||
<CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="Jucer"/> | |||
</CONFIGURATIONS> | |||
</VS2010> | |||
<LINUX_MAKE targetFolder="Builds/Linux" juceFolder="../.."> | |||
<LINUX_MAKE targetFolder="Builds/Linux" juceFolder="../.." bigIcon="HFdB13"> | |||
<CONFIGURATIONS> | |||
<CONFIGURATION name="Debug" isDebug="1" optimisation="1" targetName="Jucer"/> | |||
<CONFIGURATION name="Release" isDebug="0" optimisation="2" targetName="Jucer"/> | |||
@@ -1009,6 +1009,12 @@ ValueTree ValueTree::readFromData (const void* const data, const size_t numBytes | |||
return readFromStream (in); | |||
} | |||
ValueTree ValueTree::readFromGZIPData (const void* const data, const size_t numBytes) | |||
{ | |||
MemoryInputStream in (data, numBytes, false); | |||
GZIPDecompressorInputStream gzipStream (in); | |||
return readFromStream (gzipStream); | |||
} | |||
//============================================================================== | |||
#if JUCE_UNIT_TESTS | |||
@@ -345,6 +345,11 @@ public: | |||
/** Reloads a tree from a data block that was written with writeToStream(). */ | |||
static ValueTree readFromData (const void* data, size_t numBytes); | |||
/** Reloads a tree from a data block that was written with writeToStream() and | |||
then zipped using GZIPCompressorOutputStream. | |||
*/ | |||
static ValueTree readFromGZIPData (const void* data, size_t numBytes); | |||
//============================================================================== | |||
/** Listener class for events that happen to a ValueTree. | |||