Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(231)

Side by Side Diff: Source/platform/graphics/DeferredImageDecoder.h

Issue 985583002: Don't cache any SkBitmaps in DeferredImageDecoder (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: done now Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 12 matching lines...) Expand all
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */ 24 */
25 25
26 #ifndef DeferredImageDecoder_h 26 #ifndef DeferredImageDecoder_h
27 #define DeferredImageDecoder_h 27 #define DeferredImageDecoder_h
28 28
29 #include "SkBitmap.h" 29 #include "SkBitmap.h"
30 #include "SkPixelRef.h" 30 #include "SkPixelRef.h"
31 #include "platform/PlatformExport.h" 31 #include "platform/PlatformExport.h"
32 #include "platform/geometry/IntSize.h" 32 #include "platform/geometry/IntSize.h"
33 #include "platform/graphics/FrameData.h"
33 #include "platform/graphics/ImageFrameGenerator.h" 34 #include "platform/graphics/ImageFrameGenerator.h"
34 #include "platform/graphics/ImageSource.h" 35 #include "platform/graphics/ImageSource.h"
35 #include "platform/image-decoders/ImageDecoder.h" 36 #include "platform/image-decoders/ImageDecoder.h"
36 #include "wtf/Forward.h" 37 #include "wtf/Forward.h"
37 #include "wtf/OwnPtr.h" 38 #include "wtf/OwnPtr.h"
38 #include "wtf/Vector.h" 39 #include "wtf/Vector.h"
39 40
40 namespace blink { 41 namespace blink {
41 42
42 class ImageFrameGenerator; 43 class ImageFrameGenerator;
43 class SharedBuffer; 44 class SharedBuffer;
44 45
45 class PLATFORM_EXPORT DeferredImageDecoder { 46 class PLATFORM_EXPORT DeferredImageDecoder {
46 WTF_MAKE_NONCOPYABLE(DeferredImageDecoder); 47 WTF_MAKE_NONCOPYABLE(DeferredImageDecoder);
47 public: 48 public:
48 ~DeferredImageDecoder(); 49 ~DeferredImageDecoder();
49 static PassOwnPtr<DeferredImageDecoder> create(const SharedBuffer& data, Ima geSource::AlphaOption, ImageSource::GammaAndColorProfileOption); 50 static PassOwnPtr<DeferredImageDecoder> create(const SharedBuffer& data, Ima geSource::AlphaOption, ImageSource::GammaAndColorProfileOption);
50 51
51 static PassOwnPtr<DeferredImageDecoder> createForTesting(PassOwnPtr<ImageDec oder>); 52 static PassOwnPtr<DeferredImageDecoder> createForTesting(PassOwnPtr<ImageDec oder>);
52 53
53 static bool isLazyDecoded(const SkBitmap&); 54 static bool isLazyDecoded(const SkBitmap&);
54 55
55 static void setEnabled(bool); 56 static void setEnabled(bool);
56 static bool enabled(); 57 static bool enabled();
57 58
58 String filenameExtension() const; 59 String filenameExtension() const;
59 60
60 ImageFrame* frameBufferAtIndex(size_t index); 61 PassRefPtr<NativeImageSkia> createFrameAtIndex(size_t);
61 62
62 void setData(SharedBuffer& data, bool allDataReceived); 63 void setData(SharedBuffer& data, bool allDataReceived);
63 64
64 bool isSizeAvailable(); 65 bool isSizeAvailable();
65 bool hasColorProfile() const; 66 bool hasColorProfile() const;
66 IntSize size() const; 67 IntSize size() const;
67 IntSize frameSizeAtIndex(size_t index) const; 68 IntSize frameSizeAtIndex(size_t index) const;
68 size_t frameCount(); 69 size_t frameCount();
69 int repetitionCount() const; 70 int repetitionCount() const;
70 size_t clearCacheExceptFrame(size_t); 71 size_t clearCacheExceptFrame(size_t);
71 bool frameHasAlphaAtIndex(size_t index) const; 72 bool frameHasAlphaAtIndex(size_t index) const;
72 bool frameIsCompleteAtIndex(size_t) const; 73 bool frameIsCompleteAtIndex(size_t) const;
73 float frameDurationAtIndex(size_t) const; 74 float frameDurationAtIndex(size_t) const;
74 unsigned frameBytesAtIndex(size_t index) const; 75 unsigned frameBytesAtIndex(size_t index) const;
75 ImageOrientation orientation() const; 76 ImageOrientation orientationAtIndex(size_t index) const;
76 bool hotSpot(IntPoint&) const; 77 bool hotSpot(IntPoint&) const;
77 78
78 // For testing. 79 // For testing.
79 ImageFrameGenerator* frameGenerator() { return m_frameGenerator.get(); } 80 ImageFrameGenerator* frameGenerator() { return m_frameGenerator.get(); }
80 81
81 private: 82 private:
82 explicit DeferredImageDecoder(PassOwnPtr<ImageDecoder> actualDecoder); 83 explicit DeferredImageDecoder(PassOwnPtr<ImageDecoder> actualDecoder);
83 void prepareLazyDecodedFrames(); 84 void prepareLazyDecodedFrames();
84 SkBitmap createBitmap(size_t index); 85 SkBitmap createBitmap(size_t index);
85 void activateLazyDecoding(); 86 void activateLazyDecoding();
86 87
87 RefPtr<SharedBuffer> m_data; 88 RefPtr<SharedBuffer> m_data;
88 bool m_allDataReceived; 89 bool m_allDataReceived;
89 unsigned m_lastDataSize; 90 unsigned m_lastDataSize;
90 bool m_dataChanged;
91 OwnPtr<ImageDecoder> m_actualDecoder; 91 OwnPtr<ImageDecoder> m_actualDecoder;
92 92
93 String m_filenameExtension; 93 String m_filenameExtension;
94 IntSize m_size; 94 IntSize m_size;
95 ImageOrientation m_orientation; 95 ImageOrientation m_orientation;
96 int m_repetitionCount; 96 int m_repetitionCount;
97 bool m_hasColorProfile; 97 bool m_hasColorProfile;
98 98
99 Vector<OwnPtr<ImageFrame>> m_lazyDecodedFrames; 99 // Carries only frame state and other information. Does not carry bitmap.
100 Vector<FrameData> m_frameData;
100 RefPtr<ImageFrameGenerator> m_frameGenerator; 101 RefPtr<ImageFrameGenerator> m_frameGenerator;
101 102
102 static bool s_enabled; 103 static bool s_enabled;
103 }; 104 };
104 105
105 } // namespace blink 106 } // namespace blink
106 107
107 #endif 108 #endif
OLDNEW
« no previous file with comments | « Source/platform/graphics/BitmapImageTest.cpp ('k') | Source/platform/graphics/DeferredImageDecoder.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698