1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Reduced the dependencies of the juce demo. Jucer development.

This commit is contained in:
Julian Storer 2010-04-26 13:08:22 +01:00
parent 9c5651fb8e
commit 0d611ec065
22 changed files with 872 additions and 31 deletions

View file

@ -45,6 +45,7 @@ endif
OBJECTS := \
$(OBJDIR)/jucer_ComponentTypeManager.o \
$(OBJDIR)/jucer_ComponentDocument.o \
$(OBJDIR)/jucer_CodeGenerator.o \
$(OBJDIR)/jucer_Coordinate.o \
$(OBJDIR)/jucer_DrawableDocument.o \
$(OBJDIR)/jucer_NewFileWizard.o \
@ -100,6 +101,11 @@ $(OBJDIR)/jucer_ComponentDocument.o: ../../Source/model/jucer_ComponentDocument.
@echo $(notdir $<)
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/jucer_CodeGenerator.o: ../../Source/model/jucer_CodeGenerator.cpp
-@mkdir -p $(OBJDIR)
@echo $(notdir $<)
@$(CXX) $(CXXFLAGS) -o "$@" -c "$<"
$(OBJDIR)/jucer_Coordinate.o: ../../Source/model/jucer_Coordinate.cpp
-@mkdir -p $(OBJDIR)
@echo $(notdir $<)

View file

@ -19,6 +19,7 @@
2E6836738CE7EB452FDC7E9A = { isa = PBXBuildFile; fileRef = D9FB1A5365FEEB854A0FF7BF; };
52D75B8B0F52DD4F37A4B1C0 = { isa = PBXBuildFile; fileRef = 82A1EC47692975C7031B3973; };
CD4226951C3F7FE19CF8A7CE = { isa = PBXBuildFile; fileRef = 2D6D6985B452EA0B67A18914; };
8E859D542404B684D5E1545F = { isa = PBXBuildFile; fileRef = 42CEC4195577AE91AA6CBA7F; };
1DF9688E29753A0459E6C32A = { isa = PBXBuildFile; fileRef = 45C80436FD5A8438D0E6BE17; };
1174D3512AF8207950094C56 = { isa = PBXBuildFile; fileRef = FF625CB50FB5C3536BA40604; };
087CCE9E7146F1EC4F241254 = { isa = PBXBuildFile; fileRef = DA142548FCADFAC50648ED3C; };
@ -77,6 +78,8 @@
03AD2BF6C80C6AF47BBDB7E9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_Viewport.h; path = "../../Source/model/Component Types/jucer_Viewport.h"; sourceTree = SOURCE_ROOT; };
2D6D6985B452EA0B67A18914 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_ComponentDocument.cpp; path = ../../Source/model/jucer_ComponentDocument.cpp; sourceTree = SOURCE_ROOT; };
E6CC3A04349F6B227FDAB26F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ComponentDocument.h; path = ../../Source/model/jucer_ComponentDocument.h; sourceTree = SOURCE_ROOT; };
42CEC4195577AE91AA6CBA7F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_CodeGenerator.cpp; path = ../../Source/model/jucer_CodeGenerator.cpp; sourceTree = SOURCE_ROOT; };
FE3EB6472027A398A978CBE4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_CodeGenerator.h; path = ../../Source/model/jucer_CodeGenerator.h; sourceTree = SOURCE_ROOT; };
45C80436FD5A8438D0E6BE17 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_Coordinate.cpp; path = ../../Source/model/jucer_Coordinate.cpp; sourceTree = SOURCE_ROOT; };
420E4189E7DE25E9D0D8E5B8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_Coordinate.h; path = ../../Source/model/jucer_Coordinate.h; sourceTree = SOURCE_ROOT; };
FF625CB50FB5C3536BA40604 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_DrawableDocument.cpp; path = ../../Source/model/jucer_DrawableDocument.cpp; sourceTree = SOURCE_ROOT; };
@ -143,6 +146,8 @@
1C52B91B15DF56E0A37F3EEE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_AudioPluginEditorTemplate.h; path = ../../Source/templates/jucer_AudioPluginEditorTemplate.h; sourceTree = SOURCE_ROOT; };
4D62A4E094921086FBB82248 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_AudioPluginFilterTemplate.cpp; path = ../../Source/templates/jucer_AudioPluginFilterTemplate.cpp; sourceTree = SOURCE_ROOT; };
C2AE936214AC10DC4FABAC2F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_AudioPluginFilterTemplate.h; path = ../../Source/templates/jucer_AudioPluginFilterTemplate.h; sourceTree = SOURCE_ROOT; };
AC0E488751C4C402D9D84B93 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_ComponentTemplate.cpp; path = ../../Source/templates/jucer_ComponentTemplate.cpp; sourceTree = SOURCE_ROOT; };
B2FB0FD53553DB371FD1C748 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ComponentTemplate.h; path = ../../Source/templates/jucer_ComponentTemplate.h; sourceTree = SOURCE_ROOT; };
061B86C84B0D279F1EABBBE2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_MainConsoleAppTemplate.cpp; path = ../../Source/templates/jucer_MainConsoleAppTemplate.cpp; sourceTree = SOURCE_ROOT; };
1EC5B7483B37A4163CA19549 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_MainTemplate.cpp; path = ../../Source/templates/jucer_MainTemplate.cpp; sourceTree = SOURCE_ROOT; };
4A80C6415DB1C1CB47DBE23F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = jucer_NewCppFileTemplate.cpp; path = ../../Source/templates/jucer_NewCppFileTemplate.cpp; sourceTree = SOURCE_ROOT; };
@ -177,6 +182,8 @@
D3D6EC2C17524688F2E803EB,
2D6D6985B452EA0B67A18914,
E6CC3A04349F6B227FDAB26F,
42CEC4195577AE91AA6CBA7F,
FE3EB6472027A398A978CBE4,
45C80436FD5A8438D0E6BE17,
420E4189E7DE25E9D0D8E5B8,
FF625CB50FB5C3536BA40604,
@ -251,6 +258,8 @@
1C52B91B15DF56E0A37F3EEE,
4D62A4E094921086FBB82248,
C2AE936214AC10DC4FABAC2F,
AC0E488751C4C402D9D84B93,
B2FB0FD53553DB371FD1C748,
061B86C84B0D279F1EABBBE2,
1EC5B7483B37A4163CA19549,
4A80C6415DB1C1CB47DBE23F,
@ -359,6 +368,7 @@
5362E03ADF975A126C1F2F7B = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (
52D75B8B0F52DD4F37A4B1C0,
CD4226951C3F7FE19CF8A7CE,
8E859D542404B684D5E1545F,
1DF9688E29753A0459E6C32A,
1174D3512AF8207950094C56,
087CCE9E7146F1EC4F241254,

View file

@ -151,6 +151,8 @@
</Filter>
<File RelativePath="..\..\Source\model\jucer_ComponentDocument.cpp"/>
<File RelativePath="..\..\Source\model\jucer_ComponentDocument.h"/>
<File RelativePath="..\..\Source\model\jucer_CodeGenerator.cpp"/>
<File RelativePath="..\..\Source\model\jucer_CodeGenerator.h"/>
<File RelativePath="..\..\Source\model\jucer_Coordinate.cpp"/>
<File RelativePath="..\..\Source\model\jucer_Coordinate.h"/>
<File RelativePath="..\..\Source\model\jucer_DrawableDocument.cpp"/>
@ -274,6 +276,26 @@
<Tool Name="VCCLCompilerTool"/>
</FileConfiguration>
</File>
<File RelativePath="..\..\Source\templates\jucer_ComponentTemplate.cpp">
<FileConfiguration Name="Debug&#124;Win32"
ExcludedFromBuild="true">
<Tool Name="VCCLCompilerTool"/>
</FileConfiguration>
<FileConfiguration Name="Release&#124;Win32"
ExcludedFromBuild="true">
<Tool Name="VCCLCompilerTool"/>
</FileConfiguration>
</File>
<File RelativePath="..\..\Source\templates\jucer_ComponentTemplate.h">
<FileConfiguration Name="Debug&#124;Win32"
ExcludedFromBuild="true">
<Tool Name="VCCLCompilerTool"/>
</FileConfiguration>
<FileConfiguration Name="Release&#124;Win32"
ExcludedFromBuild="true">
<Tool Name="VCCLCompilerTool"/>
</FileConfiguration>
</File>
<File RelativePath="..\..\Source\templates\jucer_MainConsoleAppTemplate.cpp">
<FileConfiguration Name="Debug&#124;Win32"
ExcludedFromBuild="true">

View file

@ -151,6 +151,8 @@
</Filter>
<File RelativePath="..\..\Source\model\jucer_ComponentDocument.cpp"/>
<File RelativePath="..\..\Source\model\jucer_ComponentDocument.h"/>
<File RelativePath="..\..\Source\model\jucer_CodeGenerator.cpp"/>
<File RelativePath="..\..\Source\model\jucer_CodeGenerator.h"/>
<File RelativePath="..\..\Source\model\jucer_Coordinate.cpp"/>
<File RelativePath="..\..\Source\model\jucer_Coordinate.h"/>
<File RelativePath="..\..\Source\model\jucer_DrawableDocument.cpp"/>
@ -274,6 +276,26 @@
<Tool Name="VCCLCompilerTool"/>
</FileConfiguration>
</File>
<File RelativePath="..\..\Source\templates\jucer_ComponentTemplate.cpp">
<FileConfiguration Name="Debug&#124;Win32"
ExcludedFromBuild="true">
<Tool Name="VCCLCompilerTool"/>
</FileConfiguration>
<FileConfiguration Name="Release&#124;Win32"
ExcludedFromBuild="true">
<Tool Name="VCCLCompilerTool"/>
</FileConfiguration>
</File>
<File RelativePath="..\..\Source\templates\jucer_ComponentTemplate.h">
<FileConfiguration Name="Debug&#124;Win32"
ExcludedFromBuild="true">
<Tool Name="VCCLCompilerTool"/>
</FileConfiguration>
<FileConfiguration Name="Release&#124;Win32"
ExcludedFromBuild="true">
<Tool Name="VCCLCompilerTool"/>
</FileConfiguration>
</File>
<File RelativePath="..\..\Source\templates\jucer_MainConsoleAppTemplate.cpp">
<FileConfiguration Name="Debug&#124;Win32"
ExcludedFromBuild="true">

View file

@ -22,6 +22,8 @@ const char* BinaryData::getNamedResource (const char* resourceNameUTF8, int& num
case 0x4d0721bf: numBytes = BinaryData::jucer_AudioPluginEditorTemplate_hSize; return BinaryData::jucer_AudioPluginEditorTemplate_h;
case 0x51b49ac5: numBytes = BinaryData::jucer_AudioPluginFilterTemplate_cppSize; return BinaryData::jucer_AudioPluginFilterTemplate_cpp;
case 0x488afa0a: numBytes = BinaryData::jucer_AudioPluginFilterTemplate_hSize; return BinaryData::jucer_AudioPluginFilterTemplate_h;
case 0xabad7041: numBytes = BinaryData::jucer_ComponentTemplate_cppSize; return BinaryData::jucer_ComponentTemplate_cpp;
case 0xfc72fe86: numBytes = BinaryData::jucer_ComponentTemplate_hSize; return BinaryData::jucer_ComponentTemplate_h;
case 0x8905395b: numBytes = BinaryData::jucer_MainConsoleAppTemplate_cppSize; return BinaryData::jucer_MainConsoleAppTemplate_cpp;
case 0x7a0186b1: numBytes = BinaryData::jucer_MainTemplate_cppSize; return BinaryData::jucer_MainTemplate_cpp;
case 0x02a2a077: numBytes = BinaryData::jucer_NewCppFileTemplate_cppSize; return BinaryData::jucer_NewCppFileTemplate_cpp;
@ -416,6 +418,155 @@ static const unsigned char temp_a7c425dd[] =
const char* BinaryData::jucer_AudioPluginFilterTemplate_h = (const char*) temp_a7c425dd;
//================== jucer_ComponentTemplate.cpp ==================
static const unsigned char temp_73015554[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
" This is an automatically generated file created by the Jucer!\r\n"
"\r\n"
" Creation date: %%creationTime%%\r\n"
"\r\n"
" Be careful when adding custom code to these files, as only the code within\r\n"
" the \"//[xyz]\" and \"//[/xyz]\" sections will be retained when the file is loaded\r\n"
" and re-saved.\r\n"
"\r\n"
" Jucer version: 1.12\r\n"
"\r\n"
" ------------------------------------------------------------------------------\r\n"
"\r\n"
" The Jucer is part of the JUCE library - \"Jules' Utility Class Extensions\"\r\n"
" Copyright 2004-6 by Raw Material Software ltd.\r\n"
"\r\n"
" ==============================================================================\r\n"
"*/\r\n"
"\r\n"
"//[Headers] You can add your own extra header files here...\r\n"
"//[/Headers]\r\n"
"\r\n"
"%%includeFilesCPP%%\r\n"
"\r\n"
"//[MiscUserDefs] You can add your own user definitions and misc code here...\r\n"
"//[/MiscUserDefs]\r\n"
"\r\n"
"//==============================================================================\r\n"
"%%className%%::%%className%% (%%constructorParams%%)\r\n"
"%%initialisers%%{\r\n"
" %%constructor%%\r\n"
"\r\n"
" //[Constructor] You can add your own custom stuff here..\r\n"
" //[/Constructor]\r\n"
"}\r\n"
"\r\n"
"%%className%%::~%%className%%()\r\n"
"{\r\n"
" //[Destructor_pre]. You can add your own custom destruction code here..\r\n"
" //[/Destructor_pre]\r\n"
"\r\n"
" %%destructor%%\r\n"
"\r\n"
" //[Destructor]. You can add your own custom destruction code here..\r\n"
" //[/Destructor]\r\n"
"}\r\n"
"\r\n"
"//==============================================================================\r\n"
"%%methodDefinitions%%\r\n"
"\r\n"
"//[MiscUserCode] You can add your own definitions of your custom methods or any other code here...\r\n"
"//[/MiscUserCode]\r\n"
"\r\n"
"\r\n"
"//==============================================================================\r\n"
"#if 0\r\n"
"/* -- Jucer information section --\r\n"
"\r\n"
" This is where the Jucer puts all of its metadata, so don't change anything in here!\r\n"
"\r\n"
"BEGIN_JUCER_METADATA\r\n"
"\r\n"
"%%metadata%%\r\n"
"END_JUCER_METADATA\r\n"
"*/\r\n"
"#endif\r\n"
"\r\n"
"%%staticMemberDefinitions%%\r\n";
const char* BinaryData::jucer_ComponentTemplate_cpp = (const char*) temp_73015554;
//================== jucer_ComponentTemplate.h ==================
static const unsigned char temp_b930c59[] =
"/*\r\n"
" ==============================================================================\r\n"
"\r\n"
" This is an automatically generated file created by the Jucer!\r\n"
"\r\n"
" Creation date: %%creationTime%%\r\n"
"\r\n"
" Be careful when adding custom code to these files, as only the code within\r\n"
" the \"//[xyz]\" and \"//[/xyz]\" sections will be retained when the file is loaded\r\n"
" and re-saved.\r\n"
"\r\n"
" Jucer version: 1.12\r\n"
"\r\n"
" ------------------------------------------------------------------------------\r\n"
"\r\n"
" The Jucer is part of the JUCE library - \"Jules' Utility Class Extensions\"\r\n"
" Copyright 2004-6 by Raw Material Software ltd.\r\n"
"\r\n"
" ==============================================================================\r\n"
"*/\r\n"
"\r\n"
"#ifndef %%headerGuard%%\r\n"
"#define %%headerGuard%%\r\n"
"\r\n"
"//[Headers] -- You can add your own extra header files here --\r\n"
"#include \"juce.h\"\r\n"
"//[/Headers]\r\n"
"\r\n"
"%%includeFilesH%%\r\n"
"\r\n"
"//==============================================================================\r\n"
"/**\r\n"
" //[Comments]\r\n"
" An auto-generated component, created by the Jucer.\r\n"
"\r\n"
" Describe your class and how it works here!\r\n"
" //[/Comments]\r\n"
"*/\r\n"
"%%classDeclaration%%\r\n"
"{\r\n"
"public:\r\n"
" //==============================================================================\r\n"
" %%className%% (%%constructorParams%%);\r\n"
" ~%%className%%();\r\n"
"\r\n"
" //==============================================================================\r\n"
" //[UserMethods] -- You can add your own custom methods in this section.\r\n"
" //[/UserMethods]\r\n"
"\r\n"
" %%publicMemberDeclarations%%\r\n"
"\r\n"
" //==============================================================================\r\n"
" juce_UseDebuggingNewOperator\r\n"
"\r\n"
"private:\r\n"
" //[UserVariables] -- You can add your own custom variables in this section.\r\n"
" //[/UserVariables]\r\n"
"\r\n"
" //==============================================================================\r\n"
" %%privateMemberDeclarations%%\r\n"
"\r\n"
" //==============================================================================\r\n"
" // (prevent copy constructor and operator= being generated..)\r\n"
" %%className%% (const %%className%%&);\r\n"
" const %%className%%& operator= (const %%className%%&);\r\n"
"};\r\n"
"\r\n"
"\r\n"
"#endif // %%headerGuard%%\r\n";
const char* BinaryData::jucer_ComponentTemplate_h = (const char*) temp_b930c59;
//================== jucer_MainConsoleAppTemplate.cpp ==================
static const unsigned char temp_a4c7812a[] =
"/*\r\n"

View file

@ -22,6 +22,12 @@ namespace BinaryData
extern const char* jucer_AudioPluginFilterTemplate_h;
const int jucer_AudioPluginFilterTemplate_hSize = 2353;
extern const char* jucer_ComponentTemplate_cpp;
const int jucer_ComponentTemplate_cppSize = 1975;
extern const char* jucer_ComponentTemplate_h;
const int jucer_ComponentTemplate_hSize = 2309;
extern const char* jucer_MainConsoleAppTemplate_cpp;
const int jucer_MainConsoleAppTemplate_cppSize = 749;

View file

@ -61,6 +61,10 @@
resource="0" file="Source/model/jucer_ComponentDocument.cpp"/>
<FILE id="u5n6JTb4z" name="jucer_ComponentDocument.h" compile="0" resource="0"
file="Source/model/jucer_ComponentDocument.h"/>
<FILE id="YJF79TlHr" name="jucer_CodeGenerator.cpp" compile="1" resource="0"
file="Source/model/jucer_CodeGenerator.cpp"/>
<FILE id="Wr2TBw8wQ" name="jucer_CodeGenerator.h" compile="0" resource="0"
file="Source/model/jucer_CodeGenerator.h"/>
<FILE id="lxuyJGZcw" name="jucer_Coordinate.cpp" compile="1" resource="0"
file="Source/model/jucer_Coordinate.cpp"/>
<FILE id="CyKbwNlwe" name="jucer_Coordinate.h" compile="0" resource="0"
@ -205,6 +209,10 @@
resource="1" file="Source/templates/jucer_AudioPluginFilterTemplate.cpp"/>
<FILE id="R0cR4dCe" name="jucer_AudioPluginFilterTemplate.h" compile="0"
resource="1" file="Source/templates/jucer_AudioPluginFilterTemplate.h"/>
<FILE id="KU4AroVSu" name="jucer_ComponentTemplate.cpp" compile="0"
resource="1" file="Source/templates/jucer_ComponentTemplate.cpp"/>
<FILE id="HiDPozmU" name="jucer_ComponentTemplate.h" compile="0" resource="1"
file="Source/templates/jucer_ComponentTemplate.h"/>
<FILE id="pMNQAeUWK" name="jucer_MainConsoleAppTemplate.cpp" compile="0"
resource="1" file="Source/templates/jucer_MainConsoleAppTemplate.cpp"/>
<FILE id="IB8HRkRP1" name="jucer_MainTemplate.cpp" compile="0" resource="1"

View file

@ -0,0 +1,385 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-9 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
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.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#include "jucer_CodeGenerator.h"
//==============================================================================
CodeGenerator::CodeGenerator()
{
}
CodeGenerator::~CodeGenerator()
{
}
int CodeGenerator::getUniqueSuffix()
{
return ++suffix;
}
//==============================================================================
String& CodeGenerator::getCallbackCode (const String& requiredParentClass,
const String& returnType,
const String& prototype,
const bool hasPrePostUserSections)
{
String parentClass (requiredParentClass);
if (parentClass.isNotEmpty()
&& ! (parentClass.startsWith ("public ")
|| parentClass.startsWith ("private ")
|| parentClass.startsWith ("protected ")))
{
parentClass = "public " + parentClass;
}
for (int i = callbacks.size(); --i >= 0;)
{
CallbackMethod* const cm = callbacks.getUnchecked(i);
if (cm->requiredParentClass == parentClass
&& cm->returnType == returnType
&& cm->prototype == prototype)
return cm->content;
}
CallbackMethod* const cm = new CallbackMethod();
callbacks.add (cm);
cm->requiredParentClass = parentClass;
cm->returnType = returnType;
cm->prototype = prototype;
cm->hasPrePostUserSections = hasPrePostUserSections;
return cm->content;
}
void CodeGenerator::removeCallback (const String& returnType, const String& prototype)
{
for (int i = callbacks.size(); --i >= 0;)
{
CallbackMethod* const cm = callbacks.getUnchecked(i);
if (cm->returnType == returnType && cm->prototype == prototype)
callbacks.remove (i);
}
}
void CodeGenerator::addImageResourceLoader (const String& imageMemberName, const String& resourceName)
{
const String initialiser (imageMemberName + " (0)");
if (! memberInitialisers.contains (initialiser, false))
{
memberInitialisers.add (initialiser);
privateMemberDeclarations
<< "Image* " << imageMemberName << ";" << newLine;
if (resourceName.isNotEmpty())
{
constructorCode
<< imageMemberName << " = ImageCache::getFromMemory ("
<< resourceName << ", " << resourceName << "Size);" << newLine;
destructorCode
<< "ImageCache::release (" << imageMemberName << ");" << newLine;
}
}
}
const StringArray CodeGenerator::getExtraParentClasses() const
{
StringArray s;
for (int i = 0; i < callbacks.size(); ++i)
{
CallbackMethod* const cm = callbacks.getUnchecked(i);
s.add (cm->requiredParentClass);
}
return s;
}
const String CodeGenerator::getCallbackDeclarations() const
{
String s;
for (int i = 0; i < callbacks.size(); ++i)
{
CallbackMethod* const cm = callbacks.getUnchecked(i);
s << cm->returnType << " " << cm->prototype << ";" << newLine;
}
return s;
}
const String CodeGenerator::getCallbackDefinitions() const
{
String s;
for (int i = 0; i < callbacks.size(); ++i)
{
CallbackMethod* const cm = callbacks.getUnchecked(i);
const String userCodeBlockName ("User" + makeValidCppIdentifier (cm->prototype.upToFirstOccurrenceOf ("(", false, false),
true, true, false).trim());
if (userCodeBlockName.isNotEmpty() && cm->hasPrePostUserSections)
{
s << cm->returnType << " " << className << "::" << cm->prototype
<< newLine
<< "{" << newLine
<< " //[" << userCodeBlockName << "_Pre]" << newLine
<< " //[/" << userCodeBlockName
<< "_Pre]" << newLine << newLine
<< " " << indentCode (cm->content.trim(), 4) << newLine
<< newLine
<< " //[" << userCodeBlockName << "_Post]" << newLine
<< " //[/" << userCodeBlockName << "_Post]" << newLine
<< "}" << newLine
<< newLine;
}
else
{
s << cm->returnType << " " << className << "::" << cm->prototype << newLine
<< "{" << newLine
<< " " << indentCode (cm->content.trim(), 4) << newLine
<< "}" << newLine
<< newLine;
}
}
return s;
}
//==============================================================================
const String CodeGenerator::getClassDeclaration() const
{
StringArray parentClassLines;
parentClassLines.addTokens (parentClasses, ",", String::empty);
parentClassLines.addArray (getExtraParentClasses());
parentClassLines.trim();
parentClassLines.removeEmptyStrings();
parentClassLines.removeDuplicates (false);
if (parentClassLines.contains ("public Button", false))
parentClassLines.removeString ("public Component", false);
String r ("class ");
r << className << " : ";
r += parentClassLines.joinIntoString ("," + String (newLine) + String::repeatedString (" ", r.length()));
return r;
}
const String CodeGenerator::getInitialiserList() const
{
StringArray inits (memberInitialisers);
if (parentClassInitialiser.isNotEmpty())
inits.insert (0, parentClassInitialiser);
inits.trim();
inits.removeEmptyStrings();
inits.removeDuplicates (false);
String s;
if (inits.size() == 0)
return s;
s << " : ";
for (int i = 0; i < inits.size(); ++i)
{
String init (inits[i]);
while (init.endsWithChar (','))
init = init.dropLastCharacters (1);
s << init;
if (i < inits.size() - 1)
s << "," << newLine << " ";
else
s << newLine;
}
return s;
}
static const String getIncludeFileCode (StringArray files)
{
files.trim();
files.removeEmptyStrings();
files.removeDuplicates (false);
String s;
for (int i = 0; i < files.size(); ++i)
s << "#include \"" << files[i] << "\"" << newLine;
return s;
}
//==============================================================================
static bool getUserSection (const StringArray& lines, const String& tag, StringArray& resultLines)
{
const int start = indexOfLineStartingWith (lines, "//[" + tag + "]", 0);
if (start < 0)
return false;
const int end = indexOfLineStartingWith (lines, "//[/" + tag + "]", start + 1);
for (int i = start + 1; i < end; ++i)
resultLines.add (lines [i]);
return true;
}
static void copyAcrossUserSections (String& dest, const String& src)
{
StringArray srcLines, dstLines;
srcLines.addLines (src);
dstLines.addLines (dest);
for (int i = 0; i < dstLines.size(); ++i)
{
if (dstLines[i].trimStart().startsWith ("//["))
{
String tag (dstLines[i].trimStart().substring (3));
tag = tag.upToFirstOccurrenceOf ("]", false, false);
jassert (! tag.startsWithChar ('/'));
if (! tag.startsWithChar ('/'))
{
const int endLine = indexOfLineStartingWith (dstLines,
"//[/" + tag + "]",
i + 1);
if (endLine > i)
{
StringArray sourceLines;
if (getUserSection (srcLines, tag, sourceLines))
{
int j;
for (j = endLine - i; --j > 0;)
dstLines.remove (i + 1);
for (j = 0; j < sourceLines.size(); ++j)
dstLines.insert (++i, sourceLines [j].trimEnd());
++i;
}
else
{
i = endLine;
}
}
}
}
dstLines.set (i, dstLines[i].trimEnd());
}
dest = dstLines.joinIntoString (newLine) + newLine;
}
//==============================================================================
static void replaceTemplate (String& text, const String& itemName, const String& value)
{
for (;;)
{
const int index = text.indexOf ("%%" + itemName + "%%");
if (index < 0)
break;
int indentLevel = 0;
for (int i = index; --i >= 0;)
{
if (text[i] == '\n')
break;
++indentLevel;
}
text = text.replaceSection (index, itemName.length() + 4,
indentCode (value, indentLevel));
}
}
//==============================================================================
void CodeGenerator::applyToCode (String& code,
const String& fileNameRoot,
const bool isForPreview,
const String& oldFileWithUserData) const
{
// header guard..
String headerGuard ("__JUCER_HEADER_");
headerGuard << className.toUpperCase().retainCharacters ("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
<< "_" << fileNameRoot.toUpperCase().retainCharacters ("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
<< "_" << String::toHexString (Random::getSystemRandom().nextInt()).toUpperCase() << "__";
replaceTemplate (code, "headerGuard", headerGuard);
replaceTemplate (code, "creationTime", Time::getCurrentTime().toString (true, true, true));
replaceTemplate (code, "className", className);
replaceTemplate (code, "constructorParams", constructorParams);
replaceTemplate (code, "initialisers", getInitialiserList());
replaceTemplate (code, "classDeclaration", getClassDeclaration());
replaceTemplate (code, "privateMemberDeclarations", privateMemberDeclarations);
replaceTemplate (code, "publicMemberDeclarations", getCallbackDeclarations() + newLine + publicMemberDeclarations);
replaceTemplate (code, "methodDefinitions", getCallbackDefinitions());
replaceTemplate (code, "includeFilesH", getIncludeFileCode (includeFilesH));
replaceTemplate (code, "includeFilesCPP", getIncludeFileCode (includeFilesCPP));
replaceTemplate (code, "constructor", constructorCode);
replaceTemplate (code, "destructor", destructorCode);
if (! isForPreview)
{
replaceTemplate (code, "metadata", jucerMetadata);
replaceTemplate (code, "staticMemberDefinitions", staticMemberDefinitions);
}
else
{
replaceTemplate (code, "metadata", " << Metadata isn't shown in the code preview >>" + String (newLine));
replaceTemplate (code, "staticMemberDefinitions", "// Static member declarations and resources would go here... (these aren't shown in the code preview)");
}
copyAcrossUserSections (code, oldFileWithUserData);
}

View file

@ -0,0 +1,94 @@
/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-9 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
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.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#ifndef __JUCER_CODEGENERATOR_H_F79AEF58__
#define __JUCER_CODEGENERATOR_H_F79AEF58__
#include "../jucer_Headers.h"
//==============================================================================
class CodeGenerator
{
public:
//==============================================================================
CodeGenerator();
~CodeGenerator();
//==============================================================================
void applyToCode (String& codeTemplate,
const String& fileNameRoot,
const bool isForPreview,
const String& oldFileContents) const;
int getUniqueSuffix();
//==============================================================================
String className;
String componentName;
String parentClassInitialiser; // optional parent class initialiser to go before the items in the initialisers list
StringArray memberInitialisers;
String parentClasses;
String constructorParams;
String privateMemberDeclarations;
String publicMemberDeclarations;
StringArray includeFilesH, includeFilesCPP;
String constructorCode;
String destructorCode;
String staticMemberDefinitions;
String jucerMetadata;
struct CallbackMethod
{
String requiredParentClass, returnType, prototype, content;
bool hasPrePostUserSections;
};
OwnedArray<CallbackMethod> callbacks;
String& getCallbackCode (const String& requiredParentClass,
const String& returnType,
const String& prototype,
const bool hasPrePostUserSections);
void removeCallback (const String& returnType, const String& prototype);
void addImageResourceLoader (const String& imageMemberName, const String& resourceName);
const String getCallbackDeclarations() const;
const String getCallbackDefinitions() const;
const StringArray getExtraParentClasses() const;
private:
const String getClassDeclaration() const;
const String getInitialiserList() const;
int suffix;
CodeGenerator (const CodeGenerator&);
CodeGenerator& operator= (const CodeGenerator&);
};
#endif // __JUCER_CODEGENERATOR_H_F79AEF58__

View file

@ -525,10 +525,7 @@ private:
if (iPhone)
{
s.addTokens ("UIKit Foundation CoreGraphics AudioToolbox", false);
if ((int) project.getJuceConfigFlag ("JUCE_OPENGL").getValue() == 1)
s.addTokens ("QuartzCore OpenGLES", false);
s.addTokens ("UIKit Foundation CoreGraphics AudioToolbox QuartzCore OpenGLES", false);
}
else
{

View file

@ -0,0 +1,70 @@
/*
==============================================================================
This is an automatically generated file created by the Jucer!
Creation date: %%creationTime%%
Be careful when adding custom code to these files, as only the code within
the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded
and re-saved.
Jucer version: 1.12
------------------------------------------------------------------------------
The Jucer is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-6 by Raw Material Software ltd.
==============================================================================
*/
//[Headers] You can add your own extra header files here...
//[/Headers]
%%includeFilesCPP%%
//[MiscUserDefs] You can add your own user definitions and misc code here...
//[/MiscUserDefs]
//==============================================================================
%%className%%::%%className%% (%%constructorParams%%)
%%initialisers%%{
%%constructor%%
//[Constructor] You can add your own custom stuff here..
//[/Constructor]
}
%%className%%::~%%className%%()
{
//[Destructor_pre]. You can add your own custom destruction code here..
//[/Destructor_pre]
%%destructor%%
//[Destructor]. You can add your own custom destruction code here..
//[/Destructor]
}
//==============================================================================
%%methodDefinitions%%
//[MiscUserCode] You can add your own definitions of your custom methods or any other code here...
//[/MiscUserCode]
//==============================================================================
#if 0
/* -- Jucer information section --
This is where the Jucer puts all of its metadata, so don't change anything in here!
BEGIN_JUCER_METADATA
%%metadata%%
END_JUCER_METADATA
*/
#endif
%%staticMemberDefinitions%%

View file

@ -0,0 +1,69 @@
/*
==============================================================================
This is an automatically generated file created by the Jucer!
Creation date: %%creationTime%%
Be careful when adding custom code to these files, as only the code within
the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded
and re-saved.
Jucer version: 1.12
------------------------------------------------------------------------------
The Jucer is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-6 by Raw Material Software ltd.
==============================================================================
*/
#ifndef %%headerGuard%%
#define %%headerGuard%%
//[Headers] -- You can add your own extra header files here --
#include "juce.h"
//[/Headers]
%%includeFilesH%%
//==============================================================================
/**
//[Comments]
An auto-generated component, created by the Jucer.
Describe your class and how it works here!
//[/Comments]
*/
%%classDeclaration%%
{
public:
//==============================================================================
%%className%% (%%constructorParams%%);
~%%className%%();
//==============================================================================
//[UserMethods] -- You can add your own custom methods in this section.
//[/UserMethods]
%%publicMemberDeclarations%%
//==============================================================================
juce_UseDebuggingNewOperator
private:
//[UserVariables] -- You can add your own custom variables in this section.
//[/UserVariables]
//==============================================================================
%%privateMemberDeclarations%%
//==============================================================================
// (prevent copy constructor and operator= being generated..)
%%className%% (const %%className%%&);
const %%className%%& operator= (const %%className%%&);
};
#endif // %%headerGuard%%

View file

@ -83,6 +83,9 @@ public:
if (exp != 0)
exp->createPropertyEditors (props);
for (int i = props.size(); --i >= 0;)
props.getUnchecked(i)->setPreferredHeight (22);
}
getPanel()->addProperties (props);

View file

@ -486,7 +486,7 @@ const String indentCode (const String& code, const int numSpaces)
lines.set (i, s);
}
return lines.joinIntoString ("\n");
return lines.joinIntoString (newLine);
}
int indexOfLineStartingWith (const StringArray& lines, const String& text, int startIndex)

View file

@ -10,6 +10,8 @@
D8DBAED4AB03622A655367C6 = { isa = PBXBuildFile; fileRef = 3DE047A554FB376BE3DA4C65; };
1622BC343C98F98AC2AC0459 = { isa = PBXBuildFile; fileRef = AA21728A979A53287A0DEFED; };
D397D8CEF8663F449B4439C0 = { isa = PBXBuildFile; fileRef = 18665A7A93EDBA956B64774E; };
9EA4F1C0E2356AB5C07CE95E = { isa = PBXBuildFile; fileRef = E6809DE026C8BEAB082B3DEB; };
C37934E8A18A3A82637C1445 = { isa = PBXBuildFile; fileRef = 541D7BED72093B09E01E3FD1; };
C67B5243DBC7218FEC5DBCC0 = { isa = PBXBuildFile; fileRef = E7507E799D8BDA92BDB78915; };
9B11A7532637EC12F1DC4B2E = { isa = PBXBuildFile; fileRef = 0DB195C2B3538434D7D20B51; };
CFFBB821ECB7D85603624533 = { isa = PBXBuildFile; fileRef = 57FFE120531343D50B7D2D28; };
@ -20,6 +22,8 @@
3DE047A554FB376BE3DA4C65 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
AA21728A979A53287A0DEFED = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
18665A7A93EDBA956B64774E = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
E6809DE026C8BEAB082B3DEB = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
541D7BED72093B09E01E3FD1 = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
D5A29444C637255D66ACB7AE = { isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HelloWorld.app; sourceTree = BUILT_PRODUCTS_DIR; };
B786F246076E6F5D363A6A2C = { isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Info.plist; sourceTree = SOURCE_ROOT; };
E7507E799D8BDA92BDB78915 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Main.cpp; path = ../../Source/Main.cpp; sourceTree = SOURCE_ROOT; };
@ -48,7 +52,9 @@
6B236CD90C0803738D7B5235,
3DE047A554FB376BE3DA4C65,
AA21728A979A53287A0DEFED,
18665A7A93EDBA956B64774E ); name = Frameworks; sourceTree = "<group>"; };
18665A7A93EDBA956B64774E,
E6809DE026C8BEAB082B3DEB,
541D7BED72093B09E01E3FD1 ); name = Frameworks; sourceTree = "<group>"; };
DC3A70675753A61E8C7CD36B = { isa = PBXGroup; children = (
D5A29444C637255D66ACB7AE ); name = Products; sourceTree = "<group>"; };
4297D3C9A6348BA224516847 = { isa = PBXGroup; children = (
@ -131,7 +137,9 @@
BAEB975FAD8A99FA884DC593,
D8DBAED4AB03622A655367C6,
1622BC343C98F98AC2AC0459,
D397D8CEF8663F449B4439C0 ); runOnlyForDeploymentPostprocessing = 0; };
D397D8CEF8663F449B4439C0,
9EA4F1C0E2356AB5C07CE95E,
C37934E8A18A3A82637C1445 ); runOnlyForDeploymentPostprocessing = 0; };
9F559EB2CC99871D47887B82 = { isa = PBXNativeTarget; buildConfigurationList = 6F5E160F06E7FAD8B5C96752; buildPhases = (
4B8D17F77F2E2E7A2419CB17,
172414663F1A38D78D2B00C3,

View file

@ -100,13 +100,13 @@
</GROUP>
</MAINGROUP>
<JUCEOPTIONS JUCE_FORCE_DEBUG="default" JUCE_LOG_ASSERTIONS="default" JUCE_ASIO="default"
JUCE_WASAPI="enabled" JUCE_DIRECTSOUND="default" JUCE_ALSA="default"
JUCE_QUICKTIME="enabled" JUCE_OPENGL="enabled" JUCE_USE_FLAC="default"
JUCE_WASAPI="default" JUCE_DIRECTSOUND="default" JUCE_ALSA="default"
JUCE_QUICKTIME="default" JUCE_OPENGL="default" JUCE_USE_FLAC="default"
JUCE_USE_OGGVORBIS="default" JUCE_USE_CDBURNER="default" JUCE_USE_CDREADER="default"
JUCE_USE_CAMERA="enabled" JUCE_ENABLE_REPAINT_DEBUGGING="default"
JUCE_USE_CAMERA="default" JUCE_ENABLE_REPAINT_DEBUGGING="default"
JUCE_USE_XINERAMA="default" JUCE_USE_XSHM="default" JUCE_PLUGINHOST_VST="disabled"
JUCE_PLUGINHOST_AU="disabled" JUCE_ONLY_BUILD_CORE_LIBRARY="default"
JUCE_WEB_BROWSER="enabled" JUCE_SUPPORT_CARBON="default" JUCE_CHECK_MEMORY_LEAKS="default"
JUCE_WEB_BROWSER="default" JUCE_SUPPORT_CARBON="default" JUCE_CHECK_MEMORY_LEAKS="default"
JUCE_CATCH_UNHANDLED_EXCEPTIONS="default" JUCE_STRINGS_ARE_UNICODE="default"
JUCE_USE_XRENDER="default" JUCE_USE_XCURSOR="default"/>
</JUCERPROJECT>

View file

@ -14,16 +14,16 @@
//#define JUCE_FORCE_DEBUG
//#define JUCE_LOG_ASSERTIONS
//#define JUCE_ASIO
#define JUCE_WASAPI 1
//#define JUCE_WASAPI
//#define JUCE_DIRECTSOUND
//#define JUCE_ALSA
#define JUCE_QUICKTIME 1
#define JUCE_OPENGL 1
//#define JUCE_QUICKTIME
//#define JUCE_OPENGL
//#define JUCE_USE_FLAC
//#define JUCE_USE_OGGVORBIS
//#define JUCE_USE_CDBURNER
//#define JUCE_USE_CDREADER
#define JUCE_USE_CAMERA 1
//#define JUCE_USE_CAMERA
//#define JUCE_ENABLE_REPAINT_DEBUGGING
//#define JUCE_USE_XINERAMA
//#define JUCE_USE_XSHM
@ -32,7 +32,7 @@
#define JUCE_PLUGINHOST_VST 0
#define JUCE_PLUGINHOST_AU 0
//#define JUCE_ONLY_BUILD_CORE_LIBRARY
#define JUCE_WEB_BROWSER 1
//#define JUCE_WEB_BROWSER
//#define JUCE_SUPPORT_CARBON
//#define JUCE_CHECK_MEMORY_LEAKS
//#define JUCE_CATCH_UNHANDLED_EXCEPTIONS

View file

@ -227,7 +227,7 @@
If you're not using any embedded web-pages, turning this off may reduce your code size.
*/
#ifndef JUCE_WEB_BROWSER
#define JUCE_WEB_BROWSER 0
#define JUCE_WEB_BROWSER 1
#endif

View file

@ -260,7 +260,7 @@
#endif
#ifndef JUCE_WEB_BROWSER
#define JUCE_WEB_BROWSER 0
#define JUCE_WEB_BROWSER 1
#endif
#ifndef JUCE_SUPPORT_CARBON
@ -226869,7 +226869,7 @@ private:
if (pinName == 0 || String (pinName).equalsIgnoreCase (String (info.achName)))
{
pin.p->AddRef();
pin->AddRef();
*result = pin;
return true;
}

View file

@ -281,7 +281,7 @@
#endif
#ifndef JUCE_WEB_BROWSER
#define JUCE_WEB_BROWSER 0
#define JUCE_WEB_BROWSER 1
#endif
#ifndef JUCE_SUPPORT_CARBON
@ -5900,11 +5900,6 @@ public:
simplify();
}
String s;
for (int i = 0; i < values.size(); ++i)
s << values[i] << " ";
DBG (s);
}
void removeRange (const Range<Type>& rangeToRemove)

View file

@ -180,11 +180,6 @@ public:
simplify();
}
String s;
for (int i = 0; i < values.size(); ++i)
s << values[i] << " ";
DBG (s);
}
/** Removes a range of values from the set.

View file

@ -569,7 +569,7 @@ private:
if (pinName == 0 || String (pinName).equalsIgnoreCase (String (info.achName)))
{
pin.p->AddRef();
pin->AddRef();
*result = pin;
return true;
}