本文整理汇总了C++中SVGSVGElement::HasViewBox方法的典型用法代码示例。如果您正苦于以下问题:C++ SVGSVGElement::HasViewBox方法的具体用法?C++ SVGSVGElement::HasViewBox怎么用?C++ SVGSVGElement::HasViewBox使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SVGSVGElement
的用法示例。
在下文中一共展示了SVGSVGElement::HasViewBox方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
void
nsSVGInnerSVGFrame::NotifySVGChanged(uint32_t aFlags)
{
NS_ABORT_IF_FALSE(aFlags & (TRANSFORM_CHANGED | COORD_CONTEXT_CHANGED),
"Invalidation logic may need adjusting");
if (aFlags & COORD_CONTEXT_CHANGED) {
SVGSVGElement *svg = static_cast<SVGSVGElement*>(mContent);
bool xOrYIsPercentage =
svg->mLengthAttributes[SVGSVGElement::ATTR_X].IsPercentage() ||
svg->mLengthAttributes[SVGSVGElement::ATTR_Y].IsPercentage();
bool widthOrHeightIsPercentage =
svg->mLengthAttributes[SVGSVGElement::ATTR_WIDTH].IsPercentage() ||
svg->mLengthAttributes[SVGSVGElement::ATTR_HEIGHT].IsPercentage();
if (xOrYIsPercentage || widthOrHeightIsPercentage) {
// Ancestor changes can't affect how we render from the perspective of
// any rendering observers that we may have, so we don't need to
// invalidate them. We also don't need to invalidate ourself, since our
// changed ancestor will have invalidated its entire area, which includes
// our area.
// For perf reasons we call this before calling NotifySVGChanged() below.
nsSVGUtils::ScheduleReflowSVG(this);
}
// Coordinate context changes affect mCanvasTM if we have a
// percentage 'x' or 'y', or if we have a percentage 'width' or 'height' AND
// a 'viewBox'.
if (!(aFlags & TRANSFORM_CHANGED) &&
(xOrYIsPercentage ||
(widthOrHeightIsPercentage && svg->HasViewBox()))) {
aFlags |= TRANSFORM_CHANGED;
}
if (svg->HasViewBox() || !widthOrHeightIsPercentage) {
// Remove COORD_CONTEXT_CHANGED, since we establish the coordinate
// context for our descendants and this notification won't change its
// dimensions:
aFlags &= ~COORD_CONTEXT_CHANGED;
if (!aFlags) {
return; // No notification flags left
}
}
}
if (aFlags & TRANSFORM_CHANGED) {
// make sure our cached transform matrix gets (lazily) updated
mCanvasTM = nullptr;
}
nsSVGInnerSVGFrameBase::NotifySVGChanged(aFlags);
}