#pragma once #include #include #include namespace mbgl { namespace style { class TransitionOptions { public: std::optional duration; std::optional delay; bool enablePlacementTransitions; TransitionOptions(std::optional duration_ = std::nullopt, std::optional delay_ = std::nullopt, bool enablePlacementTransitions_ = true) : duration(duration_ ? std::move(duration_) : std::nullopt), delay(delay_ ? std::move(delay_) : std::nullopt), enablePlacementTransitions(enablePlacementTransitions_) {} TransitionOptions reverseMerge(const TransitionOptions& defaults) const { return {duration ? duration : defaults.duration, delay ? delay : defaults.delay, enablePlacementTransitions}; } bool isDefined() const { return duration || delay; } mapbox::base::Value serialize() const { mapbox::base::ValueObject result; if (duration) { result.emplace("duration", std::chrono::duration_cast(*duration).count()); } if (delay) { result.emplace("delay", std::chrono::duration_cast(*delay).count()); } return result; } }; } // namespace style } // namespace mbgl