Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2858)

Unified Diff: cc/pinch_zoom_scrollbar.cc

Issue 11550035: Implement pinch-zoom scaling for main-frame scrollbars and pinch-zoom overlay scrollbars. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Revised per latest comments. Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/pinch_zoom_scrollbar.cc
diff --git a/cc/pinch_zoom_scrollbar.cc b/cc/pinch_zoom_scrollbar.cc
new file mode 100644
index 0000000000000000000000000000000000000000..67dbf4d5715bdba3df71195eea55449d984a3c98
--- /dev/null
+++ b/cc/pinch_zoom_scrollbar.cc
@@ -0,0 +1,113 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "cc/pinch_zoom_scrollbar.h"
+
+#include "cc/layer.h"
+#include "cc/layer_tree_host.h"
+#include "cc/pinch_zoom_scrollbar_geometry.h"
+
+namespace cc {
+
+const float PinchZoomScrollbar::kDefaultOpacity = 0.5;
+const float PinchZoomScrollbar::kFadeDuration = 0.5; // Seconds.
enne (OOO) 2013/03/06 19:32:58 Instead of a comment, you could just bake this int
wjmaclean 2013/03/07 22:57:39 Sorry, missed this in the latest patch, but have a
+
+PinchZoomScrollbar::PinchZoomScrollbar(
+ WebKit::WebScrollbar::Orientation orientation, LayerTreeHost* owner)
+ : orientation_(orientation),
+ owner_(owner) {
+ DCHECK(owner_);
+}
+
+
+bool PinchZoomScrollbar::isOverlay() const { return true; }
+
+int PinchZoomScrollbar::value() const {
+ Layer* rootScrollLayer = owner_->rootScrollLayer();
+ if (!rootScrollLayer)
+ return 0;
+
+ if (orientation_ == WebKit::WebScrollbar::Horizontal)
+ return rootScrollLayer->scrollOffset().x();
+ else
+ return rootScrollLayer->scrollOffset().y();
+}
+
+WebKit::WebPoint PinchZoomScrollbar::location() const {
+ return WebKit::WebPoint();
+}
+
+WebKit::WebSize PinchZoomScrollbar::size() const {
+ gfx::Size viewportSize = owner_->layoutViewportSize();
+ gfx::Size size;
+ int track_width = PinchZoomScrollbarGeometry::kTrackWidth;
+ if (orientation_ == WebKit::WebScrollbar::Horizontal)
+ size = gfx::Size(viewportSize.width() - track_width, track_width);
+ else
+ size = gfx::Size(track_width, viewportSize.height() - track_width);
+ return WebKit::WebSize(size);
+}
+
+bool PinchZoomScrollbar::enabled() const {
+ return true;
+}
+
+int PinchZoomScrollbar::maximum() const {
+ gfx::Size size = owner_->layoutViewportSize();
+ Layer* rootScrollLayer = owner_->rootScrollLayer();
+ if (!rootScrollLayer)
+ return 0;
+
+ if (orientation_ == WebKit::WebScrollbar::Horizontal)
+ return rootScrollLayer->contentBounds().width() - size.width();
+ else
+ return rootScrollLayer->contentBounds().height() - size.height();
+}
+
+int PinchZoomScrollbar::totalSize() const {
+ Layer* rootScrollLayer = owner_->rootScrollLayer();
+ gfx::Size size;
+ if (rootScrollLayer)
+ size = rootScrollLayer->contentBounds();
enne (OOO) 2013/03/06 19:32:58 Can you convince me that contentBounds is the righ
wjmaclean 2013/03/07 22:57:39 On the main thread size, bounds() does not change
enne (OOO) 2013/03/07 23:41:17 Aren't the PinchZoomScrollbars overlay scrollbars
+ else
+ size = owner_->layoutViewportSize();
+
+ if (orientation_ == WebKit::WebScrollbar::Horizontal)
+ return size.width();
+ else
+ return size.height();
+}
+
+bool PinchZoomScrollbar::isScrollViewScrollbar() const {
+ return false;
+}
+
+bool PinchZoomScrollbar::isScrollableAreaActive() const {
+ return true;
+}
+
+WebKit::WebScrollbar::ScrollbarControlSize PinchZoomScrollbar::controlSize() const {
+ return WebKit::WebScrollbar::SmallScrollbar;
+}
+
+WebKit::WebScrollbar::ScrollbarPart PinchZoomScrollbar::pressedPart() const {
+ return WebKit::WebScrollbar::NoPart;
+}
+
+WebKit::WebScrollbar::ScrollbarPart PinchZoomScrollbar::hoveredPart() const {
+ return WebKit::WebScrollbar::NoPart;
+}
+
+WebKit::WebScrollbar::ScrollbarOverlayStyle PinchZoomScrollbar::scrollbarOverlayStyle() const {
+ return WebKit::WebScrollbar::ScrollbarOverlayStyleDefault;
+}
+bool PinchZoomScrollbar::isCustomScrollbar() const {
+ return false;
+}
+
+WebKit::WebScrollbar::Orientation PinchZoomScrollbar::orientation() const {
+ return orientation_;
+}
+
+} // namespace cc

Powered by Google App Engine
This is Rietveld 408576698