[email protected] | c797cd4 | 2011-03-15 02:18:36 | [diff] [blame] | 1 | // 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] | 7c06093 | 2011-03-23 15:49:10 | [diff] [blame] | 5 | #include "ui/gfx/compositor/compositor.h" |
[email protected] | ed8de92d | 2011-09-14 04:16:48 | [diff] [blame] | 6 | |
[email protected] | a8f2115 | 2011-09-08 15:30:02 | [diff] [blame] | 7 | #include "ui/gfx/compositor/compositor_observer.h" |
[email protected] | ed8de92d | 2011-09-14 04:16:48 | [diff] [blame] | 8 | #include "ui/gfx/compositor/layer.h" |
[email protected] | c797cd4 | 2011-03-15 02:18:36 | [diff] [blame] | 9 | |
10 | namespace ui { | ||||
11 | |||||
[email protected] | 82a01ac | 2011-09-08 16:00:18 | [diff] [blame] | 12 | Compositor::Compositor(CompositorDelegate* delegate, const gfx::Size& size) |
13 | : delegate_(delegate), | ||||
[email protected] | ed8de92d | 2011-09-14 04:16:48 | [diff] [blame] | 14 | size_(size), |
15 | root_layer_(NULL) { | ||||
[email protected] | 82a01ac | 2011-09-08 16:00:18 | [diff] [blame] | 16 | } |
17 | |||||
18 | Compositor::~Compositor() { | ||||
19 | } | ||||
20 | |||||
[email protected] | ed8de92d | 2011-09-14 04:16:48 | [diff] [blame] | 21 | void Compositor::Draw(bool force_clear) { |
22 | if (!root_layer_) | ||||
23 | return; | ||||
24 | |||||
25 | NotifyStart(force_clear); | ||||
26 | root_layer_->DrawTree(); | ||||
27 | NotifyEnd(); | ||||
28 | } | ||||
29 | |||||
30 | void Compositor::AddObserver(CompositorObserver* observer) { | ||||
31 | observer_list_.AddObserver(observer); | ||||
32 | } | ||||
33 | |||||
34 | void Compositor::RemoveObserver(CompositorObserver* observer) { | ||||
35 | observer_list_.RemoveObserver(observer); | ||||
36 | } | ||||
37 | |||||
[email protected] | 3ce2feb | 2011-09-19 18:44:23 | [diff] [blame^] | 38 | bool Compositor::HasObserver(CompositorObserver* observer) { |
39 | return observer_list_.HasObserver(observer); | ||||
40 | } | ||||
41 | |||||
[email protected] | 30e3f57 | 2011-09-13 16:47:57 | [diff] [blame] | 42 | void Compositor::NotifyStart(bool clear) { |
43 | OnNotifyStart(clear); | ||||
[email protected] | c797cd4 | 2011-03-15 02:18:36 | [diff] [blame] | 44 | } |
45 | |||||
[email protected] | a8f2115 | 2011-09-08 15:30:02 | [diff] [blame] | 46 | void Compositor::NotifyEnd() { |
47 | OnNotifyEnd(); | ||||
48 | FOR_EACH_OBSERVER(CompositorObserver, | ||||
49 | observer_list_, | ||||
[email protected] | 3ce2feb | 2011-09-19 18:44:23 | [diff] [blame^] | 50 | OnCompositingEnded(this)); |
[email protected] | a8f2115 | 2011-09-08 15:30:02 | [diff] [blame] | 51 | } |
52 | |||||
[email protected] | c797cd4 | 2011-03-15 02:18:36 | [diff] [blame] | 53 | } // namespace ui |