OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008-2009 Torch Mobile, Inc. | 2 * Copyright (C) 2008-2009 Torch Mobile, Inc. |
3 * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved. | 3 * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved. |
4 * | 4 * |
5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
9 * | 9 * |
10 * This library is distributed in the hope that it will be useful, | 10 * This library is distributed in the hope that it will be useful, |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 return adoptPtr(new WEBPImageDecoder(alphaOption, gammaAndColorProfileOp
tion)); | 113 return adoptPtr(new WEBPImageDecoder(alphaOption, gammaAndColorProfileOp
tion)); |
114 | 114 |
115 if (matchesBMPSignature(contents)) | 115 if (matchesBMPSignature(contents)) |
116 return adoptPtr(new BMPImageDecoder(alphaOption, gammaAndColorProfileOpt
ion)); | 116 return adoptPtr(new BMPImageDecoder(alphaOption, gammaAndColorProfileOpt
ion)); |
117 | 117 |
118 return nullptr; | 118 return nullptr; |
119 } | 119 } |
120 | 120 |
121 bool ImageDecoder::frameHasAlphaAtIndex(size_t index) const | 121 bool ImageDecoder::frameHasAlphaAtIndex(size_t index) const |
122 { | 122 { |
123 if (m_frameBufferCache.size() <= index) | 123 return !frameIsCompleteAtIndex(index) || m_frameBufferCache[index].hasAlpha(
); |
124 return true; | 124 } |
125 if (m_frameBufferCache[index].status() == ImageFrame::FrameComplete) | 125 |
126 return m_frameBufferCache[index].hasAlpha(); | 126 bool ImageDecoder::frameIsCompleteAtIndex(size_t index) const |
127 return true; | 127 { |
| 128 return (index < m_frameBufferCache.size()) && |
| 129 (m_frameBufferCache[index].status() == ImageFrame::FrameComplete); |
128 } | 130 } |
129 | 131 |
130 unsigned ImageDecoder::frameBytesAtIndex(size_t index) const | 132 unsigned ImageDecoder::frameBytesAtIndex(size_t index) const |
131 { | 133 { |
132 if (m_frameBufferCache.size() <= index) | 134 if (m_frameBufferCache.size() <= index) |
133 return 0; | 135 return 0; |
134 // FIXME: Use the dimension of the requested frame. | 136 // FIXME: Use the dimension of the requested frame. |
135 return m_size.area() * sizeof(ImageFrame::PixelData); | 137 return m_size.area() * sizeof(ImageFrame::PixelData); |
136 } | 138 } |
137 | 139 |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 { | 221 { |
220 return getScaledValue<LowerBound>(m_scaledRows, origY, searchStart); | 222 return getScaledValue<LowerBound>(m_scaledRows, origY, searchStart); |
221 } | 223 } |
222 | 224 |
223 int ImageDecoder::scaledY(int origY, int searchStart) | 225 int ImageDecoder::scaledY(int origY, int searchStart) |
224 { | 226 { |
225 return getScaledValue<Exact>(m_scaledRows, origY, searchStart); | 227 return getScaledValue<Exact>(m_scaledRows, origY, searchStart); |
226 } | 228 } |
227 | 229 |
228 } // namespace WebCore | 230 } // namespace WebCore |
OLD | NEW |