62a683e476
- Add primitiveUnits attribute to SkSVGFilter class - Add optional x, y, width, height attributes to filter effect base class (SkSVGFe) - Add function to return list of inputs for all filter effects - Add function to compute filter primitive subregion and use it in all filter effect classes. Currently the "primitive subregion" just returns the entire filter effect region, so there should be no diffs on gold with this change. Bug: skia:10841 Change-Id: I1de283bebe302c0710d6b09d62a2472787820a49 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/343107 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Tyler Denniston <tdenniston@google.com>
47 lines
1.4 KiB
C++
47 lines
1.4 KiB
C++
/*
|
|
* Copyright 2020 Google Inc.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
#ifndef SkSVGFeComposite_DEFINED
|
|
#define SkSVGFeComposite_DEFINED
|
|
|
|
#include "include/core/SkBlendMode.h"
|
|
#include "modules/svg/include/SkSVGFe.h"
|
|
#include "modules/svg/include/SkSVGTypes.h"
|
|
|
|
class SkSVGFeComposite final : public SkSVGFe {
|
|
public:
|
|
static sk_sp<SkSVGFeComposite> Make() {
|
|
return sk_sp<SkSVGFeComposite>(new SkSVGFeComposite());
|
|
}
|
|
|
|
SVG_ATTR(In2, SkSVGFeInputType, SkSVGFeInputType())
|
|
SVG_ATTR(K1, SkSVGNumberType, SkSVGNumberType(0))
|
|
SVG_ATTR(K2, SkSVGNumberType, SkSVGNumberType(0))
|
|
SVG_ATTR(K3, SkSVGNumberType, SkSVGNumberType(0))
|
|
SVG_ATTR(K4, SkSVGNumberType, SkSVGNumberType(0))
|
|
SVG_ATTR(Operator, SkSVGFeCompositeOperator, SkSVGFeCompositeOperator::kOver)
|
|
|
|
protected:
|
|
sk_sp<SkImageFilter> onMakeImageFilter(const SkSVGRenderContext&,
|
|
const SkSVGFilterContext&) const override;
|
|
|
|
std::vector<SkSVGFeInputType> getInputs() const override {
|
|
return {this->getIn(), this->getIn2()};
|
|
}
|
|
|
|
bool parseAndSetAttribute(const char*, const char*) override;
|
|
|
|
private:
|
|
SkSVGFeComposite() : INHERITED(SkSVGTag::kFeComposite) {}
|
|
|
|
static SkBlendMode BlendModeForOperator(SkSVGFeCompositeOperator);
|
|
|
|
using INHERITED = SkSVGFe;
|
|
};
|
|
|
|
#endif // SkSVGFeComposite_DEFINED
|