29 std::vector<uint16_t>,
44 [](
const auto& vec) {
return vec.size() *
sizeof(
typename std::decay_t<
decltype(vec)>::value_type); },
51 [[nodiscard]]
const void*
data()
const
54 [](
const auto& vec) ->
const void* {
return vec.data(); },
64 [](
const auto& vec) {
return vec.size(); },
79 [[nodiscard]]
const std::vector<uint8_t>*
as_uint8()
const {
return std::get_if<std::vector<uint8_t>>(&
pixels); }
80 [[nodiscard]]
const std::vector<uint16_t>*
as_uint16()
const {
return std::get_if<std::vector<uint16_t>>(&
pixels); }
81 [[nodiscard]]
const std::vector<float>*
as_float()
const {
return std::get_if<std::vector<float>>(&
pixels); }
83 [[nodiscard]] std::vector<uint8_t>*
as_uint8() {
return std::get_if<std::vector<uint8_t>>(&
pixels); }
84 [[nodiscard]] std::vector<uint16_t>*
as_uint16() {
return std::get_if<std::vector<uint16_t>>(&
pixels); }
85 [[nodiscard]] std::vector<float>*
as_float() {
return std::get_if<std::vector<float>>(&
pixels); }
106 [[nodiscard]]
bool can_read(
const std::string& filepath)
const override;
107 bool open(
const std::string& filepath,
FileReadOptions options = FileReadOptions::ALL)
override;
108 void close()
override;
109 [[nodiscard]]
bool is_open()
const override;
110 [[nodiscard]] std::optional<FileMetadata> get_metadata()
const override;
111 [[nodiscard]] std::vector<FileRegion> get_regions()
const override;
112 std::vector<Kakshya::DataVariant> read_all()
override;
113 std::vector<Kakshya::DataVariant> read_region(
const FileRegion& region)
override;
114 std::shared_ptr<Kakshya::SignalSourceContainer>
create_container()
override;
115 bool load_into_container(std::shared_ptr<Kakshya::SignalSourceContainer> container)
override;
116 [[nodiscard]] std::vector<uint64_t> get_read_position()
const override;
117 bool seek(
const std::vector<uint64_t>&
position)
override;
118 [[nodiscard]] std::vector<std::string> get_supported_extensions()
const override;
119 [[nodiscard]] std::type_index get_data_type()
const override;
120 [[nodiscard]] std::type_index get_container_type()
const override;
121 [[nodiscard]] std::string get_last_error()
const override;
122 [[nodiscard]]
bool supports_streaming()
const override;
123 [[nodiscard]] uint64_t get_preferred_chunk_size()
const override;
124 [[nodiscard]]
size_t get_num_dimensions()
const override;
125 [[nodiscard]] std::vector<uint64_t> get_dimension_sizes()
const override;
133 static std::optional<ImageData> load_from_memory(
const void* data,
size_t size);
141 static std::optional<ImageData> load(
142 const std::string& path,
int desired_channels = 4);
150 static std::optional<ImageData> load(
151 const std::filesystem::path& path,
int desired_channels = 4);
158 static std::shared_ptr<Core::VKImage> load_texture(
159 const std::string& path);
165 [[nodiscard]] std::optional<ImageData> get_image_data()
const;
176 std::shared_ptr<Buffers::TextureBuffer> create_texture_buffer();
183 bool load_into_buffer(
const std::shared_ptr<Buffers::VKBuffer>& buffer);