1 // Copyright (c) 2012 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 "ui/compositor/test/test_compositor_host.h" 6 7 #include "base/compiler_specific.h" 8 #include "base/memory/scoped_ptr.h" 9 #include "ui/compositor/compositor.h" 10 #include "ui/gfx/win/window_impl.h" 11 12 namespace ui { 13 14 class TestCompositorHostWin : public TestCompositorHost, 15 public gfx::WindowImpl { 16 public: 17 TestCompositorHostWin(const gfx::Rect& bounds, 18 ui::ContextFactory* context_factory) { 19 Init(NULL, bounds); 20 compositor_.reset(new ui::Compositor(hwnd(), context_factory)); 21 compositor_->SetScaleAndSize(1.0f, GetSize()); 22 } 23 24 virtual ~TestCompositorHostWin() { 25 DestroyWindow(hwnd()); 26 } 27 28 // Overridden from TestCompositorHost: 29 virtual void Show() OVERRIDE { 30 ShowWindow(hwnd(), SW_SHOWNORMAL); 31 } 32 virtual ui::Compositor* GetCompositor() OVERRIDE { 33 return compositor_.get(); 34 } 35 36 private: 37 CR_BEGIN_MSG_MAP_EX(TestCompositorHostWin) 38 CR_MSG_WM_PAINT(OnPaint) 39 CR_END_MSG_MAP() 40 41 void OnPaint(HDC dc) { 42 compositor_->Draw(); 43 ValidateRect(hwnd(), NULL); 44 } 45 46 gfx::Size GetSize() { 47 RECT r; 48 GetClientRect(hwnd(), &r); 49 return gfx::Rect(r).size(); 50 } 51 52 scoped_ptr<ui::Compositor> compositor_; 53 54 DISALLOW_COPY_AND_ASSIGN(TestCompositorHostWin); 55 }; 56 57 TestCompositorHost* TestCompositorHost::Create( 58 const gfx::Rect& bounds, 59 ui::ContextFactory* context_factory) { 60 return new TestCompositorHostWin(bounds, context_factory); 61 } 62 63 } // namespace ui 64