| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2013, Google Inc. All rights reserved. | 2 * Copyright (c) 2013, Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 237 | 237 |
| 238 return options; | 238 return options; |
| 239 } | 239 } |
| 240 | 240 |
| 241 TEST_F(ImageBitmapTest, ImageBitmapColorSpaceConversionHTMLImageElement) { | 241 TEST_F(ImageBitmapTest, ImageBitmapColorSpaceConversionHTMLImageElement) { |
| 242 HTMLImageElement* imageElement = | 242 HTMLImageElement* imageElement = |
| 243 HTMLImageElement::create(*Document::create()); | 243 HTMLImageElement::create(*Document::create()); |
| 244 | 244 |
| 245 SkPaint p; | 245 SkPaint p; |
| 246 p.setColor(SK_ColorRED); | 246 p.setColor(SK_ColorRED); |
| 247 sk_sp<SkColorSpace> srcRGBColorSpace = | 247 sk_sp<SkColorSpace> srcRGBColorSpace = SkColorSpace::MakeSRGB(); |
| 248 SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named); | |
| 249 | 248 |
| 250 SkImageInfo rasterImageInfo = | 249 SkImageInfo rasterImageInfo = |
| 251 SkImageInfo::MakeN32Premul(10, 10, srcRGBColorSpace); | 250 SkImageInfo::MakeN32Premul(10, 10, srcRGBColorSpace); |
| 252 sk_sp<SkSurface> surface(SkSurface::MakeRaster(rasterImageInfo)); | 251 sk_sp<SkSurface> surface(SkSurface::MakeRaster(rasterImageInfo)); |
| 253 surface->getCanvas()->drawCircle(5, 5, 5, p); | 252 surface->getCanvas()->drawCircle(5, 5, 5, p); |
| 254 sk_sp<SkImage> image = surface->makeImageSnapshot(); | 253 sk_sp<SkImage> image = surface->makeImageSnapshot(); |
| 255 | 254 |
| 256 std::unique_ptr<uint8_t[]> srcPixel( | 255 std::unique_ptr<uint8_t[]> srcPixel( |
| 257 new uint8_t[rasterImageInfo.bytesPerPixel()]()); | 256 new uint8_t[rasterImageInfo.bytesPerPixel()]()); |
| 258 image->readPixels(rasterImageInfo.makeWH(1, 1), srcPixel.get(), | 257 image->readPixels(rasterImageInfo.makeWH(1, 1), srcPixel.get(), |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 switch (colorSpaceConversion) { | 298 switch (colorSpaceConversion) { |
| 300 case ColorSpaceConversion::NONE: | 299 case ColorSpaceConversion::NONE: |
| 301 NOTREACHED(); | 300 NOTREACHED(); |
| 302 break; | 301 break; |
| 303 case ColorSpaceConversion::DEFAULT_NOT_COLOR_CORRECTED: | 302 case ColorSpaceConversion::DEFAULT_NOT_COLOR_CORRECTED: |
| 304 colorSpace = ColorBehavior::globalTargetColorSpace().ToSkColorSpace(); | 303 colorSpace = ColorBehavior::globalTargetColorSpace().ToSkColorSpace(); |
| 305 colorFormat = colorFormat32; | 304 colorFormat = colorFormat32; |
| 306 break; | 305 break; |
| 307 case ColorSpaceConversion::DEFAULT_COLOR_CORRECTED: | 306 case ColorSpaceConversion::DEFAULT_COLOR_CORRECTED: |
| 308 case ColorSpaceConversion::SRGB: | 307 case ColorSpaceConversion::SRGB: |
| 309 colorSpace = SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named); | 308 colorSpace = SkColorSpace::MakeSRGB(); |
| 310 colorFormat = colorFormat32; | 309 colorFormat = colorFormat32; |
| 311 break; | 310 break; |
| 312 case ColorSpaceConversion::LINEAR_RGB: | 311 case ColorSpaceConversion::LINEAR_RGB: |
| 313 colorSpace = SkColorSpace::MakeNamed(SkColorSpace::kSRGBLinear_Named); | 312 colorSpace = SkColorSpace::MakeSRGBLinear(); |
| 314 colorType = SkColorType::kRGBA_F16_SkColorType; | 313 colorType = SkColorType::kRGBA_F16_SkColorType; |
| 315 colorFormat = SkColorSpaceXform::ColorFormat::kRGBA_F16_ColorFormat; | 314 colorFormat = SkColorSpaceXform::ColorFormat::kRGBA_F16_ColorFormat; |
| 316 break; | 315 break; |
| 317 default: | 316 default: |
| 318 NOTREACHED(); | 317 NOTREACHED(); |
| 319 } | 318 } |
| 320 | 319 |
| 321 SkImageInfo imageInfo = SkImageInfo::Make( | 320 SkImageInfo imageInfo = SkImageInfo::Make( |
| 322 1, 1, colorType, SkAlphaType::kPremul_SkAlphaType, colorSpace); | 321 1, 1, colorType, SkAlphaType::kPremul_SkAlphaType, colorSpace); |
| 323 std::unique_ptr<uint8_t[]> convertedPixel( | 322 std::unique_ptr<uint8_t[]> convertedPixel( |
| (...skipping 16 matching lines...) Expand all Loading... |
| 340 ASSERT_EQ(compare, 0); | 339 ASSERT_EQ(compare, 0); |
| 341 } | 340 } |
| 342 } | 341 } |
| 343 | 342 |
| 344 TEST_F(ImageBitmapTest, ImageBitmapColorSpaceConversionImageBitmap) { | 343 TEST_F(ImageBitmapTest, ImageBitmapColorSpaceConversionImageBitmap) { |
| 345 HTMLImageElement* imageElement = | 344 HTMLImageElement* imageElement = |
| 346 HTMLImageElement::create(*Document::create()); | 345 HTMLImageElement::create(*Document::create()); |
| 347 | 346 |
| 348 SkPaint p; | 347 SkPaint p; |
| 349 p.setColor(SK_ColorRED); | 348 p.setColor(SK_ColorRED); |
| 350 sk_sp<SkColorSpace> srcRGBColorSpace = | 349 sk_sp<SkColorSpace> srcRGBColorSpace = SkColorSpace::MakeSRGB(); |
| 351 SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named); | |
| 352 | 350 |
| 353 SkImageInfo rasterImageInfo = | 351 SkImageInfo rasterImageInfo = |
| 354 SkImageInfo::MakeN32Premul(10, 10, srcRGBColorSpace); | 352 SkImageInfo::MakeN32Premul(10, 10, srcRGBColorSpace); |
| 355 sk_sp<SkSurface> surface(SkSurface::MakeRaster(rasterImageInfo)); | 353 sk_sp<SkSurface> surface(SkSurface::MakeRaster(rasterImageInfo)); |
| 356 surface->getCanvas()->drawCircle(5, 5, 5, p); | 354 surface->getCanvas()->drawCircle(5, 5, 5, p); |
| 357 sk_sp<SkImage> image = surface->makeImageSnapshot(); | 355 sk_sp<SkImage> image = surface->makeImageSnapshot(); |
| 358 | 356 |
| 359 std::unique_ptr<uint8_t[]> srcPixel( | 357 std::unique_ptr<uint8_t[]> srcPixel( |
| 360 new uint8_t[rasterImageInfo.bytesPerPixel()]()); | 358 new uint8_t[rasterImageInfo.bytesPerPixel()]()); |
| 361 image->readPixels(rasterImageInfo.makeWH(1, 1), srcPixel.get(), | 359 image->readPixels(rasterImageInfo.makeWH(1, 1), srcPixel.get(), |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 399 switch (colorSpaceConversion) { | 397 switch (colorSpaceConversion) { |
| 400 case ColorSpaceConversion::NONE: | 398 case ColorSpaceConversion::NONE: |
| 401 NOTREACHED(); | 399 NOTREACHED(); |
| 402 break; | 400 break; |
| 403 case ColorSpaceConversion::DEFAULT_NOT_COLOR_CORRECTED: | 401 case ColorSpaceConversion::DEFAULT_NOT_COLOR_CORRECTED: |
| 404 colorSpace = ColorBehavior::globalTargetColorSpace().ToSkColorSpace(); | 402 colorSpace = ColorBehavior::globalTargetColorSpace().ToSkColorSpace(); |
| 405 colorFormat = colorFormat32; | 403 colorFormat = colorFormat32; |
| 406 break; | 404 break; |
| 407 case ColorSpaceConversion::DEFAULT_COLOR_CORRECTED: | 405 case ColorSpaceConversion::DEFAULT_COLOR_CORRECTED: |
| 408 case ColorSpaceConversion::SRGB: | 406 case ColorSpaceConversion::SRGB: |
| 409 colorSpace = SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named); | 407 colorSpace = SkColorSpace::MakeSRGB(); |
| 410 colorFormat = colorFormat32; | 408 colorFormat = colorFormat32; |
| 411 break; | 409 break; |
| 412 case ColorSpaceConversion::LINEAR_RGB: | 410 case ColorSpaceConversion::LINEAR_RGB: |
| 413 colorSpace = SkColorSpace::MakeNamed(SkColorSpace::kSRGBLinear_Named); | 411 colorSpace = SkColorSpace::MakeSRGBLinear(); |
| 414 colorType = SkColorType::kRGBA_F16_SkColorType; | 412 colorType = SkColorType::kRGBA_F16_SkColorType; |
| 415 colorFormat = SkColorSpaceXform::ColorFormat::kRGBA_F16_ColorFormat; | 413 colorFormat = SkColorSpaceXform::ColorFormat::kRGBA_F16_ColorFormat; |
| 416 break; | 414 break; |
| 417 default: | 415 default: |
| 418 NOTREACHED(); | 416 NOTREACHED(); |
| 419 } | 417 } |
| 420 | 418 |
| 421 SkImageInfo imageInfo = SkImageInfo::Make( | 419 SkImageInfo imageInfo = SkImageInfo::Make( |
| 422 1, 1, colorType, SkAlphaType::kPremul_SkAlphaType, colorSpace); | 420 1, 1, colorType, SkAlphaType::kPremul_SkAlphaType, colorSpace); |
| 423 std::unique_ptr<uint8_t[]> convertedPixel( | 421 std::unique_ptr<uint8_t[]> convertedPixel( |
| (...skipping 13 matching lines...) Expand all Loading... |
| 437 | 435 |
| 438 int compare = std::memcmp(convertedPixel.get(), transformedPixel.get(), | 436 int compare = std::memcmp(convertedPixel.get(), transformedPixel.get(), |
| 439 imageInfo.bytesPerPixel()); | 437 imageInfo.bytesPerPixel()); |
| 440 ASSERT_EQ(compare, 0); | 438 ASSERT_EQ(compare, 0); |
| 441 } | 439 } |
| 442 } | 440 } |
| 443 | 441 |
| 444 TEST_F(ImageBitmapTest, ImageBitmapColorSpaceConversionStaticBitmapImage) { | 442 TEST_F(ImageBitmapTest, ImageBitmapColorSpaceConversionStaticBitmapImage) { |
| 445 SkPaint p; | 443 SkPaint p; |
| 446 p.setColor(SK_ColorRED); | 444 p.setColor(SK_ColorRED); |
| 447 sk_sp<SkColorSpace> srcRGBColorSpace = | 445 sk_sp<SkColorSpace> srcRGBColorSpace = SkColorSpace::MakeSRGB(); |
| 448 SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named); | |
| 449 | 446 |
| 450 SkImageInfo rasterImageInfo = | 447 SkImageInfo rasterImageInfo = |
| 451 SkImageInfo::MakeN32Premul(10, 10, srcRGBColorSpace); | 448 SkImageInfo::MakeN32Premul(10, 10, srcRGBColorSpace); |
| 452 sk_sp<SkSurface> surface(SkSurface::MakeRaster(rasterImageInfo)); | 449 sk_sp<SkSurface> surface(SkSurface::MakeRaster(rasterImageInfo)); |
| 453 surface->getCanvas()->drawCircle(5, 5, 5, p); | 450 surface->getCanvas()->drawCircle(5, 5, 5, p); |
| 454 sk_sp<SkImage> image = surface->makeImageSnapshot(); | 451 sk_sp<SkImage> image = surface->makeImageSnapshot(); |
| 455 | 452 |
| 456 std::unique_ptr<uint8_t[]> srcPixel( | 453 std::unique_ptr<uint8_t[]> srcPixel( |
| 457 new uint8_t[rasterImageInfo.bytesPerPixel()]()); | 454 new uint8_t[rasterImageInfo.bytesPerPixel()]()); |
| 458 image->readPixels(rasterImageInfo.makeWH(1, 1), srcPixel.get(), | 455 image->readPixels(rasterImageInfo.makeWH(1, 1), srcPixel.get(), |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 490 switch (colorSpaceConversion) { | 487 switch (colorSpaceConversion) { |
| 491 case ColorSpaceConversion::NONE: | 488 case ColorSpaceConversion::NONE: |
| 492 NOTREACHED(); | 489 NOTREACHED(); |
| 493 break; | 490 break; |
| 494 case ColorSpaceConversion::DEFAULT_NOT_COLOR_CORRECTED: | 491 case ColorSpaceConversion::DEFAULT_NOT_COLOR_CORRECTED: |
| 495 colorSpace = ColorBehavior::globalTargetColorSpace().ToSkColorSpace(); | 492 colorSpace = ColorBehavior::globalTargetColorSpace().ToSkColorSpace(); |
| 496 colorFormat = colorFormat32; | 493 colorFormat = colorFormat32; |
| 497 break; | 494 break; |
| 498 case ColorSpaceConversion::DEFAULT_COLOR_CORRECTED: | 495 case ColorSpaceConversion::DEFAULT_COLOR_CORRECTED: |
| 499 case ColorSpaceConversion::SRGB: | 496 case ColorSpaceConversion::SRGB: |
| 500 colorSpace = SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named); | 497 colorSpace = SkColorSpace::MakeSRGB(); |
| 501 colorFormat = colorFormat32; | 498 colorFormat = colorFormat32; |
| 502 break; | 499 break; |
| 503 case ColorSpaceConversion::LINEAR_RGB: | 500 case ColorSpaceConversion::LINEAR_RGB: |
| 504 colorSpace = SkColorSpace::MakeNamed(SkColorSpace::kSRGBLinear_Named); | 501 colorSpace = SkColorSpace::MakeSRGBLinear(); |
| 505 colorType = SkColorType::kRGBA_F16_SkColorType; | 502 colorType = SkColorType::kRGBA_F16_SkColorType; |
| 506 colorFormat = SkColorSpaceXform::ColorFormat::kRGBA_F16_ColorFormat; | 503 colorFormat = SkColorSpaceXform::ColorFormat::kRGBA_F16_ColorFormat; |
| 507 break; | 504 break; |
| 508 default: | 505 default: |
| 509 NOTREACHED(); | 506 NOTREACHED(); |
| 510 } | 507 } |
| 511 | 508 |
| 512 SkImageInfo imageInfo = SkImageInfo::Make( | 509 SkImageInfo imageInfo = SkImageInfo::Make( |
| 513 1, 1, colorType, SkAlphaType::kPremul_SkAlphaType, colorSpace); | 510 1, 1, colorType, SkAlphaType::kPremul_SkAlphaType, colorSpace); |
| 514 std::unique_ptr<uint8_t[]> convertedPixel( | 511 std::unique_ptr<uint8_t[]> convertedPixel( |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 imageBitmap->bitmapImage() | 564 imageBitmap->bitmapImage() |
| 568 ->imageForCurrentFrame(ColorBehavior::ignore()) | 565 ->imageForCurrentFrame(ColorBehavior::ignore()) |
| 569 .get(); | 566 .get(); |
| 570 | 567 |
| 571 switch (colorSpaceConversion) { | 568 switch (colorSpaceConversion) { |
| 572 case ColorSpaceConversion::NONE: | 569 case ColorSpaceConversion::NONE: |
| 573 NOTREACHED(); | 570 NOTREACHED(); |
| 574 break; | 571 break; |
| 575 case ColorSpaceConversion::DEFAULT_COLOR_CORRECTED: | 572 case ColorSpaceConversion::DEFAULT_COLOR_CORRECTED: |
| 576 case ColorSpaceConversion::SRGB: | 573 case ColorSpaceConversion::SRGB: |
| 577 colorSpace = SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named); | 574 colorSpace = SkColorSpace::MakeSRGB(); |
| 578 colorFormat = colorFormat32; | 575 colorFormat = colorFormat32; |
| 579 break; | 576 break; |
| 580 case ColorSpaceConversion::LINEAR_RGB: | 577 case ColorSpaceConversion::LINEAR_RGB: |
| 581 colorSpace = SkColorSpace::MakeNamed(SkColorSpace::kSRGBLinear_Named); | 578 colorSpace = SkColorSpace::MakeSRGBLinear(); |
| 582 colorType = SkColorType::kRGBA_F16_SkColorType; | 579 colorType = SkColorType::kRGBA_F16_SkColorType; |
| 583 colorFormat = SkColorSpaceXform::ColorFormat::kRGBA_F16_ColorFormat; | 580 colorFormat = SkColorSpaceXform::ColorFormat::kRGBA_F16_ColorFormat; |
| 584 break; | 581 break; |
| 585 default: | 582 default: |
| 586 NOTREACHED(); | 583 NOTREACHED(); |
| 587 } | 584 } |
| 588 | 585 |
| 589 SkImageInfo imageInfo = SkImageInfo::Make( | 586 SkImageInfo imageInfo = SkImageInfo::Make( |
| 590 1, 1, colorType, SkAlphaType::kUnpremul_SkAlphaType, colorSpace); | 587 1, 1, colorType, SkAlphaType::kUnpremul_SkAlphaType, colorSpace); |
| 591 std::unique_ptr<uint8_t[]> convertedPixel( | 588 std::unique_ptr<uint8_t[]> convertedPixel( |
| (...skipping 11 matching lines...) Expand all Loading... |
| 603 colorSpaceXform->apply(colorFormat, transformedPixel.get(), colorFormat32, | 600 colorSpaceXform->apply(colorFormat, transformedPixel.get(), colorFormat32, |
| 604 srcPixel.get(), 1, | 601 srcPixel.get(), 1, |
| 605 SkAlphaType::kUnpremul_SkAlphaType); | 602 SkAlphaType::kUnpremul_SkAlphaType); |
| 606 int compare = std::memcmp(convertedPixel.get(), transformedPixel.get(), | 603 int compare = std::memcmp(convertedPixel.get(), transformedPixel.get(), |
| 607 imageInfo.bytesPerPixel()); | 604 imageInfo.bytesPerPixel()); |
| 608 ASSERT_EQ(compare, 0); | 605 ASSERT_EQ(compare, 0); |
| 609 } | 606 } |
| 610 } | 607 } |
| 611 | 608 |
| 612 } // namespace blink | 609 } // namespace blink |
| OLD | NEW |