Cogs.Core
FloatRasterSource.cpp
1#include "FloatRasterSource.h"
2
3#include "Foundation/Logging/Logger.h"
4#include "Foundation/Memory/MemoryBuffer.h"
5
6namespace {
7 Cogs::Logging::Log logger = Cogs::Logging::getLogger("FloatRasterSource");
8}
9
10Cogs::Core::TerrainProvider::FloatRasterSource::~FloatRasterSource()
11{
12
13}
14
15bool Cogs::Core::TerrainProvider::FloatRasterSource::init(const FloatConfig& conf, std::unique_ptr<ICache>&& icache)
16{
17 value = conf.value;
18
19 BaseConfig base = conf;
20 if (base.textureFormat == Cogs::TextureFormat::Unknown) {
21 base.textureFormat = Cogs::TextureFormat::R32_FLOAT;
22 }
23 else if (base.textureFormat != Cogs::TextureFormat::R32_FLOAT) {
24 LOG_ERROR(logger, "Illegal texture format");
25 return false;
26 }
27 return BaseRasterSource::init(base, std::move(icache));
28}
29
30void Cogs::Core::TerrainProvider::FloatRasterSource::getConfig(FloatConfig& conf) const
31{
32 BaseRasterSource::getConfig(conf);
33 conf.value = value;
34}
35
36void Cogs::Core::TerrainProvider::FloatRasterSource::requestTile(Request* req)
37{
38 size_t N = size_t(tiling.width) * size_t(tiling.height);
39
40 Cogs::Memory::MemoryBuffer contents(N * sizeof(float));
41
42 auto id = req->id;
43 LOG_DEBUG(logger, "Building tile %u.%u.%u", id.level, id.i, id.j);
44
45 auto* ptr = static_cast<float*>(contents.data());
46 for (size_t i = 0; i < N; i++) {
47 ptr[i] = value;
48 }
49 addTile(contents, MimeType::F32, req, StringView());
50}
Log implementation class.
Definition: LogManager.h:139
constexpr Log getLogger(const char(&name)[LEN]) noexcept
Definition: LogManager.h:180