Home | History | Annotate | Download | only in layers
      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 
     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  protected:
     56   explicit ContentLayer(ContentLayerClient* client);
     57   virtual ~ContentLayer();
     58 
     59  private:
     60   // TiledLayer implementation.
     61   virtual LayerUpdater* Updater() const OVERRIDE;
     62   virtual void CreateUpdaterIfNeeded() OVERRIDE;
     63 
     64   void UpdateCanUseLCDText();
     65 
     66   ContentLayerClient* client_;
     67   scoped_refptr<ContentLayerUpdater> updater_;
     68   bool can_use_lcd_text_last_frame_;
     69 
     70   DISALLOW_COPY_AND_ASSIGN(ContentLayer);
     71 };
     72 
     73 }  // namespace cc
     74 #endif  // CC_LAYERS_CONTENT_LAYER_H_
     75