Commit 62211e91 authored by Abhijeet Kandalkar's avatar Abhijeet Kandalkar Committed by Commit Bot

Remove DEFINE_FILTER_OPERATION_TYPE_CASTS to use new downcast helpers.

Bug: 891908
Change-Id: I79c199ee38d9369f4ca87d578dcbc8565fa0ef11
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1538157
Commit-Queue: Abhijeet Kandalkar <abhijeet@igalia.com>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#644349}
parent e5534ab1
...@@ -184,12 +184,12 @@ InterpolationValue filter_interpolation_functions::MaybeConvertFilter( ...@@ -184,12 +184,12 @@ InterpolationValue filter_interpolation_functions::MaybeConvertFilter(
case FilterOperation::BLUR: case FilterOperation::BLUR:
result = LengthInterpolationFunctions::MaybeConvertLength( result = LengthInterpolationFunctions::MaybeConvertLength(
ToBlurFilterOperation(filter).StdDeviation(), zoom); To<BlurFilterOperation>(filter).StdDeviation(), zoom);
break; break;
case FilterOperation::DROP_SHADOW: { case FilterOperation::DROP_SHADOW: {
result = ShadowInterpolationFunctions::ConvertShadowData( result = ShadowInterpolationFunctions::ConvertShadowData(
ToDropShadowFilterOperation(filter).Shadow(), zoom); To<DropShadowFilterOperation>(filter).Shadow(), zoom);
break; break;
} }
......
...@@ -1972,7 +1972,7 @@ CSSValue* ComputedStyleUtils::ValueForFilter( ...@@ -1972,7 +1972,7 @@ CSSValue* ComputedStyleUtils::ValueForFilter(
case FilterOperation::REFERENCE: case FilterOperation::REFERENCE:
filter_value = MakeGarbageCollected<CSSFunctionValue>(CSSValueID::kUrl); filter_value = MakeGarbageCollected<CSSFunctionValue>(CSSValueID::kUrl);
filter_value->Append(*MakeGarbageCollected<CSSStringValue>( filter_value->Append(*MakeGarbageCollected<CSSStringValue>(
ToReferenceFilterOperation(filter_operation)->Url())); To<ReferenceFilterOperation>(filter_operation)->Url()));
break; break;
case FilterOperation::GRAYSCALE: case FilterOperation::GRAYSCALE:
filter_value = filter_value =
...@@ -2038,12 +2038,12 @@ CSSValue* ComputedStyleUtils::ValueForFilter( ...@@ -2038,12 +2038,12 @@ CSSValue* ComputedStyleUtils::ValueForFilter(
filter_value = filter_value =
MakeGarbageCollected<CSSFunctionValue>(CSSValueID::kBlur); MakeGarbageCollected<CSSFunctionValue>(CSSValueID::kBlur);
filter_value->Append(*ZoomAdjustedPixelValue( filter_value->Append(*ZoomAdjustedPixelValue(
ToBlurFilterOperation(filter_operation)->StdDeviation().Value(), To<BlurFilterOperation>(filter_operation)->StdDeviation().Value(),
style)); style));
break; break;
case FilterOperation::DROP_SHADOW: { case FilterOperation::DROP_SHADOW: {
const auto& drop_shadow_operation = const auto& drop_shadow_operation =
ToDropShadowFilterOperation(*filter_operation); To<DropShadowFilterOperation>(*filter_operation);
filter_value = filter_value =
MakeGarbageCollected<CSSFunctionValue>(CSSValueID::kDropShadow); MakeGarbageCollected<CSSFunctionValue>(CSSValueID::kDropShadow);
// We want our computed style to look like that of a text shadow (has // We want our computed style to look like that of a text shadow (has
......
...@@ -124,12 +124,12 @@ void ElementStyleResources::LoadPendingSVGResources( ...@@ -124,12 +124,12 @@ void ElementStyleResources::LoadPendingSVGResources(
return; return;
FilterOperations::FilterOperationVector& filter_operations = FilterOperations::FilterOperationVector& filter_operations =
computed_style->MutableFilter().Operations(); computed_style->MutableFilter().Operations();
for (auto& filter_operation : filter_operations) { for (const auto& filter_operation : filter_operations) {
if (filter_operation->GetType() != FilterOperation::REFERENCE) auto* reference_operation =
DynamicTo<ReferenceFilterOperation>(filter_operation.Get());
if (!reference_operation)
continue; continue;
ReferenceFilterOperation& reference_operation = if (SVGResource* resource = reference_operation->Resource())
ToReferenceFilterOperation(*filter_operation);
if (SVGResource* resource = reference_operation.Resource())
resource->Load(element_->GetDocument()); resource->Load(element_->GetDocument());
} }
} }
......
...@@ -750,7 +750,7 @@ void WriteResources(WTF::TextStream& ts, ...@@ -750,7 +750,7 @@ void WriteResources(WTF::TextStream& ts,
const FilterOperation& filter_operation = *style.Filter().at(0); const FilterOperation& filter_operation = *style.Filter().at(0);
DCHECK_EQ(filter_operation.GetType(), FilterOperation::REFERENCE); DCHECK_EQ(filter_operation.GetType(), FilterOperation::REFERENCE);
const auto& reference_filter_operation = const auto& reference_filter_operation =
ToReferenceFilterOperation(filter_operation); To<ReferenceFilterOperation>(filter_operation);
AtomicString id = SVGURIReference::FragmentIdentifierFromIRIString( AtomicString id = SVGURIReference::FragmentIdentifierFromIRIString(
reference_filter_operation.Url(), tree_scope); reference_filter_operation.Url(), tree_scope);
WriteIndent(ts, indent); WriteIndent(ts, indent);
......
...@@ -183,12 +183,11 @@ std::unique_ptr<SVGResources> SVGResources::BuildResources( ...@@ -183,12 +183,11 @@ std::unique_ptr<SVGResources> SVGResources::BuildResources(
const FilterOperations& filter_operations = computed_style.Filter(); const FilterOperations& filter_operations = computed_style.Filter();
if (filter_operations.size() == 1) { if (filter_operations.size() == 1) {
const FilterOperation& filter_operation = *filter_operations.at(0); const FilterOperation& filter_operation = *filter_operations.at(0);
if (filter_operation.GetType() == FilterOperation::REFERENCE) { if (const auto* reference_filter_operation =
const auto& reference_filter_operation = DynamicTo<ReferenceFilterOperation>(filter_operation)) {
ToReferenceFilterOperation(filter_operation);
EnsureResources(resources).SetFilter( EnsureResources(resources).SetFilter(
CastResource<LayoutSVGResourceFilter>( CastResource<LayoutSVGResourceFilter>(
reference_filter_operation.Resource())); reference_filter_operation->Resource()));
} }
} }
} }
......
...@@ -142,8 +142,8 @@ FilterEffect* FilterEffectBuilder::BuildFilterEffect( ...@@ -142,8 +142,8 @@ FilterEffect* FilterEffectBuilder::BuildFilterEffect(
FilterEffect* effect = nullptr; FilterEffect* effect = nullptr;
switch (filter_operation->GetType()) { switch (filter_operation->GetType()) {
case FilterOperation::REFERENCE: { case FilterOperation::REFERENCE: {
ReferenceFilterOperation& reference_operation = auto& reference_operation =
ToReferenceFilterOperation(*filter_operation); To<ReferenceFilterOperation>(*filter_operation);
Filter* reference_filter = Filter* reference_filter =
BuildReferenceFilter(reference_operation, previous_effect); BuildReferenceFilter(reference_operation, previous_effect);
if (reference_filter) { if (reference_filter) {
...@@ -252,14 +252,14 @@ FilterEffect* FilterEffectBuilder::BuildFilterEffect( ...@@ -252,14 +252,14 @@ FilterEffect* FilterEffectBuilder::BuildFilterEffect(
} }
case FilterOperation::BLUR: { case FilterOperation::BLUR: {
float std_deviation = FloatValueForLength( float std_deviation = FloatValueForLength(
ToBlurFilterOperation(filter_operation)->StdDeviation(), 0); To<BlurFilterOperation>(filter_operation)->StdDeviation(), 0);
effect = effect =
FEGaussianBlur::Create(parent_filter, std_deviation, std_deviation); FEGaussianBlur::Create(parent_filter, std_deviation, std_deviation);
break; break;
} }
case FilterOperation::DROP_SHADOW: { case FilterOperation::DROP_SHADOW: {
const ShadowData& shadow = const ShadowData& shadow =
ToDropShadowFilterOperation(*filter_operation).Shadow(); To<DropShadowFilterOperation>(*filter_operation).Shadow();
effect = FEDropShadow::Create(parent_filter, shadow.Blur(), effect = FEDropShadow::Create(parent_filter, shadow.Blur(),
shadow.Blur(), shadow.X(), shadow.Y(), shadow.Blur(), shadow.X(), shadow.Y(),
shadow.GetColor().GetColor(), 1); shadow.GetColor().GetColor(), 1);
...@@ -267,7 +267,7 @@ FilterEffect* FilterEffectBuilder::BuildFilterEffect( ...@@ -267,7 +267,7 @@ FilterEffect* FilterEffectBuilder::BuildFilterEffect(
} }
case FilterOperation::BOX_REFLECT: { case FilterOperation::BOX_REFLECT: {
BoxReflectFilterOperation* box_reflect_operation = BoxReflectFilterOperation* box_reflect_operation =
ToBoxReflectFilterOperation(filter_operation); To<BoxReflectFilterOperation>(filter_operation);
effect = FEBoxReflect::Create(parent_filter, effect = FEBoxReflect::Create(parent_filter,
box_reflect_operation->Reflection()); box_reflect_operation->Reflection());
break; break;
...@@ -300,8 +300,7 @@ CompositorFilterOperations FilterEffectBuilder::BuildFilterOperations( ...@@ -300,8 +300,7 @@ CompositorFilterOperations FilterEffectBuilder::BuildFilterOperations(
for (FilterOperation* op : operations.Operations()) { for (FilterOperation* op : operations.Operations()) {
switch (op->GetType()) { switch (op->GetType()) {
case FilterOperation::REFERENCE: { case FilterOperation::REFERENCE: {
ReferenceFilterOperation& reference_operation = auto& reference_operation = To<ReferenceFilterOperation>(*op);
ToReferenceFilterOperation(*op);
Filter* reference_filter = Filter* reference_filter =
BuildReferenceFilter(reference_operation, nullptr); BuildReferenceFilter(reference_operation, nullptr);
if (reference_filter && reference_filter->LastEffect()) { if (reference_filter && reference_filter->LastEffect()) {
...@@ -369,12 +368,12 @@ CompositorFilterOperations FilterEffectBuilder::BuildFilterOperations( ...@@ -369,12 +368,12 @@ CompositorFilterOperations FilterEffectBuilder::BuildFilterOperations(
} }
case FilterOperation::BLUR: { case FilterOperation::BLUR: {
float pixel_radius = float pixel_radius =
ToBlurFilterOperation(*op).StdDeviation().GetFloatValue(); To<BlurFilterOperation>(*op).StdDeviation().GetFloatValue();
filters.AppendBlurFilter(pixel_radius); filters.AppendBlurFilter(pixel_radius);
break; break;
} }
case FilterOperation::DROP_SHADOW: { case FilterOperation::DROP_SHADOW: {
const ShadowData& shadow = ToDropShadowFilterOperation(*op).Shadow(); const ShadowData& shadow = To<DropShadowFilterOperation>(*op).Shadow();
filters.AppendDropShadowFilter(FlooredIntPoint(shadow.Location()), filters.AppendDropShadowFilter(FlooredIntPoint(shadow.Location()),
shadow.Blur(), shadow.Blur(),
shadow.GetColor().GetColor()); shadow.GetColor().GetColor());
...@@ -383,7 +382,8 @@ CompositorFilterOperations FilterEffectBuilder::BuildFilterOperations( ...@@ -383,7 +382,8 @@ CompositorFilterOperations FilterEffectBuilder::BuildFilterOperations(
case FilterOperation::BOX_REFLECT: { case FilterOperation::BOX_REFLECT: {
// TODO(jbroman): Consider explaining box reflect to the compositor, // TODO(jbroman): Consider explaining box reflect to the compositor,
// instead of calling this a "reference filter". // instead of calling this a "reference filter".
const auto& reflection = ToBoxReflectFilterOperation(*op).Reflection(); const auto& reflection =
To<BoxReflectFilterOperation>(*op).Reflection();
filters.AppendReferenceFilter( filters.AppendReferenceFilter(
paint_filter_builder::BuildBoxReflectFilter(reflection, nullptr)); paint_filter_builder::BuildBoxReflectFilter(reflection, nullptr));
break; break;
......
...@@ -74,7 +74,7 @@ void ReferenceFilterOperation::RemoveClient(SVGResourceClient& client) { ...@@ -74,7 +74,7 @@ void ReferenceFilterOperation::RemoveClient(SVGResourceClient& client) {
bool ReferenceFilterOperation::operator==(const FilterOperation& o) const { bool ReferenceFilterOperation::operator==(const FilterOperation& o) const {
if (!IsSameType(o)) if (!IsSameType(o))
return false; return false;
const ReferenceFilterOperation& other = ToReferenceFilterOperation(o); const auto& other = To<ReferenceFilterOperation>(o);
return url_ == other.url_ && resource_ == other.resource_; return url_ == other.url_ && resource_ == other.resource_;
} }
...@@ -170,7 +170,7 @@ FilterOperation* BlurFilterOperation::Blend(const FilterOperation* from, ...@@ -170,7 +170,7 @@ FilterOperation* BlurFilterOperation::Blend(const FilterOperation* from,
return BlurFilterOperation::Create(std_deviation_.Blend( return BlurFilterOperation::Create(std_deviation_.Blend(
Length(length_type), progress, kValueRangeNonNegative)); Length(length_type), progress, kValueRangeNonNegative));
const BlurFilterOperation* from_op = ToBlurFilterOperation(from); const auto* from_op = To<BlurFilterOperation>(from);
return BlurFilterOperation::Create(std_deviation_.Blend( return BlurFilterOperation::Create(std_deviation_.Blend(
from_op->std_deviation_, progress, kValueRangeNonNegative)); from_op->std_deviation_, progress, kValueRangeNonNegative));
} }
...@@ -188,7 +188,7 @@ FilterOperation* DropShadowFilterOperation::Blend(const FilterOperation* from, ...@@ -188,7 +188,7 @@ FilterOperation* DropShadowFilterOperation::Blend(const FilterOperation* from,
Color::kTransparent)); Color::kTransparent));
} }
const auto& from_op = ToDropShadowFilterOperation(*from); const auto& from_op = To<DropShadowFilterOperation>(*from);
return Create(shadow_.Blend(from_op.shadow_, progress, Color::kTransparent)); return Create(shadow_.Blend(from_op.shadow_, progress, Color::kTransparent));
} }
......
...@@ -124,11 +124,6 @@ class CORE_EXPORT FilterOperation ...@@ -124,11 +124,6 @@ class CORE_EXPORT FilterOperation
DISALLOW_COPY_AND_ASSIGN(FilterOperation); DISALLOW_COPY_AND_ASSIGN(FilterOperation);
}; };
#define DEFINE_FILTER_OPERATION_TYPE_CASTS(thisType, operationType) \
DEFINE_TYPE_CASTS(thisType, FilterOperation, op, \
op->GetType() == FilterOperation::operationType, \
op.GetType() == FilterOperation::operationType)
class CORE_EXPORT ReferenceFilterOperation : public FilterOperation { class CORE_EXPORT ReferenceFilterOperation : public FilterOperation {
public: public:
static ReferenceFilterOperation* Create(const AtomicString& url, static ReferenceFilterOperation* Create(const AtomicString& url,
...@@ -168,7 +163,12 @@ class CORE_EXPORT ReferenceFilterOperation : public FilterOperation { ...@@ -168,7 +163,12 @@ class CORE_EXPORT ReferenceFilterOperation : public FilterOperation {
Member<Filter> filter_; Member<Filter> filter_;
}; };
DEFINE_FILTER_OPERATION_TYPE_CASTS(ReferenceFilterOperation, REFERENCE); template <>
struct DowncastTraits<ReferenceFilterOperation> {
static bool AllowFrom(const FilterOperation& op) {
return op.GetType() == FilterOperation::REFERENCE;
}
};
// GRAYSCALE, SEPIA, SATURATE and HUE_ROTATE are variations on a basic color // GRAYSCALE, SEPIA, SATURATE and HUE_ROTATE are variations on a basic color
// matrix effect. For HUE_ROTATE, the angle of rotation is stored in m_amount. // matrix effect. For HUE_ROTATE, the angle of rotation is stored in m_amount.
...@@ -289,7 +289,12 @@ class CORE_EXPORT BlurFilterOperation : public FilterOperation { ...@@ -289,7 +289,12 @@ class CORE_EXPORT BlurFilterOperation : public FilterOperation {
Length std_deviation_; Length std_deviation_;
}; };
DEFINE_FILTER_OPERATION_TYPE_CASTS(BlurFilterOperation, BLUR); template <>
struct DowncastTraits<BlurFilterOperation> {
static bool AllowFrom(const FilterOperation& op) {
return op.GetType() == FilterOperation::BLUR;
}
};
class CORE_EXPORT DropShadowFilterOperation : public FilterOperation { class CORE_EXPORT DropShadowFilterOperation : public FilterOperation {
public: public:
...@@ -320,7 +325,12 @@ class CORE_EXPORT DropShadowFilterOperation : public FilterOperation { ...@@ -320,7 +325,12 @@ class CORE_EXPORT DropShadowFilterOperation : public FilterOperation {
ShadowData shadow_; ShadowData shadow_;
}; };
DEFINE_FILTER_OPERATION_TYPE_CASTS(DropShadowFilterOperation, DROP_SHADOW); template <>
struct DowncastTraits<DropShadowFilterOperation> {
static bool AllowFrom(const FilterOperation& op) {
return op.GetType() == FilterOperation::DROP_SHADOW;
}
};
class CORE_EXPORT BoxReflectFilterOperation : public FilterOperation { class CORE_EXPORT BoxReflectFilterOperation : public FilterOperation {
public: public:
...@@ -344,7 +354,13 @@ class CORE_EXPORT BoxReflectFilterOperation : public FilterOperation { ...@@ -344,7 +354,13 @@ class CORE_EXPORT BoxReflectFilterOperation : public FilterOperation {
BoxReflection reflection_; BoxReflection reflection_;
}; };
DEFINE_FILTER_OPERATION_TYPE_CASTS(BoxReflectFilterOperation, BOX_REFLECT);
template <>
struct DowncastTraits<BoxReflectFilterOperation> {
static bool AllowFrom(const FilterOperation& op) {
return op.GetType() == FilterOperation::BOX_REFLECT;
}
};
#undef DEFINE_FILTER_OPERATION_TYPE_CASTS #undef DEFINE_FILTER_OPERATION_TYPE_CASTS
......
...@@ -104,14 +104,14 @@ bool FilterOperations::HasFilterThatMovesPixels() const { ...@@ -104,14 +104,14 @@ bool FilterOperations::HasFilterThatMovesPixels() const {
void FilterOperations::AddClient(SVGResourceClient& client) const { void FilterOperations::AddClient(SVGResourceClient& client) const {
for (FilterOperation* operation : operations_) { for (FilterOperation* operation : operations_) {
if (operation->GetType() == FilterOperation::REFERENCE) if (operation->GetType() == FilterOperation::REFERENCE)
ToReferenceFilterOperation(*operation).AddClient(client); To<ReferenceFilterOperation>(*operation).AddClient(client);
} }
} }
void FilterOperations::RemoveClient(SVGResourceClient& client) const { void FilterOperations::RemoveClient(SVGResourceClient& client) const {
for (FilterOperation* operation : operations_) { for (FilterOperation* operation : operations_) {
if (operation->GetType() == FilterOperation::REFERENCE) if (operation->GetType() == FilterOperation::REFERENCE)
ToReferenceFilterOperation(*operation).RemoveClient(client); To<ReferenceFilterOperation>(*operation).RemoveClient(client);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment