1// Copyright (c) 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.
4
5#ifndef UI_COMPOSITOR_LAYER_DELEGATE_H_
6#define UI_COMPOSITOR_LAYER_DELEGATE_H_
7
8#include "base/callback_forward.h"
9#include "ui/compositor/compositor_export.h"
10
11namespace gfx {
12class Canvas;
13class Rect;
14}
15
16namespace ui {
17
18// A delegate interface implemented by an object that renders to a Layer.
19class COMPOSITOR_EXPORT LayerDelegate {
20 public:
21  // Paint content for the layer to the specified canvas. It has already been
22  // clipped to the Layer's invalid rect.
23  virtual void OnPaintLayer(gfx::Canvas* canvas) = 0;
24
25  // A notification that this layer has had a delegated frame swap and
26  // will be repainted.
27  virtual void OnDelegatedFrameDamage(const gfx::Rect& damage_rect_in_dip) = 0;
28
29  // Called when the layer's device scale factor has changed.
30  virtual void OnDeviceScaleFactorChanged(float device_scale_factor) = 0;
31
32  // Invoked prior to the bounds changing. The returned closured is run after
33  // the bounds change.
34  virtual base::Closure PrepareForLayerBoundsChange() = 0;
35
36 protected:
37  virtual ~LayerDelegate() {}
38};
39
40}  // namespace ui
41
42#endif  // UI_COMPOSITOR_LAYER_DELEGATE_H_
43