| OLD | NEW |
| (Empty) |
| 1 // Copyright 2013 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 #include "mojo/examples/compositor_app/compositor_host.h" | |
| 6 | |
| 7 #include "cc/layers/layer.h" | |
| 8 #include "cc/layers/solid_color_layer.h" | |
| 9 #include "cc/output/begin_frame_args.h" | |
| 10 #include "cc/output/context_provider.h" | |
| 11 #include "cc/output/output_surface.h" | |
| 12 #include "cc/trees/layer_tree_host.h" | |
| 13 #include "mojo/cc/context_provider_mojo.h" | |
| 14 | |
| 15 namespace mojo { | |
| 16 namespace examples { | |
| 17 | |
| 18 CompositorHost::CompositorHost(ScopedMessagePipeHandle command_buffer_handle) | |
| 19 : command_buffer_handle_(command_buffer_handle.Pass()), | |
| 20 compositor_thread_("compositor") { | |
| 21 DCHECK(command_buffer_handle_.is_valid()); | |
| 22 bool started = compositor_thread_.Start(); | |
| 23 DCHECK(started); | |
| 24 | |
| 25 cc::LayerTreeSettings settings; | |
| 26 tree_ = cc::LayerTreeHost::CreateThreaded( | |
| 27 this, | |
| 28 NULL, | |
| 29 settings, | |
| 30 base::MessageLoopProxy::current(), | |
| 31 compositor_thread_.message_loop_proxy()); | |
| 32 SetupScene(); | |
| 33 } | |
| 34 | |
| 35 CompositorHost::~CompositorHost() {} | |
| 36 | |
| 37 void CompositorHost::SetSize(const gfx::Size& viewport_size) { | |
| 38 tree_->SetViewportSize(viewport_size); | |
| 39 tree_->SetLayerTreeHostClientReady(); | |
| 40 } | |
| 41 | |
| 42 void CompositorHost::SetupScene() { | |
| 43 scoped_refptr<cc::Layer> root_layer = cc::SolidColorLayer::Create(); | |
| 44 root_layer->SetBounds(gfx::Size(500, 500)); | |
| 45 root_layer->SetBackgroundColor(SK_ColorBLUE); | |
| 46 root_layer->SetIsDrawable(true); | |
| 47 tree_->SetRootLayer(root_layer); | |
| 48 | |
| 49 child_layer_ = cc::SolidColorLayer::Create(); | |
| 50 child_layer_->SetBounds(gfx::Size(100, 100)); | |
| 51 child_layer_->SetBackgroundColor(SK_ColorGREEN); | |
| 52 child_layer_->SetIsDrawable(true); | |
| 53 gfx::Transform child_transform; | |
| 54 child_transform.Translate(200, 200); | |
| 55 child_layer_->SetTransform(child_transform); | |
| 56 root_layer->AddChild(child_layer_); | |
| 57 } | |
| 58 | |
| 59 void CompositorHost::WillBeginMainFrame(int frame_id) {} | |
| 60 void CompositorHost::DidBeginMainFrame() {} | |
| 61 | |
| 62 void CompositorHost::BeginMainFrame(const cc::BeginFrameArgs& args) { | |
| 63 // TODO(jamesr): Should use cc's animation system. | |
| 64 static const double kDegreesPerSecond = 70.0; | |
| 65 double time_in_seconds = (args.frame_time - base::TimeTicks()).InSecondsF(); | |
| 66 double child_rotation_degrees = kDegreesPerSecond * time_in_seconds; | |
| 67 gfx::Transform child_transform; | |
| 68 child_transform.Translate(200, 200); | |
| 69 child_transform.Rotate(child_rotation_degrees); | |
| 70 child_layer_->SetTransform(child_transform); | |
| 71 tree_->SetNeedsAnimate(); | |
| 72 } | |
| 73 | |
| 74 void CompositorHost::Layout() {} | |
| 75 void CompositorHost::ApplyViewportDeltas(const gfx::Vector2d& inner_delta, | |
| 76 const gfx::Vector2d& outer_delta, | |
| 77 float page_scale, | |
| 78 float top_controls_delta) {} | |
| 79 void CompositorHost::ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, | |
| 80 float page_scale, | |
| 81 float top_controls_delta) {} | |
| 82 | |
| 83 void CompositorHost::RequestNewOutputSurface(bool fallback) { | |
| 84 tree_->SetOutputSurface(make_scoped_ptr(new cc::OutputSurface( | |
| 85 new ContextProviderMojo(command_buffer_handle_.Pass())))); | |
| 86 } | |
| 87 | |
| 88 void CompositorHost::DidInitializeOutputSurface() { | |
| 89 } | |
| 90 | |
| 91 void CompositorHost::WillCommit() {} | |
| 92 void CompositorHost::DidCommit() {} | |
| 93 void CompositorHost::DidCommitAndDrawFrame() {} | |
| 94 void CompositorHost::DidCompleteSwapBuffers() {} | |
| 95 | |
| 96 } // namespace examples | |
| 97 } // namespace mojo | |
| OLD | NEW |