| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006 Apple Computer, Inc. | 2 * Copyright (C) 2006 Apple Computer, 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 * Portions are Copyright (C) 2001 mozilla.org | 5 * Portions are Copyright (C) 2001 mozilla.org |
| 6 * | 6 * |
| 7 * Other contributors: | 7 * Other contributors: |
| 8 * Stuart Parmenter <stuart@mozilla.com> | 8 * Stuart Parmenter <stuart@mozilla.com> |
| 9 * | 9 * |
| 10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
| (...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 352 } | 352 } |
| 353 } | 353 } |
| 354 | 354 |
| 355 void PNGImageDecoder::rowAvailable(unsigned char* rowBuffer, unsigned rowIndex,
int) | 355 void PNGImageDecoder::rowAvailable(unsigned char* rowBuffer, unsigned rowIndex,
int) |
| 356 { | 356 { |
| 357 if (m_frameBufferCache.isEmpty()) | 357 if (m_frameBufferCache.isEmpty()) |
| 358 return; | 358 return; |
| 359 | 359 |
| 360 // Initialize the framebuffer if needed. | 360 // Initialize the framebuffer if needed. |
| 361 ImageFrame& buffer = m_frameBufferCache[0]; | 361 ImageFrame& buffer = m_frameBufferCache[0]; |
| 362 if (buffer.status() == ImageFrame::FrameEmpty) { | 362 if (buffer.getStatus() == ImageFrame::FrameEmpty) { |
| 363 png_structp png = m_reader->pngPtr(); | 363 png_structp png = m_reader->pngPtr(); |
| 364 if (!buffer.setSize(size().width(), size().height())) { | 364 if (!buffer.setSize(size().width(), size().height())) { |
| 365 longjmp(JMPBUF(png), 1); | 365 longjmp(JMPBUF(png), 1); |
| 366 return; | 366 return; |
| 367 } | 367 } |
| 368 | 368 |
| 369 unsigned colorChannels = m_reader->hasAlpha() ? 4 : 3; | 369 unsigned colorChannels = m_reader->hasAlpha() ? 4 : 3; |
| 370 if (PNG_INTERLACE_ADAM7 == png_get_interlace_type(png, m_reader->infoPtr
())) { | 370 if (PNG_INTERLACE_ADAM7 == png_get_interlace_type(png, m_reader->infoPtr
())) { |
| 371 m_reader->createInterlaceBuffer(colorChannels * size().width() * siz
e().height()); | 371 m_reader->createInterlaceBuffer(colorChannels * size().width() * siz
e().height()); |
| 372 if (!m_reader->interlaceBuffer()) { | 372 if (!m_reader->interlaceBuffer()) { |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 503 // has failed. | 503 // has failed. |
| 504 if (!m_reader->decode(*m_data, onlySize) && isAllDataReceived()) | 504 if (!m_reader->decode(*m_data, onlySize) && isAllDataReceived()) |
| 505 setFailed(); | 505 setFailed(); |
| 506 | 506 |
| 507 // If decoding is done or failed, we don't need the PNGImageReader anymore. | 507 // If decoding is done or failed, we don't need the PNGImageReader anymore. |
| 508 if (isComplete(this) || failed()) | 508 if (isComplete(this) || failed()) |
| 509 m_reader.clear(); | 509 m_reader.clear(); |
| 510 } | 510 } |
| 511 | 511 |
| 512 } // namespace blink | 512 } // namespace blink |
| OLD | NEW |