| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc. All rights reserved. | 2 * Copyright (C) 2004, 2005, 2006 Apple Computer, 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 23 matching lines...) Expand all Loading... |
| 34 | 34 |
| 35 namespace blink { | 35 namespace blink { |
| 36 | 36 |
| 37 class DeferredImageDecoder; | 37 class DeferredImageDecoder; |
| 38 class ImageOrientation; | 38 class ImageOrientation; |
| 39 class IntPoint; | 39 class IntPoint; |
| 40 class IntSize; | 40 class IntSize; |
| 41 class NativeImageSkia; | 41 class NativeImageSkia; |
| 42 class SharedBuffer; | 42 class SharedBuffer; |
| 43 | 43 |
| 44 // GIF and WebP support animation. The explanation below is in terms of GIF, | 44 // This is a helper class used by BitmapImage only. If you need an image |
| 45 // but the same constants are used for WebP, too. | 45 // decoder then you should look into |
| 46 // GIFs have an optional 16-bit unsigned loop count that describes how an | 46 // Source/platform/image-decoders/ImageDecoder.h. |
| 47 // animated GIF should be cycled. If the loop count is absent, the animation | |
| 48 // cycles once; if it is 0, the animation cycles infinitely; otherwise the | |
| 49 // animation plays n + 1 cycles (where n is the specified loop count). If the | |
| 50 // GIF decoder defaults to cAnimationLoopOnce in the absence of any loop count | |
| 51 // and translates an explicit "0" loop count to cAnimationLoopInfinite, then we | |
| 52 // get a couple of nice side effects: | |
| 53 // * By making cAnimationLoopOnce be 0, we allow the animation cycling code in | |
| 54 // BitmapImage.cpp to avoid special-casing it, and simply treat all | |
| 55 // non-negative loop counts identically. | |
| 56 // * By making the other two constants negative, we avoid conflicts with any | |
| 57 // real loop count values. | |
| 58 const int cAnimationLoopOnce = 0; | |
| 59 const int cAnimationLoopInfinite = -1; | |
| 60 const int cAnimationNone = -2; | |
| 61 | |
| 62 class PLATFORM_EXPORT ImageSource { | 47 class PLATFORM_EXPORT ImageSource { |
| 63 WTF_MAKE_NONCOPYABLE(ImageSource); | 48 WTF_MAKE_NONCOPYABLE(ImageSource); |
| 64 public: | 49 public: |
| 65 enum AlphaOption { | 50 enum AlphaOption { |
| 66 AlphaPremultiplied, | 51 AlphaPremultiplied, |
| 67 AlphaNotPremultiplied | 52 AlphaNotPremultiplied |
| 68 }; | 53 }; |
| 69 | 54 |
| 70 enum GammaAndColorProfileOption { | 55 enum GammaAndColorProfileOption { |
| 71 GammaAndColorProfileApplied, | 56 GammaAndColorProfileApplied, |
| (...skipping 16 matching lines...) Expand all Loading... |
| 88 // earlier frame may require more work to be done, e.g. redecoding the image | 73 // earlier frame may require more work to be done, e.g. redecoding the image |
| 89 // from the beginning. | 74 // from the beginning. |
| 90 // | 75 // |
| 91 // Implementations may elect to preserve more frames than the one requested | 76 // Implementations may elect to preserve more frames than the one requested |
| 92 // here if doing so is likely to save CPU time in the future, but will pay | 77 // here if doing so is likely to save CPU time in the future, but will pay |
| 93 // an increased memory cost to do so. | 78 // an increased memory cost to do so. |
| 94 // | 79 // |
| 95 // Returns the number of bytes of frame data actually cleared. | 80 // Returns the number of bytes of frame data actually cleared. |
| 96 size_t clearCacheExceptFrame(size_t); | 81 size_t clearCacheExceptFrame(size_t); |
| 97 | 82 |
| 98 bool initialized() const; | |
| 99 void resetDecoder(); | |
| 100 | |
| 101 void setData(SharedBuffer& data, bool allDataReceived); | 83 void setData(SharedBuffer& data, bool allDataReceived); |
| 102 String filenameExtension() const; | 84 String filenameExtension() const; |
| 103 | 85 |
| 104 bool isSizeAvailable(); | 86 bool isSizeAvailable(); |
| 105 bool hasColorProfile() const; | 87 bool hasColorProfile() const; |
| 106 IntSize size(RespectImageOrientationEnum = DoNotRespectImageOrientation) con
st; | 88 IntSize size(RespectImageOrientationEnum = DoNotRespectImageOrientation) con
st; |
| 107 IntSize frameSizeAtIndex(size_t, RespectImageOrientationEnum = DoNotRespectI
mageOrientation) const; | 89 IntSize frameSizeAtIndex(size_t, RespectImageOrientationEnum = DoNotRespectI
mageOrientation) const; |
| 108 | 90 |
| 109 bool getHotSpot(IntPoint&) const; | 91 bool getHotSpot(IntPoint&) const; |
| 110 | |
| 111 // Returns one of the cAnimationXXX constants at the top of the file, or | |
| 112 // a loop count. In the latter case, the actual number of times the animatio
n | |
| 113 // cycles is one more than the loop count. See comment atop the file. | |
| 114 int repetitionCount(); | 92 int repetitionCount(); |
| 115 | 93 |
| 116 size_t frameCount() const; | 94 size_t frameCount() const; |
| 117 | 95 |
| 118 PassRefPtr<NativeImageSkia> createFrameAtIndex(size_t); | 96 PassRefPtr<NativeImageSkia> createFrameAtIndex(size_t); |
| 119 | 97 |
| 120 float frameDurationAtIndex(size_t) const; | 98 float frameDurationAtIndex(size_t) const; |
| 121 bool frameHasAlphaAtIndex(size_t) const; // Whether or not the frame actuall
y used any alpha. | 99 bool frameHasAlphaAtIndex(size_t) const; // Whether or not the frame actuall
y used any alpha. |
| 122 bool frameIsCompleteAtIndex(size_t) const; // Whether or not the frame is fu
lly received. | 100 bool frameIsCompleteAtIndex(size_t) const; // Whether or not the frame is fu
lly received. |
| 123 ImageOrientation orientationAtIndex(size_t) const; // EXIF image orientation | 101 ImageOrientation orientationAtIndex(size_t) const; // EXIF image orientation |
| 124 | 102 |
| 125 // Return the number of bytes in the decoded frame. If the frame is not yet | 103 // Return the number of bytes in the decoded frame. If the frame is not yet |
| 126 // decoded then return 0. | 104 // decoded then return 0. |
| 127 unsigned frameBytesAtIndex(size_t) const; | 105 unsigned frameBytesAtIndex(size_t) const; |
| 128 | 106 |
| 129 private: | 107 private: |
| 130 OwnPtr<DeferredImageDecoder> m_decoder; | 108 OwnPtr<DeferredImageDecoder> m_decoder; |
| 131 | 109 |
| 132 AlphaOption m_alphaOption; | 110 AlphaOption m_alphaOption; |
| 133 GammaAndColorProfileOption m_gammaAndColorProfileOption; | 111 GammaAndColorProfileOption m_gammaAndColorProfileOption; |
| 134 }; | 112 }; |
| 135 | 113 |
| 136 } // namespace blink | 114 } // namespace blink |
| 137 | 115 |
| 138 #endif | 116 #endif |
| OLD | NEW |