Index: cc/layers/background_filter_layer_impl.cc |
diff --git a/cc/layers/background_filter_layer_impl.cc b/cc/layers/background_filter_layer_impl.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..60a84d5aedc4815d5b302b0d0da41d29cb97fa76 |
--- /dev/null |
+++ b/cc/layers/background_filter_layer_impl.cc |
@@ -0,0 +1,59 @@ |
+// Copyright 2014 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/layers/background_filter_layer_impl.h" |
+ |
+#include "cc/trees/occlusion_tracker.h" |
+#include "cc/quads/filter_draw_quad.h" |
+#include "cc/quads/render_pass.h" |
+ |
+namespace cc { |
+ |
+BackgroundFilterLayerImpl::BackgroundFilterLayerImpl(LayerTreeImpl* tree_impl, |
+ int id) |
+ : LayerImpl(tree_impl, id), src_filter_rect_(), draw_filter_rect_() { |
+} |
+ |
+BackgroundFilterLayerImpl::~BackgroundFilterLayerImpl() { |
+} |
+ |
+scoped_ptr<LayerImpl> BackgroundFilterLayerImpl::CreateLayerImpl( |
+ LayerTreeImpl* tree_impl) { |
+ return BackgroundFilterLayerImpl::Create(tree_impl, id()).PassAs<LayerImpl>(); |
+} |
+ |
+void BackgroundFilterLayerImpl::AppendQuads( |
+ RenderPass* render_pass, |
+ const OcclusionTracker<LayerImpl>& occlusion_tracker, |
+ AppendQuadsData* append_quads_data) { |
+ SharedQuadState* shared_quad_state = |
+ render_pass->CreateAndAppendSharedQuadState(); |
+ PopulateSharedQuadState(shared_quad_state); |
+ |
+ AppendDebugBorderQuad( |
+ render_pass, content_bounds(), shared_quad_state, append_quads_data); |
+ |
+ // get visible rect |
+ gfx::Rect visible_content_rect = occlusion_tracker.UnoccludedContentRect( |
+ src_filter_rect_, draw_properties().target_space_transform); |
+ |
+ gfx::Rect draw_rect = occlusion_tracker.UnoccludedContentRect( |
+ draw_filter_rect_, draw_properties().target_space_transform); |
+ |
+ if (visible_content_rect.IsEmpty()) |
+ return; |
+ |
+ FilterDrawQuad* quad = render_pass->CreateAndAppendDrawQuad<FilterDrawQuad>(); |
+ quad->SetNew(shared_quad_state, |
+ visible_content_rect, |
+ visible_content_rect, |
+ draw_rect, |
+ filter_operations_); |
+} |
+ |
+const char* BackgroundFilterLayerImpl::LayerTypeAsString() const { |
+ return "cc::BackgroundFilterLayerImpl"; |
+} |
+ |
+} // namespace cc |