1// Copyright 2014 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 MOJO_SERVICES_PUBLIC_CPP_VIEW_MANAGER_VIEW_H_
6#define MOJO_SERVICES_PUBLIC_CPP_VIEW_MANAGER_VIEW_H_
7
8#include "base/basictypes.h"
9#include "base/observer_list.h"
10#include "mojo/services/public/cpp/view_manager/types.h"
11#include "third_party/skia/include/core/SkColor.h"
12
13class SkBitmap;
14
15namespace mojo {
16namespace view_manager {
17
18class Node;
19class ViewManager;
20class ViewObserver;
21
22// Views are owned by the ViewManager.
23class View {
24 public:
25  static View* Create(ViewManager* manager);
26
27  void Destroy();
28
29  Id id() const { return id_; }
30  Node* node() { return node_; }
31
32  void AddObserver(ViewObserver* observer);
33  void RemoveObserver(ViewObserver* observer);
34
35  // TODO(beng): temporary only.
36  void SetContents(const SkBitmap& contents);
37  void SetColor(SkColor color);
38
39 private:
40  friend class ViewPrivate;
41
42  explicit View(ViewManager* manager);
43  View();
44  ~View();
45
46  void LocalDestroy();
47
48  Id id_;
49  Node* node_;
50  ViewManager* manager_;
51
52  ObserverList<ViewObserver> observers_;
53
54  DISALLOW_COPY_AND_ASSIGN(View);
55};
56
57}  // namespace view_manager
58}  // namespace mojo
59
60#endif  // MOJO_SERVICES_PUBLIC_CPP_VIEW_MANAGER_VIEW_H_
61