本文整理汇总了C++中StyleContext::getKeywordZoom方法的典型用法代码示例。如果您正苦于以下问题:C++ StyleContext::getKeywordZoom方法的具体用法?C++ StyleContext::getKeywordZoom怎么用?C++ StyleContext::getKeywordZoom使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StyleContext
的用法示例。
在下文中一共展示了StyleContext::getKeywordZoom方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: apply
void DrawRuleMergeSet::apply(const Feature& _feature, const SceneLayer& _layer,
StyleContext& _ctx, TileBuilder& _builder) {
// If no rules matched the feature, return immediately
if (!match(_feature, _layer, _ctx)) { return; }
// For each matched rule, find the style to be used and
// build the feature with the rule's parameters
for (auto& rule : m_matchedRules) {
StyleBuilder* style = _builder.getStyleBuilder(rule.getStyleName());
if (!style) {
LOGE("Invalid style %s", rule.getStyleName().c_str());
continue;
}
bool visible;
if (rule.get(StyleParamKey::visible, visible) && !visible) {
continue;
}
bool valid = true;
for (size_t i = 0; i < StyleParamKeySize; ++i) {
if (!rule.active[i]) {
rule.params[i].param = nullptr;
continue;
}
auto*& param = rule.params[i].param;
// Evaluate JS functions and Stops
if (param->function >= 0) {
// Copy param into 'evaluated' and point param to the evaluated StyleParam.
m_evaluated[i] = *param;
param = &m_evaluated[i];
if (!_ctx.evalStyle(param->function, param->key, m_evaluated[i].value)) {
if (StyleParam::isRequired(param->key)) {
valid = false;
break;
} else {
rule.active[i] = false;
}
}
} else if (param->stops) {
m_evaluated[i] = *param;
param = &m_evaluated[i];
Stops::eval(*param->stops, param->key, _ctx.getKeywordZoom(),
m_evaluated[i].value);
}
}
if (valid) {
// build outline explicitly with outline style
const auto& outlineStyleName = rule.findParameter(StyleParamKey::outline_style);
if (outlineStyleName) {
auto& styleName = outlineStyleName.value.get<std::string>();
auto* outlineStyle = _builder.getStyleBuilder(styleName);
if (!outlineStyle) {
LOGE("Invalid style %s", styleName.c_str());
} else {
rule.isOutlineOnly = true;
outlineStyle->addFeature(_feature, rule);
rule.isOutlineOnly = false;
}
}
// build feature with style
style->addFeature(_feature, rule);
}
}
}