    // Copyright (C) 2011  Davis E. King (davis@dlib.net), Nils Labugt
    // License: Boost Software License   See LICENSE.txt for the full license.
    #ifndef DLIB_LOAd_IMAGE_H__
    #define DLIB_LOAd_IMAGE_H__

    #include "load_image_abstract.h"
    #include "../string.h"
    #include "png_loader.h"
    #include "jpeg_loader.h"
    #include "image_loader.h"

    namespace dlib
    {
        template <typename image_type>
        void load_image (
            image_type& image,
            const std::string& file_name
        )
        {
            const std::string extension = tolower(right_substr(file_name,"."));
            if (extension == "bmp")
                load_bmp(image, file_name);
    #ifdef DLIB_PNG_SUPPORT
            else if (extension == "png")
                load_png(image, file_name);
    #endif
    #ifdef DLIB_JPEG_SUPPORT
            else if (extension == "jpeg" || extension == "jpg")
                load_jpeg(image, file_name);
    #endif
            else if (extension == "dng")
                load_dng(image, file_name);
            else
            {
                if (extension == "jpeg" || extension == "jpg")
                    throw image_load_error("DLIB_JPEG_SUPPORT not #defined: Unable to load image in file " + file_name);
                else if (extension == "png")
                    throw image_load_error("DLIB_PNG_SUPPORT not #defined: Unable to load image in file " + file_name);
                else
                    throw image_load_error("Unknown file extension: Unable to load image in file " + file_name);
            }
        }

    }

    #endif // DLIB_LOAd_IMAGE_H__