Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Side by Side Diff: tests/BitmapCopyTest.cpp

Issue 51033004: add SK_ATTR_DEPRECATED -- will need to disable for chrome, since it triggers a warning (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/views/SkWindow.cpp ('k') | tests/GpuBitmapCopyTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 #include "Test.h" 8 #include "Test.h"
9 #include "SkBitmap.h" 9 #include "SkBitmap.h"
10 #include "SkRect.h" 10 #include "SkRect.h"
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 89
90 // Utility function to read the value of a given pixel in bm. All 90 // Utility function to read the value of a given pixel in bm. All
91 // values converted to uint32_t for simplification of comparisons. 91 // values converted to uint32_t for simplification of comparisons.
92 static uint32_t getPixel(int x, int y, const SkBitmap& bm) { 92 static uint32_t getPixel(int x, int y, const SkBitmap& bm) {
93 uint32_t val = 0; 93 uint32_t val = 0;
94 uint16_t val16; 94 uint16_t val16;
95 uint8_t val8, shift; 95 uint8_t val8, shift;
96 SkAutoLockPixels lock(bm); 96 SkAutoLockPixels lock(bm);
97 const void* rawAddr = bm.getAddr(x,y); 97 const void* rawAddr = bm.getAddr(x,y);
98 98
99 switch (bm.getConfig()) { 99 switch (bm.config()) {
100 case SkBitmap::kARGB_8888_Config: 100 case SkBitmap::kARGB_8888_Config:
101 memcpy(&val, rawAddr, sizeof(uint32_t)); 101 memcpy(&val, rawAddr, sizeof(uint32_t));
102 break; 102 break;
103 case SkBitmap::kARGB_4444_Config: 103 case SkBitmap::kARGB_4444_Config:
104 case SkBitmap::kRGB_565_Config: 104 case SkBitmap::kRGB_565_Config:
105 memcpy(&val16, rawAddr, sizeof(uint16_t)); 105 memcpy(&val16, rawAddr, sizeof(uint16_t));
106 val = val16; 106 val = val16;
107 break; 107 break;
108 case SkBitmap::kA8_Config: 108 case SkBitmap::kA8_Config:
109 case SkBitmap::kIndex8_Config: 109 case SkBitmap::kIndex8_Config:
(...skipping 13 matching lines...) Expand all
123 123
124 // Utility function to set value of any pixel in bm. 124 // Utility function to set value of any pixel in bm.
125 // bm.getConfig() specifies what format 'val' must be 125 // bm.getConfig() specifies what format 'val' must be
126 // converted to, but at present uint32_t can handle all formats. 126 // converted to, but at present uint32_t can handle all formats.
127 static void setPixel(int x, int y, uint32_t val, SkBitmap& bm) { 127 static void setPixel(int x, int y, uint32_t val, SkBitmap& bm) {
128 uint16_t val16; 128 uint16_t val16;
129 uint8_t val8, shift; 129 uint8_t val8, shift;
130 SkAutoLockPixels lock(bm); 130 SkAutoLockPixels lock(bm);
131 void* rawAddr = bm.getAddr(x,y); 131 void* rawAddr = bm.getAddr(x,y);
132 132
133 switch (bm.getConfig()) { 133 switch (bm.config()) {
134 case SkBitmap::kARGB_8888_Config: 134 case SkBitmap::kARGB_8888_Config:
135 memcpy(rawAddr, &val, sizeof(uint32_t)); 135 memcpy(rawAddr, &val, sizeof(uint32_t));
136 break; 136 break;
137 case SkBitmap::kARGB_4444_Config: 137 case SkBitmap::kARGB_4444_Config:
138 case SkBitmap::kRGB_565_Config: 138 case SkBitmap::kRGB_565_Config:
139 val16 = val & 0xFFFF; 139 val16 = val & 0xFFFF;
140 memcpy(rawAddr, &val16, sizeof(uint16_t)); 140 memcpy(rawAddr, &val16, sizeof(uint16_t));
141 break; 141 break;
142 case SkBitmap::kA8_Config: 142 case SkBitmap::kA8_Config:
143 case SkBitmap::kIndex8_Config: 143 case SkBitmap::kIndex8_Config:
(...skipping 11 matching lines...) Expand all
155 break; 155 break;
156 default: 156 default:
157 // Ignore. 157 // Ignore.
158 break; 158 break;
159 } 159 }
160 } 160 }
161 161
162 // Utility to return string containing name of each format, to 162 // Utility to return string containing name of each format, to
163 // simplify diagnostic output. 163 // simplify diagnostic output.
164 static const char* getSkConfigName(const SkBitmap& bm) { 164 static const char* getSkConfigName(const SkBitmap& bm) {
165 switch (bm.getConfig()) { 165 switch (bm.config()) {
166 case SkBitmap::kNo_Config: return "SkBitmap::kNo_Config"; 166 case SkBitmap::kNo_Config: return "SkBitmap::kNo_Config";
167 case SkBitmap::kA1_Config: return "SkBitmap::kA1_Config"; 167 case SkBitmap::kA1_Config: return "SkBitmap::kA1_Config";
168 case SkBitmap::kA8_Config: return "SkBitmap::kA8_Config"; 168 case SkBitmap::kA8_Config: return "SkBitmap::kA8_Config";
169 case SkBitmap::kIndex8_Config: return "SkBitmap::kIndex8_Config"; 169 case SkBitmap::kIndex8_Config: return "SkBitmap::kIndex8_Config";
170 case SkBitmap::kRGB_565_Config: return "SkBitmap::kRGB_565_Config"; 170 case SkBitmap::kRGB_565_Config: return "SkBitmap::kRGB_565_Config";
171 case SkBitmap::kARGB_4444_Config: return "SkBitmap::kARGB_4444_Config"; 171 case SkBitmap::kARGB_4444_Config: return "SkBitmap::kARGB_4444_Config";
172 case SkBitmap::kARGB_8888_Config: return "SkBitmap::kARGB_8888_Config"; 172 case SkBitmap::kARGB_8888_Config: return "SkBitmap::kARGB_8888_Config";
173 default: return "Unknown SkBitmap configuration."; 173 default: return "Unknown SkBitmap configuration.";
174 } 174 }
175 } 175 }
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 SkIRect r; 451 SkIRect r;
452 if (gPairs[i].fConfig == SkBitmap::kA1_Config) 452 if (gPairs[i].fConfig == SkBitmap::kA1_Config)
453 // This config seems to need byte-alignment of 453 // This config seems to need byte-alignment of
454 // extracted subset bits. 454 // extracted subset bits.
455 r.set(0, 0, subW, subH); 455 r.set(0, 0, subW, subH);
456 else 456 else
457 r.set(1, 0, 1 + subW, subH); // 2x2 extracted bitmap 457 r.set(1, 0, 1 + subW, subH); // 2x2 extracted bitmap
458 458
459 srcReady = src.extractSubset(&subset, r); 459 srcReady = src.extractSubset(&subset, r);
460 } else { 460 } else {
461 srcReady = src.copyTo(&subset, src.getConfig()); 461 srcReady = src.copyTo(&subset, src.config());
462 } 462 }
463 463
464 // Not all configurations will generate a valid 'subset'. 464 // Not all configurations will generate a valid 'subset'.
465 if (srcReady) { 465 if (srcReady) {
466 466
467 // Allocate our target buffer 'buf' for all copies. 467 // Allocate our target buffer 'buf' for all copies.
468 // To simplify verifying correctness of copies attach 468 // To simplify verifying correctness of copies attach
469 // buf to a SkBitmap, but copies are done using the 469 // buf to a SkBitmap, but copies are done using the
470 // raw buffer pointer. 470 // raw buffer pointer.
471 const size_t bufSize = subH * 471 const size_t bufSize = subH *
472 SkBitmap::ComputeRowBytes(src.getConfig(), subW) * 2; 472 SkBitmap::ComputeRowBytes(src.config(), subW) * 2;
473 SkAutoMalloc autoBuf (bufSize); 473 SkAutoMalloc autoBuf (bufSize);
474 uint8_t* buf = static_cast<uint8_t*>(autoBuf.get()); 474 uint8_t* buf = static_cast<uint8_t*>(autoBuf.get());
475 475
476 SkBitmap bufBm; // Attach buf to this bitmap. 476 SkBitmap bufBm; // Attach buf to this bitmap.
477 bool successExpected; 477 bool successExpected;
478 478
479 // Set up values for each pixel being copied. 479 // Set up values for each pixel being copied.
480 Coordinates coords(subW * subH); 480 Coordinates coords(subW * subH);
481 for (int x = 0; x < subW; ++x) 481 for (int x = 0; x < subW; ++x)
482 for (int y = 0; y < subH; ++y) 482 for (int y = 0; y < subH; ++y)
483 { 483 {
484 int index = y * subW + x; 484 int index = y * subW + x;
485 SkASSERT(index < coords.length); 485 SkASSERT(index < coords.length);
486 coords[index]->fX = x; 486 coords[index]->fX = x;
487 coords[index]->fY = y; 487 coords[index]->fY = y;
488 } 488 }
489 489
490 writeCoordPixels(subset, coords); 490 writeCoordPixels(subset, coords);
491 491
492 // Test #1 //////////////////////////////////////////// 492 // Test #1 ////////////////////////////////////////////
493 493
494 // Before/after comparisons easier if we attach buf 494 // Before/after comparisons easier if we attach buf
495 // to an appropriately configured SkBitmap. 495 // to an appropriately configured SkBitmap.
496 memset(buf, 0xFF, bufSize); 496 memset(buf, 0xFF, bufSize);
497 // Config with stride greater than src but that fits in buf. 497 // Config with stride greater than src but that fits in buf.
498 bufBm.setConfig(gPairs[i].fConfig, subW, subH, 498 bufBm.setConfig(gPairs[i].fConfig, subW, subH,
499 SkBitmap::ComputeRowBytes(subset.getConfig(), subW) 499 SkBitmap::ComputeRowBytes(subset.config(), subW) * 2);
500 * 2);
501 bufBm.setPixels(buf); 500 bufBm.setPixels(buf);
502 successExpected = false; 501 successExpected = false;
503 // Then attempt to copy with a stride that is too large 502 // Then attempt to copy with a stride that is too large
504 // to fit in the buffer. 503 // to fit in the buffer.
505 REPORTER_ASSERT(reporter, 504 REPORTER_ASSERT(reporter,
506 subset.copyPixelsTo(buf, bufSize, bufBm.rowBytes() * 3) 505 subset.copyPixelsTo(buf, bufSize, bufBm.rowBytes() * 3)
507 == successExpected); 506 == successExpected);
508 507
509 if (successExpected) 508 if (successExpected)
510 reportCopyVerification(subset, bufBm, coords, 509 reportCopyVerification(subset, bufBm, coords,
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
591 false); 590 false);
592 591
593 #endif 592 #endif
594 } 593 }
595 } // for (size_t copyCase ... 594 } // for (size_t copyCase ...
596 } 595 }
597 } 596 }
598 597
599 #include "TestClassDef.h" 598 #include "TestClassDef.h"
600 DEFINE_TESTCLASS("BitmapCopy", TestBitmapCopyClass, TestBitmapCopy) 599 DEFINE_TESTCLASS("BitmapCopy", TestBitmapCopyClass, TestBitmapCopy)
OLDNEW
« no previous file with comments | « src/views/SkWindow.cpp ('k') | tests/GpuBitmapCopyTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698