OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2008, 2009, Google Inc. All rights reserved. | 2 * Copyright (c) 2008, 2009, 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 are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * 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 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
631 // the image. | 631 // the image. |
632 const uint8_t count = readUint8(0); | 632 const uint8_t count = readUint8(0); |
633 const uint8_t code = readUint8(1); | 633 const uint8_t code = readUint8(1); |
634 if ((count || (code != 1)) && pastEndOfImage(0)) | 634 if ((count || (code != 1)) && pastEndOfImage(0)) |
635 return Failure; | 635 return Failure; |
636 | 636 |
637 // Decode. | 637 // Decode. |
638 if (!count) { | 638 if (!count) { |
639 switch (code) { | 639 switch (code) { |
640 case 0: // Magic token: EOL | 640 case 0: // Magic token: EOL |
641 // Skip any remaining pixels in this row. | 641 // Skip any remaining pixels in this row. |
642 if (m_coord.x() < m_parent->size().width()) | 642 if (m_coord.x() < m_parent->size().width()) |
643 m_buffer->setHasAlpha(true); | 643 m_buffer->setHasAlpha(true); |
644 moveBufferToNextRow(); | 644 moveBufferToNextRow(); |
645 | 645 |
646 m_decodedOffset += 2; | 646 m_decodedOffset += 2; |
647 break; | 647 break; |
648 | 648 |
649 case 1: // Magic token: EOF | 649 case 1: // Magic token: EOF |
650 // Skip any remaining pixels in the image. | 650 // Skip any remaining pixels in the image. |
651 if ((m_coord.x() < m_parent->size().width()) || | 651 if ((m_coord.x() < m_parent->size().width()) || |
652 (m_isTopDown ? (m_coord.y() < (m_parent->size().height() - 1)) | 652 (m_isTopDown ? (m_coord.y() < (m_parent->size().height() - 1)) |
653 : (m_coord.y() > 0))) | 653 : (m_coord.y() > 0))) |
654 m_buffer->setHasAlpha(true); | 654 m_buffer->setHasAlpha(true); |
655 // There's no need to move |m_coord| here to trigger the caller | 655 // There's no need to move |m_coord| here to trigger the caller |
656 // to call setPixelsChanged(). If the only thing that's changed | 656 // to call setPixelsChanged(). If the only thing that's changed |
657 // is the alpha state, that will be properly written into the | 657 // is the alpha state, that will be properly written into the |
658 // underlying SkBitmap when we mark the frame complete. | 658 // underlying SkBitmap when we mark the frame complete. |
659 return Success; | 659 return Success; |
660 | 660 |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
842 | 842 |
843 // Finished decoding whole image. | 843 // Finished decoding whole image. |
844 return Success; | 844 return Success; |
845 } | 845 } |
846 | 846 |
847 void BMPImageReader::moveBufferToNextRow() { | 847 void BMPImageReader::moveBufferToNextRow() { |
848 m_coord.move(-m_coord.x(), m_isTopDown ? 1 : -1); | 848 m_coord.move(-m_coord.x(), m_isTopDown ? 1 : -1); |
849 } | 849 } |
850 | 850 |
851 } // namespace blink | 851 } // namespace blink |
OLD | NEW |