summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/CoordinatedGraphics/PageViewportController.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebKit2/UIProcess/CoordinatedGraphics/PageViewportController.h
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebKit2/UIProcess/CoordinatedGraphics/PageViewportController.h')
-rw-r--r--Source/WebKit2/UIProcess/CoordinatedGraphics/PageViewportController.h114
1 files changed, 114 insertions, 0 deletions
diff --git a/Source/WebKit2/UIProcess/CoordinatedGraphics/PageViewportController.h b/Source/WebKit2/UIProcess/CoordinatedGraphics/PageViewportController.h
new file mode 100644
index 000000000..e02d7671d
--- /dev/null
+++ b/Source/WebKit2/UIProcess/CoordinatedGraphics/PageViewportController.h
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2011, 2012 Nokia Corporation and/or its subsidiary(-ies)
+ * Copyright (C) 2011 Benjamin Poulain <benjamin@webkit.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this program; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef PageViewportController_h
+#define PageViewportController_h
+
+#include <WebCore/FloatPoint.h>
+#include <WebCore/FloatRect.h>
+#include <WebCore/FloatSize.h>
+#include <WebCore/ViewportArguments.h>
+#include <wtf/Noncopyable.h>
+
+namespace WebCore {
+class IntPoint;
+class IntSize;
+}
+
+namespace WebKit {
+
+class WebPageProxy;
+class PageViewportController;
+class PageViewportControllerClient;
+
+class PageViewportController {
+ WTF_MAKE_NONCOPYABLE(PageViewportController);
+
+public:
+ PageViewportController(WebKit::WebPageProxy*, PageViewportControllerClient&);
+ virtual ~PageViewportController() { }
+
+ float innerBoundedViewportScale(float) const;
+ float outerBoundedViewportScale(float) const;
+
+ WebCore::FloatPoint pixelAlignedFloatPoint(const WebCore::FloatPoint&);
+
+ WebCore::FloatPoint boundContentsPosition(const WebCore::FloatPoint&);
+ WebCore::FloatPoint boundContentsPositionAtScale(const WebCore::FloatPoint&, float scale);
+
+ WebCore::FloatSize visibleContentsSize() const;
+
+ bool hadUserInteraction() const { return m_hadUserInteraction; }
+ bool allowsUserScaling() const { return m_allowsUserScaling; }
+
+ WebCore::FloatSize contentsLayoutSize() const { return m_rawAttributes.layoutSize; }
+ float deviceScaleFactor() const;
+ float minimumScale() const { return m_minimumScaleToFit; }
+ float maximumScale() const { return m_rawAttributes.maximumScale; }
+ float currentScale() const { return m_pageScaleFactor; }
+
+ void setHadUserInteraction(bool didUserInteract) { m_hadUserInteraction = didUserInteract; }
+ void setInitiallyFitToViewport(bool initiallyFit) { m_initiallyFitToViewport = initiallyFit; }
+
+ // Notifications from the viewport.
+ void didChangeViewportSize(const WebCore::FloatSize& newSize);
+ void didChangeContentsVisibility(const WebCore::FloatPoint&, float scale, const WebCore::FloatPoint& trajectoryVector = WebCore::FloatPoint::zero());
+
+ // Notifications from the WebProcess.
+ void didCommitLoad();
+ void didChangeContentsSize(const WebCore::IntSize& newSize);
+ void didChangeViewportAttributes(const WebCore::ViewportAttributes&);
+ void didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect);
+ void pageTransitionViewportReady();
+ void pageDidRequestScroll(const WebCore::IntPoint& cssPosition);
+
+private:
+ bool syncVisibleContents(const WebCore::FloatPoint &trajectoryVector = WebCore::FloatPoint::zero());
+ void applyScaleAfterRenderingContents(float scale);
+ void applyPositionAfterRenderingContents(const WebCore::FloatPoint& pos);
+ bool updateMinimumScaleToFit(bool userInitiatedUpdate);
+
+ WebPageProxy* const m_webPageProxy;
+ PageViewportControllerClient& m_client;
+
+ WebCore::ViewportAttributes m_rawAttributes;
+
+ bool m_allowsUserScaling;
+ float m_minimumScaleToFit;
+ bool m_initiallyFitToViewport;
+
+ bool m_hadUserInteraction;
+
+ WebCore::FloatPoint m_contentsPosition;
+ WebCore::FloatSize m_contentsSize;
+ WebCore::FloatSize m_viewportSize;
+ WebCore::IntSize m_clientContentsSize;
+ float m_pageScaleFactor;
+
+ bool m_pendingPositionChange;
+ bool m_pendingScaleChange;
+ bool m_layerTreeStateIsFrozen;
+ WebCore::FloatRect m_lastFrameCoveredRect;
+};
+
+} // namespace WebKit
+
+#endif // PageViewportController_h