blob: 516031e3f671b2c7406668143f0528530ba9879b [file] [log] [blame]
[email protected]c797cd42011-03-15 02:18:361// Copyright (c) 2011 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
[email protected]7c060932011-03-23 15:49:105#include "ui/gfx/compositor/compositor.h"
[email protected]ed8de92d2011-09-14 04:16:486
[email protected]a8f21152011-09-08 15:30:027#include "ui/gfx/compositor/compositor_observer.h"
[email protected]ed8de92d2011-09-14 04:16:488#include "ui/gfx/compositor/layer.h"
[email protected]c797cd42011-03-15 02:18:369
10namespace ui {
11
[email protected]82a01ac2011-09-08 16:00:1812Compositor::Compositor(CompositorDelegate* delegate, const gfx::Size& size)
13 : delegate_(delegate),
[email protected]ed8de92d2011-09-14 04:16:4814 size_(size),
15 root_layer_(NULL) {
[email protected]82a01ac2011-09-08 16:00:1816}
17
18Compositor::~Compositor() {
19}
20
[email protected]ed8de92d2011-09-14 04:16:4821void Compositor::Draw(bool force_clear) {
22 if (!root_layer_)
23 return;
24
25 NotifyStart(force_clear);
26 root_layer_->DrawTree();
27 NotifyEnd();
28}
29
30void Compositor::AddObserver(CompositorObserver* observer) {
31 observer_list_.AddObserver(observer);
32}
33
34void Compositor::RemoveObserver(CompositorObserver* observer) {
35 observer_list_.RemoveObserver(observer);
36}
37
[email protected]3ce2feb2011-09-19 18:44:2338bool Compositor::HasObserver(CompositorObserver* observer) {
39 return observer_list_.HasObserver(observer);
40}
41
[email protected]30e3f572011-09-13 16:47:5742void Compositor::NotifyStart(bool clear) {
43 OnNotifyStart(clear);
[email protected]c797cd42011-03-15 02:18:3644}
45
[email protected]a8f21152011-09-08 15:30:0246void Compositor::NotifyEnd() {
47 OnNotifyEnd();
48 FOR_EACH_OBSERVER(CompositorObserver,
49 observer_list_,
[email protected]3ce2feb2011-09-19 18:44:2350 OnCompositingEnded(this));
[email protected]a8f21152011-09-08 15:30:0251}
52
[email protected]c797cd42011-03-15 02:18:3653} // namespace ui