本文整理汇总了C++中RenderStyle::getCounterDirectives方法的典型用法代码示例。如果您正苦于以下问题:C++ RenderStyle::getCounterDirectives方法的具体用法?C++ RenderStyle::getCounterDirectives怎么用?C++ RenderStyle::getCounterDirectives使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类RenderStyle
的用法示例。
在下文中一共展示了RenderStyle::getCounterDirectives方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: planCounter
static bool planCounter(RenderObject& object, const AtomicString& identifier, bool& isReset, int& value)
{
// Real text nodes don't have their own style so they can't have counters.
// We can't even look at their styles or we'll see extra resets and increments!
if (object.isText() && !object.isBR())
return false;
Node* generatingNode = object.generatingNode();
// We must have a generating node or else we cannot have a counter.
if (!generatingNode)
return false;
RenderStyle* style = object.style();
ASSERT(style);
switch (style->styleType()) {
case NOPSEUDO:
// Sometimes nodes have more then one renderer. Only the first one gets the counter
// LayoutTests/http/tests/css/counter-crash.html
if (generatingNode->renderer() != &object)
return false;
break;
case BEFORE:
case AFTER:
break;
default:
return false; // Counters are forbidden from all other pseudo elements.
}
const CounterDirectives directives = style->getCounterDirectives(identifier);
if (directives.isDefined()) {
value = directives.combinedValue();
isReset = directives.isReset();
return true;
}
if (identifier == "list-item") {
if (object.isListItem()) {
if (toRenderListItem(object).hasExplicitValue()) {
value = toRenderListItem(object).explicitValue();
isReset = true;
return true;
}
value = 1;
isReset = false;
return true;
}
if (Node* e = object.node()) {
if (isHTMLOListElement(*e)) {
value = toHTMLOListElement(e)->start();
isReset = true;
return true;
}
if (isHTMLUListElement(*e) || isHTMLMenuElement(*e) || isHTMLDirectoryElement(*e)) {
value = 0;
isReset = true;
return true;
}
}
}
return false;
}