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

Side by Side Diff: tests/BitmapCopyTest.cpp

Issue 25275004: store SkAlphaType inside SkBitmap, on road to support unpremul (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 7 years, 2 months 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
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 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 const int H = 33; 242 const int H = 33;
243 243
244 for (size_t i = 0; i < SK_ARRAY_COUNT(gPairs); i++) { 244 for (size_t i = 0; i < SK_ARRAY_COUNT(gPairs); i++) {
245 for (size_t j = 0; j < SK_ARRAY_COUNT(gPairs); j++) { 245 for (size_t j = 0; j < SK_ARRAY_COUNT(gPairs); j++) {
246 SkBitmap srcOpaque, srcPremul, dst; 246 SkBitmap srcOpaque, srcPremul, dst;
247 247
248 { 248 {
249 SkColorTable* ctOpaque = NULL; 249 SkColorTable* ctOpaque = NULL;
250 SkColorTable* ctPremul = NULL; 250 SkColorTable* ctPremul = NULL;
251 251
252 srcOpaque.setConfig(gPairs[i].fConfig, W, H); 252 srcOpaque.setConfig(gPairs[i].fConfig, W, H, 0, kOpaque_SkAlphaT ype);
253 srcPremul.setConfig(gPairs[i].fConfig, W, H); 253 srcPremul.setConfig(gPairs[i].fConfig, W, H, 0, kPremul_SkAlphaT ype);
254 if (SkBitmap::kIndex8_Config == gPairs[i].fConfig) { 254 if (SkBitmap::kIndex8_Config == gPairs[i].fConfig) {
255 ctOpaque = init_ctable(kOpaque_SkAlphaType); 255 ctOpaque = init_ctable(kOpaque_SkAlphaType);
256 ctPremul = init_ctable(kPremul_SkAlphaType); 256 ctPremul = init_ctable(kPremul_SkAlphaType);
257 } 257 }
258 srcOpaque.allocPixels(ctOpaque); 258 srcOpaque.allocPixels(ctOpaque);
259 srcPremul.allocPixels(ctPremul); 259 srcPremul.allocPixels(ctPremul);
260 SkSafeUnref(ctOpaque); 260 SkSafeUnref(ctOpaque);
261 SkSafeUnref(ctPremul); 261 SkSafeUnref(ctPremul);
262
263 srcOpaque.setIsOpaque(true);
264 srcPremul.setIsOpaque(false);
265 } 262 }
266 init_src(srcOpaque); 263 init_src(srcOpaque);
267 init_src(srcPremul); 264 init_src(srcPremul);
268 265
269 bool success = srcPremul.copyTo(&dst, gPairs[j].fConfig); 266 bool success = srcPremul.copyTo(&dst, gPairs[j].fConfig);
270 bool expected = gPairs[i].fValid[j] != '0'; 267 bool expected = gPairs[i].fValid[j] != '0';
271 if (success != expected) { 268 if (success != expected) {
272 SkString str; 269 SkString str;
273 str.printf("SkBitmap::copyTo from %s to %s. expected %s returned %s", 270 str.printf("SkBitmap::copyTo from %s to %s. expected %s returned %s",
274 gConfigName[i], gConfigName[j], boolStr(expected), 271 gConfigName[i], gConfigName[j], boolStr(expected),
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 { 305 {
309 SkBitmap bitmap(srcOpaque); 306 SkBitmap bitmap(srcOpaque);
310 SkBitmap subset; 307 SkBitmap subset;
311 SkIRect r; 308 SkIRect r;
312 r.set(1, 1, 2, 2); 309 r.set(1, 1, 2, 2);
313 bitmap.setIsVolatile(true); 310 bitmap.setIsVolatile(true);
314 if (bitmap.extractSubset(&subset, r)) { 311 if (bitmap.extractSubset(&subset, r)) {
315 REPORTER_ASSERT(reporter, subset.width() == 1); 312 REPORTER_ASSERT(reporter, subset.width() == 1);
316 REPORTER_ASSERT(reporter, subset.height() == 1); 313 REPORTER_ASSERT(reporter, subset.height() == 1);
317 REPORTER_ASSERT(reporter, 314 REPORTER_ASSERT(reporter,
318 subset.isOpaque() == bitmap.isOpaque()); 315 subset.alphaType() == bitmap.alphaType() );
319 REPORTER_ASSERT(reporter, 316 REPORTER_ASSERT(reporter,
320 subset.isVolatile() == true); 317 subset.isVolatile() == true);
321 318
322 SkBitmap copy; 319 SkBitmap copy;
323 REPORTER_ASSERT(reporter, 320 REPORTER_ASSERT(reporter,
324 subset.copyTo(&copy, subset.config())); 321 subset.copyTo(&copy, subset.config()));
325 REPORTER_ASSERT(reporter, copy.width() == 1); 322 REPORTER_ASSERT(reporter, copy.width() == 1);
326 REPORTER_ASSERT(reporter, copy.height() == 1); 323 REPORTER_ASSERT(reporter, copy.height() == 1);
327 REPORTER_ASSERT(reporter, copy.rowBytes() <= 4); 324 REPORTER_ASSERT(reporter, copy.rowBytes() <= 4);
328 325
329 SkAutoLockPixels alp0(subset); 326 SkAutoLockPixels alp0(subset);
330 SkAutoLockPixels alp1(copy); 327 SkAutoLockPixels alp1(copy);
331 // they should both have, or both not-have, a colortable 328 // they should both have, or both not-have, a colortable
332 bool hasCT = subset.getColorTable() != NULL; 329 bool hasCT = subset.getColorTable() != NULL;
333 REPORTER_ASSERT(reporter, 330 REPORTER_ASSERT(reporter,
334 (copy.getColorTable() != NULL) == hasCT); 331 (copy.getColorTable() != NULL) == hasCT);
335 } 332 }
336
337 bitmap = srcPremul; 333 bitmap = srcPremul;
338 bitmap.setIsVolatile(false); 334 bitmap.setIsVolatile(false);
339 if (bitmap.extractSubset(&subset, r)) { 335 if (bitmap.extractSubset(&subset, r)) {
340 REPORTER_ASSERT(reporter, 336 REPORTER_ASSERT(reporter,
341 subset.isOpaque() == bitmap.isOpaque()); 337 subset.alphaType() == bitmap.alphaType() );
342 REPORTER_ASSERT(reporter, 338 REPORTER_ASSERT(reporter,
343 subset.isVolatile() == false); 339 subset.isVolatile() == false);
344 } 340 }
345 } 341 }
346 } else { 342 } else {
347 // dst should be unchanged from its initial state 343 // dst should be unchanged from its initial state
348 REPORTER_ASSERT(reporter, dst.config() == SkBitmap::kNo_Config); 344 REPORTER_ASSERT(reporter, dst.config() == SkBitmap::kNo_Config);
349 REPORTER_ASSERT(reporter, dst.width() == 0); 345 REPORTER_ASSERT(reporter, dst.width() == 0);
350 REPORTER_ASSERT(reporter, dst.height() == 0); 346 REPORTER_ASSERT(reporter, dst.height() == 0);
351 } 347 }
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 false); 591 false);
596 592
597 #endif 593 #endif
598 } 594 }
599 } // for (size_t copyCase ... 595 } // for (size_t copyCase ...
600 } 596 }
601 } 597 }
602 598
603 #include "TestClassDef.h" 599 #include "TestClassDef.h"
604 DEFINE_TESTCLASS("BitmapCopy", TestBitmapCopyClass, TestBitmapCopy) 600 DEFINE_TESTCLASS("BitmapCopy", TestBitmapCopyClass, TestBitmapCopy)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698