mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-22 01:34:21 +00:00
Tidied up some comments and usage of File::createOutputStream() and createInputStream()
This commit is contained in:
parent
81e206f963
commit
302019dd43
13 changed files with 114 additions and 87 deletions
|
|
@ -78,15 +78,13 @@ public:
|
|||
{
|
||||
// Create an OutputStream to write to our destination file...
|
||||
file.deleteFile();
|
||||
std::unique_ptr<FileOutputStream> fileStream (file.createOutputStream());
|
||||
|
||||
if (fileStream.get() != nullptr)
|
||||
if (auto fileStream = std::unique_ptr<FileOutputStream> (file.createOutputStream()))
|
||||
{
|
||||
// Now create a WAV writer object that writes to our output stream...
|
||||
WavAudioFormat wavFormat;
|
||||
auto* writer = wavFormat.createWriterFor (fileStream.get(), sampleRate, 1, 16, {}, 0);
|
||||
|
||||
if (writer != nullptr)
|
||||
if (auto writer = wavFormat.createWriterFor (fileStream.get(), sampleRate, 1, 16, {}, 0))
|
||||
{
|
||||
fileStream.release(); // (passes responsibility for deleting the stream to the writer object that is now using it)
|
||||
|
||||
|
|
|
|||
|
|
@ -340,25 +340,25 @@ private:
|
|||
#if JUCE_ANDROID || JUCE_IOS
|
||||
auto imageFile = File::getSpecialLocation (File::tempDirectory).getNonexistentChildFile ("JuceCameraPhotoDemo", ".jpg");
|
||||
|
||||
if (auto stream = std::unique_ptr<OutputStream> (imageFile.createOutputStream()))
|
||||
FileOutputStream stream (imageFile);
|
||||
|
||||
if (stream.openedOk()
|
||||
&& JPEGImageFormat().writeImageToStream (image, stream))
|
||||
{
|
||||
if (JPEGImageFormat().writeImageToStream (image, *stream))
|
||||
{
|
||||
URL url (imageFile);
|
||||
URL url (imageFile);
|
||||
|
||||
snapshotButton .setEnabled (false);
|
||||
recordMovieButton.setEnabled (false);
|
||||
contentSharingPending = true;
|
||||
snapshotButton .setEnabled (false);
|
||||
recordMovieButton.setEnabled (false);
|
||||
contentSharingPending = true;
|
||||
|
||||
SafePointer<CameraDemo> safeThis (this);
|
||||
SafePointer<CameraDemo> safeThis (this);
|
||||
|
||||
juce::ContentSharer::getInstance()->shareFiles ({url},
|
||||
[safeThis] (bool success, const String&) mutable
|
||||
{
|
||||
if (safeThis)
|
||||
safeThis->sharingFinished (success, true);
|
||||
});
|
||||
}
|
||||
juce::ContentSharer::getInstance()->shareFiles ({url},
|
||||
[safeThis] (bool success, const String&) mutable
|
||||
{
|
||||
if (safeThis)
|
||||
safeThis->sharingFinished (success, true);
|
||||
});
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -335,9 +335,11 @@ private:
|
|||
fileToSave = fileToSave.getChildFile ("JUCE.png");
|
||||
fileToSave.deleteFile();
|
||||
|
||||
std::unique_ptr<OutputStream> outStream (fileToSave.createOutputStream());
|
||||
std::unique_ptr<InputStream> inStream (createAssetInputStream ("juce_icon.png"));
|
||||
outStream->writeFromInputStream (*inStream, -1);
|
||||
FileOutputStream outStream (fileToSave);
|
||||
|
||||
if (outStream.openedOk())
|
||||
if (auto inStream = std::unique_ptr<InputStream> (createAssetInputStream ("juce_icon.png")))
|
||||
outStream.writeFromInputStream (*inStream, -1);
|
||||
}
|
||||
|
||||
fc.reset (new FileChooser ("Choose a file to save...",
|
||||
|
|
|
|||
|
|
@ -103,15 +103,16 @@ public:
|
|||
StringPairArray responseHeaders;
|
||||
int statusCode = 0;
|
||||
|
||||
std::unique_ptr<InputStream> stream (url.createInputStream (false, nullptr, nullptr, {},
|
||||
10000, // timeout in millisecs
|
||||
&responseHeaders, &statusCode));
|
||||
if (stream.get() != nullptr)
|
||||
if (auto stream = std::unique_ptr<InputStream> (url.createInputStream (false, nullptr, nullptr, {},
|
||||
10000, // timeout in millisecs
|
||||
&responseHeaders, &statusCode)))
|
||||
{
|
||||
return (statusCode != 0 ? "Status code: " + String (statusCode) + newLine : String())
|
||||
+ "Response headers: " + newLine
|
||||
+ responseHeaders.getDescription() + newLine
|
||||
+ "----------------------------------------------------" + newLine
|
||||
+ stream->readEntireStreamAsString();
|
||||
}
|
||||
|
||||
if (statusCode != 0)
|
||||
return "Failed to connect, status code = " + String (statusCode);
|
||||
|
|
|
|||
|
|
@ -279,13 +279,15 @@ namespace
|
|||
std::cout << "Writing: " << targetFile.getFullPathName() << std::endl;
|
||||
|
||||
TemporaryFile temp (targetFile);
|
||||
std::unique_ptr<FileOutputStream> out (temp.getFile().createOutputStream());
|
||||
|
||||
bool ok = out != nullptr && zip.writeToStream (*out, nullptr);
|
||||
out.reset();
|
||||
ok = ok && temp.overwriteTargetFileWithTemporary();
|
||||
{
|
||||
FileOutputStream out (temp.getFile());
|
||||
|
||||
if (! ok)
|
||||
if (! (out.openedOk() && zip.writeToStream (out, nullptr)))
|
||||
ConsoleApplication::fail ("Failed to write to the target file: " + targetFile.getFullPathName());
|
||||
}
|
||||
|
||||
if (! temp.overwriteTargetFileWithTemporary())
|
||||
ConsoleApplication::fail ("Failed to write to the target file: " + targetFile.getFullPathName());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -82,33 +82,29 @@ private:
|
|||
facts.add (file.getFullPathName());
|
||||
drawable.reset();
|
||||
|
||||
if (auto input = std::unique_ptr<FileInputStream> (file.createInputStream()))
|
||||
{
|
||||
std::unique_ptr<InputStream> input (file.createInputStream());
|
||||
auto totalSize = input->getTotalLength();
|
||||
String formatName;
|
||||
|
||||
if (input != nullptr)
|
||||
if (auto* format = ImageFileFormat::findImageFormatForStream (*input))
|
||||
formatName = " " + format->getFormatName();
|
||||
|
||||
input.reset();
|
||||
|
||||
auto image = ImageCache::getFromFile (file);
|
||||
|
||||
if (image.isValid())
|
||||
{
|
||||
auto totalSize = input->getTotalLength();
|
||||
String formatName;
|
||||
auto* d = new DrawableImage();
|
||||
d->setImage (image);
|
||||
drawable.reset (d);
|
||||
|
||||
if (auto* format = ImageFileFormat::findImageFormatForStream (*input))
|
||||
formatName = " " + format->getFormatName();
|
||||
|
||||
input.reset();
|
||||
|
||||
auto image = ImageCache::getFromFile (file);
|
||||
|
||||
if (image.isValid())
|
||||
{
|
||||
auto* d = new DrawableImage();
|
||||
d->setImage (image);
|
||||
drawable.reset (d);
|
||||
|
||||
facts.add (String (image.getWidth()) + " x " + String (image.getHeight()) + formatName);
|
||||
}
|
||||
|
||||
if (totalSize > 0)
|
||||
facts.add (File::descriptionOfSizeInBytes (totalSize));
|
||||
facts.add (String (image.getWidth()) + " x " + String (image.getHeight()) + formatName);
|
||||
}
|
||||
|
||||
if (totalSize > 0)
|
||||
facts.add (File::descriptionOfSizeInBytes (totalSize));
|
||||
}
|
||||
|
||||
if (drawable == nullptr)
|
||||
|
|
|
|||
|
|
@ -486,9 +486,7 @@ int OggVorbisAudioFormat::estimateOggFileQuality (const File& source)
|
|||
{
|
||||
if (auto* in = source.createInputStream())
|
||||
{
|
||||
std::unique_ptr<AudioFormatReader> r (createReaderFor (in, true));
|
||||
|
||||
if (r != nullptr)
|
||||
if (auto r = std::unique_ptr<AudioFormatReader> (createReaderFor (in, true)))
|
||||
{
|
||||
auto lengthSecs = r->lengthInSamples / r->sampleRate;
|
||||
auto approxBitsPerSecond = (int) (source.getSize() * 8 / lengthSecs);
|
||||
|
|
|
|||
|
|
@ -607,6 +607,17 @@ public:
|
|||
//==============================================================================
|
||||
/** Creates a stream to read from this file.
|
||||
|
||||
Note that this is an old method, and actually it's usually best to avoid it and
|
||||
instead use an RAII pattern with an FileInputStream directly, e.g.
|
||||
@code
|
||||
FileInputStream input (fileToOpen);
|
||||
|
||||
if (input.openedOk())
|
||||
{
|
||||
input.read (etc...
|
||||
}
|
||||
@endcode
|
||||
|
||||
@returns a stream that will read from this file (initially positioned at the
|
||||
start of the file), or nullptr if the file can't be opened for some reason
|
||||
@see createOutputStream, loadFileAsData
|
||||
|
|
@ -615,13 +626,28 @@ public:
|
|||
|
||||
/** Creates a stream to write to this file.
|
||||
|
||||
Note that this is an old method, and actually it's usually best to avoid it and
|
||||
instead use an RAII pattern with an FileOutputStream directly, e.g.
|
||||
@code
|
||||
FileOutputStream output (fileToOpen);
|
||||
|
||||
if (output.openedOk())
|
||||
{
|
||||
output.read etc...
|
||||
}
|
||||
@endcode
|
||||
|
||||
If the file exists, the stream that is returned will be positioned ready for
|
||||
writing at the end of the file. If you want to write to the start of the file,
|
||||
replacing the existing content, then you can do the following:
|
||||
@code
|
||||
auto* stream = file.createOutputStream();
|
||||
stream->setPosition (0);
|
||||
stream->truncate();
|
||||
FileOutputStream output (fileToOverwrite);
|
||||
|
||||
if (output.openedOk())
|
||||
{
|
||||
output.setPosition (0);
|
||||
output.truncate();
|
||||
...
|
||||
@endcode
|
||||
|
||||
@returns a stream that will write to this file (initially positioned at the
|
||||
|
|
|
|||
|
|
@ -42,9 +42,19 @@ public:
|
|||
does not exist), the failedToOpen() method will return true.
|
||||
|
||||
If the file already exists when opened, the stream's write-position will
|
||||
be set to the end of the file. To overwrite an existing file,
|
||||
use File::deleteFile() before opening the stream, or use setPosition(0)
|
||||
after it's opened (although this won't truncate the file).
|
||||
be set to the end of the file. To overwrite an existing file, you can truncate
|
||||
it like this:
|
||||
|
||||
@code
|
||||
FileOutputStream stream (file);
|
||||
|
||||
if (stream.openedOk())
|
||||
{
|
||||
stream.setPosition (0);
|
||||
stream.truncate();
|
||||
...
|
||||
@endcode
|
||||
|
||||
|
||||
Destroying a FileOutputStream object does not force the operating system
|
||||
to write the buffered data to disk immediately. If this is required you
|
||||
|
|
|
|||
|
|
@ -41,12 +41,10 @@ namespace juce
|
|||
TemporaryFile temp (myTargetFile);
|
||||
|
||||
// create a stream to the temporary file, and write some data to it...
|
||||
std::unique_ptr<FileOutputStream> out (temp.getFile().createOutputStream());
|
||||
|
||||
if (out != nullptr)
|
||||
if (auto out = std::unique_ptr<FileOutputStream> (temp.getFile().createOutputStream()))
|
||||
{
|
||||
out->write ( ...etc )
|
||||
out = nullptr; // (deletes the stream)
|
||||
out.reset(); // (deletes the stream)
|
||||
|
||||
// ..now we've finished writing, this will rename the temp file to
|
||||
// make it replace the target file we specified above.
|
||||
|
|
|
|||
|
|
@ -118,9 +118,7 @@ URL::DownloadTask* URL::DownloadTask::createFallbackDownloader (const URL& urlTo
|
|||
const size_t bufferSize = 0x8000;
|
||||
targetFileToUse.deleteFile();
|
||||
|
||||
std::unique_ptr<FileOutputStream> outputStream (targetFileToUse.createOutputStream (bufferSize));
|
||||
|
||||
if (outputStream != nullptr)
|
||||
if (auto outputStream = std::unique_ptr<FileOutputStream> (targetFileToUse.createOutputStream (bufferSize)))
|
||||
{
|
||||
std::unique_ptr<WebInputStream> stream (new WebInputStream (urlToUse, usePostRequest));
|
||||
stream->withExtraHeaders (extraHeadersToUse);
|
||||
|
|
|
|||
|
|
@ -111,9 +111,7 @@ private:
|
|||
|
||||
if (tempFile.create().wasOk())
|
||||
{
|
||||
std::unique_ptr<FileOutputStream> outputStream (tempFile.createOutputStream());
|
||||
|
||||
if (outputStream != nullptr)
|
||||
if (auto outputStream = std::unique_ptr<FileOutputStream> (tempFile.createOutputStream()))
|
||||
{
|
||||
size_t pos = 0;
|
||||
size_t totalSize = data.getSize();
|
||||
|
|
|
|||
|
|
@ -38,12 +38,12 @@ ImagePreviewComponent::~ImagePreviewComponent()
|
|||
//==============================================================================
|
||||
void ImagePreviewComponent::getThumbSize (int& w, int& h) const
|
||||
{
|
||||
const int availableW = proportionOfWidth (0.97f);
|
||||
const int availableH = getHeight() - 13 * 4;
|
||||
auto availableW = proportionOfWidth (0.97f);
|
||||
auto availableH = getHeight() - 13 * 4;
|
||||
|
||||
const double scale = jmin (1.0,
|
||||
availableW / (double) w,
|
||||
availableH / (double) h);
|
||||
auto scale = jmin (1.0,
|
||||
availableW / (double) w,
|
||||
availableH / (double) h);
|
||||
|
||||
w = roundToInt (scale * w);
|
||||
h = roundToInt (scale * h);
|
||||
|
|
@ -66,18 +66,18 @@ void ImagePreviewComponent::timerCallback()
|
|||
currentDetails.clear();
|
||||
repaint();
|
||||
|
||||
std::unique_ptr<FileInputStream> in (fileToLoad.createInputStream());
|
||||
FileInputStream in (fileToLoad);
|
||||
|
||||
if (in != nullptr && in->getFile().existsAsFile())
|
||||
if (in.openedOk() && fileToLoad.existsAsFile())
|
||||
{
|
||||
if (ImageFileFormat* const format = ImageFileFormat::findImageFormatForStream (*in))
|
||||
if (auto format = ImageFileFormat::findImageFormatForStream (in))
|
||||
{
|
||||
currentThumbnail = format->decodeImage (*in);
|
||||
currentThumbnail = format->decodeImage (in);
|
||||
|
||||
if (currentThumbnail.isValid())
|
||||
{
|
||||
int w = currentThumbnail.getWidth();
|
||||
int h = currentThumbnail.getHeight();
|
||||
auto w = currentThumbnail.getWidth();
|
||||
auto h = currentThumbnail.getHeight();
|
||||
|
||||
currentDetails
|
||||
<< fileToLoad.getFileName() << "\n"
|
||||
|
|
@ -99,13 +99,13 @@ void ImagePreviewComponent::paint (Graphics& g)
|
|||
{
|
||||
g.setFont (13.0f);
|
||||
|
||||
int w = currentThumbnail.getWidth();
|
||||
int h = currentThumbnail.getHeight();
|
||||
auto w = currentThumbnail.getWidth();
|
||||
auto h = currentThumbnail.getHeight();
|
||||
getThumbSize (w, h);
|
||||
|
||||
const int numLines = 4;
|
||||
const int totalH = 13 * numLines + h + 4;
|
||||
const int y = (getHeight() - totalH) / 2;
|
||||
auto totalH = 13 * numLines + h + 4;
|
||||
auto y = (getHeight() - totalH) / 2;
|
||||
|
||||
g.drawImageWithin (currentThumbnail,
|
||||
(getWidth() - w) / 2, y, w, h,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue