#include #include"ILImage.h" #include #include using namespace hgl; using namespace hgl::filesystem; constexpr double SRGB_GAMMA =1.0f/2.2f; constexpr double SRGB_INVERSE_GAMMA =2.2f; constexpr double SRGB_ALPHA =0.055f; template inline constexpr T sRGB2Linear(const T &in) { if(in<=0.4045) return (double)in/12.92; else return pow((double(in)+SRGB_ALPHA)/(1.0f+SRGB_ALPHA),2.4f); } template inline constexpr T Linear2sRGB(const T &in) { if(in<=0.0031308f) return double(in)*12.92f; else return (1.0f+SRGB_ALPHA)*pow(double(in),1.0f/2.4f)-SRGB_ALPHA; } int convert(const OSString &filename) { ILImage hdr; if(!hdr.LoadFile(filename)) { os_err<<"Can't load file: "<(filename,OS_TEXT("png")); if(!SaveImageToFile(png_filename,width,height,channels,IL_UNSIGNED_SHORT,dest)) { delete[] dest; os_err<