// ImageIO Function Definitions std::unique_ptr<RGBSpectrum[]> ReadImage(const std::string &name, Point2i *resolution) { if (name.size() >= 5) { size_t suffixOffset = name.size() - 4; if (!strcmp(name.c_str() + suffixOffset, ".exr") || !strcmp(name.c_str() + suffixOffset, ".EXR")) return std::unique_ptr<RGBSpectrum[]>( ReadImageEXR(name, &resolution->x, &resolution->y)); if (!strcmp(name.c_str() + suffixOffset, ".tga") || !strcmp(name.c_str() + suffixOffset, ".TGA")) return std::unique_ptr<RGBSpectrum[]>( ReadImageTGA(name, &resolution->x, &resolution->y)); if (!strcmp(name.c_str() + suffixOffset, ".pfm") || !strcmp(name.c_str() + suffixOffset, ".PFM")) return std::unique_ptr<RGBSpectrum[]>( ReadImagePFM(name, &resolution->x, &resolution->y)); } Error( "Unable to load image stored in format \"%s\" for filename \"%s\". " "Returning a constant grey image instead.", strrchr(name.c_str(), '.') ? (strrchr(name.c_str(), '.') + 1) : "(unknown)", name.c_str()); RGBSpectrum *ret = new RGBSpectrum[1]; ret[0] = RGBSpectrum(0.5f); resolution->x = resolution->y = 1; return std::unique_ptr<RGBSpectrum[]>(ret); }
// ImageIO Function Definitions std::unique_ptr<RGBSpectrum[]> ReadImage(const std::string &name, Point2i *resolution) { if (HasExtension(name, ".exr")) return std::unique_ptr<RGBSpectrum[]>( ReadImageEXR(name, &resolution->x, &resolution->y)); else if (HasExtension(name, ".tga")) return std::unique_ptr<RGBSpectrum[]>( ReadImageTGA(name, &resolution->x, &resolution->y)); else if (HasExtension(name, ".pfm")) return std::unique_ptr<RGBSpectrum[]>( ReadImagePFM(name, &resolution->x, &resolution->y)); Error( "Unable to load image stored in format \"%s\" for filename \"%s\". " "Returning a constant gray image instead.", strrchr(name.c_str(), '.') ? (strrchr(name.c_str(), '.') + 1) : "(unknown)", name.c_str()); RGBSpectrum *ret = new RGBSpectrum[1]; ret[0] = RGBSpectrum(0.5f); resolution->x = resolution->y = 1; return std::unique_ptr<RGBSpectrum[]>(ret); }