| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. | 2 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. |
| 3 * Copyright (C) 2013 Google Inc. All rights reserved. | 3 * Copyright (C) 2013 Google Inc. 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 | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * | 8 * |
| 9 * 1. Redistributions of source code must retain the above | 9 * 1. Redistributions of source code must retain the above |
| 10 * copyright notice, this list of conditions and the following | 10 * copyright notice, this list of conditions and the following |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 */ | 29 */ |
| 30 | 30 |
| 31 #include "config.h" | 31 #include "config.h" |
| 32 #include "platform/graphics/filters/Filter.h" | 32 #include "platform/graphics/filters/Filter.h" |
| 33 | 33 |
| 34 #include "platform/graphics/filters/FilterEffect.h" | 34 #include "platform/graphics/filters/FilterEffect.h" |
| 35 #include "platform/graphics/filters/SourceGraphic.h" | 35 #include "platform/graphics/filters/SourceGraphic.h" |
| 36 | 36 |
| 37 namespace blink { | 37 namespace blink { |
| 38 | 38 |
| 39 Filter::Filter(const FloatRect& referenceBox, const FloatRect& filterRegion, flo
at scale) | 39 Filter::Filter(const FloatRect& referenceBox, const FloatRect& filterRegion, flo
at scale, UnitScaling unitScaling) |
| 40 : m_referenceBox(referenceBox) | 40 : m_referenceBox(referenceBox) |
| 41 , m_filterRegion(filterRegion) | 41 , m_filterRegion(filterRegion) |
| 42 , m_scale(scale) | 42 , m_scale(scale) |
| 43 , m_unitScaling(unitScaling) |
| 43 , m_sourceGraphic(SourceGraphic::create(this)) | 44 , m_sourceGraphic(SourceGraphic::create(this)) |
| 44 { | 45 { |
| 45 } | 46 } |
| 46 | 47 |
| 47 Filter::~Filter() | 48 Filter::~Filter() |
| 48 { | 49 { |
| 49 } | 50 } |
| 50 | 51 |
| 52 PassRefPtrWillBeRawPtr<Filter> Filter::create(const FloatRect& referenceBox, con
st FloatRect& filterRegion, float scale, UnitScaling unitScaling) |
| 53 { |
| 54 return adoptRefWillBeNoop(new Filter(referenceBox, filterRegion, scale, unit
Scaling)); |
| 55 } |
| 56 |
| 57 PassRefPtrWillBeRawPtr<Filter> Filter::create(float scale) |
| 58 { |
| 59 return adoptRefWillBeNoop(new Filter(FloatRect(), FloatRect(), scale, UserSp
ace)); |
| 60 } |
| 61 |
| 51 DEFINE_TRACE(Filter) | 62 DEFINE_TRACE(Filter) |
| 52 { | 63 { |
| 53 visitor->trace(m_sourceGraphic); | 64 visitor->trace(m_sourceGraphic); |
| 54 visitor->trace(m_lastEffect); | 65 visitor->trace(m_lastEffect); |
| 55 } | 66 } |
| 56 | 67 |
| 57 FloatRect Filter::mapLocalRectToAbsoluteRect(const FloatRect& rect) const | 68 FloatRect Filter::mapLocalRectToAbsoluteRect(const FloatRect& rect) const |
| 58 { | 69 { |
| 59 FloatRect result(rect); | 70 FloatRect result(rect); |
| 60 result.scale(m_scale); | 71 result.scale(m_scale); |
| 61 return result; | 72 return result; |
| 62 } | 73 } |
| 63 | 74 |
| 64 FloatRect Filter::mapAbsoluteRectToLocalRect(const FloatRect& rect) const | 75 FloatRect Filter::mapAbsoluteRectToLocalRect(const FloatRect& rect) const |
| 65 { | 76 { |
| 66 FloatRect result(rect); | 77 FloatRect result(rect); |
| 67 result.scale(1.0f / m_scale); | 78 result.scale(1.0f / m_scale); |
| 68 return result; | 79 return result; |
| 69 } | 80 } |
| 70 | 81 |
| 82 float Filter::applyHorizontalScale(float value) const |
| 83 { |
| 84 if (m_unitScaling == BoundingBox) |
| 85 value *= referenceBox().width(); |
| 86 return m_scale * value; |
| 87 } |
| 88 |
| 89 float Filter::applyVerticalScale(float value) const |
| 90 { |
| 91 if (m_unitScaling == BoundingBox) |
| 92 value *= referenceBox().height(); |
| 93 return m_scale * value; |
| 94 } |
| 95 |
| 96 FloatPoint3D Filter::resolve3dPoint(const FloatPoint3D& point) const |
| 97 { |
| 98 if (m_unitScaling != BoundingBox) |
| 99 return point; |
| 100 return FloatPoint3D(point.x() * referenceBox().width() + referenceBox().x(), |
| 101 point.y() * referenceBox().height() + referenceBox().y(), |
| 102 point.z() * sqrtf(referenceBox().size().diagonalLengthSquared() / 2)); |
| 103 } |
| 104 |
| 71 void Filter::setLastEffect(PassRefPtrWillBeRawPtr<FilterEffect> effect) | 105 void Filter::setLastEffect(PassRefPtrWillBeRawPtr<FilterEffect> effect) |
| 72 { | 106 { |
| 73 m_lastEffect = effect; | 107 m_lastEffect = effect; |
| 74 } | 108 } |
| 75 | 109 |
| 76 } // namespace blink | 110 } // namespace blink |
| OLD | NEW |