shadow_layer_delegate.h revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
1// Copyright (c) 2013 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 CONTENT_BROWSER_WEB_CONTENTS_AURA_SHADOW_LAYER_DELEGATE_H_
6#define CONTENT_BROWSER_WEB_CONTENTS_AURA_SHADOW_LAYER_DELEGATE_H_
7
8#include "base/compiler_specific.h"
9#include "base/memory/scoped_ptr.h"
10#include "ui/compositor/layer_delegate.h"
11
12namespace aura {
13class Window;
14}
15
16namespace ui {
17class Layer;
18}
19
20namespace content {
21
22// ShadowLayerDelegate takes care of drawing a shadow on the left edge of
23// another layer.
24class ShadowLayerDelegate : public ui::LayerDelegate {
25 public:
26  explicit ShadowLayerDelegate(ui::Layer* shadow_for);
27  virtual ~ShadowLayerDelegate();
28
29  // Returns the layer for the shadow. Note that the ShadowLayerDelegate owns
30  // the layer, and the layer is destroyed when the delegate is destroyed.
31  ui::Layer* layer() { return layer_.get(); }
32
33 private:
34  // Overridden from ui::LayerDelegate:
35  virtual void OnPaintLayer(gfx::Canvas* canvas) OVERRIDE;
36  virtual void OnDelegatedFrameDamage(
37      const gfx::Rect& damage_rect_in_dip) OVERRIDE;
38  virtual void OnDeviceScaleFactorChanged(float device_scale_factor) OVERRIDE;
39  virtual base::Closure PrepareForLayerBoundsChange() OVERRIDE;
40
41  scoped_ptr<ui::Layer> layer_;
42
43  DISALLOW_COPY_AND_ASSIGN(ShadowLayerDelegate);
44};
45
46}  // namespace content
47
48#endif  //  CONTENT_BROWSER_WEB_CONTENTS_AURA_SHADOW_LAYER_DELEGATE_H_
49