• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2011 Google Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * 1.  Redistributions of source code must retain the above copyright
9  *     notice, this list of conditions and the following disclaimer.
10  * 2.  Redistributions in binary form must reproduce the above copyright
11  *     notice, this list of conditions and the following disclaimer in the
12  *     documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
15  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
18  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25 
26 #ifndef WebLayerTreeView_h
27 #define WebLayerTreeView_h
28 
29 #include "WebColor.h"
30 #include "WebCommon.h"
31 #include "WebFloatPoint.h"
32 #include "WebNonCopyable.h"
33 #include "WebPrivateOwnPtr.h"
34 #include "WebSize.h"
35 
36 class SkBitmap;
37 
38 namespace blink {
39 class WebCompositeAndReadbackAsyncCallback;
40 class WebGraphicsContext3D;
41 class WebLayer;
42 struct WebPoint;
43 struct WebRect;
44 struct WebRenderingStats;
45 
46 class WebLayerTreeView {
47 public:
~WebLayerTreeView()48     virtual ~WebLayerTreeView() { }
49 
50     // Initialization and lifecycle --------------------------------------
51 
52     // Indicates that the compositing surface used by this WebLayerTreeView is ready to use.
53     // A WebLayerTreeView may request a context from its client before the surface is ready,
54     // but it won't attempt to use it.
55     virtual void setSurfaceReady() = 0;
56 
57     // Sets the root of the tree. The root is set by way of the constructor.
58     virtual void setRootLayer(const WebLayer&) = 0;
59     virtual void clearRootLayer() = 0;
60 
61 
62     // View properties ---------------------------------------------------
63 
64     virtual void setViewportSize(const WebSize& deviceViewportSize) = 0;
65     // Gives the viewport size in physical device pixels.
66     virtual WebSize deviceViewportSize() const = 0;
67 
68     virtual void setDeviceScaleFactor(float) = 0;
69     virtual float deviceScaleFactor() const = 0;
70 
71     // Sets the background color for the viewport.
72     virtual void setBackgroundColor(WebColor) = 0;
73 
74     // Sets the background transparency for the viewport. The default is 'false'.
75     virtual void setHasTransparentBackground(bool) = 0;
76 
77     // Sets the overhang gutter bitmap.
setOverhangBitmap(const SkBitmap &)78     virtual void setOverhangBitmap(const SkBitmap&) { }
79 
80     // Sets whether this view is visible. In threaded mode, a view that is not visible will not
81     // composite or trigger updateAnimations() or layout() calls until it becomes visible.
82     virtual void setVisible(bool) = 0;
83 
84     // Sets the current page scale factor and minimum / maximum limits. Both limits are initially 1 (no page scale allowed).
85     virtual void setPageScaleFactorAndLimits(float pageScaleFactor, float minimum, float maximum) = 0;
86 
87     // Starts an animation of the page scale to a target scale factor and scroll offset.
88     // If useAnchor is true, destination is a point on the screen that will remain fixed for the duration of the animation.
89     // If useAnchor is false, destination is the final top-left scroll position.
90     virtual void startPageScaleAnimation(const WebPoint& destination, bool useAnchor, float newPageScale, double durationSec) = 0;
91 
heuristicsForGpuRasterizationUpdated(bool)92     virtual void heuristicsForGpuRasterizationUpdated(bool) { }
93 
94 
95     // Flow control and scheduling ---------------------------------------
96 
97     // Indicates that an animation needs to be updated.
98     virtual void setNeedsAnimate() = 0;
99 
100     // Indicates whether a commit is pending.
101     virtual bool commitRequested() const = 0;
102 
103     // Relays the end of a fling animation.
didStopFlinging()104     virtual void didStopFlinging() { }
105 
106     // The caller is responsible for keeping the WebCompositeAndReadbackAsyncCallback
107     // object alive until it is called.
compositeAndReadbackAsync(WebCompositeAndReadbackAsyncCallback *)108     virtual void compositeAndReadbackAsync(WebCompositeAndReadbackAsyncCallback*) { }
109 
110     // Blocks until the most recently composited frame has finished rendering on the GPU.
111     // This can have a significant performance impact and should be used with care.
112     virtual void finishAllRendering() = 0;
113 
114     // Prevents updates to layer tree from becoming visible.
setDeferCommits(bool deferCommits)115     virtual void setDeferCommits(bool deferCommits) { }
116 
117     // Take responsiblity for this layer's animations, even if this layer hasn't yet
118     // been added to the tree.
registerForAnimations(WebLayer * layer)119     virtual void registerForAnimations(WebLayer* layer) { }
120 
121     // Identify key layers to the compositor when using the pinch virtual viewport.
registerViewportLayers(const WebLayer * pageScaleLayerLayer,const WebLayer * innerViewportScrollLayer,const WebLayer * outerViewportScrollLayer)122     virtual void registerViewportLayers(
123         const WebLayer* pageScaleLayerLayer,
124         const WebLayer* innerViewportScrollLayer,
125         const WebLayer* outerViewportScrollLayer) { }
clearViewportLayers()126     virtual void clearViewportLayers() { }
127 
128     // Debugging / dangerous ---------------------------------------------
129 
130     // Toggles the FPS counter in the HUD layer
setShowFPSCounter(bool)131     virtual void setShowFPSCounter(bool) { }
132 
133     // Toggles the paint rects in the HUD layer
setShowPaintRects(bool)134     virtual void setShowPaintRects(bool) { }
135 
136     // Toggles the debug borders on layers
setShowDebugBorders(bool)137     virtual void setShowDebugBorders(bool) { }
138 
139     // Toggles continuous painting
setContinuousPaintingEnabled(bool)140     virtual void setContinuousPaintingEnabled(bool) { }
141 
142     // Toggles scroll bottleneck rects on the HUD layer
setShowScrollBottleneckRects(bool)143     virtual void setShowScrollBottleneckRects(bool) { }
144 };
145 
146 } // namespace blink
147 
148 #endif // WebLayerTreeView_h
149