HighMap library (C++)
Loading...
Searching...
No Matches
virtual_texture.hpp
Go to the documentation of this file.
1/* Copyright (c) 2025 Otto Link. Distributed under the terms of the GNU General
2 Public License. The full license is in the file LICENSE, distributed with
3 this software. */
4
10#pragma once
11#include <memory>
12#include <string>
13#include <vector>
14
15#include <glm/vec2.hpp>
16#include <glm/vec4.hpp>
17
18#include "macrologger.h"
19
20#include "highmap/tensor.hpp"
23
24namespace hmap
25{
26
28{
29public:
30 // --- Ctor
31
32 VirtualTexture() = default;
33
34 VirtualTexture(glm::ivec2 shape,
35 glm::vec4 bbox,
36 glm::ivec2 tile_shape,
37 int halo,
38 int channels,
39 std::unique_ptr<TileStorage> storage_proto);
40
41 VirtualTexture(glm::ivec2 shape,
42 glm::vec4 bbox,
43 glm::ivec2 tile_shape,
44 int halo,
45 int channels,
46 StorageMode storage_mode);
47
48 VirtualTexture(glm::ivec2 shape,
49 glm::ivec2 tile_shape,
50 int halo,
51 int channels,
52 StorageMode storage_mode);
53
54 // --- Copy
55
56 void copy_from(VirtualTexture &src, const ComputeMode &cm);
57
58 // --- Channels data
59
60 int channels() const;
61 VirtualArray &channel(int c);
62 const VirtualArray &channel(int c) const;
63 std::vector<VirtualArray *> channels_ptr();
64 std::vector<const VirtualArray *> channels_ptr() const;
65 std::vector<VirtualArray> &get_arrays();
66
67 void fill(float value, const ComputeMode &cm);
68 void fill(int c, float value, const ComputeMode &cm);
69
70 // --- Converters
71
72 void from_arrays(const std::vector<const Array *> &p_arrays,
73 const ComputeMode &cm);
74
75 std::vector<uint8_t> to_img_8bit(const glm::ivec2 &img_shape,
76 const ComputeMode &c,
77 bool flip_y = false) const;
78
79 void to_png(const glm::ivec2 &array_shape,
80 const std::string &fname,
81 const ComputeMode &cm,
82 int depth = CV_8U) const;
83
84 void to_png(const std::string &fname,
85 const ComputeMode &cm,
86 int depth = CV_8U) const;
87
88 Tensor to_tensor(const glm::ivec2 &img_shape, const ComputeMode &cm) const;
89
90 // --- Members
91
92 glm::ivec2 shape;
93 glm::vec4 bbox;
94 glm::ivec2 tile_shape;
95 int halo;
96
97private:
98 std::vector<VirtualArray> arrays;
99};
100
101// functions
102
104 int dst_channels,
105 float fill_value,
106 const ComputeMode &cm);
107
108template <typename Func>
109void for_each_tile(VirtualTexture &tex, Func &&func, const ComputeMode &cm);
110
111template <typename Func>
112void for_each_pixel(VirtualTexture &tex, Func &&func, const ComputeMode &cm);
113
115
116} // namespace hmap
A class to represent a multi-dimensional tensor.
Definition tensor.hpp:37
Definition virtual_texture.hpp:28
int halo
Definition virtual_texture.hpp:95
std::vector< uint8_t > to_img_8bit(const glm::ivec2 &img_shape, const ComputeMode &c, bool flip_y=false) const
Definition virtual_texture.cpp:150
void from_arrays(const std::vector< const Array * > &p_arrays, const ComputeMode &cm)
Definition virtual_texture.cpp:127
void copy_from(VirtualTexture &src, const ComputeMode &cm)
Definition virtual_texture.cpp:99
void fill(float value, const ComputeMode &cm)
Definition virtual_texture.cpp:114
std::vector< VirtualArray * > channels_ptr()
Definition virtual_texture.cpp:77
int channels() const
Definition virtual_texture.cpp:63
glm::ivec2 tile_shape
Definition virtual_texture.hpp:94
VirtualTexture()=default
Tensor to_tensor(const glm::ivec2 &img_shape, const ComputeMode &cm) const
Definition virtual_texture.cpp:190
glm::vec4 bbox
Definition virtual_texture.hpp:93
VirtualArray & channel(int c)
Definition virtual_texture.cpp:68
void to_png(const glm::ivec2 &array_shape, const std::string &fname, const ComputeMode &cm, int depth=CV_8U) const
Definition virtual_texture.cpp:166
glm::ivec2 shape
Definition virtual_texture.hpp:92
std::vector< VirtualArray > & get_arrays()
Definition virtual_texture.cpp:145
Definition algebra.hpp:22
void for_each_tile(VirtualTexture &tex, Func &&func, const ComputeMode &cm)
void for_each_pixel(VirtualTexture &tex, Func &&func, const ComputeMode &cm)
StorageMode
Definition tile_storage.hpp:29
VirtualTexture convert_texture_channels(const VirtualTexture &src, int dst_channels, float fill_value, const ComputeMode &cm)
Definition convert_texture_channels.cpp:11
Definition virtual_array.hpp:52
Definition virtual_array.hpp:62
Header file for the Tensor class.