本文整理汇总了C++中WebViewImpl::setDeviceScaleFactor方法的典型用法代码示例。如果您正苦于以下问题:C++ WebViewImpl::setDeviceScaleFactor方法的具体用法?C++ WebViewImpl::setDeviceScaleFactor怎么用?C++ WebViewImpl::setDeviceScaleFactor使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WebViewImpl
的用法示例。
在下文中一共展示了WebViewImpl::setDeviceScaleFactor方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: doubleTapPoint
TEST_F(WebFrameTest, DivAutoZoomParamsTest)
{
registerMockedHttpURLLoad("get_scale_for_auto_zoom_into_div_test.html");
WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(FrameTestHelpers::createWebViewAndLoad(m_baseURL + "get_scale_for_auto_zoom_into_div_test.html", true));
int pageWidth = 640;
int pageHeight = 480;
int divPosX = 200;
int divPosY = 200;
int divWidth = 200;
int divHeight = 150;
WebRect doubleTapPoint(250, 250, 0, 0);
webViewImpl->resize(WebSize(pageWidth, pageHeight));
float scale;
WebPoint scroll;
// Test for Doubletap scaling
// Tests for zooming in and out without clamping.
// Set device scale and scale limits so we dont get clamped.
webViewImpl->setDeviceScaleFactor(4);
webViewImpl->setPageScaleFactorLimits(0, 4 / webViewImpl->deviceScaleFactor());
// Test zooming into div.
webViewImpl->computeScaleAndScrollForHitRect(doubleTapPoint, WebViewImpl::DoubleTap, scale, scroll);
float scaledDivWidth = divWidth * scale;
float scaledDivHeight = divHeight * scale;
int hScroll = ((divPosX * scale) - ((pageWidth - scaledDivWidth) / 2)) / scale;
int vScroll = ((divPosY * scale) - ((pageHeight - scaledDivHeight) / 2)) / scale;
EXPECT_NEAR(pageWidth / divWidth, scale, 0.1);
EXPECT_EQ(hScroll, scroll.x);
EXPECT_EQ(vScroll, scroll.y);
// Test zoom out to overview scale.
webViewImpl->applyScrollAndScale(WebSize(scroll.x, scroll.y), scale / webViewImpl->pageScaleFactor());
webViewImpl->computeScaleAndScrollForHitRect(doubleTapPoint, WebViewImpl::DoubleTap, scale, scroll);
EXPECT_FLOAT_EQ(1, scale);
EXPECT_EQ(WebPoint(0, 0), scroll);
// Tests for clamped scaling.
// Test clamp to device scale:
webViewImpl->applyScrollAndScale(WebSize(scroll.x, scroll.y), scale / webViewImpl->pageScaleFactor());
webViewImpl->setDeviceScaleFactor(2.5);
webViewImpl->computeScaleAndScrollForHitRect(doubleTapPoint, WebViewImpl::DoubleTap, scale, scroll);
EXPECT_FLOAT_EQ(2.5, scale);
// Test clamp to minimum scale:
webViewImpl->applyScrollAndScale(WebSize(scroll.x, scroll.y), scale / webViewImpl->pageScaleFactor());
webViewImpl->setPageScaleFactorLimits(1.5 / webViewImpl->deviceScaleFactor(), 4 / webViewImpl->deviceScaleFactor());
webViewImpl->computeScaleAndScrollForHitRect(doubleTapPoint, WebViewImpl::DoubleTap, scale, scroll);
EXPECT_FLOAT_EQ(1.5, scale);
EXPECT_EQ(WebPoint(0, 0), scroll);
// Test clamp to maximum scale:
webViewImpl->applyScrollAndScale(WebSize(scroll.x, scroll.y), scale / webViewImpl->pageScaleFactor());
webViewImpl->setDeviceScaleFactor(4);
webViewImpl->setPageScaleFactorLimits(0, 3 / webViewImpl->deviceScaleFactor());
webViewImpl->computeScaleAndScrollForHitRect(doubleTapPoint, WebViewImpl::DoubleTap, scale, scroll);
EXPECT_FLOAT_EQ(3, scale);
// Test for Non-doubletap scaling
webViewImpl->setPageScaleFactor(1, WebPoint(0, 0));
webViewImpl->setDeviceScaleFactor(4);
webViewImpl->setPageScaleFactorLimits(0, 4 / webViewImpl->deviceScaleFactor());
// Test zooming into div.
webViewImpl->computeScaleAndScrollForHitRect(WebRect(250, 250, 10, 10), WebViewImpl::FindInPage, scale, scroll);
EXPECT_NEAR(pageWidth / divWidth, scale, 0.1);
// Drop any pending fake mouse events from zooming before leaving the test.
webViewImpl->page()->mainFrame()->eventHandler()->clear();
}