• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2010 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_LAYERS_CONTENT_LAYER_H_
6 #define CC_LAYERS_CONTENT_LAYER_H_
7 
8 #include "base/basictypes.h"
9 #include "cc/base/cc_export.h"
10 #include "cc/layers/tiled_layer.h"
11 #include "cc/resources/layer_painter.h"
12 
13 class SkCanvas;
14 
15 namespace cc {
16 
17 class ContentLayerClient;
18 class ContentLayerUpdater;
19 
20 class CC_EXPORT ContentLayerPainter : public LayerPainter {
21  public:
22   static scoped_ptr<ContentLayerPainter> Create(ContentLayerClient* client);
23 
24   virtual void Paint(SkCanvas* canvas,
25                      gfx::Rect content_rect,
26                      gfx::RectF* opaque) OVERRIDE;
27 
28  private:
29   explicit ContentLayerPainter(ContentLayerClient* client);
30 
31   ContentLayerClient* client_;
32 
33   DISALLOW_COPY_AND_ASSIGN(ContentLayerPainter);
34 };
35 
36 // A layer that renders its contents into an SkCanvas.
37 class CC_EXPORT ContentLayer : public TiledLayer {
38  public:
39   static scoped_refptr<ContentLayer> Create(ContentLayerClient* client);
40 
ClearClient()41   void ClearClient() { client_ = NULL; }
42 
43   virtual bool DrawsContent() const OVERRIDE;
44   virtual void SetLayerTreeHost(LayerTreeHost* layer_tree_host) OVERRIDE;
45   virtual void SetTexturePriorities(const PriorityCalculator& priority_calc)
46       OVERRIDE;
47   virtual bool Update(ResourceUpdateQueue* queue,
48                       const OcclusionTracker* occlusion) OVERRIDE;
49   virtual bool NeedMoreUpdates() OVERRIDE;
50 
51   virtual void SetContentsOpaque(bool contents_opaque) OVERRIDE;
52 
53   virtual bool SupportsLCDText() const OVERRIDE;
54 
55   virtual skia::RefPtr<SkPicture> GetPicture() const OVERRIDE;
56 
57   virtual void OnOutputSurfaceCreated() OVERRIDE;
58 
59  protected:
60   explicit ContentLayer(ContentLayerClient* client);
61   virtual ~ContentLayer();
62 
63   // TiledLayer implementation.
64   virtual LayerUpdater* Updater() const OVERRIDE;
65 
66  private:
67   // TiledLayer implementation.
68   virtual void CreateUpdaterIfNeeded() OVERRIDE;
69 
70   void UpdateCanUseLCDText();
71 
72   ContentLayerClient* client_;
73   scoped_refptr<ContentLayerUpdater> updater_;
74   bool can_use_lcd_text_last_frame_;
75 
76   DISALLOW_COPY_AND_ASSIGN(ContentLayer);
77 };
78 
79 }  // namespace cc
80 #endif  // CC_LAYERS_CONTENT_LAYER_H_
81