Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / cc / trees / quad_culler.h
1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CC_TREES_QUAD_CULLER_H_
6 #define CC_TREES_QUAD_CULLER_H_
7
8 #include "cc/base/cc_export.h"
9 #include "cc/layers/quad_sink.h"
10
11 namespace cc {
12 class LayerImpl;
13 class RenderPass;
14 class RenderSurfaceImpl;
15 template <typename LayerType>
16 class OcclusionTracker;
17
18 class CC_EXPORT QuadCuller : public QuadSink {
19  public:
20   QuadCuller(RenderPass* render_pass,
21              const LayerImpl* layer,
22              const OcclusionTracker<LayerImpl>& occlusion_tracker);
23   virtual ~QuadCuller() {}
24
25   // QuadSink implementation.
26   virtual SharedQuadState* CreateSharedQuadState() OVERRIDE;
27   virtual gfx::Rect UnoccludedContentRect(const gfx::Rect& content_rect,
28                                           const gfx::Transform& draw_transform)
29       OVERRIDE;
30   virtual gfx::Rect UnoccludedContributingSurfaceContentRect(
31       const gfx::Rect& content_rect,
32       const gfx::Transform& draw_transform) OVERRIDE;
33   virtual void Append(scoped_ptr<DrawQuad> draw_quad) OVERRIDE;
34
35  private:
36   RenderPass* render_pass_;
37   const LayerImpl* layer_;
38   const OcclusionTracker<LayerImpl>& occlusion_tracker_;
39
40   SharedQuadState* current_shared_quad_state_;
41
42   DISALLOW_COPY_AND_ASSIGN(QuadCuller);
43 };
44
45 }  // namespace cc
46
47 #endif  // CC_TREES_QUAD_CULLER_H_