OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |