OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 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 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 m_formatFlags = WebPDemuxGetI(m_demux, WEBP_FF_FORMAT_FLAGS); | 220 m_formatFlags = WebPDemuxGetI(m_demux, WEBP_FF_FORMAT_FLAGS); |
221 if (!(m_formatFlags & ANIMATION_FLAG)) { | 221 if (!(m_formatFlags & ANIMATION_FLAG)) { |
222 m_repetitionCount = cAnimationNone; | 222 m_repetitionCount = cAnimationNone; |
223 } else { | 223 } else { |
224 // Since we have parsed at least one frame, even if partially, | 224 // Since we have parsed at least one frame, even if partially, |
225 // the global animation (ANIM) properties have been read since | 225 // the global animation (ANIM) properties have been read since |
226 // an ANIM chunk must precede the ANMF frame chunks. | 226 // an ANIM chunk must precede the ANMF frame chunks. |
227 m_repetitionCount = WebPDemuxGetI(m_demux, WEBP_FF_LOOP_COUNT); | 227 m_repetitionCount = WebPDemuxGetI(m_demux, WEBP_FF_LOOP_COUNT); |
228 // Repetition count is always <= 16 bits. | 228 // Repetition count is always <= 16 bits. |
229 ASSERT(m_repetitionCount == (m_repetitionCount & 0xffff)); | 229 ASSERT(m_repetitionCount == (m_repetitionCount & 0xffff)); |
230 // Repetition count is the number of animation cycles to show, | 230 if (!m_repetitionCount) |
231 // where 0 means "infinite". But ImageSource::repetitionCount() | 231 m_repetitionCount = cAnimationLoopInfinite; |
232 // returns -1 for "infinite", and 0 and up for "show the image | |
233 // animation one cycle more than the value". Subtract one here | |
234 // to correctly handle the finite and infinite cases. | |
235 --m_repetitionCount; | |
236 // FIXME: Implement ICC profile support for animated images. | 232 // FIXME: Implement ICC profile support for animated images. |
237 m_formatFlags &= ~ICCP_FLAG; | 233 m_formatFlags &= ~ICCP_FLAG; |
238 } | 234 } |
239 | 235 |
240 #if USE(QCMSLIB) | 236 #if USE(QCMSLIB) |
241 if ((m_formatFlags & ICCP_FLAG) && !ignoresGammaAndColorProfile()) | 237 if ((m_formatFlags & ICCP_FLAG) && !ignoresGammaAndColorProfile()) |
242 readColorProfile(); | 238 readColorProfile(); |
243 #endif | 239 #endif |
244 } | 240 } |
245 | 241 |
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
556 return false; | 552 return false; |
557 } | 553 } |
558 // FALLTHROUGH | 554 // FALLTHROUGH |
559 default: | 555 default: |
560 clear(); | 556 clear(); |
561 return setFailed(); | 557 return setFailed(); |
562 } | 558 } |
563 } | 559 } |
564 | 560 |
565 } // namespace blink | 561 } // namespace blink |
OLD | NEW |