| OLD | NEW | 
|   1 /* |   1 /* | 
|   2  * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved. |   2  * Copyright (C) 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 28 matching lines...) Expand all  Loading... | 
|  39 // This class decodes the GIF image format. |  39 // This class decodes the GIF image format. | 
|  40 class PLATFORM_EXPORT GIFImageDecoder : public ImageDecoder { |  40 class PLATFORM_EXPORT GIFImageDecoder : public ImageDecoder { | 
|  41     WTF_MAKE_NONCOPYABLE(GIFImageDecoder); |  41     WTF_MAKE_NONCOPYABLE(GIFImageDecoder); | 
|  42 public: |  42 public: | 
|  43     GIFImageDecoder(ImageSource::AlphaOption, ImageSource::GammaAndColorProfileO
    ption, size_t maxDecodedBytes); |  43     GIFImageDecoder(ImageSource::AlphaOption, ImageSource::GammaAndColorProfileO
    ption, size_t maxDecodedBytes); | 
|  44     virtual ~GIFImageDecoder(); |  44     virtual ~GIFImageDecoder(); | 
|  45  |  45  | 
|  46     enum GIFParseQuery { GIFSizeQuery, GIFFrameCountQuery }; |  46     enum GIFParseQuery { GIFSizeQuery, GIFFrameCountQuery }; | 
|  47  |  47  | 
|  48     // ImageDecoder |  48     // ImageDecoder | 
|  49     virtual String filenameExtension() const OVERRIDE { return "gif"; } |  49     virtual String filenameExtension() const override { return "gif"; } | 
|  50     virtual void setData(SharedBuffer* data, bool allDataReceived) OVERRIDE; |  50     virtual void setData(SharedBuffer* data, bool allDataReceived) override; | 
|  51     virtual bool isSizeAvailable() OVERRIDE; |  51     virtual bool isSizeAvailable() override; | 
|  52     virtual size_t frameCount() OVERRIDE; |  52     virtual size_t frameCount() override; | 
|  53     virtual int repetitionCount() const OVERRIDE; |  53     virtual int repetitionCount() const override; | 
|  54     virtual ImageFrame* frameBufferAtIndex(size_t) OVERRIDE; |  54     virtual ImageFrame* frameBufferAtIndex(size_t) override; | 
|  55     virtual bool frameIsCompleteAtIndex(size_t) const OVERRIDE; |  55     virtual bool frameIsCompleteAtIndex(size_t) const override; | 
|  56     virtual float frameDurationAtIndex(size_t) const OVERRIDE; |  56     virtual float frameDurationAtIndex(size_t) const override; | 
|  57     virtual size_t clearCacheExceptFrame(size_t) OVERRIDE; |  57     virtual size_t clearCacheExceptFrame(size_t) override; | 
|  58     // CAUTION: setFailed() deletes |m_reader|.  Be careful to avoid |  58     // CAUTION: setFailed() deletes |m_reader|.  Be careful to avoid | 
|  59     // accessing deleted memory, especially when calling this from inside |  59     // accessing deleted memory, especially when calling this from inside | 
|  60     // GIFImageReader! |  60     // GIFImageReader! | 
|  61     virtual bool setFailed() OVERRIDE; |  61     virtual bool setFailed() override; | 
|  62  |  62  | 
|  63     // Callbacks from the GIF reader. |  63     // Callbacks from the GIF reader. | 
|  64     bool haveDecodedRow(size_t frameIndex, GIFRow::const_iterator rowBegin, size
    _t width, size_t rowNumber, unsigned repeatCount, bool writeTransparentPixels); |  64     bool haveDecodedRow(size_t frameIndex, GIFRow::const_iterator rowBegin, size
    _t width, size_t rowNumber, unsigned repeatCount, bool writeTransparentPixels); | 
|  65     bool frameComplete(size_t frameIndex); |  65     bool frameComplete(size_t frameIndex); | 
|  66  |  66  | 
|  67     // For testing. |  67     // For testing. | 
|  68     bool parseCompleted() const; |  68     bool parseCompleted() const; | 
|  69  |  69  | 
|  70 private: |  70 private: | 
|  71     virtual void clearFrameBuffer(size_t frameIndex) OVERRIDE; |  71     virtual void clearFrameBuffer(size_t frameIndex) override; | 
|  72  |  72  | 
|  73     // Parses as much as is needed to answer the query, ignoring bitmap |  73     // Parses as much as is needed to answer the query, ignoring bitmap | 
|  74     // data. If parsing fails, sets the "decode failure" flag. |  74     // data. If parsing fails, sets the "decode failure" flag. | 
|  75     void parse(GIFParseQuery); |  75     void parse(GIFParseQuery); | 
|  76  |  76  | 
|  77     // Decodes bitmap data of the frame. Depending on the disposal method |  77     // Decodes bitmap data of the frame. Depending on the disposal method | 
|  78     // of prior frames, also decodes all required prior frames. If decoding |  78     // of prior frames, also decodes all required prior frames. If decoding | 
|  79     // fails, sets the "decode failure" flag. |  79     // fails, sets the "decode failure" flag. | 
|  80     void decode(size_t frameIndex); |  80     void decode(size_t frameIndex); | 
|  81  |  81  | 
|  82     // Called to initialize the frame buffer with the given index, based on |  82     // Called to initialize the frame buffer with the given index, based on | 
|  83     // the previous frame's disposal method. Returns true on success. On |  83     // the previous frame's disposal method. Returns true on success. On | 
|  84     // failure, this will mark the image as failed. |  84     // failure, this will mark the image as failed. | 
|  85     bool initFrameBuffer(size_t frameIndex); |  85     bool initFrameBuffer(size_t frameIndex); | 
|  86  |  86  | 
|  87     bool m_currentBufferSawAlpha; |  87     bool m_currentBufferSawAlpha; | 
|  88     mutable int m_repetitionCount; |  88     mutable int m_repetitionCount; | 
|  89     OwnPtr<GIFImageReader> m_reader; |  89     OwnPtr<GIFImageReader> m_reader; | 
|  90 }; |  90 }; | 
|  91  |  91  | 
|  92 } // namespace blink |  92 } // namespace blink | 
|  93  |  93  | 
|  94 #endif |  94 #endif | 
| OLD | NEW |