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 #include "cc/quads/render_pass.h" 11 12 namespace cc { 13 class LayerImpl; 14 class RenderSurfaceImpl; 15 template <typename LayerType, typename SurfaceType> class OcclusionTrackerBase; 16 17 class CC_EXPORT QuadCuller : public QuadSink { 18 public: 19 QuadCuller(QuadList* quad_list, 20 SharedQuadStateList* shared_quad_state_list, 21 const LayerImpl* layer, 22 const OcclusionTrackerBase<LayerImpl, RenderSurfaceImpl>& 23 occlusion_tracker, 24 bool show_culling_with_debug_border_quads, 25 bool for_surface); 26 virtual ~QuadCuller() {} 27 28 // QuadSink implementation. 29 virtual SharedQuadState* UseSharedQuadState( 30 scoped_ptr<SharedQuadState> shared_quad_state) OVERRIDE; 31 virtual bool Append(scoped_ptr<DrawQuad> draw_quad, 32 AppendQuadsData* append_quads_data) OVERRIDE; 33 34 private: 35 QuadList* quad_list_; 36 SharedQuadStateList* shared_quad_state_list_; 37 const LayerImpl* layer_; 38 const OcclusionTrackerBase<LayerImpl, RenderSurfaceImpl>& occlusion_tracker_; 39 40 SharedQuadState* current_shared_quad_state_; 41 bool show_culling_with_debug_border_quads_; 42 bool for_surface_; 43 44 DISALLOW_COPY_AND_ASSIGN(QuadCuller); 45 }; 46 47 } // namespace cc 48 49 #endif // CC_TREES_QUAD_CULLER_H_ 50