#if !defined(_CRT_SECURE_NO_WARNINGS) #define _CRT_SECURE_NO_WARNINGS #endif #include "image_manager.h" #include "core.h" #include #include namespace discord { void ImageManager::Fetch(ImageHandle handle, bool refresh, std::function callback) { static auto wrapper = [](void* callbackData, EDiscordResult result, DiscordImageHandle handleResult) -> void { std::unique_ptr> cb( reinterpret_cast*>(callbackData)); if (!cb || !(*cb)) { return; } (*cb)(static_cast(result), *reinterpret_cast(&handleResult)); }; std::unique_ptr> cb{}; cb.reset(new std::function(std::move(callback))); internal_->fetch(internal_, *reinterpret_cast(&handle), (refresh ? 1 : 0), cb.release(), wrapper); } Result ImageManager::GetDimensions(ImageHandle handle, ImageDimensions* dimensions) { if (!dimensions) { return Result::InternalError; } auto result = internal_->get_dimensions(internal_, *reinterpret_cast(&handle), reinterpret_cast(dimensions)); return static_cast(result); } Result ImageManager::GetData(ImageHandle handle, std::uint8_t* data, std::uint32_t dataLength) { auto result = internal_->get_data(internal_, *reinterpret_cast(&handle), reinterpret_cast(data), dataLength); return static_cast(result); } } // namespace discord