OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 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 #include "SkImageDecoder_ktx.h" |
8 #include "SkColorPriv.h" | 8 #include "SkColorPriv.h" |
9 #include "SkImageDecoder.h" | |
10 #include "SkPixelRef.h" | 9 #include "SkPixelRef.h" |
11 #include "SkScaledBitmapSampler.h" | 10 #include "SkScaledBitmapSampler.h" |
12 #include "SkStream.h" | 11 #include "SkStream.h" |
13 #include "SkStreamPriv.h" | 12 #include "SkStreamPriv.h" |
14 #include "SkTypes.h" | 13 #include "SkTypes.h" |
15 | 14 |
16 #include "ktx.h" | 15 #include "ktx.h" |
17 #include "etc1.h" | 16 #include "etc1.h" |
18 | 17 |
19 ////////////////////////////////////////////////////////////////////////////////
///////// | 18 ////////////////////////////////////////////////////////////////////////////////
///////// |
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
302 if (width == 0 || (width & 3) != 0 || height == 0 || (height & 3) != 0) { | 301 if (width == 0 || (width & 3) != 0 || height == 0 || (height & 3) != 0) { |
303 return false; | 302 return false; |
304 } | 303 } |
305 | 304 |
306 // Advance pointer to etc1 data. | 305 // Advance pointer to etc1 data. |
307 bytes += ETC_PKM_HEADER_SIZE; | 306 bytes += ETC_PKM_HEADER_SIZE; |
308 | 307 |
309 return SkKTXFile::WriteETC1ToKTX(stream, bytes, width, height); | 308 return SkKTXFile::WriteETC1ToKTX(stream, bytes, width, height); |
310 } | 309 } |
311 | 310 |
312 ////////////////////////////////////////////////////////////////////////////////
///////// | 311 SkImageDecoder* SkCreateKTXImageDecoder(SkImageDecoder::Format format) { |
313 DEFINE_DECODER_CREATOR(KTXImageDecoder); | 312 SkASSERT(format == SkImageDecoder::kKTX_Format); |
314 DEFINE_ENCODER_CREATOR(KTXImageEncoder); | 313 return SkNEW(SkKTXImageDecoder); |
315 ////////////////////////////////////////////////////////////////////////////////
///////// | |
316 | |
317 static SkImageDecoder* sk_libktx_dfactory(SkStreamRewindable* stream) { | |
318 if (SkKTXFile::is_ktx(stream)) { | |
319 return SkNEW(SkKTXImageDecoder); | |
320 } | |
321 return NULL; | |
322 } | 314 } |
323 | 315 |
324 static SkImageDecoder::Format get_format_ktx(SkStreamRewindable* stream) { | 316 SkImageDecoder::Format SkDetectFormatKTXImageDecoder(SkStreamRewindable* stream)
{ |
325 if (SkKTXFile::is_ktx(stream)) { | 317 if (SkKTXFile::is_ktx(stream)) { |
326 return SkImageDecoder::kKTX_Format; | 318 return SkImageDecoder::kKTX_Format; |
327 } | 319 } |
328 return SkImageDecoder::kUnknown_Format; | 320 return SkImageDecoder::kUnknown_Format; |
329 } | 321 } |
330 | 322 |
331 SkImageEncoder* sk_libktx_efactory(SkImageEncoder::Type t) { | 323 SkImageEncoder* SkCreateKTXImageEncoder(SkImageEncoder::Type t) { |
332 return (SkImageEncoder::kKTX_Type == t) ? SkNEW(SkKTXImageEncoder) : NULL; | 324 return (SkImageEncoder::kKTX_Type == t) ? SkNEW(SkKTXImageEncoder) : NULL; |
333 } | 325 } |
334 | |
335 static SkImageDecoder_DecodeReg gReg(sk_libktx_dfactory); | |
336 static SkImageDecoder_FormatReg gFormatReg(get_format_ktx); | |
337 static SkImageEncoder_EncodeReg gEReg(sk_libktx_efactory); | |
OLD | NEW |