Index: cc/trees/occlusion_tracker.h |
diff --git a/cc/trees/occlusion_tracker.h b/cc/trees/occlusion_tracker.h |
deleted file mode 100644 |
index ff6f18dda9c93ee55308a9632bf451c5edae43a3..0000000000000000000000000000000000000000 |
--- a/cc/trees/occlusion_tracker.h |
+++ /dev/null |
@@ -1,118 +0,0 @@ |
-// Copyright 2012 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. |
- |
-#ifndef CC_TREES_OCCLUSION_TRACKER_H_ |
-#define CC_TREES_OCCLUSION_TRACKER_H_ |
- |
-#include <vector> |
- |
-#include "base/basictypes.h" |
-#include "cc/base/cc_export.h" |
-#include "cc/base/simple_enclosed_region.h" |
-#include "cc/layers/layer_iterator.h" |
-#include "cc/trees/occlusion.h" |
-#include "ui/gfx/geometry/rect.h" |
- |
-namespace cc { |
-class LayerImpl; |
-class Region; |
-class RenderSurfaceImpl; |
-class Layer; |
-class RenderSurface; |
- |
-// This class is used to track occlusion of layers while traversing them in a |
-// front-to-back order. As each layer is visited, one of the methods in this |
-// class is called to notify it about the current target surface. Then, |
-// occlusion in the content space of the current layer may be queried, via |
-// Occlusion from GetCurrentOcclusionForLayer(). If the current layer owns a |
-// RenderSurfaceImpl, then occlusion on that RenderSurfaceImpl may also be |
-// queried via surfaceOccluded() and surfaceUnoccludedContentRect(). Finally, |
-// once finished with the layer, occlusion behind the layer should be marked by |
-// calling MarkOccludedBehindLayer(). |
-template <typename LayerType> |
-class CC_EXPORT OcclusionTracker { |
- public: |
- explicit OcclusionTracker(const gfx::Rect& screen_space_clip_rect); |
- ~OcclusionTracker(); |
- |
- // Return an occlusion that retains the current state of the tracker |
- // and can be used outside of a layer walk to check occlusion. |
- Occlusion GetCurrentOcclusionForLayer( |
- const gfx::Transform& draw_transform) const; |
- Occlusion GetCurrentOcclusionForContributingSurface( |
- const gfx::Transform& draw_transform) const; |
- |
- // Called at the beginning of each step in the LayerIterator's front-to-back |
- // traversal. |
- void EnterLayer(const LayerIteratorPosition<LayerType>& layer_iterator); |
- // Called at the end of each step in the LayerIterator's front-to-back |
- // traversal. |
- void LeaveLayer(const LayerIteratorPosition<LayerType>& layer_iterator); |
- |
- // Gives the region of the screen that is not occluded by something opaque. |
- Region ComputeVisibleRegionInScreen() const; |
- |
- void set_minimum_tracking_size(const gfx::Size& size) { |
- minimum_tracking_size_ = size; |
- } |
- |
- protected: |
- struct StackObject { |
- StackObject() : target(0) {} |
- explicit StackObject(const LayerType* target) : target(target) {} |
- const LayerType* target; |
- SimpleEnclosedRegion occlusion_from_outside_target; |
- SimpleEnclosedRegion occlusion_from_inside_target; |
- }; |
- |
- // The stack holds occluded regions for subtrees in the |
- // RenderSurfaceImpl-Layer tree, so that when we leave a subtree we may apply |
- // a mask to it, but not to the parts outside the subtree. |
- // - The first time we see a new subtree under a target, we add that target to |
- // the top of the stack. This can happen as a layer representing itself, or as |
- // a target surface. |
- // - When we visit a target surface, we apply its mask to its subtree, which |
- // is at the top of the stack. |
- // - When we visit a layer representing itself, we add its occlusion to the |
- // current subtree, which is at the top of the stack. |
- // - When we visit a layer representing a contributing surface, the current |
- // target will never be the top of the stack since we just came from the |
- // contributing surface. |
- // We merge the occlusion at the top of the stack with the new current |
- // subtree. This new target is pushed onto the stack if not already there. |
- std::vector<StackObject> stack_; |
- |
- private: |
- // Called when visiting a layer representing itself. If the target was not |
- // already current, then this indicates we have entered a new surface subtree. |
- void EnterRenderTarget(const LayerType* new_target); |
- |
- // Called when visiting a layer representing a target surface. This indicates |
- // we have visited all the layers within the surface, and we may perform any |
- // surface-wide operations. |
- void FinishedRenderTarget(const LayerType* finished_target); |
- |
- // Called when visiting a layer representing a contributing surface. This |
- // indicates that we are leaving our current surface, and entering the new |
- // one. We then perform any operations required for merging results from the |
- // child subtree into its parent. |
- void LeaveToRenderTarget(const LayerType* new_target); |
- |
- // Add the layer's occlusion to the tracked state. |
- void MarkOccludedBehindLayer(const LayerType* layer); |
- |
- gfx::Rect screen_space_clip_rect_; |
- gfx::Size minimum_tracking_size_; |
- |
- DISALLOW_COPY_AND_ASSIGN(OcclusionTracker); |
-}; |
- |
-#if !defined(COMPILER_MSVC) |
-extern template class OcclusionTracker<Layer>; |
-extern template class OcclusionTracker<LayerImpl>; |
-#endif |
- |
-} // namespace cc |
- |
-#endif // CC_TREES_OCCLUSION_TRACKER_H_ |