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

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

Issue 388253004: Drawing an animated image to a canvas now behave as expected (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 5 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) 2 * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
3 * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc. All rights reserved. 3 * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc. All rights reserved.
4 * Copyright (C) 2008-2009 Torch Mobile, Inc. 4 * Copyright (C) 2008-2009 Torch Mobile, Inc.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 // automatically pause once all observers no longer want to render the image anywhere. 76 // automatically pause once all observers no longer want to render the image anywhere.
77 virtual void stopAnimation() OVERRIDE; 77 virtual void stopAnimation() OVERRIDE;
78 virtual void resetAnimation() OVERRIDE; 78 virtual void resetAnimation() OVERRIDE;
79 virtual bool maybeAnimated() OVERRIDE; 79 virtual bool maybeAnimated() OVERRIDE;
80 80
81 virtual PassRefPtr<NativeImageSkia> nativeImageForCurrentFrame() OVERRIDE; 81 virtual PassRefPtr<NativeImageSkia> nativeImageForCurrentFrame() OVERRIDE;
82 virtual bool currentFrameKnownToBeOpaque() OVERRIDE; 82 virtual bool currentFrameKnownToBeOpaque() OVERRIDE;
83 83
84 ImageOrientation currentFrameOrientation(); 84 ImageOrientation currentFrameOrientation();
85 85
86 PassRefPtr<NativeImageSkia> frameAtIndex(size_t);
87
86 #if ASSERT_ENABLED 88 #if ASSERT_ENABLED
87 virtual bool notSolidColor() OVERRIDE; 89 virtual bool notSolidColor() OVERRIDE;
88 #endif 90 #endif
89 91
90 private: 92 private:
91 friend class BitmapImageTest; 93 friend class BitmapImageTest;
92 94
93 void updateSize() const; 95 void updateSize() const;
94 96
95 protected: 97 protected:
96 enum RepetitionCountStatus { 98 enum RepetitionCountStatus {
97 Unknown, // We haven't checked the source's repetition count. 99 Unknown, // We haven't checked the source's repetition count.
98 Uncertain, // We have a repetition count, but it might be wrong (some GIF s have a count after the image data, and will report "loop once" until all data has been decoded). 100 Uncertain, // We have a repetition count, but it might be wrong (some GIF s have a count after the image data, and will report "loop once" until all data has been decoded).
99 Certain // The repetition count is known to be correct. 101 Certain // The repetition count is known to be correct.
100 }; 102 };
101 103
102 BitmapImage(PassRefPtr<NativeImageSkia>, ImageObserver* = 0); 104 BitmapImage(PassRefPtr<NativeImageSkia>, ImageObserver* = 0);
103 BitmapImage(ImageObserver* = 0); 105 BitmapImage(ImageObserver* = 0);
104 106
105 virtual void draw(GraphicsContext*, const FloatRect& dstRect, const FloatRec t& srcRect, CompositeOperator, blink::WebBlendMode) OVERRIDE; 107 virtual void draw(GraphicsContext*, const FloatRect& dstRect, const FloatRec t& srcRect, CompositeOperator, blink::WebBlendMode) OVERRIDE;
106 virtual void draw(GraphicsContext*, const FloatRect& dstRect, const FloatRec t& srcRect, CompositeOperator, blink::WebBlendMode, RespectImageOrientationEnum) OVERRIDE; 108 virtual void draw(GraphicsContext*, const FloatRect& dstRect, const FloatRec t& srcRect, CompositeOperator, blink::WebBlendMode, RespectImageOrientationEnum) OVERRIDE;
107 109
108 size_t currentFrame() const { return m_currentFrame; } 110 size_t currentFrame() const { return m_currentFrame; }
109 size_t frameCount(); 111 size_t frameCount();
110 PassRefPtr<NativeImageSkia> frameAtIndex(size_t);
111 bool frameIsCompleteAtIndex(size_t); 112 bool frameIsCompleteAtIndex(size_t);
112 float frameDurationAtIndex(size_t); 113 float frameDurationAtIndex(size_t);
113 bool frameHasAlphaAtIndex(size_t); 114 bool frameHasAlphaAtIndex(size_t);
114 ImageOrientation frameOrientationAtIndex(size_t); 115 ImageOrientation frameOrientationAtIndex(size_t);
115 116
116 // Decodes and caches a frame. Never accessed except internally. 117 // Decodes and caches a frame. Never accessed except internally.
117 void cacheFrame(size_t index); 118 void cacheFrame(size_t index);
118 // Called before accessing m_frames[index]. Returns false on index out of bo unds. 119 // Called before accessing m_frames[index]. Returns false on index out of bo unds.
119 bool ensureFrameIsCached(size_t index); 120 bool ensureFrameIsCached(size_t index);
120 121
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 bool m_sizeAvailable : 1; // Whether or not we can obtain the size of the fi rst image frame yet from ImageIO. 187 bool m_sizeAvailable : 1; // Whether or not we can obtain the size of the fi rst image frame yet from ImageIO.
187 mutable bool m_hasUniformFrameSize : 1; 188 mutable bool m_hasUniformFrameSize : 1;
188 mutable bool m_haveFrameCount : 1; 189 mutable bool m_haveFrameCount : 1;
189 }; 190 };
190 191
191 DEFINE_IMAGE_TYPE_CASTS(BitmapImage); 192 DEFINE_IMAGE_TYPE_CASTS(BitmapImage);
192 193
193 } 194 }
194 195
195 #endif 196 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698