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

Side by Side Diff: core/cross/bitmap_test.cc

Issue 150058: expose bitmap in js. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/o3d/
Patch Set: '' Created 11 years, 5 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
« no previous file with comments | « core/cross/bitmap.cc ('k') | core/cross/class_manager.cc » ('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 * Copyright 2009, Google Inc. 2 * Copyright 2009, Google Inc.
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 } 351 }
352 352
353 353
354 // ----------------------------------------------------------------------------- 354 // -----------------------------------------------------------------------------
355 355
356 // Loads a 24 bit TGA file, checks it against the known data. 356 // Loads a 24 bit TGA file, checks it against the known data.
357 TEST_F(BitmapTest, LoadTGAFile24bit) { 357 TEST_F(BitmapTest, LoadTGAFile24bit) {
358 // Load the texture object from a file. 358 // Load the texture object from a file.
359 String filename = *g_program_path + "/bitmap_test/tga-256x256-24bit.tga"; 359 String filename = *g_program_path + "/bitmap_test/tga-256x256-24bit.tga";
360 FilePath filepath = UTF8ToFilePath(filename); 360 FilePath filepath = UTF8ToFilePath(filename);
361 Bitmap bitmap; 361 Bitmap::Ref bitmap(new Bitmap(g_service_locator));
362 EXPECT_TRUE(bitmap.LoadFromFile(filepath, Bitmap::TGA, false)); 362 EXPECT_TRUE(bitmap->LoadFromFile(filepath, Bitmap::TGA, false));
363 EXPECT_TRUE(bitmap.image_data() != NULL); 363 EXPECT_TRUE(bitmap->image_data() != NULL);
364 EXPECT_FALSE(bitmap.is_cubemap()); 364 EXPECT_FALSE(bitmap->is_cubemap());
365 EXPECT_EQ(Texture::XRGB8, bitmap.format()); 365 EXPECT_EQ(Texture::XRGB8, bitmap->format());
366 EXPECT_EQ(256, bitmap.width()); 366 EXPECT_EQ(256, bitmap->width());
367 EXPECT_EQ(256, bitmap.height()); 367 EXPECT_EQ(256, bitmap->height());
368 EXPECT_EQ(1, bitmap.num_mipmaps()); 368 EXPECT_EQ(1, bitmap->num_mipmaps());
369 EXPECT_TRUE(TestBitmapData(bitmap, ktga256x256_24bit_BGRX)); 369 EXPECT_TRUE(TestBitmapData(*bitmap, ktga256x256_24bit_BGRX));
370 } 370 }
371 371
372 // Loads a 32 bit TGA file, checks it against the known data. 372 // Loads a 32 bit TGA file, checks it against the known data.
373 TEST_F(BitmapTest, LoadTGAFile32bit) { 373 TEST_F(BitmapTest, LoadTGAFile32bit) {
374 String filename = *g_program_path + "/bitmap_test/tga-256x256-32bit.tga"; 374 String filename = *g_program_path + "/bitmap_test/tga-256x256-32bit.tga";
375 FilePath filepath = UTF8ToFilePath(filename); 375 FilePath filepath = UTF8ToFilePath(filename);
376 Bitmap bitmap; 376 Bitmap::Ref bitmap(new Bitmap(g_service_locator));
377 EXPECT_TRUE(bitmap.LoadFromFile(filepath, Bitmap::TGA, false)); 377 EXPECT_TRUE(bitmap->LoadFromFile(filepath, Bitmap::TGA, false));
378 EXPECT_TRUE(bitmap.image_data() != NULL); 378 EXPECT_TRUE(bitmap->image_data() != NULL);
379 EXPECT_FALSE(bitmap.is_cubemap()); 379 EXPECT_FALSE(bitmap->is_cubemap());
380 EXPECT_EQ(Texture::ARGB8, bitmap.format()); 380 EXPECT_EQ(Texture::ARGB8, bitmap->format());
381 EXPECT_EQ(256, bitmap.width()); 381 EXPECT_EQ(256, bitmap->width());
382 EXPECT_EQ(256, bitmap.height()); 382 EXPECT_EQ(256, bitmap->height());
383 EXPECT_EQ(1, bitmap.num_mipmaps()); 383 EXPECT_EQ(1, bitmap->num_mipmaps());
384 EXPECT_TRUE(TestBitmapData(bitmap, ktga256x256_32bit_BGRA)); 384 EXPECT_TRUE(TestBitmapData(*bitmap, ktga256x256_32bit_BGRA));
385 } 385 }
386 386
387 // Tries to load a 5kx5k TGA file, which should fail. 387 // Tries to load a 5kx5k TGA file, which should fail.
388 TEST_F(BitmapTest, LoadTGAFileTooLarge) { 388 TEST_F(BitmapTest, LoadTGAFileTooLarge) {
389 // NOTE: the 5kx5k.tga file only has the first 4k bytes, to avoid 389 // NOTE: the 5kx5k.tga file only has the first 4k bytes, to avoid
390 // creating a 100MB test file. The code reads the header (first 18 bytes), 390 // creating a 100MB test file. The code reads the header (first 18 bytes),
391 // but bails before reading the actual image bytes. 391 // but bails before reading the actual image bytes.
392 String filename = *g_program_path + "/bitmap_test/5kx5k.tga"; 392 String filename = *g_program_path + "/bitmap_test/5kx5k.tga";
393 FilePath filepath = UTF8ToFilePath(filename); 393 FilePath filepath = UTF8ToFilePath(filename);
394 Bitmap bitmap; 394 Bitmap::Ref bitmap(new Bitmap(g_service_locator));
395 EXPECT_FALSE(bitmap.LoadFromFile(filepath, Bitmap::TGA, false)); 395 EXPECT_FALSE(bitmap->LoadFromFile(filepath, Bitmap::TGA, false));
396 EXPECT_TRUE(bitmap.image_data() == NULL); 396 EXPECT_TRUE(bitmap->image_data() == NULL);
397 } 397 }
398 398
399 // Loads a JPEG file, checks it against the known data. 399 // Loads a JPEG file, checks it against the known data.
400 TEST_F(BitmapTest, LoadJPEGFile) { 400 TEST_F(BitmapTest, LoadJPEGFile) {
401 String filename = *g_program_path + "/bitmap_test/jpeg-256x256.jpg"; 401 String filename = *g_program_path + "/bitmap_test/jpeg-256x256.jpg";
402 FilePath filepath = UTF8ToFilePath(filename); 402 FilePath filepath = UTF8ToFilePath(filename);
403 Bitmap bitmap; 403 Bitmap::Ref bitmap(new Bitmap(g_service_locator));
404 EXPECT_TRUE(bitmap.LoadFromFile(filepath, Bitmap::JPEG, false)); 404 EXPECT_TRUE(bitmap->LoadFromFile(filepath, Bitmap::JPEG, false));
405 EXPECT_TRUE(bitmap.image_data() != NULL); 405 EXPECT_TRUE(bitmap->image_data() != NULL);
406 EXPECT_FALSE(bitmap.is_cubemap()); 406 EXPECT_FALSE(bitmap->is_cubemap());
407 EXPECT_EQ(Texture::XRGB8, bitmap.format()); 407 EXPECT_EQ(Texture::XRGB8, bitmap->format());
408 EXPECT_EQ(256, bitmap.width()); 408 EXPECT_EQ(256, bitmap->width());
409 EXPECT_EQ(256, bitmap.height()); 409 EXPECT_EQ(256, bitmap->height());
410 EXPECT_EQ(1, bitmap.num_mipmaps()); 410 EXPECT_EQ(1, bitmap->num_mipmaps());
411 EXPECT_TRUE(TestBitmapData(bitmap, kjpg256x256_BGRX)); 411 EXPECT_TRUE(TestBitmapData(*bitmap, kjpg256x256_BGRX));
412 } 412 }
413 413
414 // Tries to load a 5kx5k JPEG file, which should fail. 414 // Tries to load a 5kx5k JPEG file, which should fail.
415 TEST_F(BitmapTest, LoadJPEGFileTooLarge) { 415 TEST_F(BitmapTest, LoadJPEGFileTooLarge) {
416 String filename = *g_program_path + "/bitmap_test/5kx5k.jpg"; 416 String filename = *g_program_path + "/bitmap_test/5kx5k.jpg";
417 FilePath filepath = UTF8ToFilePath(filename); 417 FilePath filepath = UTF8ToFilePath(filename);
418 Bitmap bitmap; 418 Bitmap::Ref bitmap(new Bitmap(g_service_locator));
419 EXPECT_FALSE(bitmap.LoadFromFile(filepath, Bitmap::JPEG, false)); 419 EXPECT_FALSE(bitmap->LoadFromFile(filepath, Bitmap::JPEG, false));
420 EXPECT_TRUE(bitmap.image_data() == NULL); 420 EXPECT_TRUE(bitmap->image_data() == NULL);
421 } 421 }
422 422
423 // Loads a 24 bit PNG file, checks it against the known data. 423 // Loads a 24 bit PNG file, checks it against the known data.
424 TEST_F(BitmapTest, LoadPNGFile24bit) { 424 TEST_F(BitmapTest, LoadPNGFile24bit) {
425 String filename = *g_program_path + "/bitmap_test/png-256x256-24bit.png"; 425 String filename = *g_program_path + "/bitmap_test/png-256x256-24bit.png";
426 FilePath filepath = UTF8ToFilePath(filename); 426 FilePath filepath = UTF8ToFilePath(filename);
427 Bitmap bitmap; 427 Bitmap::Ref bitmap(new Bitmap(g_service_locator));
428 EXPECT_TRUE(bitmap.LoadFromFile(filepath, Bitmap::PNG, false)); 428 EXPECT_TRUE(bitmap->LoadFromFile(filepath, Bitmap::PNG, false));
429 EXPECT_TRUE(bitmap.image_data() != NULL); 429 EXPECT_TRUE(bitmap->image_data() != NULL);
430 EXPECT_FALSE(bitmap.is_cubemap()); 430 EXPECT_FALSE(bitmap->is_cubemap());
431 EXPECT_EQ(Texture::XRGB8, bitmap.format()); 431 EXPECT_EQ(Texture::XRGB8, bitmap->format());
432 EXPECT_EQ(256, bitmap.width()); 432 EXPECT_EQ(256, bitmap->width());
433 EXPECT_EQ(256, bitmap.height()); 433 EXPECT_EQ(256, bitmap->height());
434 EXPECT_EQ(1, bitmap.num_mipmaps()); 434 EXPECT_EQ(1, bitmap->num_mipmaps());
435 EXPECT_TRUE(TestBitmapData(bitmap, kpng256x256_24bit_BGRX)); 435 EXPECT_TRUE(TestBitmapData(*bitmap, kpng256x256_24bit_BGRX));
436 } 436 }
437 437
438 // Loads a 24 bit interlaced PNG file, checks it against the known data. 438 // Loads a 24 bit interlaced PNG file, checks it against the known data.
439 TEST_F(BitmapTest, LoadPNGFile24bitInterlaced) { 439 TEST_F(BitmapTest, LoadPNGFile24bitInterlaced) {
440 String filename = *g_program_path + 440 String filename = *g_program_path +
441 "/bitmap_test/png-256x256-24bit-interlaced.png"; 441 "/bitmap_test/png-256x256-24bit-interlaced.png";
442 FilePath filepath = UTF8ToFilePath(filename); 442 FilePath filepath = UTF8ToFilePath(filename);
443 Bitmap bitmap; 443 Bitmap::Ref bitmap(new Bitmap(g_service_locator));
444 EXPECT_TRUE(bitmap.LoadFromFile(filepath, Bitmap::PNG, false)); 444 EXPECT_TRUE(bitmap->LoadFromFile(filepath, Bitmap::PNG, false));
445 EXPECT_TRUE(bitmap.image_data() != NULL); 445 EXPECT_TRUE(bitmap->image_data() != NULL);
446 EXPECT_FALSE(bitmap.is_cubemap()); 446 EXPECT_FALSE(bitmap->is_cubemap());
447 EXPECT_EQ(Texture::XRGB8, bitmap.format()); 447 EXPECT_EQ(Texture::XRGB8, bitmap->format());
448 EXPECT_EQ(256, bitmap.width()); 448 EXPECT_EQ(256, bitmap->width());
449 EXPECT_EQ(256, bitmap.height()); 449 EXPECT_EQ(256, bitmap->height());
450 EXPECT_EQ(1, bitmap.num_mipmaps()); 450 EXPECT_EQ(1, bitmap->num_mipmaps());
451 EXPECT_TRUE(TestBitmapData(bitmap, kpng256x256_24bit_interlaced_BGRX)); 451 EXPECT_TRUE(TestBitmapData(*bitmap, kpng256x256_24bit_interlaced_BGRX));
452 } 452 }
453 453
454 TEST_F(BitmapTest, LoadPNGFile32bit) { 454 TEST_F(BitmapTest, LoadPNGFile32bit) {
455 String filename = *g_program_path + "/bitmap_test/png-256x256-32bit.png"; 455 String filename = *g_program_path + "/bitmap_test/png-256x256-32bit.png";
456 FilePath filepath = UTF8ToFilePath(filename); 456 FilePath filepath = UTF8ToFilePath(filename);
457 Bitmap bitmap; 457 Bitmap::Ref bitmap(new Bitmap(g_service_locator));
458 EXPECT_TRUE(bitmap.LoadFromFile(filepath, Bitmap::PNG, false)); 458 EXPECT_TRUE(bitmap->LoadFromFile(filepath, Bitmap::PNG, false));
459 EXPECT_TRUE(bitmap.image_data() != NULL); 459 EXPECT_TRUE(bitmap->image_data() != NULL);
460 EXPECT_FALSE(bitmap.is_cubemap()); 460 EXPECT_FALSE(bitmap->is_cubemap());
461 EXPECT_EQ(Texture::ARGB8, bitmap.format()); 461 EXPECT_EQ(Texture::ARGB8, bitmap->format());
462 EXPECT_EQ(256, bitmap.width()); 462 EXPECT_EQ(256, bitmap->width());
463 EXPECT_EQ(256, bitmap.height()); 463 EXPECT_EQ(256, bitmap->height());
464 EXPECT_EQ(1, bitmap.num_mipmaps()); 464 EXPECT_EQ(1, bitmap->num_mipmaps());
465 EXPECT_TRUE(TestBitmapData(bitmap, kpng256x256_32bit_BGRA)); 465 EXPECT_TRUE(TestBitmapData(*bitmap, kpng256x256_32bit_BGRA));
466 } 466 }
467 467
468 // Loads a palettized PNG file, checks it against the known data. 468 // Loads a palettized PNG file, checks it against the known data.
469 TEST_F(BitmapTest, LoadPNGFile8bitPalette) { 469 TEST_F(BitmapTest, LoadPNGFile8bitPalette) {
470 String filename = *g_program_path + 470 String filename = *g_program_path +
471 "/bitmap_test/png-256x256-8bit-palette.png"; 471 "/bitmap_test/png-256x256-8bit-palette.png";
472 FilePath filepath = UTF8ToFilePath(filename); 472 FilePath filepath = UTF8ToFilePath(filename);
473 Bitmap bitmap; 473 Bitmap::Ref bitmap(new Bitmap(g_service_locator));
474 EXPECT_TRUE(bitmap.LoadFromFile(filepath, Bitmap::PNG, false)); 474 EXPECT_TRUE(bitmap->LoadFromFile(filepath, Bitmap::PNG, false));
475 EXPECT_TRUE(bitmap.image_data() != NULL); 475 EXPECT_TRUE(bitmap->image_data() != NULL);
476 EXPECT_FALSE(bitmap.is_cubemap()); 476 EXPECT_FALSE(bitmap->is_cubemap());
477 EXPECT_EQ(Texture::XRGB8, bitmap.format()); 477 EXPECT_EQ(Texture::XRGB8, bitmap->format());
478 EXPECT_EQ(256, bitmap.width()); 478 EXPECT_EQ(256, bitmap->width());
479 EXPECT_EQ(256, bitmap.height()); 479 EXPECT_EQ(256, bitmap->height());
480 EXPECT_EQ(1, bitmap.num_mipmaps()); 480 EXPECT_EQ(1, bitmap->num_mipmaps());
481 EXPECT_TRUE(TestBitmapData(bitmap, kpng256x256_8bit_palette_BGRX)); 481 EXPECT_TRUE(TestBitmapData(*bitmap, kpng256x256_8bit_palette_BGRX));
482 } 482 }
483 483
484 // Loads a palettized PNG file, checks it against the known data. 484 // Loads a palettized PNG file, checks it against the known data.
485 TEST_F(BitmapTest, LoadPNGFile4bitPalette) { 485 TEST_F(BitmapTest, LoadPNGFile4bitPalette) {
486 String filename = *g_program_path + 486 String filename = *g_program_path +
487 "/bitmap_test/png-20x14-4bit-palette.png"; 487 "/bitmap_test/png-20x14-4bit-palette.png";
488 FilePath filepath = UTF8ToFilePath(filename); 488 FilePath filepath = UTF8ToFilePath(filename);
489 Bitmap bitmap; 489 Bitmap::Ref bitmap(new Bitmap(g_service_locator));
490 EXPECT_TRUE(bitmap.LoadFromFile(filepath, Bitmap::PNG, false)); 490 EXPECT_TRUE(bitmap->LoadFromFile(filepath, Bitmap::PNG, false));
491 EXPECT_TRUE(bitmap.image_data() != NULL); 491 EXPECT_TRUE(bitmap->image_data() != NULL);
492 EXPECT_FALSE(bitmap.is_cubemap()); 492 EXPECT_FALSE(bitmap->is_cubemap());
493 EXPECT_EQ(Texture::XRGB8, bitmap.format()); 493 EXPECT_EQ(Texture::XRGB8, bitmap->format());
494 EXPECT_EQ(20, bitmap.width()); 494 EXPECT_EQ(20, bitmap->width());
495 EXPECT_EQ(14, bitmap.height()); 495 EXPECT_EQ(14, bitmap->height());
496 EXPECT_EQ(1, bitmap.num_mipmaps()); 496 EXPECT_EQ(1, bitmap->num_mipmaps());
497 EXPECT_TRUE(TestBitmapData(bitmap, kpng20x14_4bit_palette_BGRX)); 497 EXPECT_TRUE(TestBitmapData(*bitmap, kpng20x14_4bit_palette_BGRX));
498 } 498 }
499 499
500 500
501 // Tries to load a 5kx5k PNG file, which should fail. 501 // Tries to load a 5kx5k PNG file, which should fail.
502 TEST_F(BitmapTest, LoadPNGFileTooLarge) { 502 TEST_F(BitmapTest, LoadPNGFileTooLarge) {
503 String filename = *g_program_path + "/bitmap_test/5kx5k.png"; 503 String filename = *g_program_path + "/bitmap_test/5kx5k.png";
504 FilePath filepath = UTF8ToFilePath(filename); 504 FilePath filepath = UTF8ToFilePath(filename);
505 Bitmap bitmap; 505 Bitmap::Ref bitmap(new Bitmap(g_service_locator));
506 EXPECT_FALSE(bitmap.LoadFromFile(filepath, Bitmap::PNG, false)); 506 EXPECT_FALSE(bitmap->LoadFromFile(filepath, Bitmap::PNG, false));
507 EXPECT_TRUE(bitmap.image_data() == NULL); 507 EXPECT_TRUE(bitmap->image_data() == NULL);
508 } 508 }
509 509
510 // NOTE: Having trouble recognising the alpha channel in a PNG 510 // NOTE: Having trouble recognising the alpha channel in a PNG
511 // exported from Photoshop. 511 // exported from Photoshop.
512 /* 512 /*
513 TEST_F(BitmapTest, LoadPNGFile8bitPaletteAlpha) { 513 TEST_F(BitmapTest, LoadPNGFile8bitPaletteAlpha) {
514 String filename = *g_program_path + 514 String filename = *g_program_path +
515 "/bitmap_test/png-256x256-8bit-palette-alpha.png"; 515 "/bitmap_test/png-256x256-8bit-palette-alpha.png";
516 FilePath filepath = UTF8ToFilePath(filename); 516 FilePath filepath = UTF8ToFilePath(filename);
517 Bitmap bitmap; 517 Bitmap::Ref bitmap(new Bitmap(g_service_locator));
518 EXPECT_TRUE(bitmap.LoadFromFile(filepath, Bitmap::PNG, false)); 518 EXPECT_TRUE(bitmap->LoadFromFile(filepath, Bitmap::PNG, false));
519 EXPECT_TRUE(bitmap.image_data() != NULL); 519 EXPECT_TRUE(bitmap->image_data() != NULL);
520 EXPECT_FALSE(bitmap.is_cubemap()); 520 EXPECT_FALSE(bitmap->is_cubemap());
521 EXPECT_EQ(Texture::ARGB8, bitmap.format()); 521 EXPECT_EQ(Texture::ARGB8, bitmap->format());
522 EXPECT_EQ(256, bitmap.width()); 522 EXPECT_EQ(256, bitmap->width());
523 EXPECT_EQ(256, bitmap.height()); 523 EXPECT_EQ(256, bitmap->height());
524 EXPECT_EQ(1, bitmap.num_mipmaps()); 524 EXPECT_EQ(1, bitmap->num_mipmaps());
525 } 525 }
526 */ 526 */
527 527
528 // Loads a DXT1 DDS file, checks the format. 528 // Loads a DXT1 DDS file, checks the format.
529 TEST_F(BitmapTest, LoadDDSFileDXT1) { 529 TEST_F(BitmapTest, LoadDDSFileDXT1) {
530 String filename = *g_program_path + "/bitmap_test/dds-dxt1-256x256.dds"; 530 String filename = *g_program_path + "/bitmap_test/dds-dxt1-256x256.dds";
531 FilePath filepath = UTF8ToFilePath(filename); 531 FilePath filepath = UTF8ToFilePath(filename);
532 Bitmap bitmap; 532 Bitmap::Ref bitmap(new Bitmap(g_service_locator));
533 EXPECT_TRUE(bitmap.LoadFromFile(filepath, Bitmap::DDS, false)); 533 EXPECT_TRUE(bitmap->LoadFromFile(filepath, Bitmap::DDS, false));
534 EXPECT_TRUE(bitmap.image_data() != NULL); 534 EXPECT_TRUE(bitmap->image_data() != NULL);
535 EXPECT_FALSE(bitmap.is_cubemap()); 535 EXPECT_FALSE(bitmap->is_cubemap());
536 EXPECT_EQ(Texture::DXT1, bitmap.format()); 536 EXPECT_EQ(Texture::DXT1, bitmap->format());
537 EXPECT_EQ(256, bitmap.width()); 537 EXPECT_EQ(256, bitmap->width());
538 EXPECT_EQ(256, bitmap.height()); 538 EXPECT_EQ(256, bitmap->height());
539 EXPECT_EQ(1, bitmap.num_mipmaps()); 539 EXPECT_EQ(1, bitmap->num_mipmaps());
540 EXPECT_TRUE(TestBitmapData(bitmap, kdxt1_256x256)); 540 EXPECT_TRUE(TestBitmapData(*bitmap, kdxt1_256x256));
541 } 541 }
542 542
543 // Loads a DXT1 DDS file with alpha, checks the format. 543 // Loads a DXT1 DDS file with alpha, checks the format.
544 TEST_F(BitmapTest, LoadDDSFileDXT1Alpha) { 544 TEST_F(BitmapTest, LoadDDSFileDXT1Alpha) {
545 String filename = *g_program_path + 545 String filename = *g_program_path +
546 "/bitmap_test/dds-dxt1-256x256-alpha.dds"; 546 "/bitmap_test/dds-dxt1-256x256-alpha.dds";
547 FilePath filepath = UTF8ToFilePath(filename); 547 FilePath filepath = UTF8ToFilePath(filename);
548 Bitmap bitmap; 548 Bitmap::Ref bitmap(new Bitmap(g_service_locator));
549 EXPECT_TRUE(bitmap.LoadFromFile(filepath, Bitmap::DDS, false)); 549 EXPECT_TRUE(bitmap->LoadFromFile(filepath, Bitmap::DDS, false));
550 EXPECT_TRUE(bitmap.image_data() != NULL); 550 EXPECT_TRUE(bitmap->image_data() != NULL);
551 EXPECT_FALSE(bitmap.is_cubemap()); 551 EXPECT_FALSE(bitmap->is_cubemap());
552 EXPECT_EQ(Texture::DXT1, bitmap.format()); 552 EXPECT_EQ(Texture::DXT1, bitmap->format());
553 EXPECT_EQ(256, bitmap.width()); 553 EXPECT_EQ(256, bitmap->width());
554 EXPECT_EQ(256, bitmap.height()); 554 EXPECT_EQ(256, bitmap->height());
555 EXPECT_EQ(1, bitmap.num_mipmaps()); 555 EXPECT_EQ(1, bitmap->num_mipmaps());
556 EXPECT_TRUE(TestBitmapData(bitmap, kdxt1_256x256_alpha)); 556 EXPECT_TRUE(TestBitmapData(*bitmap, kdxt1_256x256_alpha));
557 } 557 }
558 558
559 // Loads a DXT1 DDS file with mipmaps, checks the format. 559 // Loads a DXT1 DDS file with mipmaps, checks the format.
560 TEST_F(BitmapTest, LoadDDSFileDXT1Mipmap) { 560 TEST_F(BitmapTest, LoadDDSFileDXT1Mipmap) {
561 String filename = *g_program_path + 561 String filename = *g_program_path +
562 "/bitmap_test/dds-dxt1-256x256-mipmap.dds"; 562 "/bitmap_test/dds-dxt1-256x256-mipmap.dds";
563 FilePath filepath = UTF8ToFilePath(filename); 563 FilePath filepath = UTF8ToFilePath(filename);
564 Bitmap bitmap; 564 Bitmap::Ref bitmap(new Bitmap(g_service_locator));
565 EXPECT_TRUE(bitmap.LoadFromFile(filepath, Bitmap::DDS, false)); 565 EXPECT_TRUE(bitmap->LoadFromFile(filepath, Bitmap::DDS, false));
566 EXPECT_TRUE(bitmap.image_data() != NULL); 566 EXPECT_TRUE(bitmap->image_data() != NULL);
567 EXPECT_FALSE(bitmap.is_cubemap()); 567 EXPECT_FALSE(bitmap->is_cubemap());
568 EXPECT_EQ(Texture::DXT1, bitmap.format()); 568 EXPECT_EQ(Texture::DXT1, bitmap->format());
569 EXPECT_EQ(256, bitmap.width()); 569 EXPECT_EQ(256, bitmap->width());
570 EXPECT_EQ(256, bitmap.height()); 570 EXPECT_EQ(256, bitmap->height());
571 EXPECT_EQ(9, bitmap.num_mipmaps()); 571 EXPECT_EQ(9, bitmap->num_mipmaps());
572 for (unsigned int i = 0; i < bitmap.num_mipmaps(); ++i) { 572 for (unsigned int i = 0; i < bitmap->num_mipmaps(); ++i) {
573 EXPECT_TRUE(bitmap.GetMipData(i, TextureCUBE::FACE_POSITIVE_X) != NULL); 573 EXPECT_TRUE(bitmap->GetMipData(i, TextureCUBE::FACE_POSITIVE_X) != NULL);
574 } 574 }
575 EXPECT_TRUE(TestBitmapData(bitmap, kdxt1_256x256_mipmap)); 575 EXPECT_TRUE(TestBitmapData(*bitmap, kdxt1_256x256_mipmap));
576 } 576 }
577 577
578 // Loads a DXT3 DDS file, checks the format. 578 // Loads a DXT3 DDS file, checks the format.
579 TEST_F(BitmapTest, LoadDDSFileDXT3) { 579 TEST_F(BitmapTest, LoadDDSFileDXT3) {
580 String filename = *g_program_path + 580 String filename = *g_program_path +
581 "/bitmap_test/dds-dxt3-256x256-alpha.dds"; 581 "/bitmap_test/dds-dxt3-256x256-alpha.dds";
582 FilePath filepath = UTF8ToFilePath(filename); 582 FilePath filepath = UTF8ToFilePath(filename);
583 Bitmap bitmap; 583 Bitmap::Ref bitmap(new Bitmap(g_service_locator));
584 EXPECT_TRUE(bitmap.LoadFromFile(filepath, Bitmap::DDS, false)); 584 EXPECT_TRUE(bitmap->LoadFromFile(filepath, Bitmap::DDS, false));
585 EXPECT_TRUE(bitmap.image_data() != NULL); 585 EXPECT_TRUE(bitmap->image_data() != NULL);
586 EXPECT_FALSE(bitmap.is_cubemap()); 586 EXPECT_FALSE(bitmap->is_cubemap());
587 EXPECT_EQ(Texture::DXT3, bitmap.format()); 587 EXPECT_EQ(Texture::DXT3, bitmap->format());
588 EXPECT_EQ(256, bitmap.width()); 588 EXPECT_EQ(256, bitmap->width());
589 EXPECT_EQ(256, bitmap.height()); 589 EXPECT_EQ(256, bitmap->height());
590 EXPECT_EQ(1, bitmap.num_mipmaps()); 590 EXPECT_EQ(1, bitmap->num_mipmaps());
591 EXPECT_TRUE(TestBitmapData(bitmap, kdxt3_256x256_alpha)); 591 EXPECT_TRUE(TestBitmapData(*bitmap, kdxt3_256x256_alpha));
592 } 592 }
593 593
594 // Loads a DXT3 DDS file with mipmaps, checks the format. 594 // Loads a DXT3 DDS file with mipmaps, checks the format.
595 TEST_F(BitmapTest, LoadDDSFileDXT3Mipmap) { 595 TEST_F(BitmapTest, LoadDDSFileDXT3Mipmap) {
596 String filename = *g_program_path + 596 String filename = *g_program_path +
597 "/bitmap_test/dds-dxt3-256x256-mipmap.dds"; 597 "/bitmap_test/dds-dxt3-256x256-mipmap.dds";
598 FilePath filepath = UTF8ToFilePath(filename); 598 FilePath filepath = UTF8ToFilePath(filename);
599 Bitmap bitmap; 599 Bitmap::Ref bitmap(new Bitmap(g_service_locator));
600 EXPECT_TRUE(bitmap.LoadFromFile(filepath, Bitmap::DDS, false)); 600 EXPECT_TRUE(bitmap->LoadFromFile(filepath, Bitmap::DDS, false));
601 EXPECT_TRUE(bitmap.image_data() != NULL); 601 EXPECT_TRUE(bitmap->image_data() != NULL);
602 EXPECT_FALSE(bitmap.is_cubemap()); 602 EXPECT_FALSE(bitmap->is_cubemap());
603 EXPECT_EQ(Texture::DXT3, bitmap.format()); 603 EXPECT_EQ(Texture::DXT3, bitmap->format());
604 EXPECT_EQ(256, bitmap.width()); 604 EXPECT_EQ(256, bitmap->width());
605 EXPECT_EQ(256, bitmap.height()); 605 EXPECT_EQ(256, bitmap->height());
606 EXPECT_EQ(9, bitmap.num_mipmaps()); 606 EXPECT_EQ(9, bitmap->num_mipmaps());
607 for (unsigned int i = 0; i < bitmap.num_mipmaps(); ++i) { 607 for (unsigned int i = 0; i < bitmap->num_mipmaps(); ++i) {
608 EXPECT_TRUE(bitmap.GetMipData(i, TextureCUBE::FACE_POSITIVE_X) != NULL); 608 EXPECT_TRUE(bitmap->GetMipData(i, TextureCUBE::FACE_POSITIVE_X) != NULL);
609 } 609 }
610 EXPECT_TRUE(TestBitmapData(bitmap, kdxt3_256x256_mipmap)); 610 EXPECT_TRUE(TestBitmapData(*bitmap, kdxt3_256x256_mipmap));
611 } 611 }
612 612
613 // Loads a DXT5 DDS file, checks the format. 613 // Loads a DXT5 DDS file, checks the format.
614 TEST_F(BitmapTest, LoadDDSFileDXT5) { 614 TEST_F(BitmapTest, LoadDDSFileDXT5) {
615 String filename = *g_program_path + 615 String filename = *g_program_path +
616 "/bitmap_test/dds-dxt5-256x256-alpha.dds"; 616 "/bitmap_test/dds-dxt5-256x256-alpha.dds";
617 FilePath filepath = UTF8ToFilePath(filename); 617 FilePath filepath = UTF8ToFilePath(filename);
618 Bitmap bitmap; 618 Bitmap::Ref bitmap(new Bitmap(g_service_locator));
619 EXPECT_TRUE(bitmap.LoadFromFile(filepath, Bitmap::DDS, false)); 619 EXPECT_TRUE(bitmap->LoadFromFile(filepath, Bitmap::DDS, false));
620 EXPECT_TRUE(bitmap.image_data() != NULL); 620 EXPECT_TRUE(bitmap->image_data() != NULL);
621 EXPECT_FALSE(bitmap.is_cubemap()); 621 EXPECT_FALSE(bitmap->is_cubemap());
622 EXPECT_EQ(Texture::DXT5, bitmap.format()); 622 EXPECT_EQ(Texture::DXT5, bitmap->format());
623 EXPECT_EQ(256, bitmap.width()); 623 EXPECT_EQ(256, bitmap->width());
624 EXPECT_EQ(256, bitmap.height()); 624 EXPECT_EQ(256, bitmap->height());
625 EXPECT_EQ(1, bitmap.num_mipmaps()); 625 EXPECT_EQ(1, bitmap->num_mipmaps());
626 EXPECT_TRUE(TestBitmapData(bitmap, kdxt5_256x256_alpha)); 626 EXPECT_TRUE(TestBitmapData(*bitmap, kdxt5_256x256_alpha));
627 } 627 }
628 628
629 // Loads a DXT5 DDS file with mipmaps, checks the format. 629 // Loads a DXT5 DDS file with mipmaps, checks the format.
630 TEST_F(BitmapTest, LoadDDSFileDXT5Mipmap) { 630 TEST_F(BitmapTest, LoadDDSFileDXT5Mipmap) {
631 String filename = *g_program_path + 631 String filename = *g_program_path +
632 "/bitmap_test/dds-dxt5-256x256-mipmap.dds"; 632 "/bitmap_test/dds-dxt5-256x256-mipmap.dds";
633 FilePath filepath = UTF8ToFilePath(filename); 633 FilePath filepath = UTF8ToFilePath(filename);
634 Bitmap bitmap; 634 Bitmap::Ref bitmap(new Bitmap(g_service_locator));
635 EXPECT_TRUE(bitmap.LoadFromFile(filepath, Bitmap::DDS, false)); 635 EXPECT_TRUE(bitmap->LoadFromFile(filepath, Bitmap::DDS, false));
636 EXPECT_TRUE(bitmap.image_data() != NULL); 636 EXPECT_TRUE(bitmap->image_data() != NULL);
637 EXPECT_FALSE(bitmap.is_cubemap()); 637 EXPECT_FALSE(bitmap->is_cubemap());
638 EXPECT_EQ(Texture::DXT5, bitmap.format()); 638 EXPECT_EQ(Texture::DXT5, bitmap->format());
639 EXPECT_EQ(256, bitmap.width()); 639 EXPECT_EQ(256, bitmap->width());
640 EXPECT_EQ(256, bitmap.height()); 640 EXPECT_EQ(256, bitmap->height());
641 EXPECT_EQ(9, bitmap.num_mipmaps()); 641 EXPECT_EQ(9, bitmap->num_mipmaps());
642 for (unsigned int i = 0; i < bitmap.num_mipmaps(); ++i) { 642 for (unsigned int i = 0; i < bitmap->num_mipmaps(); ++i) {
643 EXPECT_TRUE(bitmap.GetMipData(i, TextureCUBE::FACE_POSITIVE_X) != NULL); 643 EXPECT_TRUE(bitmap->GetMipData(i, TextureCUBE::FACE_POSITIVE_X) != NULL);
644 } 644 }
645 EXPECT_TRUE(TestBitmapData(bitmap, kdxt5_256x256_mipmap)); 645 EXPECT_TRUE(TestBitmapData(*bitmap, kdxt5_256x256_mipmap));
646 } 646 }
647 647
648 // Tries to load a 5kx5k DDS file, which should fail. 648 // Tries to load a 5kx5k DDS file, which should fail.
649 TEST_F(BitmapTest, LoadDDSFileTooLarge) { 649 TEST_F(BitmapTest, LoadDDSFileTooLarge) {
650 // NOTE: the 5kx5k.dds file only has the first 4k bytes, to avoid 650 // NOTE: the 5kx5k.dds file only has the first 4k bytes, to avoid
651 // creating a 100MB test file. The code reads the header (first 128 bytes), 651 // creating a 100MB test file. The code reads the header (first 128 bytes),
652 // but bails before reading the actual image bytes. 652 // but bails before reading the actual image bytes.
653 String filename = *g_program_path + "/bitmap_test/5kx5k.dds"; 653 String filename = *g_program_path + "/bitmap_test/5kx5k.dds";
654 FilePath filepath = UTF8ToFilePath(filename); 654 FilePath filepath = UTF8ToFilePath(filename);
655 Bitmap bitmap; 655 Bitmap::Ref bitmap(new Bitmap(g_service_locator));
656 EXPECT_FALSE(bitmap.LoadFromFile(filepath, Bitmap::DDS, false)); 656 EXPECT_FALSE(bitmap->LoadFromFile(filepath, Bitmap::DDS, false));
657 EXPECT_TRUE(bitmap.image_data() == NULL); 657 EXPECT_TRUE(bitmap->image_data() == NULL);
658 } 658 }
659 659
660 660
661 // NOTE: untested ffile types are: 661 // NOTE: untested ffile types are:
662 // png grayscale textures 662 // png grayscale textures
663 // dds cube maps 663 // dds cube maps
664 // dds mipmapped cube maps 664 // dds mipmapped cube maps
665 // dds 1D textures 665 // dds 1D textures
666 // dds 3D textures 666 // dds 3D textures
667 667
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
847 Bitmap::ScaleUpToPOT(kWidth, kHeight, format, kScaleUPDataNPOT, data.get()); 847 Bitmap::ScaleUpToPOT(kWidth, kHeight, format, kScaleUPDataNPOT, data.get());
848 EXPECT_EQ(0, memcmp(data.get(), kScaleUPDataPOT, dst_size)); 848 EXPECT_EQ(0, memcmp(data.get(), kScaleUPDataPOT, dst_size));
849 849
850 // Check that scaling works when source and destination do alias 850 // Check that scaling works when source and destination do alias
851 memset(data.get(), 0, dst_size); 851 memset(data.get(), 0, dst_size);
852 memcpy(data.get(), kScaleUPDataNPOT, src_size); 852 memcpy(data.get(), kScaleUPDataNPOT, src_size);
853 Bitmap::ScaleUpToPOT(kWidth, kHeight, format, data.get(), data.get()); 853 Bitmap::ScaleUpToPOT(kWidth, kHeight, format, data.get(), data.get());
854 EXPECT_EQ(0, memcmp(data.get(), kScaleUPDataPOT, dst_size)); 854 EXPECT_EQ(0, memcmp(data.get(), kScaleUPDataPOT, dst_size));
855 } 855 }
856 856
857 static unsigned char kpng_8x4_drawImage[128] = {
858 // Raw dest image used in drawimage test.
859 0x30, 0x60, 0xc0, 0xff, 0x32, 0x64, 0xc8, 0xff,
860 0x34, 0x68, 0xd0, 0xff, 0x36, 0x6c, 0xd8, 0xff,
861 0x38, 0x70, 0xe0, 0xff, 0x3a, 0x74, 0xe8, 0xff,
862 0x3c, 0x78, 0xf0, 0xff, 0x3e, 0x7c, 0xf8, 0xff,
863 0x20, 0x40, 0x80, 0xff, 0x22, 0x44, 0x88, 0xff,
864 0x24, 0x48, 0x90, 0xff, 0x26, 0x4c, 0x98, 0xff,
865 0x28, 0x50, 0xa0, 0xff, 0x2a, 0x54, 0xa8, 0xff,
866 0x2c, 0x58, 0xb0, 0xff, 0x2e, 0x5c, 0xb8, 0xff,
867 0x10, 0x20, 0x40, 0xff, 0x12, 0x24, 0x48, 0xff,
868 0x14, 0x28, 0x50, 0xff, 0x16, 0x2c, 0x58, 0xff,
869 0x18, 0x30, 0x60, 0xff, 0x1a, 0x34, 0x68, 0xff,
870 0x1c, 0x38, 0x70, 0xff, 0x1e, 0x3c, 0x78, 0xff,
871 0x00, 0x00, 0x00, 0xff, 0x02, 0x04, 0x08, 0xff,
872 0x04, 0x08, 0x10, 0xff, 0x06, 0x0c, 0x18, 0xff,
873 0x08, 0x10, 0x20, 0xff, 0x0a, 0x14, 0x28, 0xff,
874 0x0c, 0x18, 0x30, 0xff, 0x0e, 0x1c, 0x38, 0xff,
875 };
876
877 static unsigned char kpng_8x4_drawImage_top_left[128] = {
878 // expected result of drawimage on top left corner of dest image.
879 0x30, 0x60, 0xc0, 0xff, 0x32, 0x64, 0xc8, 0xff,
880 0x34, 0x68, 0xd0, 0xff, 0x36, 0x6c, 0xd8, 0xff,
881 0x38, 0x70, 0xe0, 0xff, 0x3a, 0x74, 0xe8, 0xff,
882 0x3c, 0x78, 0xf0, 0xff, 0x3e, 0x7c, 0xf8, 0xff,
883 0x2c, 0x2c, 0x2c, 0xff, 0x2d, 0x2d, 0x2d, 0xff,
884 0x2e, 0x2e, 0x2e, 0xff, 0x26, 0x4c, 0x98, 0xff,
885 0x28, 0x50, 0xa0, 0xff, 0x2a, 0x54, 0xa8, 0xff,
886 0x2c, 0x58, 0xb0, 0xff, 0x2e, 0x5c, 0xb8, 0xff,
887 0x28, 0x28, 0x28, 0xff, 0x29, 0x29, 0x29, 0xff,
888 0x2a, 0x2a, 0x2a, 0xff, 0x16, 0x2c, 0x58, 0xff,
889 0x18, 0x30, 0x60, 0xff, 0x1a, 0x34, 0x68, 0xff,
890 0x1c, 0x38, 0x70, 0xff, 0x1e, 0x3c, 0x78, 0xff,
891 0x24, 0x24, 0x24, 0xff, 0x25, 0x25, 0x25, 0xff,
892 0x26, 0x26, 0x26, 0xff, 0x06, 0x0c, 0x18, 0xff,
893 0x08, 0x10, 0x20, 0xff, 0x0a, 0x14, 0x28, 0xff,
894 0x0c, 0x18, 0x30, 0xff, 0x0e, 0x1c, 0x38, 0xff,
895 };
896
897 static unsigned char kpng_8x4_drawImage_top[128] = {
898 // expected result of drawimage on top bound of dest image.
899 0x30, 0x60, 0xc0, 0xff, 0x32, 0x64, 0xc8, 0xff,
900 0x34, 0x68, 0xd0, 0xff, 0x36, 0x6c, 0xd8, 0xff,
901 0x38, 0x70, 0xe0, 0xff, 0x3a, 0x74, 0xe8, 0xff,
902 0x3c, 0x78, 0xf0, 0xff, 0x3e, 0x7c, 0xf8, 0xff,
903 0x20, 0x40, 0x80, 0xff, 0x22, 0x44, 0x88, 0xff,
904 0x24, 0x48, 0x90, 0xff, 0x26, 0x4c, 0x98, 0xff,
905 0x28, 0x50, 0xa0, 0xff, 0x2a, 0x54, 0xa8, 0xff,
906 0x2c, 0x58, 0xb0, 0xff, 0x2e, 0x5c, 0xb8, 0xff,
907 0x10, 0x20, 0x40, 0xff, 0x12, 0x24, 0x48, 0xff,
908 0x2b, 0x2b, 0x2b, 0xff, 0x2c, 0x2c, 0x2c, 0xff,
909 0x2d, 0x2d, 0x2d, 0xff, 0x2e, 0x2e, 0x2e, 0xff,
910 0x1c, 0x38, 0x70, 0xff, 0x1e, 0x3c, 0x78, 0xff,
911 0x00, 0x00, 0x00, 0xff, 0x02, 0x04, 0x08, 0xff,
912 0x27, 0x27, 0x27, 0xff, 0x28, 0x28, 0x28, 0xff,
913 0x29, 0x29, 0x29, 0xff, 0x2a, 0x2a, 0x2a, 0xff,
914 0x0c, 0x18, 0x30, 0xff, 0x0e, 0x1c, 0x38, 0xff,
915 };
916
917 static unsigned char kpng_8x4_drawImage_top_right[128] = {
918 // expected result of drawimage on top right corner of dest image.
919 0x30, 0x60, 0xc0, 0xff, 0x32, 0x64, 0xc8, 0xff,
920 0x34, 0x68, 0xd0, 0xff, 0x36, 0x6c, 0xd8, 0xff,
921 0x38, 0x70, 0xe0, 0xff, 0x3a, 0x74, 0xe8, 0xff,
922 0x3c, 0x78, 0xf0, 0xff, 0x3e, 0x7c, 0xf8, 0xff,
923 0x20, 0x40, 0x80, 0xff, 0x22, 0x44, 0x88, 0xff,
924 0x24, 0x48, 0x90, 0xff, 0x26, 0x4c, 0x98, 0xff,
925 0x28, 0x50, 0xa0, 0xff, 0x2b, 0x2b, 0x2b, 0xff,
926 0x2c, 0x2c, 0x2c, 0xff, 0x2d, 0x2d, 0x2d, 0xff,
927 0x10, 0x20, 0x40, 0xff, 0x12, 0x24, 0x48, 0xff,
928 0x14, 0x28, 0x50, 0xff, 0x16, 0x2c, 0x58, 0xff,
929 0x18, 0x30, 0x60, 0xff, 0x27, 0x27, 0x27, 0xff,
930 0x28, 0x28, 0x28, 0xff, 0x29, 0x29, 0x29, 0xff,
931 0x00, 0x00, 0x00, 0xff, 0x02, 0x04, 0x08, 0xff,
932 0x04, 0x08, 0x10, 0xff, 0x06, 0x0c, 0x18, 0xff,
933 0x08, 0x10, 0x20, 0xff, 0x23, 0x23, 0x23, 0xff,
934 0x24, 0x24, 0x24, 0xff, 0x25, 0x25, 0x25, 0xff,
935 };
936
937 static unsigned char kpng_8x4_drawImage_right[128] = {
938 // expected result of drawimage on right bound of dest image.
939 0x30, 0x60, 0xc0, 0xff, 0x32, 0x64, 0xc8, 0xff,
940 0x34, 0x68, 0xd0, 0xff, 0x36, 0x6c, 0xd8, 0xff,
941 0x38, 0x70, 0xe0, 0xff, 0x2b, 0x2b, 0x2b, 0xff,
942 0x2c, 0x2c, 0x2c, 0xff, 0x2d, 0x2d, 0x2d, 0xff,
943 0x20, 0x40, 0x80, 0xff, 0x22, 0x44, 0x88, 0xff,
944 0x24, 0x48, 0x90, 0xff, 0x26, 0x4c, 0x98, 0xff,
945 0x28, 0x50, 0xa0, 0xff, 0x27, 0x27, 0x27, 0xff,
946 0x28, 0x28, 0x28, 0xff, 0x29, 0x29, 0x29, 0xff,
947 0x10, 0x20, 0x40, 0xff, 0x12, 0x24, 0x48, 0xff,
948 0x14, 0x28, 0x50, 0xff, 0x16, 0x2c, 0x58, 0xff,
949 0x18, 0x30, 0x60, 0xff, 0x23, 0x23, 0x23, 0xff,
950 0x24, 0x24, 0x24, 0xff, 0x25, 0x25, 0x25, 0xff,
951 0x00, 0x00, 0x00, 0xff, 0x02, 0x04, 0x08, 0xff,
952 0x04, 0x08, 0x10, 0xff, 0x06, 0x0c, 0x18, 0xff,
953 0x08, 0x10, 0x20, 0xff, 0x1f, 0x1f, 0x1f, 0xff,
954 0x20, 0x20, 0x20, 0xff, 0x21, 0x21, 0x21, 0xff,
955 };
956
957 static unsigned char kpng_8x4_drawImage_bottom_right[128] = {
958 // expected result of drawimage on bottom right corner of dest image.
959 0x30, 0x60, 0xc0, 0xff, 0x32, 0x64, 0xc8, 0xff,
960 0x34, 0x68, 0xd0, 0xff, 0x36, 0x6c, 0xd8, 0xff,
961 0x38, 0x70, 0xe0, 0xff, 0x27, 0x27, 0x27, 0xff,
962 0x28, 0x28, 0x28, 0xff, 0x29, 0x29, 0x29, 0xff,
963 0x20, 0x40, 0x80, 0xff, 0x22, 0x44, 0x88, 0xff,
964 0x24, 0x48, 0x90, 0xff, 0x26, 0x4c, 0x98, 0xff,
965 0x28, 0x50, 0xa0, 0xff, 0x23, 0x23, 0x23, 0xff,
966 0x24, 0x24, 0x24, 0xff, 0x25, 0x25, 0x25, 0xff,
967 0x10, 0x20, 0x40, 0xff, 0x12, 0x24, 0x48, 0xff,
968 0x14, 0x28, 0x50, 0xff, 0x16, 0x2c, 0x58, 0xff,
969 0x18, 0x30, 0x60, 0xff, 0x1f, 0x1f, 0x1f, 0xff,
970 0x20, 0x20, 0x20, 0xff, 0x21, 0x21, 0x21, 0xff,
971 0x00, 0x00, 0x00, 0xff, 0x02, 0x04, 0x08, 0xff,
972 0x04, 0x08, 0x10, 0xff, 0x06, 0x0c, 0x18, 0xff,
973 0x08, 0x10, 0x20, 0xff, 0x0a, 0x14, 0x28, 0xff,
974 0x0c, 0x18, 0x30, 0xff, 0x0e, 0x1c, 0x38, 0xff,
975 };
976
977 static unsigned char kpng_8x4_drawImage_bottom[128] = {
978 // expected result of drawimage on bottom bound of dest image.
979 0x30, 0x60, 0xc0, 0xff, 0x32, 0x64, 0xc8, 0xff,
980 0x27, 0x27, 0x27, 0xff, 0x28, 0x28, 0x28, 0xff,
981 0x29, 0x29, 0x29, 0xff, 0x2a, 0x2a, 0x2a, 0xff,
982 0x3c, 0x78, 0xf0, 0xff, 0x3e, 0x7c, 0xf8, 0xff,
983 0x20, 0x40, 0x80, 0xff, 0x22, 0x44, 0x88, 0xff,
984 0x23, 0x23, 0x23, 0xff, 0x24, 0x24, 0x24, 0xff,
985 0x25, 0x25, 0x25, 0xff, 0x26, 0x26, 0x26, 0xff,
986 0x2c, 0x58, 0xb0, 0xff, 0x2e, 0x5c, 0xb8, 0xff,
987 0x10, 0x20, 0x40, 0xff, 0x12, 0x24, 0x48, 0xff,
988 0x1f, 0x1f, 0x1f, 0xff, 0x20, 0x20, 0x20, 0xff,
989 0x21, 0x21, 0x21, 0xff, 0x22, 0x22, 0x22, 0xff,
990 0x1c, 0x38, 0x70, 0xff, 0x1e, 0x3c, 0x78, 0xff,
991 0x00, 0x00, 0x00, 0xff, 0x02, 0x04, 0x08, 0xff,
992 0x04, 0x08, 0x10, 0xff, 0x06, 0x0c, 0x18, 0xff,
993 0x08, 0x10, 0x20, 0xff, 0x0a, 0x14, 0x28, 0xff,
994 0x0c, 0x18, 0x30, 0xff, 0x0e, 0x1c, 0x38, 0xff,
995 };
996
997 static unsigned char kpng_8x4_drawImage_bottom_left[128] = {
998 // expected result of drawimage on bottom left corner of dest image.
999 0x28, 0x28, 0x28, 0xff, 0x29, 0x29, 0x29, 0xff,
1000 0x2a, 0x2a, 0x2a, 0xff, 0x36, 0x6c, 0xd8, 0xff,
1001 0x38, 0x70, 0xe0, 0xff, 0x3a, 0x74, 0xe8, 0xff,
1002 0x3c, 0x78, 0xf0, 0xff, 0x3e, 0x7c, 0xf8, 0xff,
1003 0x24, 0x24, 0x24, 0xff, 0x25, 0x25, 0x25, 0xff,
1004 0x26, 0x26, 0x26, 0xff, 0x26, 0x4c, 0x98, 0xff,
1005 0x28, 0x50, 0xa0, 0xff, 0x2a, 0x54, 0xa8, 0xff,
1006 0x2c, 0x58, 0xb0, 0xff, 0x2e, 0x5c, 0xb8, 0xff,
1007 0x20, 0x20, 0x20, 0xff, 0x21, 0x21, 0x21, 0xff,
1008 0x22, 0x22, 0x22, 0xff, 0x16, 0x2c, 0x58, 0xff,
1009 0x18, 0x30, 0x60, 0xff, 0x1a, 0x34, 0x68, 0xff,
1010 0x1c, 0x38, 0x70, 0xff, 0x1e, 0x3c, 0x78, 0xff,
1011 0x00, 0x00, 0x00, 0xff, 0x02, 0x04, 0x08, 0xff,
1012 0x04, 0x08, 0x10, 0xff, 0x06, 0x0c, 0x18, 0xff,
1013 0x08, 0x10, 0x20, 0xff, 0x0a, 0x14, 0x28, 0xff,
1014 0x0c, 0x18, 0x30, 0xff, 0x0e, 0x1c, 0x38, 0xff,
1015 };
1016
1017 static unsigned char kpng_8x4_drawImage_left[128] = {
1018 // expected result of drawimage on left bound of dest image.
1019 0x2c, 0x2c, 0x2c, 0xff, 0x2d, 0x2d, 0x2d, 0xff,
1020 0x2e, 0x2e, 0x2e, 0xff, 0x36, 0x6c, 0xd8, 0xff,
1021 0x38, 0x70, 0xe0, 0xff, 0x3a, 0x74, 0xe8, 0xff,
1022 0x3c, 0x78, 0xf0, 0xff, 0x3e, 0x7c, 0xf8, 0xff,
1023 0x28, 0x28, 0x28, 0xff, 0x29, 0x29, 0x29, 0xff,
1024 0x2a, 0x2a, 0x2a, 0xff, 0x26, 0x4c, 0x98, 0xff,
1025 0x28, 0x50, 0xa0, 0xff, 0x2a, 0x54, 0xa8, 0xff,
1026 0x2c, 0x58, 0xb0, 0xff, 0x2e, 0x5c, 0xb8, 0xff,
1027 0x24, 0x24, 0x24, 0xff, 0x25, 0x25, 0x25, 0xff,
1028 0x26, 0x26, 0x26, 0xff, 0x16, 0x2c, 0x58, 0xff,
1029 0x18, 0x30, 0x60, 0xff, 0x1a, 0x34, 0x68, 0xff,
1030 0x1c, 0x38, 0x70, 0xff, 0x1e, 0x3c, 0x78, 0xff,
1031 0x20, 0x20, 0x20, 0xff, 0x21, 0x21, 0x21, 0xff,
1032 0x22, 0x22, 0x22, 0xff, 0x06, 0x0c, 0x18, 0xff,
1033 0x08, 0x10, 0x20, 0xff, 0x0a, 0x14, 0x28, 0xff,
1034 0x0c, 0x18, 0x30, 0xff, 0x0e, 0x1c, 0x38, 0xff,
1035 };
1036
1037 static unsigned char kpng_8x4_drawImage_scale_up[128] = {
1038 // expected result of scale up from 2x2 to 8x4.
1039 0x3f, 0x3f, 0x3f, 0xff, 0x48, 0x48, 0x48, 0xff,
1040 0x51, 0x51, 0x51, 0xff, 0x5a, 0x5a, 0x5a, 0xff,
1041 0x64, 0x64, 0x64, 0xff, 0x6d, 0x6d, 0x6d, 0xff,
1042 0x76, 0x76, 0x76, 0xff, 0x7f, 0x7f, 0x7f, 0xff,
1043 0x2a, 0x2a, 0x2a, 0xff, 0x32, 0x32, 0x32, 0xff,
1044 0x39, 0x39, 0x39, 0xff, 0x41, 0x41, 0x41, 0xff,
1045 0x48, 0x48, 0x48, 0xff, 0x50, 0x50, 0x50, 0xff,
1046 0x57, 0x57, 0x57, 0xff, 0x5f, 0x5f, 0x5f, 0xff,
1047 0x15, 0x15, 0x15, 0xff, 0x1b, 0x1b, 0x1b, 0xff,
1048 0x21, 0x21, 0x21, 0xff, 0x27, 0x27, 0x27, 0xff,
1049 0x2d, 0x2d, 0x2d, 0xff, 0x33, 0x33, 0x33, 0xff,
1050 0x39, 0x39, 0x39, 0xff, 0x3f, 0x3f, 0x3f, 0xff,
1051 0x00, 0x00, 0x00, 0xff, 0x04, 0x04, 0x04, 0xff,
1052 0x09, 0x09, 0x09, 0xff, 0x0d, 0x0d, 0x0d, 0xff,
1053 0x12, 0x12, 0x12, 0xff, 0x16, 0x16, 0x16, 0xff,
1054 0x1b, 0x1b, 0x1b, 0xff, 0x1f, 0x1f, 0x1f, 0xff,
1055 };
1056
1057 static unsigned char kpng_8x4_drawImage_scale_down[128] = {
1058 // expected result of scale down from 8x8 to 4x4.
1059 0xa8, 0xa8, 0xa8, 0xff, 0xaf, 0xaf, 0xaf, 0xff,
1060 0xb6, 0xb6, 0xb6, 0xff, 0xbd, 0xbd, 0xbd, 0xff,
1061 0x38, 0x70, 0xe0, 0xff, 0x3a, 0x74, 0xe8, 0xff,
1062 0x3c, 0x78, 0xf0, 0xff, 0x3e, 0x7c, 0xf8, 0xff,
1063 0x70, 0x70, 0x70, 0xff, 0x77, 0x77, 0x77, 0xff,
1064 0x7e, 0x7e, 0x7e, 0xff, 0x85, 0x85, 0x85, 0xff,
1065 0x28, 0x50, 0xa0, 0xff, 0x2a, 0x54, 0xa8, 0xff,
1066 0x2c, 0x58, 0xb0, 0xff, 0x2e, 0x5c, 0xb8, 0xff,
1067 0x38, 0x38, 0x38, 0xff, 0x3f, 0x3f, 0x3f, 0xff,
1068 0x46, 0x46, 0x46, 0xff, 0x4d, 0x4d, 0x4d, 0xff,
1069 0x18, 0x30, 0x60, 0xff, 0x1a, 0x34, 0x68, 0xff,
1070 0x1c, 0x38, 0x70, 0xff, 0x1e, 0x3c, 0x78, 0xff,
1071 0x00, 0x00, 0x00, 0xff, 0x07, 0x07, 0x07, 0xff,
1072 0x0e, 0x0e, 0x0e, 0xff, 0x15, 0x15, 0x15, 0xff,
1073 0x08, 0x10, 0x20, 0xff, 0x0a, 0x14, 0x28, 0xff,
1074 0x0c, 0x18, 0x30, 0xff, 0x0e, 0x1c, 0x38, 0xff,
1075 };
1076
1077 static unsigned char kpng_8x4_drawImage_scale_out[128] = {
1078 // expected result of scale src image larger than dest image.
1079 0x63, 0x63, 0x63, 0xff, 0x65, 0x65, 0x65, 0xff,
1080 0x67, 0x67, 0x67, 0xff, 0x69, 0x69, 0x69, 0xff,
1081 0x6c, 0x6c, 0x6c, 0xff, 0x6e, 0x6e, 0x6e, 0xff,
1082 0x70, 0x70, 0x70, 0xff, 0x72, 0x72, 0x72, 0xff,
1083 0x53, 0x53, 0x53, 0xff, 0x55, 0x55, 0x55, 0xff,
1084 0x57, 0x57, 0x57, 0xff, 0x59, 0x59, 0x59, 0xff,
1085 0x5c, 0x5c, 0x5c, 0xff, 0x5e, 0x5e, 0x5e, 0xff,
1086 0x60, 0x60, 0x60, 0xff, 0x62, 0x62, 0x62, 0xff,
1087 0x43, 0x43, 0x43, 0xff, 0x45, 0x45, 0x45, 0xff,
1088 0x47, 0x47, 0x47, 0xff, 0x49, 0x49, 0x49, 0xff,
1089 0x4c, 0x4c, 0x4c, 0xff, 0x4e, 0x4e, 0x4e, 0xff,
1090 0x50, 0x50, 0x50, 0xff, 0x52, 0x52, 0x52, 0xff,
1091 0x33, 0x33, 0x33, 0xff, 0x35, 0x35, 0x35, 0xff,
1092 0x37, 0x37, 0x37, 0xff, 0x39, 0x39, 0x39, 0xff,
1093 0x3c, 0x3c, 0x3c, 0xff, 0x3e, 0x3e, 0x3e, 0xff,
1094 0x40, 0x40, 0x40, 0xff, 0x42, 0x42, 0x42, 0xff,
1095 };
1096
1097 static unsigned char kpng_8x4_drawImage_flip[128] = {
1098 // expected result of flip src image.
1099 0x30, 0x60, 0xc0, 0xff, 0x32, 0x64, 0xc8, 0xff,
1100 0x22, 0x22, 0x22, 0xff, 0x21, 0x21, 0x21, 0xff,
1101 0x20, 0x20, 0x20, 0xff, 0x1f, 0x1f, 0x1f, 0xff,
1102 0x3c, 0x78, 0xf0, 0xff, 0x3e, 0x7c, 0xf8, 0xff,
1103 0x20, 0x40, 0x80, 0xff, 0x22, 0x44, 0x88, 0xff,
1104 0x26, 0x26, 0x26, 0xff, 0x25, 0x25, 0x25, 0xff,
1105 0x24, 0x24, 0x24, 0xff, 0x23, 0x23, 0x23, 0xff,
1106 0x2c, 0x58, 0xb0, 0xff, 0x2e, 0x5c, 0xb8, 0xff,
1107 0x10, 0x20, 0x40, 0xff, 0x12, 0x24, 0x48, 0xff,
1108 0x2a, 0x2a, 0x2a, 0xff, 0x29, 0x29, 0x29, 0xff,
1109 0x28, 0x28, 0x28, 0xff, 0x27, 0x27, 0x27, 0xff,
1110 0x1c, 0x38, 0x70, 0xff, 0x1e, 0x3c, 0x78, 0xff,
1111 0x00, 0x00, 0x00, 0xff, 0x02, 0x04, 0x08, 0xff,
1112 0x2e, 0x2e, 0x2e, 0xff, 0x2d, 0x2d, 0x2d, 0xff,
1113 0x2c, 0x2c, 0x2c, 0xff, 0x2b, 0x2b, 0x2b, 0xff,
1114 0x0c, 0x18, 0x30, 0xff, 0x0e, 0x1c, 0x38, 0xff,
1115 };
1116
1117 static unsigned char kpng_8x4_drawImage_argb8[128] = {
1118 // expected result of drawimage with rgb8 format.
1119 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1120 0xca, 0xca, 0xca, 0x3e, 0xd7, 0xd7, 0xd7, 0x9a,
1121 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0xff,
1122 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff,
1123 0x00, 0x00, 0x00, 0x00, 0xca, 0xca, 0xca, 0x3e,
1124 0xe6, 0xe6, 0xe6, 0xdc, 0xfc, 0xfc, 0xfc, 0xfe,
1125 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff,
1126 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff,
1127 0xca, 0xca, 0xca, 0x3e, 0xe6, 0xe6, 0xe6, 0xdc,
1128 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
1129 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff,
1130 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff,
1131 0xc7, 0xc7, 0xc7, 0x83, 0xf4, 0xf4, 0xf4, 0xfb,
1132 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1133 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0xff,
1134 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff,
1135 };
1136
1137 // DrawImage from another bitmap on different positions,
1138 // compare with expected results.
1139 TEST_F(BitmapTest, DrawImage) {
1140 // path of dest image.
1141 String fname_dst = *g_program_path +
1142 "/bitmap_test/png-8x4-24bit-drawimage-dest.png";
1143
1144 // load three src bitmaps in different sizes from files.
1145 String filename_2x2_src = *g_program_path +
1146 "/bitmap_test/png-2x2-24bit-drawimage-src.png";
1147 Bitmap::Ref bitmap_2x2_src(new Bitmap(g_service_locator));
1148 EXPECT_TRUE(bitmap_2x2_src->LoadFromFile(UTF8ToFilePath(filename_2x2_src),
1149 Bitmap::PNG, false));
1150
1151 String filename_4x4_src = *g_program_path +
1152 "/bitmap_test/png-4x4-24bit-drawimage-src.png";
1153 Bitmap::Ref bitmap_4x4_src(new Bitmap(g_service_locator));
1154 EXPECT_TRUE(bitmap_4x4_src->LoadFromFile(UTF8ToFilePath(filename_4x4_src),
1155 Bitmap::PNG, false));
1156
1157 String filename_8x8_src = *g_program_path +
1158 "/bitmap_test/png-8x8-24bit-drawimage-src.png";
1159 Bitmap::Ref bitmap_8x8_src(new Bitmap(g_service_locator));
1160 EXPECT_TRUE(bitmap_8x8_src->LoadFromFile(UTF8ToFilePath(filename_8x8_src),
1161 Bitmap::PNG, false));
1162
1163 // test draw image on top left boundary.
1164 Bitmap::Ref bitmap_dest_top_left(new Bitmap(g_service_locator));
1165 EXPECT_TRUE(bitmap_dest_top_left->LoadFromFile(UTF8ToFilePath(fname_dst),
1166 Bitmap::PNG, false));
1167 // test whether the raw image is loaded correctly or not.
1168 EXPECT_TRUE(bitmap_dest_top_left->image_data() != NULL);
1169 EXPECT_TRUE(TestBitmapData(*bitmap_dest_top_left, kpng_8x4_drawImage));
1170 bitmap_dest_top_left->DrawImage(bitmap_4x4_src, 0, 0, 4, 4, -1, -1, 4, 4);
1171 EXPECT_TRUE(TestBitmapData(*bitmap_dest_top_left,
1172 kpng_8x4_drawImage_top_left));
1173
1174 // test draw image on top boundary.
1175 Bitmap::Ref bitmap_dest_top(new Bitmap(g_service_locator));
1176 EXPECT_TRUE(bitmap_dest_top->LoadFromFile(UTF8ToFilePath(fname_dst),
1177 Bitmap::PNG, false));
1178 bitmap_dest_top->DrawImage(bitmap_4x4_src, 0, 0, 4, 4, 2, -2, 4, 4);
1179 EXPECT_TRUE(TestBitmapData(*bitmap_dest_top, kpng_8x4_drawImage_top));
1180
1181 // test draw image on top right boundary.
1182 Bitmap::Ref bitmap_dest_top_right(new Bitmap(g_service_locator));
1183 EXPECT_TRUE(bitmap_dest_top_right->LoadFromFile(UTF8ToFilePath(fname_dst),
1184 Bitmap::PNG, false));
1185 bitmap_dest_top_right->DrawImage(bitmap_4x4_src, 0, 0, 4, 4, 5, -1, 4, 4);
1186 EXPECT_TRUE(TestBitmapData(*bitmap_dest_top_right,
1187 kpng_8x4_drawImage_top_right));
1188
1189 // test draw image on right boundary.
1190 Bitmap::Ref bitmap_dest_right(new Bitmap(g_service_locator));
1191 EXPECT_TRUE(bitmap_dest_right->LoadFromFile(UTF8ToFilePath(fname_dst),
1192 Bitmap::PNG, false));
1193 bitmap_dest_right->DrawImage(bitmap_4x4_src, 0, 0, 4, 4, 5, 0, 4, 4);
1194 EXPECT_TRUE(TestBitmapData(*bitmap_dest_right, kpng_8x4_drawImage_right));
1195
1196 // test draw image on bottom right boundary.
1197 Bitmap::Ref bitmap_dest_bottom_right(new Bitmap(g_service_locator));
1198 EXPECT_TRUE(bitmap_dest_bottom_right->LoadFromFile(UTF8ToFilePath(fname_dst),
1199 Bitmap::PNG, false));
1200 bitmap_dest_bottom_right->DrawImage(bitmap_4x4_src, 0, 0, 4, 4, 5, 1, 4, 4);
1201 EXPECT_TRUE(TestBitmapData(*bitmap_dest_bottom_right,
1202 kpng_8x4_drawImage_bottom_right));
1203
1204 // test draw image on bottom boundary.
1205 Bitmap::Ref bitmap_dest_bottom(new Bitmap(g_service_locator));
1206 EXPECT_TRUE(bitmap_dest_bottom->LoadFromFile(UTF8ToFilePath(fname_dst),
1207 Bitmap::PNG, false));
1208 bitmap_dest_bottom->DrawImage(bitmap_4x4_src, 0, 0, 4, 4, 2, 1, 4, 4);
1209 EXPECT_TRUE(TestBitmapData(*bitmap_dest_bottom, kpng_8x4_drawImage_bottom));
1210
1211 // test draw image on bottom left boundary.
1212 Bitmap::Ref bitmap_dest_bottom_left(new Bitmap(g_service_locator));
1213 EXPECT_TRUE(bitmap_dest_bottom_left->LoadFromFile(UTF8ToFilePath(fname_dst),
1214 Bitmap::PNG, false));
1215 bitmap_dest_bottom_left->DrawImage(bitmap_4x4_src, 0, 0, 4, 4, -1, 1, 4, 4);
1216 EXPECT_TRUE(TestBitmapData(*bitmap_dest_bottom_left,
1217 kpng_8x4_drawImage_bottom_left));
1218
1219 // test draw image on left boundary.
1220 Bitmap::Ref bitmap_dest_left(new Bitmap(g_service_locator));
1221 EXPECT_TRUE(bitmap_dest_left->LoadFromFile(UTF8ToFilePath(fname_dst),
1222 Bitmap::PNG, false));
1223 bitmap_dest_left->DrawImage(bitmap_4x4_src, 0, 0, 4, 4, -1, 0, 4, 4);
1224 EXPECT_TRUE(TestBitmapData(*bitmap_dest_left, kpng_8x4_drawImage_left));
1225
1226 // test scale up.
1227 Bitmap::Ref bitmap_dest_scale_up(new Bitmap(g_service_locator));
1228 EXPECT_TRUE(bitmap_dest_scale_up->LoadFromFile(UTF8ToFilePath(fname_dst),
1229 Bitmap::PNG, false));
1230 bitmap_dest_scale_up->DrawImage(bitmap_2x2_src, 0, 0, 2, 2, 0, 0, 8, 4);
1231 EXPECT_TRUE(TestBitmapData(*bitmap_dest_scale_up,
1232 kpng_8x4_drawImage_scale_up));
1233
1234 // test scale down.
1235 Bitmap::Ref bitmap_dest_scale_down(new Bitmap(g_service_locator));
1236 EXPECT_TRUE(bitmap_dest_scale_down->LoadFromFile(UTF8ToFilePath(fname_dst),
1237 Bitmap::PNG, false));
1238 bitmap_dest_scale_down->DrawImage(bitmap_8x8_src, 0, 0, 8, 8, 0, 0, 4, 4);
1239 EXPECT_TRUE(TestBitmapData(*bitmap_dest_scale_down,
1240 kpng_8x4_drawImage_scale_down));
1241
1242 // test scale up to a large size.
1243 Bitmap::Ref bitmap_dest_scale_out(new Bitmap(g_service_locator));
1244 EXPECT_TRUE(bitmap_dest_scale_out->LoadFromFile(UTF8ToFilePath(fname_dst),
1245 Bitmap::PNG, false));
1246 bitmap_dest_scale_out->DrawImage(bitmap_8x8_src, 0, 0, 8, 8, -2, -4, 12, 12);
1247 EXPECT_TRUE(TestBitmapData(*bitmap_dest_scale_out,
1248 kpng_8x4_drawImage_scale_out));
1249
1250 // test flip an image on both x and y cooridnates.
1251 Bitmap::Ref bitmap_dest_flip(new Bitmap(g_service_locator));
1252 EXPECT_TRUE(bitmap_dest_flip->LoadFromFile(UTF8ToFilePath(fname_dst),
1253 Bitmap::PNG, false));
1254 bitmap_dest_flip->DrawImage(bitmap_4x4_src, 0, 0, 4, 4, 5, 3, -4, -4);
1255 EXPECT_TRUE(TestBitmapData(*bitmap_dest_flip, kpng_8x4_drawImage_flip));
1256
1257 // test draw image on argb8 format.
1258 String fname_dst_argb8 = *g_program_path +
1259 "/bitmap_test/" +
1260 "png-8x4-24bit-drawimage-argb8-dest.png";
1261 Bitmap::Ref bitmap_dest_argb8(new Bitmap(g_service_locator));
1262 EXPECT_TRUE(bitmap_dest_argb8->LoadFromFile(UTF8ToFilePath(fname_dst_argb8),
1263 Bitmap::PNG, false));
1264 String fname_src_argb8 = *g_program_path +
1265 "/bitmap_test/" +
1266 "png-4x4-24bit-drawimage-argb8-src.png";
1267 Bitmap::Ref bitmap_src_argb8(new Bitmap(g_service_locator));
1268 EXPECT_TRUE(bitmap_src_argb8->LoadFromFile(UTF8ToFilePath(fname_src_argb8),
1269 Bitmap::PNG, false));
1270 bitmap_dest_argb8->DrawImage(bitmap_src_argb8, 0, 0, 4, 4, 0, 0, 4, 4);
1271 EXPECT_TRUE(TestBitmapData(*bitmap_dest_argb8, kpng_8x4_drawImage_argb8));
1272 }
1273
857 } // namespace 1274 } // namespace
OLDNEW
« no previous file with comments | « core/cross/bitmap.cc ('k') | core/cross/class_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698