OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 University of Szeged | 2 * Copyright (C) 2010 University of Szeged |
3 * Copyright (C) 2010 Zoltan Herczeg | 3 * Copyright (C) 2010 Zoltan Herczeg |
4 * Copyright (C) 2013 Google Inc. All rights reserved. | 4 * Copyright (C) 2013 Google Inc. All rights reserved. |
5 * | 5 * |
6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
8 * are met: | 8 * are met: |
9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. 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 405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
416 // Anyway, feConvolveMatrix should also use the implementation | 416 // Anyway, feConvolveMatrix should also use the implementation |
417 | 417 |
418 IntSize absolutePaintSize = absolutePaintRect().size(); | 418 IntSize absolutePaintSize = absolutePaintRect().size(); |
419 drawLighting(srcPixelArray, absolutePaintSize.width(), absolutePaintSize.hei
ght()); | 419 drawLighting(srcPixelArray, absolutePaintSize.width(), absolutePaintSize.hei
ght()); |
420 } | 420 } |
421 | 421 |
422 PassRefPtr<SkImageFilter> FELighting::createImageFilter(SkiaImageFilterBuilder*
builder) | 422 PassRefPtr<SkImageFilter> FELighting::createImageFilter(SkiaImageFilterBuilder*
builder) |
423 { | 423 { |
424 SkImageFilter::CropRect rect = getCropRect(builder ? builder->cropOffset() :
FloatSize()); | 424 SkImageFilter::CropRect rect = getCropRect(builder ? builder->cropOffset() :
FloatSize()); |
425 Color lightColor = adaptColorToOperatingColorSpace(m_lightingColor); | 425 Color lightColor = adaptColorToOperatingColorSpace(m_lightingColor); |
426 RefPtr<SkImageFilter> input(builder ? builder->build(inputEffect(0), operati
ngColorSpace()) : 0); | 426 RefPtr<SkImageFilter> input(builder ? builder->build(inputEffect(0), operati
ngColorSpace()) : nullptr); |
427 switch (m_lightSource->type()) { | 427 switch (m_lightSource->type()) { |
428 case LS_DISTANT: { | 428 case LS_DISTANT: { |
429 DistantLightSource* distantLightSource = static_cast<DistantLightSource*
>(m_lightSource.get()); | 429 DistantLightSource* distantLightSource = static_cast<DistantLightSource*
>(m_lightSource.get()); |
430 float azimuthRad = deg2rad(distantLightSource->azimuth()); | 430 float azimuthRad = deg2rad(distantLightSource->azimuth()); |
431 float elevationRad = deg2rad(distantLightSource->elevation()); | 431 float elevationRad = deg2rad(distantLightSource->elevation()); |
432 SkPoint3 direction(cosf(azimuthRad) * cosf(elevationRad), | 432 SkPoint3 direction(cosf(azimuthRad) * cosf(elevationRad), |
433 sinf(azimuthRad) * cosf(elevationRad), | 433 sinf(azimuthRad) * cosf(elevationRad), |
434 sinf(elevationRad)); | 434 sinf(elevationRad)); |
435 if (m_specularConstant > 0) | 435 if (m_specularConstant > 0) |
436 return adoptRef(SkLightingImageFilter::CreateDistantLitSpecular(dire
ction, lightColor.rgb(), m_surfaceScale, m_specularConstant, m_specularExponent,
input.get(), &rect)); | 436 return adoptRef(SkLightingImageFilter::CreateDistantLitSpecular(dire
ction, lightColor.rgb(), m_surfaceScale, m_specularConstant, m_specularExponent,
input.get(), &rect)); |
(...skipping 14 matching lines...) Expand all Loading... |
451 float specularExponent = spotLightSource->specularExponent(); | 451 float specularExponent = spotLightSource->specularExponent(); |
452 float limitingConeAngle = spotLightSource->limitingConeAngle(); | 452 float limitingConeAngle = spotLightSource->limitingConeAngle(); |
453 if (!limitingConeAngle || limitingConeAngle > 90 || limitingConeAngle <
-90) | 453 if (!limitingConeAngle || limitingConeAngle > 90 || limitingConeAngle <
-90) |
454 limitingConeAngle = 90; | 454 limitingConeAngle = 90; |
455 if (m_specularConstant > 0) | 455 if (m_specularConstant > 0) |
456 return adoptRef(SkLightingImageFilter::CreateSpotLitSpecular(locatio
n, target, specularExponent, limitingConeAngle, lightColor.rgb(), m_surfaceScale
, m_specularConstant, m_specularExponent, input.get(), &rect)); | 456 return adoptRef(SkLightingImageFilter::CreateSpotLitSpecular(locatio
n, target, specularExponent, limitingConeAngle, lightColor.rgb(), m_surfaceScale
, m_specularConstant, m_specularExponent, input.get(), &rect)); |
457 return adoptRef(SkLightingImageFilter::CreateSpotLitDiffuse(location, ta
rget, specularExponent, limitingConeAngle, lightColor.rgb(), m_surfaceScale, m_d
iffuseConstant, input.get(), &rect)); | 457 return adoptRef(SkLightingImageFilter::CreateSpotLitDiffuse(location, ta
rget, specularExponent, limitingConeAngle, lightColor.rgb(), m_surfaceScale, m_d
iffuseConstant, input.get(), &rect)); |
458 } | 458 } |
459 default: | 459 default: |
460 ASSERT_NOT_REACHED(); | 460 ASSERT_NOT_REACHED(); |
461 return 0; | 461 return nullptr; |
462 } | 462 } |
463 } | 463 } |
464 | 464 |
465 bool FELighting::applySkia() | 465 bool FELighting::applySkia() |
466 { | 466 { |
467 // For now, only use the skia implementation for accelerated rendering. | 467 // For now, only use the skia implementation for accelerated rendering. |
468 if (!filter()->isAccelerated()) | 468 if (!filter()->isAccelerated()) |
469 return false; | 469 return false; |
470 | 470 |
471 ImageBuffer* resultImage = createImageBufferResult(); | 471 ImageBuffer* resultImage = createImageBufferResult(); |
(...skipping 14 matching lines...) Expand all Loading... |
486 GraphicsContext* dstContext = resultImage->context(); | 486 GraphicsContext* dstContext = resultImage->context(); |
487 | 487 |
488 SkPaint paint; | 488 SkPaint paint; |
489 RefPtr<SkImageFilter> filter = createImageFilter(0); | 489 RefPtr<SkImageFilter> filter = createImageFilter(0); |
490 paint.setImageFilter(filter.get()); | 490 paint.setImageFilter(filter.get()); |
491 dstContext->drawBitmap(nativeImage->bitmap(), drawingRegion.location().x(),
drawingRegion.location().y(), &paint); | 491 dstContext->drawBitmap(nativeImage->bitmap(), drawingRegion.location().x(),
drawingRegion.location().y(), &paint); |
492 return true; | 492 return true; |
493 } | 493 } |
494 | 494 |
495 } // namespace WebCore | 495 } // namespace WebCore |
OLD | NEW |