Browse Source

Changed all uses of OwnedArray<File> to be Array<File> instead, which is a bit more efficient and easier to work with. Optimised the software renderer to improve most drawing operations, particularly simple shapes filling like drawing lines, etc.

tags/2021-05-28
Julian Storer 15 years ago
parent
commit
773c7d7407
37 changed files with 406 additions and 306 deletions
  1. +2
    -2
      extras/binarybuilder/BinaryBuilder.cpp
  2. +1
    -0
      extras/juce demo/build/macosx/jucedemo.xcodeproj/project.pbxproj
  3. +176
    -132
      juce_amalgamated.cpp
  4. +22
    -21
      juce_amalgamated.h
  5. +1
    -0
      src/application/juce_ApplicationProperties.h
  6. +22
    -25
      src/audio/audio_file_formats/juce_AudioCDReader.cpp
  7. +4
    -3
      src/audio/audio_file_formats/juce_AudioCDReader.h
  8. +1
    -0
      src/audio/audio_file_formats/juce_AudioFormatManager.cpp
  9. +1
    -0
      src/audio/audio_file_formats/juce_FlacAudioFormat.cpp
  10. +1
    -0
      src/audio/audio_file_formats/juce_QuickTimeAudioFormat.cpp
  11. +0
    -1
      src/audio/midi/juce_MidiMessageSequence.h
  12. +2
    -2
      src/audio/plugins/juce_KnownPluginList.cpp
  13. +1
    -0
      src/core/juce_FileLogger.h
  14. +21
    -20
      src/gui/components/code_editor/juce_CodeEditorComponent.cpp
  15. +1
    -1
      src/gui/components/code_editor/juce_CodeEditorComponent.h
  16. +16
    -16
      src/gui/components/filebrowser/juce_FileBrowserComponent.cpp
  17. +1
    -1
      src/gui/components/filebrowser/juce_FileBrowserComponent.h
  18. +3
    -8
      src/gui/components/filebrowser/juce_FileChooser.cpp
  19. +3
    -3
      src/gui/components/filebrowser/juce_FileChooser.h
  20. +3
    -1
      src/gui/components/special/juce_MagnifierComponent.cpp
  21. +1
    -0
      src/gui/components/special/juce_OpenGLComponent.h
  22. +60
    -4
      src/gui/graphics/contexts/juce_EdgeTable.cpp
  23. +1
    -0
      src/gui/graphics/contexts/juce_EdgeTable.h
  24. +2
    -3
      src/gui/graphics/fonts/juce_TextLayout.h
  25. +17
    -17
      src/gui/graphics/fonts/juce_Typeface.cpp
  26. +5
    -4
      src/gui/graphics/fonts/juce_Typeface.h
  27. +4
    -7
      src/io/files/juce_DirectoryIterator.cpp
  28. +2
    -2
      src/io/files/juce_DirectoryIterator.h
  29. +15
    -17
      src/io/files/juce_File.cpp
  30. +3
    -3
      src/io/files/juce_File.h
  31. +1
    -1
      src/io/files/juce_FileSearchPath.cpp
  32. +1
    -1
      src/io/files/juce_FileSearchPath.h
  33. +1
    -1
      src/io/files/juce_ZipFile.h
  34. +2
    -2
      src/native/linux/juce_linux_FileChooser.cpp
  35. +4
    -4
      src/native/mac/juce_mac_FileChooser.mm
  36. +4
    -4
      src/native/windows/juce_win32_FileChooser.cpp
  37. +1
    -0
      src/text/juce_XmlDocument.h

+ 2
- 2
extras/binarybuilder/BinaryBuilder.cpp View File

@@ -126,7 +126,7 @@ int main (int argc, char* argv[])
<< " from files in " << (const char*) sourceDirectory.getFullPathName()
<< "..." << std::endl << std::endl;
OwnedArray <File> files;
Array <File> files;
sourceDirectory.findChildFiles (files, File::findFiles, true,
(argc > 4) ? argv[4] : "*");
@@ -171,7 +171,7 @@ int main (int argc, char* argv[])
for (int i = 0; i < files.size(); ++i)
{
const File file (*(files[i]));
const File file (files[i]);
// (avoid source control files and hidden files..)
if (! isHiddenFile (file, sourceDirectory))


+ 1
- 0
extras/juce demo/build/macosx/jucedemo.xcodeproj/project.pbxproj View File

@@ -312,6 +312,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_MODEL_TUNING = G5;
GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
INFOPLIST_FILE = Info.plist;
INSTALL_PATH = "$(HOME)/Applications";
PRODUCT_NAME = jucedemo;


+ 176
- 132
juce_amalgamated.cpp View File

@@ -5561,7 +5561,7 @@ DirectoryIterator::DirectoryIterator (const File& directory,
&& ((whatToLookFor_ & File::ignoreHiddenFiles) == 0
|| ! isHidden))
{
dirsFound.add (new File (path + filename, 0));
dirsFound.add (File (path + filename, 0));
}

addToList = (whatToLookFor_ & File::findDirectories) != 0;
@@ -5580,7 +5580,7 @@ DirectoryIterator::DirectoryIterator (const File& directory,
addToList = ! isHidden;

if (addToList)
filesFound.add (new File (path + filename, 0));
filesFound.add (File (path + filename, 0));
}

} while (juce_findFileNext (handle, filename, &isDirectory, &isHidden, 0, 0, 0, 0));
@@ -5610,7 +5610,7 @@ bool DirectoryIterator::next()

if (index >= filesFound.size())
{
subIterator = new DirectoryIterator (*(dirsFound [index - filesFound.size()]),
subIterator = new DirectoryIterator (dirsFound.getReference (index - filesFound.size()),
true, wildCard, whatToLookFor);
return next();
}
@@ -5623,10 +5623,7 @@ const File DirectoryIterator::getFile() const
if (subIterator != 0)
return subIterator->getFile();

const File* const f = filesFound [index];

return (f != 0) ? *f
: File::nonexistent;
return filesFound [index];
}

float DirectoryIterator::getEstimatedProgress() const
@@ -5899,11 +5896,11 @@ bool File::setReadOnly (const bool shouldBeReadOnly,

if (applyRecursively && isDirectory())
{
OwnedArray <File> subFiles;
Array <File> subFiles;
findChildFiles (subFiles, File::findFilesAndDirectories, false);

for (int i = subFiles.size(); --i >= 0;)
worked = subFiles[i]->setReadOnly (shouldBeReadOnly, true) && worked;
worked = subFiles.getReference(i).setReadOnly (shouldBeReadOnly, true) && worked;
}

return juce_setFileReadOnly (fullPath, shouldBeReadOnly) && worked;
@@ -5921,11 +5918,11 @@ bool File::deleteRecursively() const

if (isDirectory())
{
OwnedArray<File> subFiles;
Array<File> subFiles;
findChildFiles (subFiles, File::findFilesAndDirectories, false);

for (int i = subFiles.size(); --i >= 0;)
worked = subFiles[i]->deleteRecursively() && worked;
worked = subFiles.getReference(i).deleteRecursively() && worked;
}

return deleteFile() && worked;
@@ -5960,19 +5957,19 @@ bool File::copyDirectoryTo (const File& newDirectory) const
{
if (isDirectory() && newDirectory.createDirectory())
{
OwnedArray<File> subFiles;
Array<File> subFiles;
findChildFiles (subFiles, File::findFiles, false);

int i;
for (i = 0; i < subFiles.size(); ++i)
if (! subFiles[i]->copyFileTo (newDirectory.getChildFile (subFiles[i]->getFileName())))
if (! subFiles.getReference(i).copyFileTo (newDirectory.getChildFile (subFiles.getReference(i).getFileName())))
return false;

subFiles.clear();
findChildFiles (subFiles, File::findDirectories, false);

for (i = 0; i < subFiles.size(); ++i)
if (! subFiles[i]->copyDirectoryTo (newDirectory.getChildFile (subFiles[i]->getFileName())))
if (! subFiles.getReference(i).copyDirectoryTo (newDirectory.getChildFile (subFiles.getReference(i).getFileName())))
return false;

return true;
@@ -6247,7 +6244,7 @@ static inline bool fileTypeMatches (const int whatToLookFor,
|| (whatToLookFor & File::ignoreHiddenFiles) == 0);
}

int File::findChildFiles (OwnedArray<File>& results,
int File::findChildFiles (Array<File>& results,
const int whatToLookFor,
const bool searchRecursively,
const String& wildCardPattern) const
@@ -6276,7 +6273,7 @@ int File::findChildFiles (OwnedArray<File>& results,
if (fileTypeMatches (whatToLookFor, itemIsDirectory, itemIsHidden)
&& ! filename.containsOnly (T(".")))
{
results.add (new File (path + filename, 0));
results.add (File (path + filename, 0));
++total;
}

@@ -6294,16 +6291,13 @@ int File::findChildFiles (OwnedArray<File>& results,
// and recurse down if required.
if (searchRecursively)
{
OwnedArray <File> subDirectories;
Array<File> subDirectories;
findChildFiles (subDirectories, File::findDirectories, false);

for (int i = 0; i < subDirectories.size(); ++i)
{
total += subDirectories.getUnchecked(i)
->findChildFiles (results,
whatToLookFor,
true,
wildCardPattern);
total += subDirectories.getReference(i).findChildFiles (results, whatToLookFor,
true, wildCardPattern);
}
}

@@ -6683,12 +6677,12 @@ const String File::getRelativePathFrom (const File& dir) const
return thisPath;
}

void File::findFileSystemRoots (OwnedArray<File>& destArray)
void File::findFileSystemRoots (Array<File>& destArray)
{
const StringArray roots (juce_getFileSystemRoots());

for (int i = 0; i < roots.size(); ++i)
destArray.add (new File (roots[i]));
destArray.add (File (roots[i]));
}

const String File::getVolumeLabel() const
@@ -7009,7 +7003,7 @@ void FileSearchPath::removeNonExistentPaths()
directories.remove (i);
}

int FileSearchPath::findChildFiles (OwnedArray<File>& results,
int FileSearchPath::findChildFiles (Array<File>& results,
const int whatToLookFor,
const bool searchRecursively,
const String& wildCardPattern) const
@@ -19638,36 +19632,36 @@ BEGIN_JUCE_NAMESPACE
// Mac version doesn't need any native code because it's all done with files..
// Windows + Linux versions are in the platform-dependent code sections.

static void findCDs (OwnedArray<File>& cds)
static void findCDs (Array<File>& cds)
{
File volumes ("/Volumes");
volumes.findChildFiles (cds, File::findDirectories, false);

for (int i = cds.size(); --i >= 0;)
if (! cds[i]->getChildFile (".TOC.plist").exists())
if (! cds.getReference(i).getChildFile (".TOC.plist").exists())
cds.remove (i);
}

const StringArray AudioCDReader::getAvailableCDNames()
{
OwnedArray<File> cds;
Array<File> cds;
findCDs (cds);

StringArray names;

for (int i = 0; i < cds.size(); ++i)
names.add (cds[i]->getFileName());
names.add (cds.getReference(i).getFileName());

return names;
}

AudioCDReader* AudioCDReader::createReaderForCD (const int index)
{
OwnedArray<File> cds;
Array<File> cds;
findCDs (cds);

if (cds[index] != 0)
return new AudioCDReader (*cds[index]);
if (cds[index] != File::nonexistent)
return new AudioCDReader (cds[index]);
else
return 0;
}
@@ -19697,10 +19691,10 @@ static int getTrackNumber (const File& file)
.getIntValue();
}

int AudioCDReader::compareElements (const File* const first, const File* const second) throw()
int AudioCDReader::compareElements (const File& first, const File& second)
{
const int firstTrack = getTrackNumber (*first);
const int secondTrack = getTrackNumber (*second);
const int firstTrack = getTrackNumber (first);
const int secondTrack = getTrackNumber (second);

jassert (firstTrack > 0 && secondTrack > 0);

@@ -19722,7 +19716,7 @@ void AudioCDReader::refreshTrackLengths()
{
trackStartSamples.add (sample);

FileInputStream* const in = tracks[i]->createInputStream();
FileInputStream* const in = tracks.getReference(i).createInputStream();

if (in != 0)
{
@@ -19760,22 +19754,19 @@ bool AudioCDReader::readSamples (int** destSamples, int numDestChannels, int sta
{
reader = 0;

if (tracks [track] != 0)
{
FileInputStream* const in = tracks [track]->createInputStream();
FileInputStream* const in = tracks [track].createInputStream();

if (in != 0)
{
BufferedInputStream* const bin = new BufferedInputStream (in, 65536, true);
if (in != 0)
{
BufferedInputStream* const bin = new BufferedInputStream (in, 65536, true);

AiffAudioFormat format;
reader = format.createReaderFor (bin, true);
AiffAudioFormat format;
reader = format.createReaderFor (bin, true);

if (reader == 0)
currentReaderTrack = -1;
else
currentReaderTrack = track;
}
if (reader == 0)
currentReaderTrack = -1;
else
currentReaderTrack = track;
}
}

@@ -19811,7 +19802,7 @@ int AudioCDReader::getPositionOfTrackStart (int trackNum) const

bool AudioCDReader::isTrackAudio (int trackNum) const
{
return tracks [trackNum] != 0;
return tracks [trackNum] != File::nonexistent;
}

void AudioCDReader::enableIndexScanning (bool b)
@@ -29153,11 +29144,11 @@ void KnownPluginList::scanAndAddDragAndDroppedFiles (const StringArray& files,
StringArray s;

{
OwnedArray <File> subFiles;
Array<File> subFiles;
f.findChildFiles (subFiles, File::findFilesAndDirectories, false);

for (int j = 0; j < subFiles.size(); ++j)
s.add (subFiles.getUnchecked (j)->getFullPathName());
s.add (subFiles.getReference(j).getFullPathName());
}

scanAndAddDragAndDroppedFiles (s, typesFound);
@@ -44742,7 +44733,7 @@ public:
}
};

class CodeEditorLine
class CodeEditorComponent::CodeEditorLine
{
public:
CodeEditorLine() throw()
@@ -44759,11 +44750,12 @@ public:
const CodeDocument::Position& selectionStart,
const CodeDocument::Position& selectionEnd)
{
OwnedArray <SyntaxToken> newTokens;
Array <SyntaxToken> newTokens;
newTokens.ensureStorageAllocated (8);

if (analyser == 0)
{
newTokens.add (new SyntaxToken (document.getLine (lineNum), -1));
newTokens.add (SyntaxToken (document.getLine (lineNum), -1));
}
else if (lineNum < document.getNumLines())
{
@@ -44801,7 +44793,7 @@ public:

for (int i = newTokens.size(); --i >= 0;)
{
if (*tokens.getUnchecked(i) != *newTokens.getUnchecked(i))
if (tokens.getReference(i) != newTokens.getReference(i))
{
allTheSame = false;
break;
@@ -44832,22 +44824,22 @@ public:

for (int i = 0; i < tokens.size(); ++i)
{
SyntaxToken* const token = tokens.getUnchecked(i);
SyntaxToken& token = tokens.getReference(i);

if (lastType != token->tokenType)
if (lastType != token.tokenType)
{
lastType = token->tokenType;
lastType = token.tokenType;
g.setColour (owner.getColourForTokenType (lastType));
}

g.drawSingleLineText (token->text, roundToInt (x), y + baselineOffset);
g.drawSingleLineText (token.text, roundToInt (x), y + baselineOffset);

if (i < tokens.size() - 1)
{
if (token->width < 0)
token->width = font.getStringWidthFloat (token->text);
if (token.width < 0)
token.width = font.getStringWidthFloat (token.text);

x += token->width;
x += token.width;
}
}
}
@@ -44870,13 +44862,13 @@ private:
}
};

OwnedArray <SyntaxToken> tokens;
Array <SyntaxToken> tokens;
int highlightColumnStart, highlightColumnEnd;

static void createTokens (int startPosition, const String& lineText,
CodeDocument::Iterator& source,
CodeTokeniser* analyser,
OwnedArray <SyntaxToken>& newTokens)
Array <SyntaxToken>& newTokens)
{
CodeDocument::Iterator lastIterator (source);
const int lineLength = lineText.length();
@@ -44895,8 +44887,8 @@ private:
if (tokenEnd > 0)
{
tokenStart -= startPosition;
newTokens.add (new SyntaxToken (lineText.substring (jmax (0, tokenStart), tokenEnd),
tokenType));
newTokens.add (SyntaxToken (lineText.substring (jmax (0, tokenStart), tokenEnd),
tokenType));

if (tokenEnd >= lineLength)
break;
@@ -44908,24 +44900,24 @@ private:
source = lastIterator;
}

static void replaceTabsWithSpaces (OwnedArray <SyntaxToken>& tokens, const int spacesPerTab) throw()
static void replaceTabsWithSpaces (Array <SyntaxToken>& tokens, const int spacesPerTab) throw()
{
int x = 0;
for (int i = 0; i < tokens.size(); ++i)
{
SyntaxToken* const t = tokens.getUnchecked(i);
SyntaxToken& t = tokens.getReference(i);

for (;;)
{
int tabPos = t->text.indexOfChar (T('\t'));
int tabPos = t.text.indexOfChar (T('\t'));
if (tabPos < 0)
break;

const int spacesNeeded = spacesPerTab - ((tabPos + x) % spacesPerTab);
t->text = t->text.replaceSection (tabPos, 1, String::repeatedString (T(" "), spacesNeeded));
t.text = t.text.replaceSection (tabPos, 1, String::repeatedString (T(" "), spacesNeeded));
}

x += t->text.length();
x += t.text.length();
}
}

@@ -57229,7 +57221,7 @@ FileBrowserComponent::FileBrowserComponent (int flags_,
}
else
{
chosenFiles.add (new File (initialFileOrDirectory));
chosenFiles.add (initialFileOrDirectory);
currentRoot = initialFileOrDirectory.getParentDirectory();
filename = initialFileOrDirectory.getFileName();
}
@@ -57343,7 +57335,7 @@ const File FileBrowserComponent::getSelectedFile (int index) const throw()
if (! filenameBox->isReadOnly())
return currentRoot.getChildFile (filenameBox->getText());
else
return chosenFiles[index] != 0 ? *chosenFiles[index] : File::nonexistent;
return chosenFiles[index];
}

bool FileBrowserComponent::currentFileIsValid() const
@@ -57494,7 +57486,7 @@ void FileBrowserComponent::selectionChanged()
resetChosenFiles = false;
}

chosenFiles.add (new File (f));
chosenFiles.add (f);
newFilenames.add (f.getRelativePathFrom (getRoot()));
}
}
@@ -57578,7 +57570,7 @@ void FileBrowserComponent::textEditorReturnKeyPressed (TextEditor&)
{
setRoot (f.getParentDirectory());
chosenFiles.clear();
chosenFiles.add (new File (f));
chosenFiles.add (f);
filenameBox->setText (f.getFileName());
}
}
@@ -57644,27 +57636,27 @@ const BitArray FileBrowserComponent::getRoots (StringArray& rootNames, StringArr
BitArray separators;

#if JUCE_WINDOWS
OwnedArray<File> roots;
Array<File> roots;
File::findFileSystemRoots (roots);
rootPaths.clear();

for (int i = 0; i < roots.size(); ++i)
{
const File* const drive = roots.getUnchecked(i);
const File& drive = roots.getReference(i);

String name (drive->getFullPathName());
String name (drive.getFullPathName());
rootPaths.add (name);

if (drive->isOnHardDisk())
if (drive.isOnHardDisk())
{
String volume (drive->getVolumeLabel());
String volume (drive.getVolumeLabel());

if (volume.isEmpty())
volume = TRANS("Hard Drive");

name << " [" << drive->getVolumeLabel() << ']';
name << " [" << drive.getVolumeLabel() << ']';
}
else if (drive->isOnCDRomDrive())
else if (drive.isOnCDRomDrive())
{
name << TRANS(" [CD/DVD drive]");
}
@@ -57690,18 +57682,18 @@ const BitArray FileBrowserComponent::getRoots (StringArray& rootNames, StringArr

separators.setBit (rootPaths.size());

OwnedArray <File> volumes;
Array <File> volumes;
File vol ("/Volumes");
vol.findChildFiles (volumes, File::findDirectories, false);

for (int i = 0; i < volumes.size(); ++i)
{
const File* const volume = volumes.getUnchecked(i);
const File& volume = volumes.getReference(i);

if (volume->isDirectory() && ! volume->getFileName().startsWithChar (T('.')))
if (volume.isDirectory() && ! volume.getFileName().startsWithChar (T('.')))
{
rootPaths.add (volume->getFullPathName());
rootNames.add (volume->getFileName());
rootPaths.add (volume.getFullPathName());
rootNames.add (volume.getFileName());
}
}
#endif
@@ -57777,15 +57769,10 @@ const File FileChooser::getResult() const
// to retrieve all the files that were chosen.
jassert (results.size() <= 1);

const File* const f = results.getFirst();

if (f != 0)
return *f;

return File::nonexistent;
return results.getFirst();
}

const OwnedArray <File>& FileChooser::getResults() const
const Array<File>& FileChooser::getResults() const
{
return results;
}
@@ -57851,7 +57838,7 @@ bool FileChooser::showDialog (const bool selectsDirectories,
if (box.show())
{
for (int i = 0; i < browserComponent.getNumSelectedFiles(); ++i)
results.add (new File (browserComponent.getSelectedFile (i)));
results.add (browserComponent.getSelectedFile (i));
}
}

@@ -74153,7 +74140,9 @@ void MagnifierComponent::paint (Graphics& g)
}

g.setImageResamplingQuality (quality);
g.drawImageTransformed (&temp, temp.getBounds(), AffineTransform::scale (scaleFactor, scaleFactor), false);
g.drawImageTransformed (&temp, temp.getBounds(),
AffineTransform::scale ((float) scaleFactor, (float) scaleFactor),
false);
}

void MagnifierComponent::childBoundsChanged (Component* c)
@@ -79881,6 +79870,16 @@ void EdgeTable::intersectWithEdgeTableLine (const int y, const int* otherLine) t
return;
}

const int right = bounds.getRight() << 8;

// optimise for the common case where our line lies entirely within a
// single pair of points, as happens when clipping to a simple rect.
if (otherNumPoints == 2 && otherLine[2] >= 255)
{
clipEdgeTableLineToRange (dest, otherLine[1], jmin (right, otherLine[3]));
return;
}

++otherLine;
const size_t lineSizeBytes = (dest[0] * 2 + 1) * sizeof (int);
int* temp = (int*) alloca (lineSizeBytes);
@@ -79897,7 +79896,6 @@ void EdgeTable::intersectWithEdgeTableLine (const int y, const int* otherLine) t
int destIndex = 0, destTotal = 0;
int level1 = 0, level2 = 0;
int lastX = INT_MIN, lastLevel = 0;
const int right = bounds.getRight() << 8;

while (srcNum1 > 0 && srcNum2 > 0)
{
@@ -79983,6 +79981,45 @@ void EdgeTable::intersectWithEdgeTableLine (const int y, const int* otherLine) t
#endif
}

void EdgeTable::clipEdgeTableLineToRange (int* dest, const int x1, const int x2) throw()
{
int* lastItem = dest + (dest[0] * 2 - 1);

if (x2 < lastItem[0])
{
if (x2 <= dest[1])
{
dest[0] = 0;
return;
}

while (x2 < lastItem[-2])
{
--(dest[0]);
lastItem -= 2;
}

lastItem[0] = x2;
lastItem[1] = 0;
}

if (x1 > dest[1])
{
while (lastItem[0] > x1)
lastItem -= 2;

const int itemsRemoved = (lastItem - (dest + 1)) / 2;

if (itemsRemoved > 0)
{
dest[0] -= itemsRemoved;
memmove (dest + 1, lastItem, dest[0] * (sizeof (int) * 2));
}

dest[1] = x1;
}
}

void EdgeTable::clipToRectangle (const Rectangle& r) throw()
{
const Rectangle clipped (r.getIntersection (bounds));
@@ -80008,10 +80045,17 @@ void EdgeTable::clipToRectangle (const Rectangle& r) throw()

if (clipped.getX() > bounds.getX())
{
const int rectLine[] = { 2, clipped.getX() << 8, 255, clipped.getRight() << 8, 0 };
const int x1 = clipped.getX() << 8;
const int x2 = jmin (bounds.getRight(), clipped.getRight()) << 8;
int* line = table + lineStrideElements * top;

for (int i = top; i < bottom; ++i)
intersectWithEdgeTableLine (i, rectLine);
for (int i = bottom - top; --i >= 0;)
{
if (line[0] != 0)
clipEdgeTableLineToRange (line, x1, x2);

line += lineStrideElements;
}
}

needToCheckEmptinesss = true;
@@ -87011,15 +87055,15 @@ Typeface::~Typeface()
{
}

class CustomTypefaceGlyphInfo
class CustomTypeface::GlyphInfo
{
public:
CustomTypefaceGlyphInfo (const juce_wchar character_, const Path& path_, const float width_) throw()
GlyphInfo (const juce_wchar character_, const Path& path_, const float width_) throw()
: character (character_), path (path_), width (width_)
{
}

~CustomTypefaceGlyphInfo() throw()
~GlyphInfo() throw()
{
}

@@ -87058,8 +87102,8 @@ public:
juce_UseDebuggingNewOperator

private:
CustomTypefaceGlyphInfo (const CustomTypefaceGlyphInfo&);
const CustomTypefaceGlyphInfo& operator= (const CustomTypefaceGlyphInfo&);
GlyphInfo (const GlyphInfo&);
const GlyphInfo& operator= (const GlyphInfo&);
};

CustomTypeface::CustomTypeface()
@@ -87136,14 +87180,14 @@ void CustomTypeface::addGlyph (const juce_wchar character, const Path& path, con
if (((unsigned int) character) < (unsigned int) numElementsInArray (lookupTable))
lookupTable [character] = (short) glyphs.size();

glyphs.add (new CustomTypefaceGlyphInfo (character, path, width));
glyphs.add (new GlyphInfo (character, path, width));
}

void CustomTypeface::addKerningPair (const juce_wchar char1, const juce_wchar char2, const float extraAmount) throw()
{
if (extraAmount != 0)
{
CustomTypefaceGlyphInfo* const g = findGlyph (char1, true);
GlyphInfo* const g = findGlyph (char1, true);
jassert (g != 0); // can only add kerning pairs for characters that exist!

if (g != 0)
@@ -87151,14 +87195,14 @@ void CustomTypeface::addKerningPair (const juce_wchar char1, const juce_wchar ch
}
}

CustomTypefaceGlyphInfo* CustomTypeface::findGlyph (const juce_wchar character, const bool loadIfNeeded) throw()
CustomTypeface::GlyphInfo* CustomTypeface::findGlyph (const juce_wchar character, const bool loadIfNeeded) throw()
{
if (((unsigned int) character) < (unsigned int) numElementsInArray (lookupTable) && lookupTable [character] > 0)
return glyphs [(int) lookupTable [(int) character]];

for (int i = 0; i < glyphs.size(); ++i)
{
CustomTypefaceGlyphInfo* const g = glyphs.getUnchecked(i);
GlyphInfo* const g = glyphs.getUnchecked(i);
if (g->character == character)
return g;
}
@@ -87169,9 +87213,9 @@ CustomTypefaceGlyphInfo* CustomTypeface::findGlyph (const juce_wchar character,
return 0;
}

CustomTypefaceGlyphInfo* CustomTypeface::findGlyphSubstituting (const juce_wchar character) throw()
CustomTypeface::GlyphInfo* CustomTypeface::findGlyphSubstituting (const juce_wchar character) throw()
{
CustomTypefaceGlyphInfo* glyph = findGlyph (character, true);
GlyphInfo* glyph = findGlyph (character, true);

if (glyph == 0)
{
@@ -87250,7 +87294,7 @@ bool CustomTypeface::writeToStream (OutputStream& outputStream)

for (i = 0; i < glyphs.size(); ++i)
{
const CustomTypefaceGlyphInfo* const g = glyphs.getUnchecked (i);
const GlyphInfo* const g = glyphs.getUnchecked (i);
out.writeShort ((short) (unsigned short) g->character);
out.writeFloat (g->width);
g->path.writePathToStream (out);
@@ -87262,11 +87306,11 @@ bool CustomTypeface::writeToStream (OutputStream& outputStream)

for (i = 0; i < glyphs.size(); ++i)
{
const CustomTypefaceGlyphInfo* const g = glyphs.getUnchecked (i);
const GlyphInfo* const g = glyphs.getUnchecked (i);

for (int j = 0; j < g->kerningPairs.size(); ++j)
{
const CustomTypefaceGlyphInfo::KerningPair& p = g->kerningPairs.getReference (j);
const GlyphInfo::KerningPair& p = g->kerningPairs.getReference (j);
out.writeShort ((short) (unsigned short) g->character);
out.writeShort ((short) (unsigned short) p.character2);
out.writeFloat (p.kerningAmount);
@@ -87293,7 +87337,7 @@ float CustomTypeface::getStringWidth (const String& text)

while (*t != 0)
{
const CustomTypefaceGlyphInfo* const glyph = findGlyphSubstituting (*t++);
const GlyphInfo* const glyph = findGlyphSubstituting (*t++);

if (glyph != 0)
x += glyph->getHorizontalSpacing (*t);
@@ -87311,7 +87355,7 @@ void CustomTypeface::getGlyphPositions (const String& text, Array <int>& resultG
while (*t != 0)
{
const juce_wchar c = *t++;
const CustomTypefaceGlyphInfo* const glyph = findGlyphSubstituting (c);
const GlyphInfo* const glyph = findGlyphSubstituting (c);

if (glyph != 0)
{
@@ -87324,7 +87368,7 @@ void CustomTypeface::getGlyphPositions (const String& text, Array <int>& resultG

bool CustomTypeface::getOutlineForGlyph (int glyphNumber, Path& path)
{
const CustomTypefaceGlyphInfo* const glyph = findGlyphSubstituting ((juce_wchar) glyphNumber);
const GlyphInfo* const glyph = findGlyphSubstituting ((juce_wchar) glyphNumber);
if (glyph != 0)
{
path = glyph->path;
@@ -217969,7 +218013,7 @@ private:
const FPComponentHolder& operator= (const FPComponentHolder&);
};

void FileChooser::showPlatformDialog (OwnedArray<File>& results,
void FileChooser::showPlatformDialog (Array<File>& results,
const String& title,
const File& currentFileOrDirectory,
const String& filter,
@@ -218060,7 +218104,7 @@ void FileChooser::showPlatformDialog (OwnedArray<File>& results,
{
const String stringFName (fname);

results.add (new File (File (stringFName).getSiblingFile (returnedString)));
results.add (File (stringFName).getSiblingFile (returnedString));
returnedString = String::empty;

return;
@@ -218151,13 +218195,13 @@ void FileChooser::showPlatformDialog (OwnedArray<File>& results,
while (*filename != 0)
{
const String filepath (String (files) + T("\\") + String (filename));
results.add (new File (filepath));
results.add (File (filepath));
filename += CharacterFunctions::length (filename) + 1;
}
}
else if (files[0] != 0)
{
results.add (new File (files));
results.add (File (files));
}
}

@@ -236904,7 +236948,7 @@ int AudioCDReader::getCDDBId()
// compiled on its own).
#if JUCE_INCLUDED_FILE

void FileChooser::showPlatformDialog (OwnedArray<File>& results,
void FileChooser::showPlatformDialog (Array<File>& results,
const String& title,
const File& file,
const String& filters,
@@ -236966,7 +237010,7 @@ void FileChooser::showPlatformDialog (OwnedArray<File>& results,
tokens.add (resultString);

for (int i = 0; i < tokens.size(); i++)
results.add (new File (tokens[i]));
results.add (File (tokens[i]));

return;
}
@@ -241968,7 +242012,7 @@ using namespace JUCE_NAMESPACE;

BEGIN_JUCE_NAMESPACE

void FileChooser::showPlatformDialog (OwnedArray<File>& results,
void FileChooser::showPlatformDialog (Array<File>& results,
const String& title,
const File& currentFileOrDirectory,
const String& filter,
@@ -242022,7 +242066,7 @@ void FileChooser::showPlatformDialog (OwnedArray<File>& results,
{
if (isSaveDialogue)
{
results.add (new File (nsStringToJuce ([panel filename])));
results.add (File (nsStringToJuce ([panel filename])));
}
else
{
@@ -242031,7 +242075,7 @@ void FileChooser::showPlatformDialog (OwnedArray<File>& results,
for (unsigned int i = 0; i < [urls count]; ++i)
{
NSString* f = [urls objectAtIndex: i];
results.add (new File (nsStringToJuce (f)));
results.add (File (nsStringToJuce (f)));
}
}
}
@@ -242041,7 +242085,7 @@ void FileChooser::showPlatformDialog (OwnedArray<File>& results,

#else

void FileChooser::showPlatformDialog (OwnedArray<File>& results,
void FileChooser::showPlatformDialog (Array<File>& results,
const String& title,
const File& currentFileOrDirectory,
const String& filter,
@@ -248168,7 +248212,7 @@ using namespace JUCE_NAMESPACE;

BEGIN_JUCE_NAMESPACE

void FileChooser::showPlatformDialog (OwnedArray<File>& results,
void FileChooser::showPlatformDialog (Array<File>& results,
const String& title,
const File& currentFileOrDirectory,
const String& filter,
@@ -248222,7 +248266,7 @@ void FileChooser::showPlatformDialog (OwnedArray<File>& results,
{
if (isSaveDialogue)
{
results.add (new File (nsStringToJuce ([panel filename])));
results.add (File (nsStringToJuce ([panel filename])));
}
else
{
@@ -248231,7 +248275,7 @@ void FileChooser::showPlatformDialog (OwnedArray<File>& results,
for (unsigned int i = 0; i < [urls count]; ++i)
{
NSString* f = [urls objectAtIndex: i];
results.add (new File (nsStringToJuce (f)));
results.add (File (nsStringToJuce (f)));
}
}
}
@@ -248241,7 +248285,7 @@ void FileChooser::showPlatformDialog (OwnedArray<File>& results,

#else

void FileChooser::showPlatformDialog (OwnedArray<File>& results,
void FileChooser::showPlatformDialog (Array<File>& results,
const String& title,
const File& currentFileOrDirectory,
const String& filter,


+ 22
- 21
juce_amalgamated.h View File

@@ -3962,7 +3962,7 @@ public:
ignoreHiddenFiles = 4 /**< Add this flag to avoid returning any hidden files in the results. */
};

int findChildFiles (OwnedArray<File>& results,
int findChildFiles (Array<File>& results,
const int whatToLookFor,
const bool searchRecursively,
const String& wildCardPattern = JUCE_T("*")) const;
@@ -3994,7 +3994,7 @@ public:
const bool asUnicode = false,
const bool writeUnicodeHeaderBytes = false) const;

static void findFileSystemRoots (OwnedArray<File>& results);
static void findFileSystemRoots (Array<File>& results);

const String getVolumeLabel() const;

@@ -7281,8 +7281,8 @@ public:
juce_UseDebuggingNewOperator

private:
OwnedArray <File> filesFound;
OwnedArray <File> dirsFound;
Array <File> filesFound;
Array <File> dirsFound;
String wildCard;
int index;
const int whatToLookFor;
@@ -7414,7 +7414,7 @@ public:

void removeNonExistentPaths();

int findChildFiles (OwnedArray<File>& results,
int findChildFiles (Array<File>& results,
const int whatToLookFor,
const bool searchRecursively,
const String& wildCardPattern = JUCE_T("*")) const;
@@ -9655,6 +9655,7 @@ private:
void addEdgePoint (const int x, const int y, const int winding) throw();
void remapTableForNumEdges (const int newNumEdgesPerLine) throw();
void intersectWithEdgeTableLine (const int y, const int* otherLine) throw();
void clipEdgeTableLineToRange (int* line, int x1, int x2) throw();
void sanitiseLevels (const bool useNonZeroWinding) throw();
};

@@ -9873,7 +9874,6 @@ private:
/********* End of inlined file: juce_Path.h *********/

class Font;
class CustomTypefaceGlyphInfo;

class JUCE_API Typeface : public ReferenceCountedObject
{
@@ -9952,14 +9952,16 @@ protected:

private:

OwnedArray <CustomTypefaceGlyphInfo> glyphs;
class GlyphInfo;
friend class OwnedArray<GlyphInfo>;
OwnedArray <GlyphInfo> glyphs;
short lookupTable [128];

CustomTypeface (const CustomTypeface&);
const CustomTypeface& operator= (const CustomTypeface&);

CustomTypefaceGlyphInfo* findGlyph (const juce_wchar character, const bool loadIfNeeded) throw();
CustomTypefaceGlyphInfo* findGlyphSubstituting (const juce_wchar character) throw();
GlyphInfo* findGlyph (const juce_wchar character, const bool loadIfNeeded) throw();
GlyphInfo* findGlyphSubstituting (const juce_wchar character) throw();
};

#endif // __JUCE_TYPEFACE_JUCEHEADER__
@@ -13420,13 +13422,13 @@ private:

#if JUCE_MAC
File volumeDir;
OwnedArray<File> tracks;
Array <int> trackStartSamples;
Array<File> tracks;
Array<int> trackStartSamples;
int currentReaderTrack;
ScopedPointer <AudioFormatReader> reader;
AudioCDReader (const File& volume);
public:
static int compareElements (const File* const, const File* const) throw();
static int compareElements (const File&, const File&);
private:

#elif JUCE_WINDOWS
@@ -16737,7 +16739,6 @@ public:

private:

friend class MidiComparator;
friend class MidiFile;
OwnedArray <MidiEventHolder> list;

@@ -20109,8 +20110,6 @@ public:
#endif // __JUCE_CODETOKENISER_JUCEHEADER__
/********* End of inlined file: juce_CodeTokeniser.h *********/

class CodeEditorLine;

class JUCE_API CodeEditorComponent : public Component,
public Timer,
public ScrollBarListener,
@@ -20251,6 +20250,7 @@ private:
CodeTokeniser* codeTokeniser;
Array <Colour> coloursForTokenCategories;

class CodeEditorLine;
OwnedArray <CodeEditorLine> lines;
void rebuildLineTokens();

@@ -21763,7 +21763,7 @@ private:

int flags;
File currentRoot;
OwnedArray <File> chosenFiles;
Array<File> chosenFiles;
SortedSet <void*> listeners;

DirectoryContentsDisplayComponent* fileListComponent;
@@ -21817,14 +21817,14 @@ public:

const File getResult() const;

const OwnedArray <File>& getResults() const;
const Array<File>& getResults() const;

juce_UseDebuggingNewOperator

private:
String title, filters;
File startingFile;
OwnedArray <File> results;
Array<File> results;
bool useNativeDialogBox;

bool showDialog (const bool selectsDirectories,
@@ -21834,7 +21834,7 @@ private:
const bool selectMultipleFiles,
FilePreviewComponent* const previewComponent);

static void showPlatformDialog (OwnedArray<File>& results,
static void showPlatformDialog (Array<File>& results,
const String& title,
const File& file,
const String& filters,
@@ -23862,9 +23862,9 @@ public:

juce_UseDebuggingNewOperator

class Token;

private:
class Token;
friend class OwnedArray <Token>;
OwnedArray <Token> tokens;
int totalLines;
};
@@ -25921,6 +25921,7 @@ public:

private:
class OpenGLComponentWatcher;
friend class ScopedPointer <OpenGLComponentWatcher>;
ScopedPointer <OpenGLComponentWatcher> componentWatcher;

OpenGLContext* context;


+ 1
- 0
src/application/juce_ApplicationProperties.h View File

@@ -29,6 +29,7 @@
#include "../utilities/juce_PropertiesFile.h"
#include "../utilities/juce_DeletedAtShutdown.h"
#include "../core/juce_Singleton.h"
#include "../containers/juce_ScopedPointer.h"
//==============================================================================


+ 22
- 25
src/audio/audio_file_formats/juce_AudioCDReader.cpp View File

@@ -39,36 +39,36 @@ BEGIN_JUCE_NAMESPACE
#include "../../io/streams/juce_BufferedInputStream.h"
static void findCDs (OwnedArray<File>& cds)
static void findCDs (Array<File>& cds)
{
File volumes ("/Volumes");
volumes.findChildFiles (cds, File::findDirectories, false);
for (int i = cds.size(); --i >= 0;)
if (! cds[i]->getChildFile (".TOC.plist").exists())
if (! cds.getReference(i).getChildFile (".TOC.plist").exists())
cds.remove (i);
}
const StringArray AudioCDReader::getAvailableCDNames()
{
OwnedArray<File> cds;
Array<File> cds;
findCDs (cds);
StringArray names;
for (int i = 0; i < cds.size(); ++i)
names.add (cds[i]->getFileName());
names.add (cds.getReference(i).getFileName());
return names;
}
AudioCDReader* AudioCDReader::createReaderForCD (const int index)
{
OwnedArray<File> cds;
Array<File> cds;
findCDs (cds);
if (cds[index] != 0)
return new AudioCDReader (*cds[index]);
if (cds[index] != File::nonexistent)
return new AudioCDReader (cds[index]);
else
return 0;
}
@@ -98,10 +98,10 @@ static int getTrackNumber (const File& file)
.getIntValue();
}
int AudioCDReader::compareElements (const File* const first, const File* const second) throw()
int AudioCDReader::compareElements (const File& first, const File& second)
{
const int firstTrack = getTrackNumber (*first);
const int secondTrack = getTrackNumber (*second);
const int firstTrack = getTrackNumber (first);
const int secondTrack = getTrackNumber (second);
jassert (firstTrack > 0 && secondTrack > 0);
@@ -123,7 +123,7 @@ void AudioCDReader::refreshTrackLengths()
{
trackStartSamples.add (sample);
FileInputStream* const in = tracks[i]->createInputStream();
FileInputStream* const in = tracks.getReference(i).createInputStream();
if (in != 0)
{
@@ -161,22 +161,19 @@ bool AudioCDReader::readSamples (int** destSamples, int numDestChannels, int sta
{
reader = 0;
if (tracks [track] != 0)
{
FileInputStream* const in = tracks [track]->createInputStream();
FileInputStream* const in = tracks [track].createInputStream();
if (in != 0)
{
BufferedInputStream* const bin = new BufferedInputStream (in, 65536, true);
if (in != 0)
{
BufferedInputStream* const bin = new BufferedInputStream (in, 65536, true);
AiffAudioFormat format;
reader = format.createReaderFor (bin, true);
AiffAudioFormat format;
reader = format.createReaderFor (bin, true);
if (reader == 0)
currentReaderTrack = -1;
else
currentReaderTrack = track;
}
if (reader == 0)
currentReaderTrack = -1;
else
currentReaderTrack = track;
}
}
@@ -212,7 +209,7 @@ int AudioCDReader::getPositionOfTrackStart (int trackNum) const
bool AudioCDReader::isTrackAudio (int trackNum) const
{
return tracks [trackNum] != 0;
return tracks [trackNum] != File::nonexistent;
}
void AudioCDReader::enableIndexScanning (bool b)


+ 4
- 3
src/audio/audio_file_formats/juce_AudioCDReader.h View File

@@ -30,6 +30,7 @@
#include "juce_AudioFormatReader.h"
#include "../../containers/juce_Array.h"
#include "../../containers/juce_ScopedPointer.h"
#include "../../text/juce_StringArray.h"
#if JUCE_MAC
#include "../../io/files/juce_File.h"
@@ -152,13 +153,13 @@ private:
#if JUCE_MAC
File volumeDir;
OwnedArray<File> tracks;
Array <int> trackStartSamples;
Array<File> tracks;
Array<int> trackStartSamples;
int currentReaderTrack;
ScopedPointer <AudioFormatReader> reader;
AudioCDReader (const File& volume);
public:
static int compareElements (const File* const, const File* const) throw();
static int compareElements (const File&, const File&);
private:
#elif JUCE_WINDOWS


+ 1
- 0
src/audio/audio_file_formats/juce_AudioFormatManager.cpp View File

@@ -33,6 +33,7 @@ BEGIN_JUCE_NAMESPACE
#include "juce_FlacAudioFormat.h"
#include "juce_OggVorbisAudioFormat.h"
#include "../../io/files/juce_FileInputStream.h"
#include "../../containers/juce_ScopedPointer.h"
//==============================================================================


+ 1
- 0
src/audio/audio_file_formats/juce_FlacAudioFormat.cpp View File

@@ -78,6 +78,7 @@ BEGIN_JUCE_NAMESPACE
#include "juce_FlacAudioFormat.h"
#include "../../text/juce_LocalisedStrings.h"
#include "../../containers/juce_ScopedPointer.h"
using namespace FlacNamespace;


+ 1
- 0
src/audio/audio_file_formats/juce_QuickTimeAudioFormat.cpp View File

@@ -65,6 +65,7 @@ BEGIN_JUCE_NAMESPACE
#include "../../text/juce_LocalisedStrings.h"
#include "../../threads/juce_Thread.h"
#include "../../io/network/juce_URL.h"
#include "../../containers/juce_ScopedPointer.h"
bool juce_OpenQuickTimeMovieFromStream (InputStream* input, Movie& movie, Handle& dataHandle);


+ 0
- 1
src/audio/midi/juce_MidiMessageSequence.h View File

@@ -278,7 +278,6 @@ public:
private:
//==============================================================================
friend class MidiComparator;
friend class MidiFile;
OwnedArray <MidiEventHolder> list;


+ 2
- 2
src/audio/plugins/juce_KnownPluginList.cpp View File

@@ -198,11 +198,11 @@ void KnownPluginList::scanAndAddDragAndDroppedFiles (const StringArray& files,
StringArray s;
{
OwnedArray <File> subFiles;
Array<File> subFiles;
f.findChildFiles (subFiles, File::findFilesAndDirectories, false);
for (int j = 0; j < subFiles.size(); ++j)
s.add (subFiles.getUnchecked (j)->getFullPathName());
s.add (subFiles.getReference(j).getFullPathName());
}
scanAndAddDragAndDroppedFiles (s, typesFound);


+ 1
- 0
src/core/juce_FileLogger.h View File

@@ -28,6 +28,7 @@
#include "juce_Logger.h"
#include "../io/files/juce_File.h"
#include "../containers/juce_ScopedPointer.h"
//==============================================================================


+ 21
- 20
src/gui/components/code_editor/juce_CodeEditorComponent.cpp View File

@@ -69,7 +69,7 @@ public:
};
//==============================================================================
class CodeEditorLine
class CodeEditorComponent::CodeEditorLine
{
public:
CodeEditorLine() throw()
@@ -86,11 +86,12 @@ public:
const CodeDocument::Position& selectionStart,
const CodeDocument::Position& selectionEnd)
{
OwnedArray <SyntaxToken> newTokens;
Array <SyntaxToken> newTokens;
newTokens.ensureStorageAllocated (8);
if (analyser == 0)
{
newTokens.add (new SyntaxToken (document.getLine (lineNum), -1));
newTokens.add (SyntaxToken (document.getLine (lineNum), -1));
}
else if (lineNum < document.getNumLines())
{
@@ -128,7 +129,7 @@ public:
for (int i = newTokens.size(); --i >= 0;)
{
if (*tokens.getUnchecked(i) != *newTokens.getUnchecked(i))
if (tokens.getReference(i) != newTokens.getReference(i))
{
allTheSame = false;
break;
@@ -159,22 +160,22 @@ public:
for (int i = 0; i < tokens.size(); ++i)
{
SyntaxToken* const token = tokens.getUnchecked(i);
SyntaxToken& token = tokens.getReference(i);
if (lastType != token->tokenType)
if (lastType != token.tokenType)
{
lastType = token->tokenType;
lastType = token.tokenType;
g.setColour (owner.getColourForTokenType (lastType));
}
g.drawSingleLineText (token->text, roundToInt (x), y + baselineOffset);
g.drawSingleLineText (token.text, roundToInt (x), y + baselineOffset);
if (i < tokens.size() - 1)
{
if (token->width < 0)
token->width = font.getStringWidthFloat (token->text);
if (token.width < 0)
token.width = font.getStringWidthFloat (token.text);
x += token->width;
x += token.width;
}
}
}
@@ -197,13 +198,13 @@ private:
}
};
OwnedArray <SyntaxToken> tokens;
Array <SyntaxToken> tokens;
int highlightColumnStart, highlightColumnEnd;
static void createTokens (int startPosition, const String& lineText,
CodeDocument::Iterator& source,
CodeTokeniser* analyser,
OwnedArray <SyntaxToken>& newTokens)
Array <SyntaxToken>& newTokens)
{
CodeDocument::Iterator lastIterator (source);
const int lineLength = lineText.length();
@@ -222,8 +223,8 @@ private:
if (tokenEnd > 0)
{
tokenStart -= startPosition;
newTokens.add (new SyntaxToken (lineText.substring (jmax (0, tokenStart), tokenEnd),
tokenType));
newTokens.add (SyntaxToken (lineText.substring (jmax (0, tokenStart), tokenEnd),
tokenType));
if (tokenEnd >= lineLength)
break;
@@ -235,24 +236,24 @@ private:
source = lastIterator;
}
static void replaceTabsWithSpaces (OwnedArray <SyntaxToken>& tokens, const int spacesPerTab) throw()
static void replaceTabsWithSpaces (Array <SyntaxToken>& tokens, const int spacesPerTab) throw()
{
int x = 0;
for (int i = 0; i < tokens.size(); ++i)
{
SyntaxToken* const t = tokens.getUnchecked(i);
SyntaxToken& t = tokens.getReference(i);
for (;;)
{
int tabPos = t->text.indexOfChar (T('\t'));
int tabPos = t.text.indexOfChar (T('\t'));
if (tabPos < 0)
break;
const int spacesNeeded = spacesPerTab - ((tabPos + x) % spacesPerTab);
t->text = t->text.replaceSection (tabPos, 1, String::repeatedString (T(" "), spacesNeeded));
t.text = t.text.replaceSection (tabPos, 1, String::repeatedString (T(" "), spacesNeeded));
}
x += t->text.length();
x += t.text.length();
}
}


+ 1
- 1
src/gui/components/code_editor/juce_CodeEditorComponent.h View File

@@ -30,7 +30,6 @@
#include "../layout/juce_ScrollBar.h"
#include "juce_CodeDocument.h"
#include "juce_CodeTokeniser.h"
class CodeEditorLine;
//==============================================================================
@@ -271,6 +270,7 @@ private:
CodeTokeniser* codeTokeniser;
Array <Colour> coloursForTokenCategories;
class CodeEditorLine;
OwnedArray <CodeEditorLine> lines;
void rebuildLineTokens();


+ 16
- 16
src/gui/components/filebrowser/juce_FileBrowserComponent.cpp View File

@@ -66,7 +66,7 @@ FileBrowserComponent::FileBrowserComponent (int flags_,
}
else
{
chosenFiles.add (new File (initialFileOrDirectory));
chosenFiles.add (initialFileOrDirectory);
currentRoot = initialFileOrDirectory.getParentDirectory();
filename = initialFileOrDirectory.getFileName();
}
@@ -182,7 +182,7 @@ const File FileBrowserComponent::getSelectedFile (int index) const throw()
if (! filenameBox->isReadOnly())
return currentRoot.getChildFile (filenameBox->getText());
else
return chosenFiles[index] != 0 ? *chosenFiles[index] : File::nonexistent;
return chosenFiles[index];
}
bool FileBrowserComponent::currentFileIsValid() const
@@ -337,7 +337,7 @@ void FileBrowserComponent::selectionChanged()
resetChosenFiles = false;
}
chosenFiles.add (new File (f));
chosenFiles.add (f);
newFilenames.add (f.getRelativePathFrom (getRoot()));
}
}
@@ -422,7 +422,7 @@ void FileBrowserComponent::textEditorReturnKeyPressed (TextEditor&)
{
setRoot (f.getParentDirectory());
chosenFiles.clear();
chosenFiles.add (new File (f));
chosenFiles.add (f);
filenameBox->setText (f.getFileName());
}
}
@@ -490,27 +490,27 @@ const BitArray FileBrowserComponent::getRoots (StringArray& rootNames, StringArr
BitArray separators;
#if JUCE_WINDOWS
OwnedArray<File> roots;
Array<File> roots;
File::findFileSystemRoots (roots);
rootPaths.clear();
for (int i = 0; i < roots.size(); ++i)
{
const File* const drive = roots.getUnchecked(i);
const File& drive = roots.getReference(i);
String name (drive->getFullPathName());
String name (drive.getFullPathName());
rootPaths.add (name);
if (drive->isOnHardDisk())
if (drive.isOnHardDisk())
{
String volume (drive->getVolumeLabel());
String volume (drive.getVolumeLabel());
if (volume.isEmpty())
volume = TRANS("Hard Drive");
name << " [" << drive->getVolumeLabel() << ']';
name << " [" << drive.getVolumeLabel() << ']';
}
else if (drive->isOnCDRomDrive())
else if (drive.isOnCDRomDrive())
{
name << TRANS(" [CD/DVD drive]");
}
@@ -536,18 +536,18 @@ const BitArray FileBrowserComponent::getRoots (StringArray& rootNames, StringArr
separators.setBit (rootPaths.size());
OwnedArray <File> volumes;
Array <File> volumes;
File vol ("/Volumes");
vol.findChildFiles (volumes, File::findDirectories, false);
for (int i = 0; i < volumes.size(); ++i)
{
const File* const volume = volumes.getUnchecked(i);
const File& volume = volumes.getReference(i);
if (volume->isDirectory() && ! volume->getFileName().startsWithChar (T('.')))
if (volume.isDirectory() && ! volume.getFileName().startsWithChar (T('.')))
{
rootPaths.add (volume->getFullPathName());
rootNames.add (volume->getFileName());
rootPaths.add (volume.getFullPathName());
rootNames.add (volume.getFileName());
}
}
#endif


+ 1
- 1
src/gui/components/filebrowser/juce_FileBrowserComponent.h View File

@@ -212,7 +212,7 @@ private:
int flags;
File currentRoot;
OwnedArray <File> chosenFiles;
Array<File> chosenFiles;
SortedSet <void*> listeners;
DirectoryContentsDisplayComponent* fileListComponent;


+ 3
- 8
src/gui/components/filebrowser/juce_FileChooser.cpp View File

@@ -87,15 +87,10 @@ const File FileChooser::getResult() const
// to retrieve all the files that were chosen.
jassert (results.size() <= 1);
const File* const f = results.getFirst();
if (f != 0)
return *f;
return File::nonexistent;
return results.getFirst();
}
const OwnedArray <File>& FileChooser::getResults() const
const Array<File>& FileChooser::getResults() const
{
return results;
}
@@ -161,7 +156,7 @@ bool FileChooser::showDialog (const bool selectsDirectories,
if (box.show())
{
for (int i = 0; i < browserComponent.getNumSelectedFiles(); ++i)
results.add (new File (browserComponent.getSelectedFile (i)));
results.add (browserComponent.getSelectedFile (i));
}
}


+ 3
- 3
src/gui/components/filebrowser/juce_FileChooser.h View File

@@ -167,7 +167,7 @@ public:
@see getResult
*/
const OwnedArray <File>& getResults() const;
const Array<File>& getResults() const;
//==============================================================================
juce_UseDebuggingNewOperator
@@ -175,7 +175,7 @@ public:
private:
String title, filters;
File startingFile;
OwnedArray <File> results;
Array<File> results;
bool useNativeDialogBox;
bool showDialog (const bool selectsDirectories,
@@ -185,7 +185,7 @@ private:
const bool selectMultipleFiles,
FilePreviewComponent* const previewComponent);
static void showPlatformDialog (OwnedArray<File>& results,
static void showPlatformDialog (Array<File>& results,
const String& title,
const File& file,
const String& filters,


+ 3
- 1
src/gui/components/special/juce_MagnifierComponent.cpp View File

@@ -275,7 +275,9 @@ void MagnifierComponent::paint (Graphics& g)
}
g.setImageResamplingQuality (quality);
g.drawImageTransformed (&temp, temp.getBounds(), AffineTransform::scale (scaleFactor, scaleFactor), false);
g.drawImageTransformed (&temp, temp.getBounds(),
AffineTransform::scale ((float) scaleFactor, (float) scaleFactor),
false);
}
void MagnifierComponent::childBoundsChanged (Component* c)


+ 1
- 0
src/gui/components/special/juce_OpenGLComponent.h View File

@@ -332,6 +332,7 @@ public:
private:
class OpenGLComponentWatcher;
friend class ScopedPointer <OpenGLComponentWatcher>;
ScopedPointer <OpenGLComponentWatcher> componentWatcher;
OpenGLContext* context;


+ 60
- 4
src/gui/graphics/contexts/juce_EdgeTable.cpp View File

@@ -435,6 +435,16 @@ void EdgeTable::intersectWithEdgeTableLine (const int y, const int* otherLine) t
return;
}
const int right = bounds.getRight() << 8;
// optimise for the common case where our line lies entirely within a
// single pair of points, as happens when clipping to a simple rect.
if (otherNumPoints == 2 && otherLine[2] >= 255)
{
clipEdgeTableLineToRange (dest, otherLine[1], jmin (right, otherLine[3]));
return;
}
++otherLine;
const size_t lineSizeBytes = (dest[0] * 2 + 1) * sizeof (int);
int* temp = (int*) alloca (lineSizeBytes);
@@ -451,7 +461,6 @@ void EdgeTable::intersectWithEdgeTableLine (const int y, const int* otherLine) t
int destIndex = 0, destTotal = 0;
int level1 = 0, level2 = 0;
int lastX = INT_MIN, lastLevel = 0;
const int right = bounds.getRight() << 8;
while (srcNum1 > 0 && srcNum2 > 0)
{
@@ -537,6 +546,46 @@ void EdgeTable::intersectWithEdgeTableLine (const int y, const int* otherLine) t
#endif
}
void EdgeTable::clipEdgeTableLineToRange (int* dest, const int x1, const int x2) throw()
{
int* lastItem = dest + (dest[0] * 2 - 1);
if (x2 < lastItem[0])
{
if (x2 <= dest[1])
{
dest[0] = 0;
return;
}
while (x2 < lastItem[-2])
{
--(dest[0]);
lastItem -= 2;
}
lastItem[0] = x2;
lastItem[1] = 0;
}
if (x1 > dest[1])
{
while (lastItem[0] > x1)
lastItem -= 2;
const int itemsRemoved = (lastItem - (dest + 1)) / 2;
if (itemsRemoved > 0)
{
dest[0] -= itemsRemoved;
memmove (dest + 1, lastItem, dest[0] * (sizeof (int) * 2));
}
dest[1] = x1;
}
}
//==============================================================================
void EdgeTable::clipToRectangle (const Rectangle& r) throw()
{
@@ -563,10 +612,17 @@ void EdgeTable::clipToRectangle (const Rectangle& r) throw()
if (clipped.getX() > bounds.getX())
{
const int rectLine[] = { 2, clipped.getX() << 8, 255, clipped.getRight() << 8, 0 };
const int x1 = clipped.getX() << 8;
const int x2 = jmin (bounds.getRight(), clipped.getRight()) << 8;
int* line = table + lineStrideElements * top;
for (int i = top; i < bottom; ++i)
intersectWithEdgeTableLine (i, rectLine);
for (int i = bottom - top; --i >= 0;)
{
if (line[0] != 0)
clipEdgeTableLineToRange (line, x1, x2);
line += lineStrideElements;
}
}
needToCheckEmptinesss = true;


+ 1
- 0
src/gui/graphics/contexts/juce_EdgeTable.h View File

@@ -203,6 +203,7 @@ private:
void addEdgePoint (const int x, const int y, const int winding) throw();
void remapTableForNumEdges (const int newNumEdgesPerLine) throw();
void intersectWithEdgeTableLine (const int y, const int* otherLine) throw();
void clipEdgeTableLineToRange (int* line, int x1, int x2) throw();
void sanitiseLevels (const bool useNonZeroWinding) throw();
};


+ 2
- 3
src/gui/graphics/fonts/juce_TextLayout.h View File

@@ -142,10 +142,9 @@ public:
//==============================================================================
juce_UseDebuggingNewOperator
/** @internal */
class Token;
private:
class Token;
friend class OwnedArray <Token>;
OwnedArray <Token> tokens;
int totalLines;
};


+ 17
- 17
src/gui/graphics/fonts/juce_Typeface.cpp View File

@@ -45,15 +45,15 @@ Typeface::~Typeface()
}
//==============================================================================
class CustomTypefaceGlyphInfo
class CustomTypeface::GlyphInfo
{
public:
CustomTypefaceGlyphInfo (const juce_wchar character_, const Path& path_, const float width_) throw()
GlyphInfo (const juce_wchar character_, const Path& path_, const float width_) throw()
: character (character_), path (path_), width (width_)
{
}
~CustomTypefaceGlyphInfo() throw()
~GlyphInfo() throw()
{
}
@@ -92,8 +92,8 @@ public:
juce_UseDebuggingNewOperator
private:
CustomTypefaceGlyphInfo (const CustomTypefaceGlyphInfo&);
const CustomTypefaceGlyphInfo& operator= (const CustomTypefaceGlyphInfo&);
GlyphInfo (const GlyphInfo&);
const GlyphInfo& operator= (const GlyphInfo&);
};
//==============================================================================
@@ -172,14 +172,14 @@ void CustomTypeface::addGlyph (const juce_wchar character, const Path& path, con
if (((unsigned int) character) < (unsigned int) numElementsInArray (lookupTable))
lookupTable [character] = (short) glyphs.size();
glyphs.add (new CustomTypefaceGlyphInfo (character, path, width));
glyphs.add (new GlyphInfo (character, path, width));
}
void CustomTypeface::addKerningPair (const juce_wchar char1, const juce_wchar char2, const float extraAmount) throw()
{
if (extraAmount != 0)
{
CustomTypefaceGlyphInfo* const g = findGlyph (char1, true);
GlyphInfo* const g = findGlyph (char1, true);
jassert (g != 0); // can only add kerning pairs for characters that exist!
if (g != 0)
@@ -187,14 +187,14 @@ void CustomTypeface::addKerningPair (const juce_wchar char1, const juce_wchar ch
}
}
CustomTypefaceGlyphInfo* CustomTypeface::findGlyph (const juce_wchar character, const bool loadIfNeeded) throw()
CustomTypeface::GlyphInfo* CustomTypeface::findGlyph (const juce_wchar character, const bool loadIfNeeded) throw()
{
if (((unsigned int) character) < (unsigned int) numElementsInArray (lookupTable) && lookupTable [character] > 0)
return glyphs [(int) lookupTable [(int) character]];
for (int i = 0; i < glyphs.size(); ++i)
{
CustomTypefaceGlyphInfo* const g = glyphs.getUnchecked(i);
GlyphInfo* const g = glyphs.getUnchecked(i);
if (g->character == character)
return g;
}
@@ -205,9 +205,9 @@ CustomTypefaceGlyphInfo* CustomTypeface::findGlyph (const juce_wchar character,
return 0;
}
CustomTypefaceGlyphInfo* CustomTypeface::findGlyphSubstituting (const juce_wchar character) throw()
CustomTypeface::GlyphInfo* CustomTypeface::findGlyphSubstituting (const juce_wchar character) throw()
{
CustomTypefaceGlyphInfo* glyph = findGlyph (character, true);
GlyphInfo* glyph = findGlyph (character, true);
if (glyph == 0)
{
@@ -286,7 +286,7 @@ bool CustomTypeface::writeToStream (OutputStream& outputStream)
for (i = 0; i < glyphs.size(); ++i)
{
const CustomTypefaceGlyphInfo* const g = glyphs.getUnchecked (i);
const GlyphInfo* const g = glyphs.getUnchecked (i);
out.writeShort ((short) (unsigned short) g->character);
out.writeFloat (g->width);
g->path.writePathToStream (out);
@@ -298,11 +298,11 @@ bool CustomTypeface::writeToStream (OutputStream& outputStream)
for (i = 0; i < glyphs.size(); ++i)
{
const CustomTypefaceGlyphInfo* const g = glyphs.getUnchecked (i);
const GlyphInfo* const g = glyphs.getUnchecked (i);
for (int j = 0; j < g->kerningPairs.size(); ++j)
{
const CustomTypefaceGlyphInfo::KerningPair& p = g->kerningPairs.getReference (j);
const GlyphInfo::KerningPair& p = g->kerningPairs.getReference (j);
out.writeShort ((short) (unsigned short) g->character);
out.writeShort ((short) (unsigned short) p.character2);
out.writeFloat (p.kerningAmount);
@@ -330,7 +330,7 @@ float CustomTypeface::getStringWidth (const String& text)
while (*t != 0)
{
const CustomTypefaceGlyphInfo* const glyph = findGlyphSubstituting (*t++);
const GlyphInfo* const glyph = findGlyphSubstituting (*t++);
if (glyph != 0)
x += glyph->getHorizontalSpacing (*t);
@@ -348,7 +348,7 @@ void CustomTypeface::getGlyphPositions (const String& text, Array <int>& resultG
while (*t != 0)
{
const juce_wchar c = *t++;
const CustomTypefaceGlyphInfo* const glyph = findGlyphSubstituting (c);
const GlyphInfo* const glyph = findGlyphSubstituting (c);
if (glyph != 0)
{
@@ -361,7 +361,7 @@ void CustomTypeface::getGlyphPositions (const String& text, Array <int>& resultG
bool CustomTypeface::getOutlineForGlyph (int glyphNumber, Path& path)
{
const CustomTypefaceGlyphInfo* const glyph = findGlyphSubstituting ((juce_wchar) glyphNumber);
const GlyphInfo* const glyph = findGlyphSubstituting ((juce_wchar) glyphNumber);
if (glyph != 0)
{
path = glyph->path;


+ 5
- 4
src/gui/graphics/fonts/juce_Typeface.h View File

@@ -32,7 +32,6 @@
#include "../../../io/streams/juce_OutputStream.h"
#include "../geometry/juce_Path.h"
class Font;
class CustomTypefaceGlyphInfo;
//==============================================================================
@@ -220,14 +219,16 @@ protected:
private:
//==============================================================================
OwnedArray <CustomTypefaceGlyphInfo> glyphs;
class GlyphInfo;
friend class OwnedArray<GlyphInfo>;
OwnedArray <GlyphInfo> glyphs;
short lookupTable [128];
CustomTypeface (const CustomTypeface&);
const CustomTypeface& operator= (const CustomTypeface&);
CustomTypefaceGlyphInfo* findGlyph (const juce_wchar character, const bool loadIfNeeded) throw();
CustomTypefaceGlyphInfo* findGlyphSubstituting (const juce_wchar character) throw();
GlyphInfo* findGlyph (const juce_wchar character, const bool loadIfNeeded) throw();
GlyphInfo* findGlyphSubstituting (const juce_wchar character) throw();
};
#endif // __JUCE_TYPEFACE_JUCEHEADER__

+ 4
- 7
src/io/files/juce_DirectoryIterator.cpp View File

@@ -77,7 +77,7 @@ DirectoryIterator::DirectoryIterator (const File& directory,
&& ((whatToLookFor_ & File::ignoreHiddenFiles) == 0
|| ! isHidden))
{
dirsFound.add (new File (path + filename, 0));
dirsFound.add (File (path + filename, 0));
}
addToList = (whatToLookFor_ & File::findDirectories) != 0;
@@ -96,7 +96,7 @@ DirectoryIterator::DirectoryIterator (const File& directory,
addToList = ! isHidden;
if (addToList)
filesFound.add (new File (path + filename, 0));
filesFound.add (File (path + filename, 0));
}
} while (juce_findFileNext (handle, filename, &isDirectory, &isHidden, 0, 0, 0, 0));
@@ -126,7 +126,7 @@ bool DirectoryIterator::next()
if (index >= filesFound.size())
{
subIterator = new DirectoryIterator (*(dirsFound [index - filesFound.size()]),
subIterator = new DirectoryIterator (dirsFound.getReference (index - filesFound.size()),
true, wildCard, whatToLookFor);
return next();
}
@@ -139,10 +139,7 @@ const File DirectoryIterator::getFile() const
if (subIterator != 0)
return subIterator->getFile();
const File* const f = filesFound [index];
return (f != 0) ? *f
: File::nonexistent;
return filesFound [index];
}
float DirectoryIterator::getEstimatedProgress() const


+ 2
- 2
src/io/files/juce_DirectoryIterator.h View File

@@ -101,8 +101,8 @@ public:
juce_UseDebuggingNewOperator
private:
OwnedArray <File> filesFound;
OwnedArray <File> dirsFound;
Array <File> filesFound;
Array <File> dirsFound;
String wildCard;
int index;
const int whatToLookFor;


+ 15
- 17
src/io/files/juce_File.cpp View File

@@ -42,6 +42,7 @@ BEGIN_JUCE_NAMESPACE
#include "juce_TemporaryFile.h"
#include "../../core/juce_SystemStats.h"
#include "../../core/juce_Random.h"
#include "../../containers/juce_ScopedPointer.h"
#ifdef _MSC_VER
#pragma warning (pop)
@@ -292,11 +293,11 @@ bool File::setReadOnly (const bool shouldBeReadOnly,
if (applyRecursively && isDirectory())
{
OwnedArray <File> subFiles;
Array <File> subFiles;
findChildFiles (subFiles, File::findFilesAndDirectories, false);
for (int i = subFiles.size(); --i >= 0;)
worked = subFiles[i]->setReadOnly (shouldBeReadOnly, true) && worked;
worked = subFiles.getReference(i).setReadOnly (shouldBeReadOnly, true) && worked;
}
return juce_setFileReadOnly (fullPath, shouldBeReadOnly) && worked;
@@ -314,11 +315,11 @@ bool File::deleteRecursively() const
if (isDirectory())
{
OwnedArray<File> subFiles;
Array<File> subFiles;
findChildFiles (subFiles, File::findFilesAndDirectories, false);
for (int i = subFiles.size(); --i >= 0;)
worked = subFiles[i]->deleteRecursively() && worked;
worked = subFiles.getReference(i).deleteRecursively() && worked;
}
return deleteFile() && worked;
@@ -353,19 +354,19 @@ bool File::copyDirectoryTo (const File& newDirectory) const
{
if (isDirectory() && newDirectory.createDirectory())
{
OwnedArray<File> subFiles;
Array<File> subFiles;
findChildFiles (subFiles, File::findFiles, false);
int i;
for (i = 0; i < subFiles.size(); ++i)
if (! subFiles[i]->copyFileTo (newDirectory.getChildFile (subFiles[i]->getFileName())))
if (! subFiles.getReference(i).copyFileTo (newDirectory.getChildFile (subFiles.getReference(i).getFileName())))
return false;
subFiles.clear();
findChildFiles (subFiles, File::findDirectories, false);
for (i = 0; i < subFiles.size(); ++i)
if (! subFiles[i]->copyDirectoryTo (newDirectory.getChildFile (subFiles[i]->getFileName())))
if (! subFiles.getReference(i).copyDirectoryTo (newDirectory.getChildFile (subFiles.getReference(i).getFileName())))
return false;
return true;
@@ -648,7 +649,7 @@ static inline bool fileTypeMatches (const int whatToLookFor,
|| (whatToLookFor & File::ignoreHiddenFiles) == 0);
}
int File::findChildFiles (OwnedArray<File>& results,
int File::findChildFiles (Array<File>& results,
const int whatToLookFor,
const bool searchRecursively,
const String& wildCardPattern) const
@@ -677,7 +678,7 @@ int File::findChildFiles (OwnedArray<File>& results,
if (fileTypeMatches (whatToLookFor, itemIsDirectory, itemIsHidden)
&& ! filename.containsOnly (T(".")))
{
results.add (new File (path + filename, 0));
results.add (File (path + filename, 0));
++total;
}
@@ -695,16 +696,13 @@ int File::findChildFiles (OwnedArray<File>& results,
// and recurse down if required.
if (searchRecursively)
{
OwnedArray <File> subDirectories;
Array<File> subDirectories;
findChildFiles (subDirectories, File::findDirectories, false);
for (int i = 0; i < subDirectories.size(); ++i)
{
total += subDirectories.getUnchecked(i)
->findChildFiles (results,
whatToLookFor,
true,
wildCardPattern);
total += subDirectories.getReference(i).findChildFiles (results, whatToLookFor,
true, wildCardPattern);
}
}
@@ -1092,12 +1090,12 @@ const String File::getRelativePathFrom (const File& dir) const
}
//==============================================================================
void File::findFileSystemRoots (OwnedArray<File>& destArray)
void File::findFileSystemRoots (Array<File>& destArray)
{
const StringArray roots (juce_getFileSystemRoots());
for (int i = 0; i < roots.size(); ++i)
destArray.add (new File (roots[i]));
destArray.add (File (roots[i]));
}
const String File::getVolumeLabel() const


+ 3
- 3
src/io/files/juce_File.h View File

@@ -26,7 +26,7 @@
#ifndef __JUCE_FILE_JUCEHEADER__
#define __JUCE_FILE_JUCEHEADER__
#include "../../containers/juce_OwnedArray.h"
#include "../../containers/juce_Array.h"
#include "../../core/juce_Time.h"
#include "../../text/juce_StringArray.h"
#include "../../containers/juce_MemoryBlock.h"
@@ -529,7 +529,7 @@ public:
@see getNumberOfChildFiles, DirectoryIterator
*/
int findChildFiles (OwnedArray<File>& results,
int findChildFiles (Array<File>& results,
const int whatToLookFor,
const bool searchRecursively,
const String& wildCardPattern = JUCE_T("*")) const;
@@ -671,7 +671,7 @@ public:
to which ones are available. On the Mac/Linux, this will probably
just add a single entry for "/".
*/
static void findFileSystemRoots (OwnedArray<File>& results);
static void findFileSystemRoots (Array<File>& results);
/** Finds the name of the drive on which this file lives.


+ 1
- 1
src/io/files/juce_FileSearchPath.cpp View File

@@ -138,7 +138,7 @@ void FileSearchPath::removeNonExistentPaths()
directories.remove (i);
}
int FileSearchPath::findChildFiles (OwnedArray<File>& results,
int FileSearchPath::findChildFiles (Array<File>& results,
const int whatToLookFor,
const bool searchRecursively,
const String& wildCardPattern) const


+ 1
- 1
src/io/files/juce_FileSearchPath.h View File

@@ -130,7 +130,7 @@ public:
@returns the number of files added to the array
@see File::findChildFiles
*/
int findChildFiles (OwnedArray<File>& results,
int findChildFiles (Array<File>& results,
const int whatToLookFor,
const bool searchRecursively,
const String& wildCardPattern = JUCE_T("*")) const;


+ 1
- 1
src/io/files/juce_ZipFile.h View File

@@ -30,7 +30,7 @@
#include "../streams/juce_InputStream.h"
#include "../streams/juce_InputSource.h"
#include "../../threads/juce_CriticalSection.h"
#include "../../containers/juce_VoidArray.h"
#include "../../containers/juce_OwnedArray.h"
//==============================================================================


+ 2
- 2
src/native/linux/juce_linux_FileChooser.cpp View File

@@ -28,7 +28,7 @@
#if JUCE_INCLUDED_FILE
//==============================================================================
void FileChooser::showPlatformDialog (OwnedArray<File>& results,
void FileChooser::showPlatformDialog (Array<File>& results,
const String& title,
const File& file,
const String& filters,
@@ -90,7 +90,7 @@ void FileChooser::showPlatformDialog (OwnedArray<File>& results,
tokens.add (resultString);
for (int i = 0; i < tokens.size(); i++)
results.add (new File (tokens[i]));
results.add (File (tokens[i]));
return;
}


+ 4
- 4
src/native/mac/juce_mac_FileChooser.mm View File

@@ -79,7 +79,7 @@ using namespace JUCE_NAMESPACE;
BEGIN_JUCE_NAMESPACE
//==============================================================================
void FileChooser::showPlatformDialog (OwnedArray<File>& results,
void FileChooser::showPlatformDialog (Array<File>& results,
const String& title,
const File& currentFileOrDirectory,
const String& filter,
@@ -133,7 +133,7 @@ void FileChooser::showPlatformDialog (OwnedArray<File>& results,
{
if (isSaveDialogue)
{
results.add (new File (nsStringToJuce ([panel filename])));
results.add (File (nsStringToJuce ([panel filename])));
}
else
{
@@ -142,7 +142,7 @@ void FileChooser::showPlatformDialog (OwnedArray<File>& results,
for (unsigned int i = 0; i < [urls count]; ++i)
{
NSString* f = [urls objectAtIndex: i];
results.add (new File (nsStringToJuce (f)));
results.add (File (nsStringToJuce (f)));
}
}
}
@@ -153,7 +153,7 @@ void FileChooser::showPlatformDialog (OwnedArray<File>& results,
#else
//==============================================================================
void FileChooser::showPlatformDialog (OwnedArray<File>& results,
void FileChooser::showPlatformDialog (Array<File>& results,
const String& title,
const File& currentFileOrDirectory,
const String& filter,


+ 4
- 4
src/native/windows/juce_win32_FileChooser.cpp View File

@@ -143,7 +143,7 @@ private:
};
//==============================================================================
void FileChooser::showPlatformDialog (OwnedArray<File>& results,
void FileChooser::showPlatformDialog (Array<File>& results,
const String& title,
const File& currentFileOrDirectory,
const String& filter,
@@ -234,7 +234,7 @@ void FileChooser::showPlatformDialog (OwnedArray<File>& results,
{
const String stringFName (fname);
results.add (new File (File (stringFName).getSiblingFile (returnedString)));
results.add (File (stringFName).getSiblingFile (returnedString));
returnedString = String::empty;
return;
@@ -325,13 +325,13 @@ void FileChooser::showPlatformDialog (OwnedArray<File>& results,
while (*filename != 0)
{
const String filepath (String (files) + T("\\") + String (filename));
results.add (new File (filepath));
results.add (File (filepath));
filename += CharacterFunctions::length (filename) + 1;
}
}
else if (files[0] != 0)
{
results.add (new File (files));
results.add (File (files));
}
}


+ 1
- 0
src/text/juce_XmlDocument.h View File

@@ -30,6 +30,7 @@
#include "juce_StringArray.h"
#include "../io/files/juce_File.h"
#include "../io/streams/juce_InputSource.h"
#include "../containers/juce_ScopedPointer.h"
//==============================================================================


Loading…
Cancel
Save