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.h" | 8 #include "SkCodec.h" |
9 #include "SkCodecPriv.h" | 9 #include "SkCodecPriv.h" |
10 #include "SkColorPriv.h" | 10 #include "SkColorPriv.h" |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 | 97 |
98 SkSwizzler* SkWbmpCodec::initializeSwizzler(const SkImageInfo& info, const SkPMC
olor* ctable, | 98 SkSwizzler* SkWbmpCodec::initializeSwizzler(const SkImageInfo& info, const SkPMC
olor* ctable, |
99 const Options& opts) { | 99 const Options& opts) { |
100 return SkSwizzler::CreateSwizzler(SkSwizzler::kBit, ctable, info, opts); | 100 return SkSwizzler::CreateSwizzler(SkSwizzler::kBit, ctable, info, opts); |
101 } | 101 } |
102 | 102 |
103 bool SkWbmpCodec::readRow(uint8_t* row) { | 103 bool SkWbmpCodec::readRow(uint8_t* row) { |
104 return this->stream()->read(row, fSrcRowBytes) == fSrcRowBytes; | 104 return this->stream()->read(row, fSrcRowBytes) == fSrcRowBytes; |
105 } | 105 } |
106 | 106 |
107 SkWbmpCodec::SkWbmpCodec(int width, int height, const SkEncodedInfo& info, SkStr
eam* stream) | 107 SkWbmpCodec::SkWbmpCodec(const SkImageInfo& info, SkStream* stream) |
108 : INHERITED(width, height, info, stream) | 108 : INHERITED(info, stream) |
109 , fSrcRowBytes(get_src_row_bytes(this->getInfo().width())) | 109 , fSrcRowBytes(get_src_row_bytes(this->getInfo().width())) |
110 , fSwizzler(nullptr) | 110 , fSwizzler(nullptr) |
111 , fColorTable(nullptr) | 111 , fColorTable(nullptr) |
112 {} | 112 {} |
113 | 113 |
114 SkEncodedFormat SkWbmpCodec::onGetEncodedFormat() const { | 114 SkEncodedFormat SkWbmpCodec::onGetEncodedFormat() const { |
115 return kWBMP_SkEncodedFormat; | 115 return kWBMP_SkEncodedFormat; |
116 } | 116 } |
117 | 117 |
118 SkCodec::Result SkWbmpCodec::onGetPixels(const SkImageInfo& info, | 118 SkCodec::Result SkWbmpCodec::onGetPixels(const SkImageInfo& info, |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
159 SkMemoryStream stream(data); | 159 SkMemoryStream stream(data); |
160 return read_header(&stream, nullptr); | 160 return read_header(&stream, nullptr); |
161 } | 161 } |
162 | 162 |
163 SkCodec* SkWbmpCodec::NewFromStream(SkStream* stream) { | 163 SkCodec* SkWbmpCodec::NewFromStream(SkStream* stream) { |
164 SkAutoTDelete<SkStream> streamDeleter(stream); | 164 SkAutoTDelete<SkStream> streamDeleter(stream); |
165 SkISize size; | 165 SkISize size; |
166 if (!read_header(stream, &size)) { | 166 if (!read_header(stream, &size)) { |
167 return nullptr; | 167 return nullptr; |
168 } | 168 } |
169 SkEncodedInfo info = SkEncodedInfo::Make(SkEncodedInfo::kGray_Color, | 169 SkImageInfo info = SkImageInfo::Make(size.width(), size.height(), |
170 SkEncodedInfo::kOpaque_Alpha, 1); | 170 kGray_8_SkColorType, kOpaque_SkAlphaType); |
171 return new SkWbmpCodec(size.width(), size.height(), info, streamDeleter.rele
ase()); | 171 return new SkWbmpCodec(info, streamDeleter.release()); |
172 } | 172 } |
173 | 173 |
174 int SkWbmpCodec::onGetScanlines(void* dst, int count, size_t dstRowBytes) { | 174 int SkWbmpCodec::onGetScanlines(void* dst, int count, size_t dstRowBytes) { |
175 void* dstRow = dst; | 175 void* dstRow = dst; |
176 for (int y = 0; y < count; ++y) { | 176 for (int y = 0; y < count; ++y) { |
177 if (!this->readRow(fSrcBuffer.get())) { | 177 if (!this->readRow(fSrcBuffer.get())) { |
178 return y; | 178 return y; |
179 } | 179 } |
180 fSwizzler->swizzle(dstRow, fSrcBuffer.get()); | 180 fSwizzler->swizzle(dstRow, fSrcBuffer.get()); |
181 dstRow = SkTAddOffset<void>(dstRow, dstRowBytes); | 181 dstRow = SkTAddOffset<void>(dstRow, dstRowBytes); |
(...skipping 27 matching lines...) Expand all Loading... |
209 } | 209 } |
210 | 210 |
211 // Initialize the swizzler | 211 // Initialize the swizzler |
212 fSwizzler.reset(this->initializeSwizzler(dstInfo, get_color_ptr(fColorTable.
get()), options)); | 212 fSwizzler.reset(this->initializeSwizzler(dstInfo, get_color_ptr(fColorTable.
get()), options)); |
213 SkASSERT(fSwizzler); | 213 SkASSERT(fSwizzler); |
214 | 214 |
215 fSrcBuffer.reset(fSrcRowBytes); | 215 fSrcBuffer.reset(fSrcRowBytes); |
216 | 216 |
217 return kSuccess; | 217 return kSuccess; |
218 } | 218 } |
OLD | NEW |