dt_imageio_retval_t dt_imageio_open( dt_image_t *img, // non-const * means you hold a write lock! const char *filename, // full path dt_mipmap_cache_allocator_t a) // allocate via dt_mipmap_cache_alloc { /* first of all, check if file exists, dont bother to test loading if not exists */ if(!g_file_test(filename, G_FILE_TEST_IS_REGULAR)) return !DT_IMAGEIO_OK; dt_imageio_retval_t ret = DT_IMAGEIO_FILE_CORRUPTED; /* check if file is ldr using magic's */ if (dt_imageio_is_ldr(filename)) ret = dt_imageio_open_ldr(img, filename, a); if(ret != DT_IMAGEIO_OK && ret != DT_IMAGEIO_CACHE_FULL) #ifdef HAVE_RAWSPEED ret = dt_imageio_open_rawspeed(img, filename, a); if(ret != DT_IMAGEIO_OK && ret != DT_IMAGEIO_CACHE_FULL) #endif ret = dt_imageio_open_raw(img, filename, a); if(ret != DT_IMAGEIO_OK && ret != DT_IMAGEIO_CACHE_FULL) ret = dt_imageio_open_hdr(img, filename, a); if(ret != DT_IMAGEIO_OK && ret != DT_IMAGEIO_CACHE_FULL) // failsafing, if ldr magic test fails.. #ifdef HAVE_GRAPHICSMAGICK ret = dt_imageio_open_gm(img, filename, a); if(ret != DT_IMAGEIO_OK && ret != DT_IMAGEIO_CACHE_FULL) #endif ret = dt_imageio_open_ldr(img, filename, a); img->flags &= ~DT_IMAGE_THUMBNAIL; return ret; }
// fallback read method in case file could not be opened yet. // use GraphicsMagick (if supported) to read exotic LDRs dt_imageio_retval_t dt_imageio_open_exotic(dt_image_t *img, const char *filename, dt_mipmap_buffer_t *buf) { #ifdef HAVE_GRAPHICSMAGICK dt_imageio_retval_t ret = dt_imageio_open_gm(img, filename, buf); if(ret == DT_IMAGEIO_OK || ret == DT_IMAGEIO_CACHE_FULL) { img->filters = 0u; img->flags &= ~DT_IMAGE_RAW; img->flags &= ~DT_IMAGE_HDR; img->flags |= DT_IMAGE_LDR; return ret; } #endif return DT_IMAGEIO_FILE_CORRUPTED; }
dt_imageio_retval_t dt_imageio_open( dt_image_t *img, // non-const * means you hold a write lock! const char *filename, // full path dt_mipmap_cache_allocator_t a) // allocate via dt_mipmap_cache_alloc { /* first of all, check if file exists, don't bother to test loading if not exists */ if(!g_file_test(filename, G_FILE_TEST_IS_REGULAR)) return !DT_IMAGEIO_OK; dt_imageio_retval_t ret = DT_IMAGEIO_FILE_CORRUPTED; /* check if file is ldr using magic's */ if (dt_imageio_is_ldr(filename)) ret = dt_imageio_open_ldr(img, filename, a); /* silly check using file extensions: */ if(ret != DT_IMAGEIO_OK && ret != DT_IMAGEIO_CACHE_FULL && dt_imageio_is_hdr(filename)) ret = dt_imageio_open_hdr(img, filename, a); #ifdef HAVE_RAWSPEED if(ret != DT_IMAGEIO_OK && ret != DT_IMAGEIO_CACHE_FULL) ret = dt_imageio_open_rawspeed(img, filename, a); #endif if(ret != DT_IMAGEIO_OK && ret != DT_IMAGEIO_CACHE_FULL) ret = dt_imageio_open_raw(img, filename, a); #ifdef HAVE_GRAPHICSMAGICK if(ret != DT_IMAGEIO_OK && ret != DT_IMAGEIO_CACHE_FULL) ret = dt_imageio_open_gm(img, filename, a); #else if(ret != DT_IMAGEIO_OK && ret != DT_IMAGEIO_CACHE_FULL) ret = dt_imageio_open_ldr(img, filename, a); #endif return ret; }