Commit 978de0d7 authored by Fredrik Söderquist's avatar Fredrik Söderquist Committed by Commit Bot

Pass |values| by-value to FEColorMatrix

Since we always create a new Vector<float> when creating a
FEColorMatrix, by moving |values| we can avoid unnecessary copying.

Also remove some unused static function declarations on FEColorMatrix.

Change-Id: I6d26635a5da514128ad42de932cc3f75333a94bf
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2062397Reviewed-by: default avatarStephen Chenney <schenney@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#742576}
parent d3b37b10
...@@ -164,14 +164,16 @@ FilterEffect* FilterEffectBuilder::BuildFilterEffect( ...@@ -164,14 +164,16 @@ FilterEffect* FilterEffectBuilder::BuildFilterEffect(
Vector<float> input_parameters = GrayscaleMatrix( Vector<float> input_parameters = GrayscaleMatrix(
To<BasicColorMatrixFilterOperation>(filter_operation)->Amount()); To<BasicColorMatrixFilterOperation>(filter_operation)->Amount());
effect = MakeGarbageCollected<FEColorMatrix>( effect = MakeGarbageCollected<FEColorMatrix>(
parent_filter, FECOLORMATRIX_TYPE_MATRIX, input_parameters); parent_filter, FECOLORMATRIX_TYPE_MATRIX,
std::move(input_parameters));
break; break;
} }
case FilterOperation::SEPIA: { case FilterOperation::SEPIA: {
Vector<float> input_parameters = SepiaMatrix( Vector<float> input_parameters = SepiaMatrix(
To<BasicColorMatrixFilterOperation>(filter_operation)->Amount()); To<BasicColorMatrixFilterOperation>(filter_operation)->Amount());
effect = MakeGarbageCollected<FEColorMatrix>( effect = MakeGarbageCollected<FEColorMatrix>(
parent_filter, FECOLORMATRIX_TYPE_MATRIX, input_parameters); parent_filter, FECOLORMATRIX_TYPE_MATRIX,
std::move(input_parameters));
break; break;
} }
case FilterOperation::SATURATE: { case FilterOperation::SATURATE: {
...@@ -179,7 +181,8 @@ FilterEffect* FilterEffectBuilder::BuildFilterEffect( ...@@ -179,7 +181,8 @@ FilterEffect* FilterEffectBuilder::BuildFilterEffect(
input_parameters.push_back(clampTo<float>( input_parameters.push_back(clampTo<float>(
To<BasicColorMatrixFilterOperation>(filter_operation)->Amount())); To<BasicColorMatrixFilterOperation>(filter_operation)->Amount()));
effect = MakeGarbageCollected<FEColorMatrix>( effect = MakeGarbageCollected<FEColorMatrix>(
parent_filter, FECOLORMATRIX_TYPE_SATURATE, input_parameters); parent_filter, FECOLORMATRIX_TYPE_SATURATE,
std::move(input_parameters));
break; break;
} }
case FilterOperation::HUE_ROTATE: { case FilterOperation::HUE_ROTATE: {
...@@ -187,7 +190,8 @@ FilterEffect* FilterEffectBuilder::BuildFilterEffect( ...@@ -187,7 +190,8 @@ FilterEffect* FilterEffectBuilder::BuildFilterEffect(
input_parameters.push_back(clampTo<float>( input_parameters.push_back(clampTo<float>(
To<BasicColorMatrixFilterOperation>(filter_operation)->Amount())); To<BasicColorMatrixFilterOperation>(filter_operation)->Amount()));
effect = MakeGarbageCollected<FEColorMatrix>( effect = MakeGarbageCollected<FEColorMatrix>(
parent_filter, FECOLORMATRIX_TYPE_HUEROTATE, input_parameters); parent_filter, FECOLORMATRIX_TYPE_HUEROTATE,
std::move(input_parameters));
break; break;
} }
case FilterOperation::INVERT: { case FilterOperation::INVERT: {
......
...@@ -100,9 +100,8 @@ FilterEffect* SVGFEColorMatrixElement::Build(SVGFilterBuilder* filter_builder, ...@@ -100,9 +100,8 @@ FilterEffect* SVGFEColorMatrixElement::Build(SVGFilterBuilder* filter_builder,
DCHECK(input1); DCHECK(input1);
ColorMatrixType filter_type = type_->CurrentValue()->EnumValue(); ColorMatrixType filter_type = type_->CurrentValue()->EnumValue();
Vector<float> filter_values = values_->CurrentValue()->ToFloatVector(); auto* effect = MakeGarbageCollected<FEColorMatrix>(
auto* effect = filter, filter_type, values_->CurrentValue()->ToFloatVector());
MakeGarbageCollected<FEColorMatrix>(filter, filter_type, filter_values);
effect->InputEffects().push_back(input1); effect->InputEffects().push_back(input1);
return effect; return effect;
} }
......
...@@ -34,8 +34,8 @@ static const unsigned kColorMatrixSize = 20; ...@@ -34,8 +34,8 @@ static const unsigned kColorMatrixSize = 20;
FEColorMatrix::FEColorMatrix(Filter* filter, FEColorMatrix::FEColorMatrix(Filter* filter,
ColorMatrixType type, ColorMatrixType type,
const Vector<float>& values) Vector<float> values)
: FilterEffect(filter), type_(type), values_(values) {} : FilterEffect(filter), type_(type), values_(std::move(values)) {}
ColorMatrixType FEColorMatrix::GetType() const { ColorMatrixType FEColorMatrix::GetType() const {
return type_; return type_;
...@@ -52,10 +52,10 @@ const Vector<float>& FEColorMatrix::Values() const { ...@@ -52,10 +52,10 @@ const Vector<float>& FEColorMatrix::Values() const {
return values_; return values_;
} }
bool FEColorMatrix::SetValues(const Vector<float>& values) { bool FEColorMatrix::SetValues(Vector<float> values) {
if (values_ == values) if (values_ == values)
return false; return false;
values_ = values; values_ = std::move(values);
return true; return true;
} }
......
...@@ -38,22 +38,17 @@ enum ColorMatrixType { ...@@ -38,22 +38,17 @@ enum ColorMatrixType {
class PLATFORM_EXPORT FEColorMatrix final : public FilterEffect { class PLATFORM_EXPORT FEColorMatrix final : public FilterEffect {
public: public:
FEColorMatrix(Filter*, ColorMatrixType, const Vector<float>&); FEColorMatrix(Filter*, ColorMatrixType, Vector<float>);
ColorMatrixType GetType() const; ColorMatrixType GetType() const;
bool SetType(ColorMatrixType); bool SetType(ColorMatrixType);
const Vector<float>& Values() const; const Vector<float>& Values() const;
bool SetValues(const Vector<float>&); bool SetValues(Vector<float>);
WTF::TextStream& ExternalRepresentation(WTF::TextStream&, WTF::TextStream& ExternalRepresentation(WTF::TextStream&,
int indention) const override; int indention) const override;
static inline void CalculateSaturateComponents(float* components,
float value);
static inline void CalculateHueRotateComponents(float* components,
float value);
private: private:
sk_sp<PaintFilter> CreateImageFilter() override; sk_sp<PaintFilter> CreateImageFilter() override;
......
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