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.
5 #ifndef CC_LAYERS_CONTENT_LAYER_H_
6 #define CC_LAYERS_CONTENT_LAYER_H_
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"
17 class ContentLayerClient
;
18 class ContentLayerUpdater
;
20 class CC_EXPORT ContentLayerPainter
: public LayerPainter
{
22 static scoped_ptr
<ContentLayerPainter
> Create(ContentLayerClient
* client
);
24 virtual void Paint(SkCanvas
* canvas
,
25 gfx::Rect content_rect
,
26 gfx::RectF
* opaque
) OVERRIDE
;
29 explicit ContentLayerPainter(ContentLayerClient
* client
);
31 ContentLayerClient
* client_
;
33 DISALLOW_COPY_AND_ASSIGN(ContentLayerPainter
);
36 // A layer that renders its contents into an SkCanvas.
37 class CC_EXPORT ContentLayer
: public TiledLayer
{
39 static scoped_refptr
<ContentLayer
> Create(ContentLayerClient
* client
);
41 void ClearClient() { client_
= NULL
; }
43 virtual bool DrawsContent() const OVERRIDE
;
44 virtual void SetLayerTreeHost(LayerTreeHost
* layer_tree_host
) OVERRIDE
;
45 virtual void SetTexturePriorities(const PriorityCalculator
& priority_calc
)
47 virtual bool Update(ResourceUpdateQueue
* queue
,
48 const OcclusionTracker
* occlusion
) OVERRIDE
;
49 virtual bool NeedMoreUpdates() OVERRIDE
;
51 virtual void SetContentsOpaque(bool contents_opaque
) OVERRIDE
;
53 virtual bool SupportsLCDText() const OVERRIDE
;
55 virtual skia::RefPtr
<SkPicture
> GetPicture() const OVERRIDE
;
58 explicit ContentLayer(ContentLayerClient
* client
);
59 virtual ~ContentLayer();
62 // TiledLayer implementation.
63 virtual LayerUpdater
* Updater() const OVERRIDE
;
64 virtual void CreateUpdaterIfNeeded() OVERRIDE
;
66 void UpdateCanUseLCDText();
68 ContentLayerClient
* client_
;
69 scoped_refptr
<ContentLayerUpdater
> updater_
;
70 bool can_use_lcd_text_last_frame_
;
72 DISALLOW_COPY_AND_ASSIGN(ContentLayer
);
76 #endif // CC_LAYERS_CONTENT_LAYER_H_