| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 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 "DMJsonWriter.h" | 8 #include "DMJsonWriter.h" |
| 9 #include "DMSrcSink.h" | 9 #include "DMSrcSink.h" |
| 10 #include "DMSrcSinkAndroid.h" | 10 #include "DMSrcSinkAndroid.h" |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 #include "SkSpinlock.h" | 29 #include "SkSpinlock.h" |
| 30 #include "SkTHash.h" | 30 #include "SkTHash.h" |
| 31 #include "SkTaskGroup.h" | 31 #include "SkTaskGroup.h" |
| 32 #include "SkThreadUtils.h" | 32 #include "SkThreadUtils.h" |
| 33 #include "Test.h" | 33 #include "Test.h" |
| 34 #include "Timer.h" | 34 #include "Timer.h" |
| 35 #include "picture_utils.h" | 35 #include "picture_utils.h" |
| 36 #include "sk_tool_utils.h" | 36 #include "sk_tool_utils.h" |
| 37 #include "SkScan.h" | 37 #include "SkScan.h" |
| 38 | 38 |
| 39 #include <vector> |
| 40 |
| 39 #ifdef SK_PDF_IMAGE_STATS | 41 #ifdef SK_PDF_IMAGE_STATS |
| 40 extern void SkPDFImageDumpStats(); | 42 extern void SkPDFImageDumpStats(); |
| 41 #endif | 43 #endif |
| 42 | 44 |
| 43 #include "png.h" | 45 #include "png.h" |
| 44 | 46 |
| 45 #include <stdlib.h> | 47 #include <stdlib.h> |
| 46 | 48 |
| 47 #ifndef SK_BUILD_FOR_WIN32 | 49 #ifndef SK_BUILD_FOR_WIN32 |
| 48 #include <unistd.h> | 50 #include <unistd.h> |
| (...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 350 TaggedSrc& s = gSrcs.push_back(); | 352 TaggedSrc& s = gSrcs.push_back(); |
| 351 s.reset(src.release()); | 353 s.reset(src.release()); |
| 352 s.tag = tag; | 354 s.tag = tag; |
| 353 s.options = options; | 355 s.options = options; |
| 354 } | 356 } |
| 355 } | 357 } |
| 356 | 358 |
| 357 static void push_codec_src(Path path, CodecSrc::Mode mode, CodecSrc::DstColorTyp
e dstColorType, | 359 static void push_codec_src(Path path, CodecSrc::Mode mode, CodecSrc::DstColorTyp
e dstColorType, |
| 358 SkAlphaType dstAlphaType, float scale) { | 360 SkAlphaType dstAlphaType, float scale) { |
| 359 if (FLAGS_simpleCodec) { | 361 if (FLAGS_simpleCodec) { |
| 360 if (mode != CodecSrc::kCodec_Mode || dstColorType != CodecSrc::kGetFromC
anvas_DstColorType | 362 const bool simple = CodecSrc::kCodec_Mode == mode || CodecSrc::kAnimated
_Mode == mode; |
| 361 || scale != 1.0f) | 363 if (!simple || dstColorType != CodecSrc::kGetFromCanvas_DstColorType ||
scale != 1.0f) { |
| 362 // Only decode in the simple case. | 364 // Only decode in the simple case. |
| 363 return; | 365 return; |
| 366 } |
| 364 } | 367 } |
| 365 SkString folder; | 368 SkString folder; |
| 366 switch (mode) { | 369 switch (mode) { |
| 367 case CodecSrc::kCodec_Mode: | 370 case CodecSrc::kCodec_Mode: |
| 368 folder.append("codec"); | 371 folder.append("codec"); |
| 369 break; | 372 break; |
| 370 case CodecSrc::kCodecZeroInit_Mode: | 373 case CodecSrc::kCodecZeroInit_Mode: |
| 371 folder.append("codec_zero_init"); | 374 folder.append("codec_zero_init"); |
| 372 break; | 375 break; |
| 373 case CodecSrc::kScanline_Mode: | 376 case CodecSrc::kScanline_Mode: |
| 374 folder.append("scanline"); | 377 folder.append("scanline"); |
| 375 break; | 378 break; |
| 376 case CodecSrc::kStripe_Mode: | 379 case CodecSrc::kStripe_Mode: |
| 377 folder.append("stripe"); | 380 folder.append("stripe"); |
| 378 break; | 381 break; |
| 379 case CodecSrc::kCroppedScanline_Mode: | 382 case CodecSrc::kCroppedScanline_Mode: |
| 380 folder.append("crop"); | 383 folder.append("crop"); |
| 381 break; | 384 break; |
| 382 case CodecSrc::kSubset_Mode: | 385 case CodecSrc::kSubset_Mode: |
| 383 folder.append("codec_subset"); | 386 folder.append("codec_subset"); |
| 384 break; | 387 break; |
| 388 case CodecSrc::kAnimated_Mode: |
| 389 folder.append("codec_animated"); |
| 390 break; |
| 385 } | 391 } |
| 386 | 392 |
| 387 switch (dstColorType) { | 393 switch (dstColorType) { |
| 388 case CodecSrc::kGrayscale_Always_DstColorType: | 394 case CodecSrc::kGrayscale_Always_DstColorType: |
| 389 folder.append("_kGray8"); | 395 folder.append("_kGray8"); |
| 390 break; | 396 break; |
| 391 case CodecSrc::kIndex8_Always_DstColorType: | 397 case CodecSrc::kIndex8_Always_DstColorType: |
| 392 folder.append("_kIndex8"); | 398 folder.append("_kIndex8"); |
| 393 break; | 399 break; |
| 394 case CodecSrc::kNonNative8888_Always_DstColorType: | 400 case CodecSrc::kNonNative8888_Always_DstColorType: |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 // Native Scales | 573 // Native Scales |
| 568 // SkJpegCodec natively supports scaling to the following: | 574 // SkJpegCodec natively supports scaling to the following: |
| 569 for (auto scale : { 0.125f, 0.25f, 0.375f, 0.5f, 0.625f, 0.7
50f, 0.875f }) { | 575 for (auto scale : { 0.125f, 0.25f, 0.375f, 0.5f, 0.625f, 0.7
50f, 0.875f }) { |
| 570 push_codec_src(path, mode, colorType, alphaType, scale); | 576 push_codec_src(path, mode, colorType, alphaType, scale); |
| 571 } | 577 } |
| 572 } | 578 } |
| 573 } | 579 } |
| 574 } | 580 } |
| 575 } | 581 } |
| 576 | 582 |
| 583 { |
| 584 std::vector<SkCodec::FrameInfo> frameInfos = codec->getFrameInfo(); |
| 585 if (frameInfos.size() > 1) { |
| 586 push_codec_src(path, CodecSrc::kAnimated_Mode, CodecSrc::kGetFromCan
vas_DstColorType, |
| 587 kPremul_SkAlphaType, 1.0f); |
| 588 } |
| 589 |
| 590 } |
| 591 |
| 577 if (FLAGS_simpleCodec) { | 592 if (FLAGS_simpleCodec) { |
| 578 return; | 593 return; |
| 579 } | 594 } |
| 580 | 595 |
| 581 const int sampleSizes[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; | 596 const int sampleSizes[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; |
| 582 | 597 |
| 583 for (int sampleSize : sampleSizes) { | 598 for (int sampleSize : sampleSizes) { |
| 584 for (CodecSrc::DstColorType colorType : colorTypes) { | 599 for (CodecSrc::DstColorType colorType : colorTypes) { |
| 585 for (SkAlphaType alphaType : alphaModes) { | 600 for (SkAlphaType alphaType : alphaModes) { |
| 586 // We can exercise all of the kNonNative support code in the swi
zzler with just a | 601 // We can exercise all of the kNonNative support code in the swi
zzler with just a |
| (...skipping 840 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1427 #endif | 1442 #endif |
| 1428 } | 1443 } |
| 1429 } // namespace skiatest | 1444 } // namespace skiatest |
| 1430 | 1445 |
| 1431 #if !defined(SK_BUILD_FOR_IOS) | 1446 #if !defined(SK_BUILD_FOR_IOS) |
| 1432 int main(int argc, char** argv) { | 1447 int main(int argc, char** argv) { |
| 1433 SkCommandLineFlags::Parse(argc, argv); | 1448 SkCommandLineFlags::Parse(argc, argv); |
| 1434 return dm_main(); | 1449 return dm_main(); |
| 1435 } | 1450 } |
| 1436 #endif | 1451 #endif |
| OLD | NEW |