| 
							- /*
 -   ==============================================================================
 - 
 -    This file is part of the JUCE library.
 -    Copyright (c) 2013 - Raw Material Software Ltd.
 - 
 -    Permission is granted to use this software under the terms of either:
 -    a) the GPL v2 (or any later version)
 -    b) the Affero GPL v3
 - 
 -    Details of these licenses can be found 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.juce.com for more information.
 - 
 -   ==============================================================================
 - */
 - 
 - struct DefaultImageFormats
 - {
 -     static ImageFileFormat** get()
 -     {
 -         static DefaultImageFormats formats;
 -         return formats.formats;
 -     }
 - 
 - private:
 -     DefaultImageFormats() noexcept
 -     {
 -         formats[0] = &png;
 -         formats[1] = &jpg;
 -         formats[2] = &gif;
 -         formats[3] = nullptr;
 -     }
 - 
 -     PNGImageFormat  png;
 -     JPEGImageFormat jpg;
 -     GIFImageFormat  gif;
 - 
 -     ImageFileFormat* formats[4];
 - };
 - 
 - ImageFileFormat* ImageFileFormat::findImageFormatForStream (InputStream& input)
 - {
 -     const int64 streamPos = input.getPosition();
 - 
 -     for (ImageFileFormat** i = DefaultImageFormats::get(); *i != nullptr; ++i)
 -     {
 -         const bool found = (*i)->canUnderstand (input);
 -         input.setPosition (streamPos);
 - 
 -         if (found)
 -             return *i;
 -     }
 - 
 -     return nullptr;
 - }
 - 
 - ImageFileFormat* ImageFileFormat::findImageFormatForFileExtension (const File& file)
 - {
 -     for (ImageFileFormat** i = DefaultImageFormats::get(); *i != nullptr; ++i)
 -         if ((*i)->usesFileExtension (file))
 -             return *i;
 - 
 -     return nullptr;
 - }
 - 
 - //==============================================================================
 - Image ImageFileFormat::loadFrom (InputStream& input)
 - {
 -     ImageFileFormat* const format = findImageFormatForStream (input);
 - 
 -     if (format != nullptr)
 -         return format->decodeImage (input);
 - 
 -     return Image::null;
 - }
 - 
 - Image ImageFileFormat::loadFrom (const File& file)
 - {
 -     FileInputStream stream (file);
 - 
 -     if (stream.openedOk())
 -     {
 -         BufferedInputStream b (stream, 8192);
 -         return loadFrom (b);
 -     }
 - 
 -     return Image::null;
 - }
 - 
 - Image ImageFileFormat::loadFrom (const void* rawData, const size_t numBytes)
 - {
 -     if (rawData != nullptr && numBytes > 4)
 -     {
 -         MemoryInputStream stream (rawData, numBytes, false);
 -         return loadFrom (stream);
 -     }
 - 
 -     return Image::null;
 - }
 
 
  |