Files
MapLibreParticleLab/include/mln/style/layers/raster_particle_layer.hpp

54 lines
1.7 KiB
C++

#pragma once
#include <mln/style/layer.hpp>
#include <cstdint>
#include <array>
namespace mln::style {
class RasterParticleLayer final : public Layer {
public:
RasterParticleLayer(const std::string& layerID, const std::string& sourceID);
~RasterParticleLayer() override;
bool isActive() const;
void setActive(bool);
uint8_t getMaskMode() const;
void setMaskMode(uint8_t);
float getTimeMix() const;
void setTimeMix(float);
uint32_t getParticleCount() const;
void setParticleCount(uint32_t);
float getLineWidth() const;
void setLineWidth(float);
float getParticleLength() const;
void setParticleLength(float);
float getParticleOpacity() const;
void setParticleOpacity(float);
float getTrailOpacity() const;
void setTrailOpacity(float);
float getTrailFade() const;
void setTrailFade(float);
float getAdvectionScale() const;
void setAdvectionScale(float);
bool isSpeedColorEnabled() const;
void setSpeedColorEnabled(bool);
std::array<float, 4> getParticleColor() const;
void setParticleColor(std::array<float, 4>);
std::array<float, 4> getTrailColor() const;
void setTrailColor(std::array<float, 4>);
class Impl;
const Impl& impl() const;
Mutable<Impl> mutableImpl() const;
private:
explicit RasterParticleLayer(Immutable<Impl>);
std::optional<conversion::Error> setPropertyInternal(const std::string&, const conversion::Convertible&) override;
StyleProperty getProperty(const std::string&) const override;
Value serialize() const override;
std::unique_ptr<Layer> cloneRef(const std::string&) const override;
Mutable<Layer::Impl> mutableBaseImpl() const override;
};
} // namespace mln::style