12 const std::shared_ptr<DlImageFilter>& outer,
13 const std::shared_ptr<DlImageFilter>& inner) {
20 return std::make_shared<DlComposeImageFilter>(
outer,
inner);
24 if (inner_ && inner_->modifies_transparent_black()) {
27 if (outer_ && outer_->modifies_transparent_black()) {
34 DlRect& output_bounds)
const {
35 DlRect cur_bounds = input_bounds;
36 DlRect* ret = &output_bounds;
38 output_bounds = input_bounds;
40 if (!inner_->map_local_bounds(cur_bounds, output_bounds)) {
43 cur_bounds = output_bounds;
46 if (!outer_->map_local_bounds(cur_bounds, output_bounds)) {
56 DlIRect cur_bounds = input_bounds;
59 output_bounds = input_bounds;
61 if (!inner_->map_device_bounds(cur_bounds, ctm, output_bounds)) {
64 cur_bounds = output_bounds;
67 if (!outer_->map_device_bounds(cur_bounds, ctm, output_bounds)) {
78 DlIRect cur_bounds = output_bounds;
81 input_bounds = output_bounds;
83 if (!outer_->get_input_device_bounds(cur_bounds, ctm, input_bounds)) {
86 cur_bounds = input_bounds;
89 if (!inner_->get_input_device_bounds(cur_bounds, ctm, input_bounds)) {
98 return std::min(outer_->matrix_capability(), inner_->matrix_capability());
104 return (
Equals(outer_, that->outer_) &&
Equals(inner_, that->inner_));
virtual T type() const =0
std::shared_ptr< DlImageFilter > inner() const
std::shared_ptr< DlImageFilter > outer() const
DlIRect * get_input_device_bounds(const DlIRect &output_bounds, const DlMatrix &ctm, DlIRect &input_bounds) const override
DlIRect * map_device_bounds(const DlIRect &input_bounds, const DlMatrix &ctm, DlIRect &output_bounds) const override
MatrixCapability matrix_capability() const override
DlRect * map_local_bounds(const DlRect &input_bounds, DlRect &output_bounds) const override
bool modifies_transparent_black() const override
bool equals_(const DlImageFilter &other) const override
static std::shared_ptr< DlImageFilter > Make(const std::shared_ptr< DlImageFilter > &outer, const std::shared_ptr< DlImageFilter > &inner)
#define FML_DCHECK(condition)
bool Equals(const T *a, const U *b)
A 4x4 matrix using column-major storage.