本文整理汇总了C++中FloatPoint::scaledBy方法的典型用法代码示例。如果您正苦于以下问题:C++ FloatPoint::scaledBy方法的具体用法?C++ FloatPoint::scaledBy怎么用?C++ FloatPoint::scaledBy使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FloatPoint
的用法示例。
在下文中一共展示了FloatPoint::scaledBy方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: magnifyScaleAroundAnchor
bool VisualViewport::magnifyScaleAroundAnchor(float magnifyDelta, const FloatPoint& anchor)
{
const float oldPageScale = scale();
const float newPageScale = frameHost().chromeClient().clampPageScaleFactorToLimits(
magnifyDelta * oldPageScale);
if (newPageScale == oldPageScale)
return false;
if (!mainFrame() || !mainFrame()->view())
return false;
// Keep the center-of-pinch anchor in a stable position over the course
// of the magnify.
FloatPoint anchorAtOldScale = anchor.scaledBy(1.f / oldPageScale);
FloatPoint anchorAtNewScale = anchor.scaledBy(1.f / newPageScale);
FloatSize anchorDelta = anchorAtOldScale - anchorAtNewScale;
// First try to use the anchor's delta to scroll the FrameView.
FloatSize anchorDeltaUnusedByScroll = anchorDelta;
if (!frameHost().settings().invertViewportScrollOrder()) {
FrameView* view = mainFrame()->view();
DoublePoint oldPosition = view->scrollPositionDouble();
view->scrollBy(DoubleSize(anchorDelta.width(), anchorDelta.height()), UserScroll);
DoublePoint newPosition = view->scrollPositionDouble();
anchorDeltaUnusedByScroll -= toFloatSize(newPosition - oldPosition);
}
// Manually bubble any remaining anchor delta up to the visual viewport.
FloatPoint newLocation(location() + anchorDeltaUnusedByScroll);
setScaleAndLocation(newPageScale, newLocation);
return true;
}