1 // Copyright 2014 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 #ifndef CONTENT_BROWSER_COMPOSITOR_SOFTWARE_OUTPUT_DEVICE_WIN_H_ 6 #define CONTENT_BROWSER_COMPOSITOR_SOFTWARE_OUTPUT_DEVICE_WIN_H_ 7 8 #include "base/memory/scoped_ptr.h" 9 #include "cc/output/software_output_device.h" 10 11 #include <windows.h> 12 13 namespace gfx { 14 class Canvas; 15 } 16 17 namespace ui { 18 class Compositor; 19 } 20 21 namespace content { 22 23 class SoftwareOutputDeviceWin : public cc::SoftwareOutputDevice { 24 public: 25 explicit SoftwareOutputDeviceWin(ui::Compositor* compositor); 26 virtual ~SoftwareOutputDeviceWin(); 27 28 virtual void Resize(const gfx::Size& viewport_pixel_size, 29 float scale_factor) OVERRIDE; 30 virtual SkCanvas* BeginPaint(const gfx::Rect& damage_rect) OVERRIDE; 31 virtual void EndPaint(cc::SoftwareFrameData* frame_data) OVERRIDE; 32 virtual void CopyToPixels(const gfx::Rect& rect, void* pixels) OVERRIDE; 33 34 private: 35 HWND hwnd_; 36 BITMAPINFO bitmap_info_; 37 scoped_ptr<gfx::Canvas> contents_; 38 bool is_hwnd_composited_; 39 40 DISALLOW_COPY_AND_ASSIGN(SoftwareOutputDeviceWin); 41 }; 42 43 } // namespace content 44 45 #endif // CONTENT_BROWSER_COMPOSITOR_SOFTWARE_OUTPUT_DEVICE_WIN_H_ 46