1d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen// Copyright 2014 The Chromium Authors. All rights reserved. 2d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen// Use of this source code is governed by a BSD-style license that can be 3d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen// found in the LICENSE file. 4d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen 5d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen#ifndef CC_BLINK_WEB_EXTERNAL_BITMAP_IMPL_H_ 6d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen#define CC_BLINK_WEB_EXTERNAL_BITMAP_IMPL_H_ 7d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen 8d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen#include "base/bind.h" 9d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen#include "base/memory/scoped_ptr.h" 10d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen#include "cc/blink/cc_blink_export.h" 11d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen#include "third_party/WebKit/public/platform/WebExternalBitmap.h" 12d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen 13d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chennamespace base { 14d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chenclass SharedMemory; 15d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen} 16d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen 17d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chennamespace cc_blink { 18d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen 19d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chentypedef scoped_ptr<base::SharedMemory>(*SharedMemoryAllocationFunction)(size_t); 20d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen 21d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen// Sets the function that this will use to allocate shared memory. 22d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. ChenCC_BLINK_EXPORT void SetSharedMemoryAllocationFunction( 23d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen SharedMemoryAllocationFunction); 24d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen 25d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chenclass WebExternalBitmapImpl : public blink::WebExternalBitmap { 26d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen public: 27d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen CC_BLINK_EXPORT explicit WebExternalBitmapImpl(); 28d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen virtual ~WebExternalBitmapImpl(); 29d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen 30d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen // blink::WebExternalBitmap implementation. 31d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen virtual blink::WebSize size() OVERRIDE; 32d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen virtual void setSize(blink::WebSize size) OVERRIDE; 33d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen virtual uint8* pixels() OVERRIDE; 34d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen 35d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen base::SharedMemory* shared_memory() { return shared_memory_.get(); } 36d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen 37d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen private: 38d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen scoped_ptr<base::SharedMemory> shared_memory_; 39d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen blink::WebSize size_; 40d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen 41d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen DISALLOW_COPY_AND_ASSIGN(WebExternalBitmapImpl); 42d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen}; 43 44} // namespace cc_blink 45 46#endif // CC_BLINK_WEB_EXTERNAL_BITMAP_IMPL_H_ 47