latest SDK
This commit is contained in:
52
foobar2000/SDK/imageLoaderLite.h
Normal file
52
foobar2000/SDK/imageLoaderLite.h
Normal file
@@ -0,0 +1,52 @@
|
||||
#pragma once
|
||||
|
||||
#ifdef _WIN32
|
||||
namespace Gdiplus {
|
||||
class Image;
|
||||
}
|
||||
#endif
|
||||
namespace fb2k {
|
||||
#ifdef _WIN32
|
||||
typedef Gdiplus::Image * nativeImage_t;
|
||||
#else
|
||||
typedef void * nativeImage_t;
|
||||
#endif
|
||||
|
||||
struct imageInfo_t {
|
||||
uint32_t width, height, bitDepth;
|
||||
bool haveAlpha;
|
||||
const char * formatName;
|
||||
const char * mime;
|
||||
};
|
||||
|
||||
//! \since 1.6
|
||||
//! Interface to common image loader routines that turn a bytestream into a image that can be drawn in a window. \n
|
||||
//! Windows: Using imageLoaderLite methods initializes gdiplus if necessary, leaving gdiplus initialized for the rest of app lifetime. \n
|
||||
//! If your component supports running on foobar2000 older than 1.6, use tryGet() to gracefully fall back to your own image loader: \n
|
||||
//! auto api = fb2k::imageLoaderLite::tryGet(); if (api.is_valid()) { do stuff with api; } else { use fallbacks; }
|
||||
class imageLoaderLite : public service_base {
|
||||
FB2K_MAKE_SERVICE_COREAPI(imageLoaderLite);
|
||||
public:
|
||||
//! Throws excpetions on failure, returns valid image otherwise.\n
|
||||
//! Caller takes ownership of the returned object. \n
|
||||
//! @param outInfo Optional struct to receive information about the loaded image.
|
||||
virtual nativeImage_t load(const void * data, size_t bytes, imageInfo_t * outInfo = nullptr, abort_callback & aborter = fb2k::noAbort) = 0;
|
||||
|
||||
//! Parses the image data just enough to hand over basic info about what's inside. \n
|
||||
//! Much faster than load(). \n
|
||||
//! Supports all formats recognized by load().
|
||||
virtual imageInfo_t getInfo(const void * data, size_t bytes, abort_callback & aborter = fb2k::noAbort) = 0;
|
||||
|
||||
//! Helper - made virtual so it can be possibly specialized in the future
|
||||
virtual nativeImage_t load(album_art_data_ptr data, imageInfo_t * outInfo = nullptr, abort_callback & aborter = fb2k::noAbort) {
|
||||
return load(data->get_ptr(), data->get_size(), outInfo, aborter);
|
||||
}
|
||||
//! Helper - made virtual so it can be possibly specialized in the future
|
||||
virtual imageInfo_t getInfo(album_art_data_ptr data, abort_callback & aborter = fb2k::noAbort) {
|
||||
return getInfo(data->get_ptr(), data->get_size(), aborter);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#define FB2K_GETOPENFILENAME_PICTUREFILES "Picture files|*.jpg;*.jpeg;*.png;*.bmp;*.gif;*.webp"
|
||||
#define FB2K_GETOPENFILENAME_PICTUREFILES_ALL FB2K_GETOPENFILENAME_PICTUREFILES "|All files|*.*"
|
||||
Reference in New Issue
Block a user