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.
5 #ifndef CC_OUTPUT_COPY_OUTPUT_RESULT_H_
6 #define CC_OUTPUT_COPY_OUTPUT_RESULT_H_
8 #include "base/memory/scoped_ptr.h"
9 #include "cc/base/cc_export.h"
10 #include "cc/resources/texture_mailbox.h"
11 #include "ui/gfx/size.h"
16 class SingleReleaseCallback
;
19 class CC_EXPORT CopyOutputResult
{
21 static scoped_ptr
<CopyOutputResult
> CreateEmptyResult() {
22 return make_scoped_ptr(new CopyOutputResult
);
24 static scoped_ptr
<CopyOutputResult
> CreateBitmapResult(
25 scoped_ptr
<SkBitmap
> bitmap
) {
26 return make_scoped_ptr(new CopyOutputResult(bitmap
.Pass()));
28 static scoped_ptr
<CopyOutputResult
> CreateTextureResult(
29 const gfx::Size
& size
,
30 const TextureMailbox
& texture_mailbox
,
31 scoped_ptr
<SingleReleaseCallback
> release_callback
) {
32 return make_scoped_ptr(
33 new CopyOutputResult(size
, texture_mailbox
, release_callback
.Pass()));
38 bool IsEmpty() const { return !HasBitmap() && !HasTexture(); }
39 bool HasBitmap() const { return !!bitmap_
; }
40 bool HasTexture() const { return texture_mailbox_
.IsValid(); }
42 gfx::Size
size() const { return size_
; }
43 scoped_ptr
<SkBitmap
> TakeBitmap();
44 void TakeTexture(TextureMailbox
* texture_mailbox
,
45 scoped_ptr
<SingleReleaseCallback
>* release_callback
);
49 explicit CopyOutputResult(scoped_ptr
<SkBitmap
> bitmap
);
50 explicit CopyOutputResult(const gfx::Size
& size
,
51 const TextureMailbox
& texture_mailbox
,
52 scoped_ptr
<SingleReleaseCallback
> release_callback
);
55 scoped_ptr
<SkBitmap
> bitmap_
;
56 TextureMailbox texture_mailbox_
;
57 scoped_ptr
<SingleReleaseCallback
> release_callback_
;
62 #endif // CC_OUTPUT_COPY_OUTPUT_RESULT_H_