|  | // Copyright 2015 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #include "sky/compositor/rasterizer_bitmap.h" | 
|  |  | 
|  | #include "sky/compositor/layer_client.h" | 
|  | #include "sky/compositor/layer_host.h" | 
|  | #include "third_party/skia/include/core/SkBitmapDevice.h" | 
|  | #include "third_party/skia/include/core/SkCanvas.h" | 
|  | #include "third_party/skia/include/core/SkPicture.h" | 
|  | #include "ui/gfx/codec/png_codec.h" | 
|  | #include "ui/gfx/geometry/rect.h" | 
|  |  | 
|  | namespace sky { | 
|  |  | 
|  | RasterizerBitmap::RasterizerBitmap(LayerHost* host) : host_(host) { | 
|  | DCHECK(host_); | 
|  | } | 
|  |  | 
|  | RasterizerBitmap::~RasterizerBitmap() { | 
|  | } | 
|  |  | 
|  | void RasterizerBitmap::GetPixelsForTesting(std::vector<unsigned char>* pixels) { | 
|  | gfx::PNGCodec::EncodeBGRASkBitmap(bitmap_, true, pixels); | 
|  | } | 
|  |  | 
|  | scoped_ptr<mojo::GLTexture> RasterizerBitmap::Rasterize(SkPicture* picture) { | 
|  | auto size = picture->cullRect(); | 
|  | bitmap_.allocN32Pixels(size.width(), size.height()); | 
|  |  | 
|  | SkBitmapDevice device(bitmap_); | 
|  | SkCanvas canvas(&device); | 
|  | // Draw red so we can see when we fail to paint. | 
|  | canvas.drawColor(SK_ColorRED); | 
|  | canvas.drawPicture(picture); | 
|  | canvas.flush(); | 
|  |  | 
|  | return host_->resource_manager()->CreateTexture( | 
|  | gfx::Size(size.width(), size.height())); | 
|  | } | 
|  |  | 
|  | }  // namespace sky |