#include #include #include #include #include namespace mbgl { namespace style { namespace conversion { optional Converter::operator()(const Convertible& value, Error& error) const { if (!isObject(value)) { error.message = "light must be an object"; return nullopt; } Light light; const auto anchor = objectMember(value, "anchor"); if (anchor) { optional> convertedAnchor = convert>(*anchor, error, false, false); if (convertedAnchor) { light.setAnchor(*convertedAnchor); } else { return nullopt; } } const auto anchorTransition = objectMember(value, "anchor-transition"); if (anchorTransition) { optional transition = convert(*anchorTransition, error); if (transition) { light.setAnchorTransition(*transition); } else { return nullopt; } } const auto color = objectMember(value, "color"); if (color) { optional> convertedColor = convert>(*color, error, false, false); if (convertedColor) { light.setColor(*convertedColor); } else { return nullopt; } } const auto colorTransition = objectMember(value, "color-transition"); if (colorTransition) { optional transition = convert(*colorTransition, error); if (transition) { light.setColorTransition(*transition); } else { return nullopt; } } const auto position = objectMember(value, "position"); if (position) { optional> convertedPosition = convert>(*position, error, false, false); if (convertedPosition) { light.setPosition(*convertedPosition); } else { return nullopt; } } const auto positionTransition = objectMember(value, "position-transition"); if (positionTransition) { optional transition = convert(*positionTransition, error); if (transition) { light.setPositionTransition(*transition); } else { return nullopt; } } const auto intensity = objectMember(value, "intensity"); if (intensity) { optional> convertedIntensity = convert>(*intensity, error, false, false); if (convertedIntensity) { light.setIntensity(*convertedIntensity); } else { return nullopt; } } const auto intensityTransition = objectMember(value, "intensity-transition"); if (intensityTransition) { optional transition = convert(*intensityTransition, error); if (transition) { light.setIntensityTransition(*transition); } else { return nullopt; } } return { std::move(light) }; } } // namespace conversion } // namespace style } // namespace mbgl