Changes to RenderFrameProxy:
[chromium-blink-merge.git] / cc / layers / texture_layer_impl.h
blobf27fe48670b64629c612b57a5f4e131394bdfe82
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.
5 #ifndef CC_LAYERS_TEXTURE_LAYER_IMPL_H_
6 #define CC_LAYERS_TEXTURE_LAYER_IMPL_H_
8 #include <string>
10 #include "base/callback.h"
11 #include "cc/base/cc_export.h"
12 #include "cc/layers/layer_impl.h"
14 namespace cc {
15 class SingleReleaseCallback;
16 class ScopedResource;
18 class CC_EXPORT TextureLayerImpl : public LayerImpl {
19 public:
20 static scoped_ptr<TextureLayerImpl> Create(LayerTreeImpl* tree_impl, int id) {
21 return make_scoped_ptr(new TextureLayerImpl(tree_impl, id));
23 virtual ~TextureLayerImpl();
25 virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* layer_tree_impl)
26 OVERRIDE;
27 virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE;
29 virtual bool WillDraw(DrawMode draw_mode,
30 ResourceProvider* resource_provider) OVERRIDE;
31 virtual void AppendQuads(RenderPass* render_pass,
32 const OcclusionTracker<LayerImpl>& occlusion_tracker,
33 AppendQuadsData* append_quads_data) OVERRIDE;
34 virtual Region VisibleContentOpaqueRegion() const OVERRIDE;
35 virtual void ReleaseResources() OVERRIDE;
37 // These setter methods don't cause any implicit damage, so the texture client
38 // must explicitly invalidate if they intend to cause a visible change in the
39 // layer's output.
40 void SetTextureId(unsigned id);
41 void SetPremultipliedAlpha(bool premultiplied_alpha);
42 void SetBlendBackgroundColor(bool blend);
43 void SetFlipped(bool flipped);
44 void SetUVTopLeft(const gfx::PointF top_left);
45 void SetUVBottomRight(const gfx::PointF bottom_right);
47 // 1--2
48 // | |
49 // 0--3
50 void SetVertexOpacity(const float vertex_opacity[4]);
52 void SetTextureMailbox(const TextureMailbox& mailbox,
53 scoped_ptr<SingleReleaseCallback> release_callback);
55 private:
56 TextureLayerImpl(LayerTreeImpl* tree_impl, int id);
58 virtual const char* LayerTypeAsString() const OVERRIDE;
59 void FreeTextureMailbox();
61 ResourceProvider::ResourceId external_texture_resource_;
62 bool premultiplied_alpha_;
63 bool blend_background_color_;
64 bool flipped_;
65 gfx::PointF uv_top_left_;
66 gfx::PointF uv_bottom_right_;
67 float vertex_opacity_[4];
68 // This is a resource that's a GL copy of a software texture mailbox.
69 scoped_ptr<ScopedResource> texture_copy_;
71 TextureMailbox texture_mailbox_;
72 scoped_ptr<SingleReleaseCallback> release_callback_;
73 bool own_mailbox_;
74 bool valid_texture_copy_;
76 DISALLOW_COPY_AND_ASSIGN(TextureLayerImpl);
79 } // namespace cc
81 #endif // CC_LAYERS_TEXTURE_LAYER_IMPL_H_