| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SkCodec_libbmp.h" | 8 #include "SkCodec_libbmp.h" |
| 9 #include "SkCodecPriv.h" | 9 #include "SkCodecPriv.h" |
| 10 #include "SkColorPriv.h" | 10 #include "SkColorPriv.h" |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 */ | 101 */ |
| 102 SkCodec* SkBmpCodec::NewFromIco(SkStream* stream) { | 102 SkCodec* SkBmpCodec::NewFromIco(SkStream* stream) { |
| 103 return SkBmpCodec::NewFromStream(stream, true); | 103 return SkBmpCodec::NewFromStream(stream, true); |
| 104 } | 104 } |
| 105 | 105 |
| 106 /* | 106 /* |
| 107 * | 107 * |
| 108 * Read enough of the stream to initialize the SkBmpCodec. Returns a bool | 108 * Read enough of the stream to initialize the SkBmpCodec. Returns a bool |
| 109 * representing success or failure. If it returned true, and codecOut was | 109 * representing success or failure. If it returned true, and codecOut was |
| 110 * not NULL, it will be set to a new SkBmpCodec. | 110 * not NULL, it will be set to a new SkBmpCodec. |
| 111 * Does *not* take ownership of the passed in SkStream. |
| 111 * | 112 * |
| 112 */ | 113 */ |
| 113 bool SkBmpCodec::ReadHeader(SkStream* stream, bool isIco, SkCodec** codecOut) { | 114 bool SkBmpCodec::ReadHeader(SkStream* stream, bool isIco, SkCodec** codecOut) { |
| 114 // Header size constants | 115 // Header size constants |
| 115 static const uint32_t kBmpHeaderBytes = 14; | 116 static const uint32_t kBmpHeaderBytes = 14; |
| 116 static const uint32_t kBmpHeaderBytesPlusFour = kBmpHeaderBytes + 4; | 117 static const uint32_t kBmpHeaderBytesPlusFour = kBmpHeaderBytes + 4; |
| 117 static const uint32_t kBmpOS2V1Bytes = 12; | 118 static const uint32_t kBmpOS2V1Bytes = 12; |
| 118 static const uint32_t kBmpOS2V2Bytes = 64; | 119 static const uint32_t kBmpOS2V2Bytes = 64; |
| 119 static const uint32_t kBmpInfoBaseBytes = 16; | 120 static const uint32_t kBmpInfoBaseBytes = 16; |
| 120 static const uint32_t kBmpInfoV1Bytes = 40; | 121 static const uint32_t kBmpInfoV1Bytes = 40; |
| (...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 489 return true; | 490 return true; |
| 490 } | 491 } |
| 491 | 492 |
| 492 /* | 493 /* |
| 493 * | 494 * |
| 494 * Creates a bmp decoder | 495 * Creates a bmp decoder |
| 495 * Reads enough of the stream to determine the image format | 496 * Reads enough of the stream to determine the image format |
| 496 * | 497 * |
| 497 */ | 498 */ |
| 498 SkCodec* SkBmpCodec::NewFromStream(SkStream* stream, bool isIco) { | 499 SkCodec* SkBmpCodec::NewFromStream(SkStream* stream, bool isIco) { |
| 500 SkAutoTDelete<SkStream> streamDeleter(stream); |
| 499 SkCodec* codec = NULL; | 501 SkCodec* codec = NULL; |
| 500 if (ReadHeader(stream, isIco, &codec)) { | 502 if (ReadHeader(stream, isIco, &codec)) { |
| 503 // codec has taken ownership of stream, so we do not need to |
| 504 // delete it. |
| 505 SkASSERT(codec); |
| 506 streamDeleter.detach(); |
| 501 return codec; | 507 return codec; |
| 502 } | 508 } |
| 503 return NULL; | 509 return NULL; |
| 504 } | 510 } |
| 505 | 511 |
| 506 /* | 512 /* |
| 507 * | 513 * |
| 508 * Creates an instance of the decoder | 514 * Creates an instance of the decoder |
| 509 * Called only by NewFromStream | 515 * Called only by NewFromStream |
| 510 * | 516 * |
| (...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1126 uint32_t alphaBit = | 1132 uint32_t alphaBit = |
| 1127 (srcBuffer.get()[quotient] >> shift) & 0x1; | 1133 (srcBuffer.get()[quotient] >> shift) & 0x1; |
| 1128 dstRow[x] &= alphaBit - 1; | 1134 dstRow[x] &= alphaBit - 1; |
| 1129 } | 1135 } |
| 1130 } | 1136 } |
| 1131 } | 1137 } |
| 1132 | 1138 |
| 1133 // Finished decoding the entire image | 1139 // Finished decoding the entire image |
| 1134 return kSuccess; | 1140 return kSuccess; |
| 1135 } | 1141 } |
| OLD | NEW |