| 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 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 uint16_t biBitCount; | 112 uint16_t biBitCount; |
| 113 CompressionType biCompression; | 113 CompressionType biCompression; |
| 114 uint32_t biClrUsed; | 114 uint32_t biClrUsed; |
| 115 }; | 115 }; |
| 116 struct RGBTriple { | 116 struct RGBTriple { |
| 117 uint8_t rgbBlue; | 117 uint8_t rgbBlue; |
| 118 uint8_t rgbGreen; | 118 uint8_t rgbGreen; |
| 119 uint8_t rgbRed; | 119 uint8_t rgbRed; |
| 120 }; | 120 }; |
| 121 | 121 |
| 122 inline uint8_t readUint8(size_t offset) | 122 inline uint8_t readUint8(size_t offset) const |
| 123 { | 123 { |
| 124 return m_fastReader.getOneByte(m_decodedOffset + offset); | 124 return m_fastReader.getOneByte(m_decodedOffset + offset); |
| 125 } | 125 } |
| 126 | 126 |
| 127 inline uint16_t readUint16(int offset) | 127 inline uint16_t readUint16(int offset) const |
| 128 { | 128 { |
| 129 char buffer[2]; | 129 char buffer[2]; |
| 130 const char* data = m_fastReader.getConsecutiveData(m_decodedOffset + off
set, 2, buffer); | 130 const char* data = m_fastReader.getConsecutiveData(m_decodedOffset + off
set, 2, buffer); |
| 131 return readUint16(data); | 131 return readUint16(data); |
| 132 } | 132 } |
| 133 | 133 |
| 134 inline uint32_t readUint32(int offset) | 134 inline uint32_t readUint32(int offset) const |
| 135 { | 135 { |
| 136 char buffer[4]; | 136 char buffer[4]; |
| 137 const char* data = m_fastReader.getConsecutiveData(m_decodedOffset + off
set, 4, buffer); | 137 const char* data = m_fastReader.getConsecutiveData(m_decodedOffset + off
set, 4, buffer); |
| 138 return readUint32(data); | 138 return readUint32(data); |
| 139 } | 139 } |
| 140 | 140 |
| 141 // Determines the size of the BMP info header. Returns true if the size | 141 // Determines the size of the BMP info header. Returns true if the size |
| 142 // is valid. | 142 // is valid. |
| 143 bool readInfoHeaderSize(); | 143 bool readInfoHeaderSize(); |
| 144 | 144 |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 193 inline bool pastEndOfImage(int numRows) | 193 inline bool pastEndOfImage(int numRows) |
| 194 { | 194 { |
| 195 return m_isTopDown ? ((m_coord.y() + numRows) >= m_parent->size().height
()) : ((m_coord.y() - numRows) < 0); | 195 return m_isTopDown ? ((m_coord.y() + numRows) >= m_parent->size().height
()) : ((m_coord.y() - numRows) < 0); |
| 196 } | 196 } |
| 197 | 197 |
| 198 // Returns the pixel data for the current X coordinate in a uint32_t. | 198 // Returns the pixel data for the current X coordinate in a uint32_t. |
| 199 // Assumes m_decodedOffset has been set to the beginning of the current | 199 // Assumes m_decodedOffset has been set to the beginning of the current |
| 200 // row. | 200 // row. |
| 201 // NOTE: Only as many bytes of the return value as are needed to hold | 201 // NOTE: Only as many bytes of the return value as are needed to hold |
| 202 // the pixel data will actually be set. | 202 // the pixel data will actually be set. |
| 203 inline uint32_t readCurrentPixel(int bytesPerPixel) | 203 inline uint32_t readCurrentPixel(int bytesPerPixel) const |
| 204 { | 204 { |
| 205 // We need at most 4 bytes, starting at m_decodedOffset + offset. | 205 // We need at most 4 bytes, starting at m_decodedOffset + offset. |
| 206 char buffer[4]; | 206 char buffer[4]; |
| 207 const int offset = m_coord.x() * bytesPerPixel; | 207 const int offset = m_coord.x() * bytesPerPixel; |
| 208 const char* encodedPixel = m_fastReader.getConsecutiveData(m_decodedOffs
et + offset, bytesPerPixel, buffer); | 208 const char* encodedPixel = m_fastReader.getConsecutiveData(m_decodedOffs
et + offset, bytesPerPixel, buffer); |
| 209 switch (bytesPerPixel) { | 209 switch (bytesPerPixel) { |
| 210 case 2: | 210 case 2: |
| 211 return readUint16(encodedPixel); | 211 return readUint16(encodedPixel); |
| 212 | 212 |
| 213 case 3: { | 213 case 3: { |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 357 // ICOs store a 1bpp "mask" immediately after the main bitmap image data | 357 // ICOs store a 1bpp "mask" immediately after the main bitmap image data |
| 358 // (and, confusingly, add its height to the biHeight value in the info | 358 // (and, confusingly, add its height to the biHeight value in the info |
| 359 // header, thus doubling it). If |m_isInICO| is true, this variable tracks | 359 // header, thus doubling it). If |m_isInICO| is true, this variable tracks |
| 360 // whether we've begun decoding this mask yet. | 360 // whether we've begun decoding this mask yet. |
| 361 bool m_decodingAndMask; | 361 bool m_decodingAndMask; |
| 362 }; | 362 }; |
| 363 | 363 |
| 364 } // namespace blink | 364 } // namespace blink |
| 365 | 365 |
| 366 #endif | 366 #endif |
| OLD | NEW |