1 // Copyright 2011 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_QUADS_RENDER_PASS_DRAW_QUAD_H_ 6 #define CC_QUADS_RENDER_PASS_DRAW_QUAD_H_ 7 8 #include "base/basictypes.h" 9 #include "base/memory/scoped_ptr.h" 10 #include "cc/base/cc_export.h" 11 #include "cc/output/filter_operations.h" 12 #include "cc/quads/draw_quad.h" 13 #include "cc/quads/render_pass.h" 14 #include "cc/resources/resource_provider.h" 15 16 namespace cc { 17 18 class CC_EXPORT RenderPassDrawQuad : public DrawQuad { 19 public: 20 static scoped_ptr<RenderPassDrawQuad> Create(); 21 virtual ~RenderPassDrawQuad(); 22 23 void SetNew(const SharedQuadState* shared_quad_state, 24 gfx::Rect rect, 25 RenderPass::Id render_pass_id, 26 bool is_replica, 27 ResourceProvider::ResourceId mask_resource_id, 28 gfx::Rect contents_changed_since_last_frame, 29 gfx::RectF mask_uv_rect, 30 const FilterOperations& filters, 31 skia::RefPtr<SkImageFilter> filter, 32 const FilterOperations& background_filters); 33 34 void SetAll(const SharedQuadState* shared_quad_state, 35 gfx::Rect rect, 36 gfx::Rect opaque_rect, 37 gfx::Rect visible_rect, 38 bool needs_blending, 39 RenderPass::Id render_pass_id, 40 bool is_replica, 41 ResourceProvider::ResourceId mask_resource_id, 42 gfx::Rect contents_changed_since_last_frame, 43 gfx::RectF mask_uv_rect, 44 const FilterOperations& filters, 45 skia::RefPtr<SkImageFilter> filter, 46 const FilterOperations& background_filters); 47 48 scoped_ptr<RenderPassDrawQuad> Copy( 49 const SharedQuadState* copied_shared_quad_state, 50 RenderPass::Id copied_render_pass_id) const; 51 52 RenderPass::Id render_pass_id; 53 bool is_replica; 54 ResourceProvider::ResourceId mask_resource_id; 55 gfx::Rect contents_changed_since_last_frame; 56 gfx::RectF mask_uv_rect; 57 58 // Deprecated post-processing filters, applied to the pixels in the render 59 // pass' texture. 60 FilterOperations filters; 61 // Post-processing filter applied to the pixels in the render pass' texture. 62 skia::RefPtr<SkImageFilter> filter; 63 64 // Post-processing filters, applied to the pixels showing through the 65 // background of the render pass, from behind it. 66 FilterOperations background_filters; 67 68 virtual void IterateResources(const ResourceIteratorCallback& callback) 69 OVERRIDE; 70 71 static const RenderPassDrawQuad* MaterialCast(const DrawQuad*); 72 73 private: 74 RenderPassDrawQuad(); 75 virtual void ExtendValue(base::DictionaryValue* value) const OVERRIDE; 76 }; 77 78 } // namespace cc 79 80 #endif // CC_QUADS_RENDER_PASS_DRAW_QUAD_H_ 81