8 #include <mapbox/std/weak.hpp>
9 #include <mapbox/util/type_wrapper.hpp>
26 struct LayerTypeInfo {
42 const enum class Pass3D {
Required, NotRequired } pass3d;
48 const enum class Layout {
Required, NotRequired } layout;
54 const enum class FadingTiles {
Required, NotRequired } fadingTiles;
60 const enum class CrossTileIndex {
Required, NotRequired } crossTileIndex;
87 Layer(
const Layer& ) =
delete;
88 Layer& operator=(
const Layer&) =
delete;
96 void setSourceLayer(
const std::string& sourceLayer);
100 const Filter& getFilter()
const;
101 void setFilter(
const Filter&);
108 float getMinZoom()
const;
109 float getMaxZoom()
const;
110 void setMinZoom(
float);
111 void setMaxZoom(
float);
114 std::optional<conversion::Error> setProperty(
const std::string& name,
const conversion::Convertible& value);
116 virtual StyleProperty getProperty(
const std::string&)
const = 0;
117 virtual Value serialize()
const;
124 Immutable<Impl> baseImpl;
127 virtual std::unique_ptr<Layer> cloneRef(
const std::string&
id)
const = 0;
130 void setObserver(LayerObserver*);
135 mapbox::base::TypeWrapper peer;
136 Layer(Immutable<Impl>);
138 const LayerTypeInfo* getTypeInfo() const noexcept;
140 mapbox::base::WeakPtr<Layer> makeWeakPtr() {
141 return weakFactory.makeWeakPtr();
145 virtual Mutable<Impl> mutableBaseImpl()
const = 0;
146 void serializeProperty(
Value&,
const StyleProperty&,
const char* propertyName,
bool isPaint)
const;
147 virtual std::optional<conversion::Error> setPropertyInternal(
const std::string& name,
148 const conversion::Convertible& value) = 0;
149 LayerObserver* observer;
150 mapbox::base::WeakPtrFactory<Layer> weakFactory {
this};
153 std::optional<conversion::Error> setVisibility(
const conversion::Convertible& value);
154 std::optional<conversion::Error> setMinZoom(
const conversion::Convertible& value);
155 std::optional<conversion::Error> setMaxZoom(
const conversion::Convertible& value);
std::unique_ptr< Expression > string(std::unique_ptr< Expression >, std::unique_ptr< Expression > def=nullptr)
mapbox::base::Value Value
mapbox::geometry::geometry< T > Geometry