Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(245)

Side by Side Diff: third_party/WebKit/Source/platform/image-decoders/png/PNGImageDecoder.cpp

Issue 2749703002: Refactor ImageFrame::setSizeAndColorSpace() (Closed)
Patch Set: Fix alloc returned value flipped Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 // Initialize the framebuffer if needed. 205 // Initialize the framebuffer if needed.
206 ImageFrame& buffer = m_frameBufferCache[0]; 206 ImageFrame& buffer = m_frameBufferCache[0];
207 if (buffer.getStatus() == ImageFrame::FrameEmpty) { 207 if (buffer.getStatus() == ImageFrame::FrameEmpty) {
208 png_structp png = m_reader->pngPtr(); 208 png_structp png = m_reader->pngPtr();
209 if (!buffer.setSizeAndColorSpace(size().width(), size().height(), 209 if (!buffer.setSizeAndColorSpace(size().width(), size().height(),
210 colorSpaceForSkImages())) { 210 colorSpaceForSkImages())) {
211 longjmp(JMPBUF(png), 1); 211 longjmp(JMPBUF(png), 1);
212 return; 212 return;
213 } 213 }
214 214
215 buffer.zeroFillPixelData();
216
215 unsigned colorChannels = m_reader->hasAlpha() ? 4 : 3; 217 unsigned colorChannels = m_reader->hasAlpha() ? 4 : 3;
216 if (PNG_INTERLACE_ADAM7 == 218 if (PNG_INTERLACE_ADAM7 ==
217 png_get_interlace_type(png, m_reader->infoPtr())) { 219 png_get_interlace_type(png, m_reader->infoPtr())) {
218 m_reader->createInterlaceBuffer(colorChannels * size().width() * 220 m_reader->createInterlaceBuffer(colorChannels * size().width() *
219 size().height()); 221 size().height());
220 if (!m_reader->interlaceBuffer()) { 222 if (!m_reader->interlaceBuffer()) {
221 longjmp(JMPBUF(png), 1); 223 longjmp(JMPBUF(png), 1);
222 return; 224 return;
223 } 225 }
224 } 226 }
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 // has failed. 365 // has failed.
364 if (!m_reader->decode(*m_data, onlySize) && isAllDataReceived()) 366 if (!m_reader->decode(*m_data, onlySize) && isAllDataReceived())
365 setFailed(); 367 setFailed();
366 368
367 // If decoding is done or failed, we don't need the PNGImageReader anymore. 369 // If decoding is done or failed, we don't need the PNGImageReader anymore.
368 if (isComplete(this) || failed()) 370 if (isComplete(this) || failed())
369 m_reader.reset(); 371 m_reader.reset();
370 } 372 }
371 373
372 } // namespace blink 374 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698