Connect PPAPI IPC channels for non-SFI mode.
[chromium-blink-merge.git] / cc / layers / texture_layer_impl.h
blob50511feacecc9e16f8dc48ced08a249baab630d8
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,
21 int id,
22 bool uses_mailbox) {
23 return make_scoped_ptr(new TextureLayerImpl(tree_impl, id, uses_mailbox));
25 virtual ~TextureLayerImpl();
27 virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* layer_tree_impl)
28 OVERRIDE;
29 virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE;
31 virtual bool WillDraw(DrawMode draw_mode,
32 ResourceProvider* resource_provider) OVERRIDE;
33 virtual void AppendQuads(QuadSink* quad_sink,
34 AppendQuadsData* append_quads_data) OVERRIDE;
35 virtual void DidDraw(ResourceProvider* resource_provider) OVERRIDE;
36 virtual Region VisibleContentOpaqueRegion() const OVERRIDE;
37 virtual void ReleaseResources() OVERRIDE;
39 unsigned texture_id() const { return texture_id_; }
41 // These setter methods don't cause any implicit damage, so the texture client
42 // must explicitly invalidate if they intend to cause a visible change in the
43 // layer's output.
44 void SetTextureId(unsigned id);
45 void SetPremultipliedAlpha(bool premultiplied_alpha);
46 void SetBlendBackgroundColor(bool blend);
47 void SetFlipped(bool flipped);
48 void SetUVTopLeft(const gfx::PointF top_left);
49 void SetUVBottomRight(const gfx::PointF bottom_right);
51 // 1--2
52 // | |
53 // 0--3
54 void SetVertexOpacity(const float vertex_opacity[4]);
56 void SetTextureMailbox(const TextureMailbox& mailbox,
57 scoped_ptr<SingleReleaseCallback> release_callback);
59 private:
60 TextureLayerImpl(LayerTreeImpl* tree_impl, int id, bool uses_mailbox);
62 virtual const char* LayerTypeAsString() const OVERRIDE;
63 void FreeTextureMailbox();
65 unsigned texture_id_;
66 ResourceProvider::ResourceId external_texture_resource_;
67 bool premultiplied_alpha_;
68 bool blend_background_color_;
69 bool flipped_;
70 gfx::PointF uv_top_left_;
71 gfx::PointF uv_bottom_right_;
72 float vertex_opacity_[4];
73 // This is a resource that's a GL copy of a software texture mailbox.
74 scoped_ptr<ScopedResource> texture_copy_;
76 TextureMailbox texture_mailbox_;
77 scoped_ptr<SingleReleaseCallback> release_callback_;
78 bool uses_mailbox_;
79 bool own_mailbox_;
80 bool valid_texture_copy_;
82 DISALLOW_COPY_AND_ASSIGN(TextureLayerImpl);
85 } // namespace cc
87 #endif // CC_LAYERS_TEXTURE_LAYER_IMPL_H_