15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Copyright 2014 The Chromium Authors. All rights reserved.
25c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Use of this source code is governed by a BSD-style license that can be
35c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// found in the LICENSE file.
45c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
55c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#ifndef MOJO_SERVICES_VIEW_MANAGER_VIEW_H_
65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#define MOJO_SERVICES_VIEW_MANAGER_VIEW_H_
75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include <vector>
95c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/logging.h"
115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "mojo/services/view_manager/ids.h"
125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "mojo/services/view_manager/view_manager_export.h"
13010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "third_party/skia/include/core/SkBitmap.h"
145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace mojo {
165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace view_manager {
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace service {
185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuclass Node;
195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Represents a view. A view may be associated with a single Node.
215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuclass MOJO_VIEW_MANAGER_EXPORT View {
225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu public:
235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  explicit View(const ViewId& id);
245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  ~View();
255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  const ViewId& id() const { return id_; }
275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  Node* node() { return node_; }
295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
30010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  void SetBitmap(const SkBitmap& contents);
31010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  const SkBitmap& bitmap() const { return bitmap_; }
32010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu private:
345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  // Node is responsible for maintaining |node_|.
355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  friend class Node;
365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  void set_node(Node* node) { node_ = node; }
385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
395c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  const ViewId id_;
405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  Node* node_;
41010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  SkBitmap bitmap_;
425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
435c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  DISALLOW_COPY_AND_ASSIGN(View);
445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu};
455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace service
475c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}  // namespace view_manager
485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}  // namespace mojo
495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#endif  // MOJO_SERVICES_VIEW_MANAGER_VIEW_H_
51