OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "core/CoreExport.h" | 5 #include "core/CoreExport.h" |
6 #include "core/dom/DOMTypedArray.h" | 6 #include "core/dom/DOMTypedArray.h" |
7 #include "core/fileapi/BlobCallback.h" | 7 #include "core/fileapi/BlobCallback.h" |
8 #include "platform/geometry/IntSize.h" | 8 #include "platform/geometry/IntSize.h" |
9 #include "platform/heap/Handle.h" | 9 #include "platform/heap/Handle.h" |
10 #include "wtf/OwnPtr.h" | 10 #include "wtf/OwnPtr.h" |
11 #include "wtf/PassOwnPtr.h" | 11 #include "wtf/PassOwnPtr.h" |
12 #include "wtf/Vector.h" | 12 #include "wtf/Vector.h" |
13 #include "wtf/text/WTFString.h" | 13 #include "wtf/text/WTFString.h" |
14 | 14 |
15 namespace blink { | 15 namespace blink { |
16 | 16 |
17 class PNGImageEncoderState; | 17 class PNGImageEncoderState; |
18 class JPEGImageEncoderState; | 18 class JPEGImageEncoderState; |
19 | 19 |
20 class CORE_EXPORT CanvasAsyncBlobCreator | 20 class CORE_EXPORT CanvasAsyncBlobCreator : public GarbageCollectedFinalized<Canv
asAsyncBlobCreator> { |
21 : public RefCounted<CanvasAsyncBlobCreator> { | |
22 public: | 21 public: |
23 static PassRefPtr<CanvasAsyncBlobCreator> create(PassRefPtr<DOMUint8ClampedA
rray> unpremultipliedRGBAImageData, const String& mimeType, const IntSize&, Blob
Callback*); | 22 static CanvasAsyncBlobCreator* create(DOMUint8ClampedArray* unpremultipliedR
GBAImageData, const String& mimeType, const IntSize&, BlobCallback*); |
24 void scheduleAsyncBlobCreation(bool canUseIdlePeriodScheduling, double quali
ty = 0.0); | 23 void scheduleAsyncBlobCreation(bool canUseIdlePeriodScheduling, double quali
ty = 0.0); |
25 virtual ~CanvasAsyncBlobCreator(); | 24 virtual ~CanvasAsyncBlobCreator(); |
26 | 25 |
| 26 DEFINE_INLINE_VIRTUAL_TRACE() |
| 27 { |
| 28 visitor->trace(m_data); |
| 29 } |
| 30 |
27 private: | 31 private: |
28 CanvasAsyncBlobCreator(PassRefPtr<DOMUint8ClampedArray> data, const String&
mimeType, const IntSize&, BlobCallback*); | 32 CanvasAsyncBlobCreator(DOMUint8ClampedArray* data, const String& mimeType, c
onst IntSize&, BlobCallback*); |
29 void scheduleCreateBlobAndCallOnMainThread(); | 33 void scheduleCreateBlobAndCallOnMainThread(); |
30 void scheduleCreateNullptrAndCallOnMainThread(); | 34 void scheduleCreateNullptrAndCallOnMainThread(); |
31 | 35 |
32 OwnPtr<PNGImageEncoderState> m_pngEncoderState; | 36 OwnPtr<PNGImageEncoderState> m_pngEncoderState; |
33 OwnPtr<JPEGImageEncoderState> m_jpegEncoderState; | 37 OwnPtr<JPEGImageEncoderState> m_jpegEncoderState; |
34 RefPtr<DOMUint8ClampedArray> m_data; | 38 Member<DOMUint8ClampedArray> m_data; |
35 OwnPtr<Vector<unsigned char>> m_encodedImage; | 39 OwnPtr<Vector<unsigned char>> m_encodedImage; |
36 int m_numRowsCompleted; | 40 int m_numRowsCompleted; |
37 | 41 |
38 const IntSize m_size; | 42 const IntSize m_size; |
39 size_t m_pixelRowStride; | 43 size_t m_pixelRowStride; |
40 const String m_mimeType; | 44 const String m_mimeType; |
41 CrossThreadPersistent<BlobCallback> m_callback; | 45 CrossThreadPersistent<BlobCallback> m_callback; |
42 | 46 |
43 RefPtr<CanvasAsyncBlobCreator> m_selfRef; | 47 SelfKeepAlive<CanvasAsyncBlobCreator> m_keepAlive; |
44 void clearSelfReference(); | 48 void clearSelfReference(); |
45 | 49 |
46 void initiatePngEncoding(double deadlineSeconds); | 50 void initiatePngEncoding(double deadlineSeconds); |
47 void scheduleIdleEncodeRowsPng(); | 51 void scheduleIdleEncodeRowsPng(); |
48 void idleEncodeRowsPng(double deadlineSeconds); | 52 void idleEncodeRowsPng(double deadlineSeconds); |
49 | 53 |
50 void initiateJpegEncoding(const double& quality); | 54 void initiateJpegEncoding(const double& quality); |
51 | 55 |
52 void createBlobAndCall(); | 56 void createBlobAndCall(); |
53 | 57 |
54 void encodeImageOnEncoderThread(double quality); | 58 void encodeImageOnEncoderThread(double quality); |
55 }; | 59 }; |
56 | 60 |
57 } // namespace blink | 61 } // namespace blink |
OLD | NEW |