Files
OpenVulkano/openVulkanoCpp/Image/ImageLoader.hpp
2024-10-07 17:46:34 +03:00

28 lines
840 B
C++

/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
#pragma once
#include "Image.hpp"
#include <string>
#include <vector>
#include <memory>
namespace OpenVulkano::Image
{
class IImageLoader
{
public:
virtual ~IImageLoader() = default;
static std::unique_ptr<Image> loadData(const uint8_t* data, int size, int desiredChannels = 0);
virtual std::unique_ptr<Image> loadFromFile(const std::string& filePath) = 0;
virtual std::unique_ptr<Image> loadFromMemory(const std::vector<uint8_t>& buffer) = 0;
virtual Math::Vector2i GetImageDimensions(const std::string& filename) = 0;
protected:
static Math::Vector2i GetDimensionsInternal(const std::string& filename);
};
}