| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 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 "SkBitmap.h" | 8 #include "SkBitmap.h" |
| 9 #include "SkRect.h" | 9 #include "SkRect.h" |
| 10 #include "SkTemplates.h" | 10 #include "SkTemplates.h" |
| (...skipping 590 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 601 { false, {-1,-1 }, { 1, 1 }, { 0, 0 }, { 0, 0, 0, 0 } }, | 601 { false, {-1,-1 }, { 1, 1 }, { 0, 0 }, { 0, 0, 0, 0 } }, |
| 602 }; | 602 }; |
| 603 | 603 |
| 604 for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); ++i) { | 604 for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); ++i) { |
| 605 clear_4x4_pixels(dstPixels); | 605 clear_4x4_pixels(dstPixels); |
| 606 | 606 |
| 607 dstInfo = dstInfo.makeWH(gRec[i].fRequestedDstSize.width(), | 607 dstInfo = dstInfo.makeWH(gRec[i].fRequestedDstSize.width(), |
| 608 gRec[i].fRequestedDstSize.height()); | 608 gRec[i].fRequestedDstSize.height()); |
| 609 bool success = srcBM.readPixels(dstInfo, dstPixels, rowBytes, | 609 bool success = srcBM.readPixels(dstInfo, dstPixels, rowBytes, |
| 610 gRec[i].fRequestedSrcLoc.x(), gRec[i].fR
equestedSrcLoc.y()); | 610 gRec[i].fRequestedSrcLoc.x(), gRec[i].fR
equestedSrcLoc.y()); |
| 611 | 611 |
| 612 REPORTER_ASSERT(reporter, gRec[i].fExpectedSuccess == success); | 612 REPORTER_ASSERT(reporter, gRec[i].fExpectedSuccess == success); |
| 613 if (success) { | 613 if (success) { |
| 614 const SkIRect srcR = gRec[i].fExpectedSrcR; | 614 const SkIRect srcR = gRec[i].fExpectedSrcR; |
| 615 const int dstX = gRec[i].fExpectedDstLoc.x(); | 615 const int dstX = gRec[i].fExpectedDstLoc.x(); |
| 616 const int dstY = gRec[i].fExpectedDstLoc.y(); | 616 const int dstY = gRec[i].fExpectedDstLoc.y(); |
| 617 // Walk the dst pixels, and check if we got what we expected | 617 // Walk the dst pixels, and check if we got what we expected |
| 618 for (int y = 0; y < H; ++y) { | 618 for (int y = 0; y < H; ++y) { |
| 619 for (int x = 0; x < W; ++x) { | 619 for (int x = 0; x < W; ++x) { |
| 620 SkPMColor dstC = dstPixels[y*4+x]; | 620 SkPMColor dstC = dstPixels[y*4+x]; |
| 621 // get into src coordinates | 621 // get into src coordinates |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 688 if (dstBmp.colorType() != kDstCTs[dCT]) { | 688 if (dstBmp.colorType() != kDstCTs[dCT]) { |
| 689 ERRORF(reporter, "SkBitmap::CopyTo did not respect passed in
color type."); | 689 ERRORF(reporter, "SkBitmap::CopyTo did not respect passed in
color type."); |
| 690 } | 690 } |
| 691 SkAutoLockPixels alp(dstBmp); | 691 SkAutoLockPixels alp(dstBmp); |
| 692 uint8_t* dstBmpPixels = static_cast<uint8_t*>(dstBmp.getPixels()
); | 692 uint8_t* dstBmpPixels = static_cast<uint8_t*>(dstBmp.getPixels()
); |
| 693 const uint32_t* refData; | 693 const uint32_t* refData; |
| 694 #if defined(SK_PMCOLOR_IS_RGBA) | 694 #if defined(SK_PMCOLOR_IS_RGBA) |
| 695 refData = (kRGBA_8888_SkColorType == dstBmp.colorType()) ? kData
: swizData; | 695 refData = (kRGBA_8888_SkColorType == dstBmp.colorType()) ? kData
: swizData; |
| 696 #elif defined(SK_PMCOLOR_IS_BGRA) | 696 #elif defined(SK_PMCOLOR_IS_BGRA) |
| 697 refData = (kBGRA_8888_SkColorType == dstBmp.colorType()) ? kData
: swizData; | 697 refData = (kBGRA_8888_SkColorType == dstBmp.colorType()) ? kData
: swizData; |
| 698 #else | 698 #else |
| 699 #error "PM Color must be BGRA or RGBA to use GPU backend." | 699 #error "PM Color must be BGRA or RGBA to use GPU backend." |
| 700 #endif | 700 #endif |
| 701 bool foundError = false; | 701 bool foundError = false; |
| 702 for (int y = 0; y < 2 && !foundError; ++y) { | 702 for (int y = 0; y < 2 && !foundError; ++y) { |
| 703 uint32_t* dstBmpRow = reinterpret_cast<uint32_t*>(dstBmpPixe
ls); | 703 uint32_t* dstBmpRow = reinterpret_cast<uint32_t*>(dstBmpPixe
ls); |
| 704 for (int x = 0; x < 2 && !foundError; ++x) { | 704 for (int x = 0; x < 2 && !foundError; ++x) { |
| 705 if (refData[2 * y + x] != dstBmpRow[x]) { | 705 if (refData[2 * y + x] != dstBmpRow[x]) { |
| 706 ERRORF(reporter, "Expected pixel 0x%08x, found 0x%08
x.", | 706 ERRORF(reporter, "Expected pixel 0x%08x, found 0x%08
x.", |
| 707 refData[2 * y + x], dstBmpRow[x]); | 707 refData[2 * y + x], dstBmpRow[x]); |
| 708 foundError = true; | 708 foundError = true; |
| 709 } | 709 } |
| 710 } | 710 } |
| 711 dstBmpPixels += dstBmp.rowBytes(); | 711 dstBmpPixels += dstBmp.rowBytes(); |
| 712 } | 712 } |
| 713 } | 713 } |
| 714 } | 714 } |
| 715 } | 715 } |
| 716 } | 716 } |
| 717 | 717 |
| 718 #endif | 718 #endif |
| OLD | NEW |