Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
image_filter.cc
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "flutter/lib/ui/painting/image_filter.h"
6
7#include "flutter/lib/ui/floating_point.h"
8#include "flutter/lib/ui/painting/matrix.h"
9#include "flutter/lib/ui/ui_dart_state.h"
14
15namespace flutter {
16
18
21 auto res = fml::MakeRefCounted<ImageFilter>();
22 res->AssociateWithDartWrapper(wrapper);
23}
24
31
33 if (filterQualityIndex < 0) {
34 return kFilterQualities.front();
35 } else if (static_cast<size_t>(filterQualityIndex) >=
36 kFilterQualities.size()) {
37 return kFilterQualities.back();
38 } else {
39 return kFilterQualities[filterQualityIndex];
40 }
41}
42
44 if (filterQualityIndex <= 0) {
46 }
48}
49
50ImageFilter::ImageFilter() {}
51
53
54void ImageFilter::initBlur(double sigma_x,
55 double sigma_y,
56 DlTileMode tile_mode) {
57 filter_ = DlBlurImageFilter::Make(SafeNarrow(sigma_x), SafeNarrow(sigma_y),
58 tile_mode);
59}
60
61void ImageFilter::initDilate(double radius_x, double radius_y) {
62 filter_ =
64}
65
66void ImageFilter::initErode(double radius_x, double radius_y) {
67 filter_ =
69}
70
71void ImageFilter::initMatrix(const tonic::Float64List& matrix4,
72 int filterQualityIndex) {
73 auto sampling = ImageFilter::SamplingFromIndex(filterQualityIndex);
74 filter_ = DlMatrixImageFilter::Make(ToSkMatrix(matrix4), sampling);
75}
76
78 FML_DCHECK(colorFilter);
79 filter_ = DlColorFilterImageFilter::Make(colorFilter->filter());
80}
81
83 FML_DCHECK(outer && inner);
84 filter_ = DlComposeImageFilter::Make(outer->filter(), inner->filter());
85}
86
87} // namespace flutter
const std::shared_ptr< const DlColorFilter > filter() const
static std::shared_ptr< DlImageFilter > Make(SkScalar sigma_x, SkScalar sigma_y, DlTileMode tile_mode)
static std::shared_ptr< DlImageFilter > Make(const std::shared_ptr< const DlColorFilter > &filter)
static std::shared_ptr< const DlImageFilter > Make(std::shared_ptr< const DlImageFilter > outer, std::shared_ptr< const DlImageFilter > inner)
static std::shared_ptr< DlImageFilter > Make(SkScalar radius_x, SkScalar radius_y)
static std::shared_ptr< DlImageFilter > Make(SkScalar radius_x, SkScalar radius_y)
static std::shared_ptr< DlImageFilter > Make(const SkMatrix &matrix, DlImageSampling sampling)
void initMatrix(const tonic::Float64List &matrix4, int filter_quality_index)
void initComposeFilter(ImageFilter *outer, ImageFilter *inner)
void initColorFilter(ColorFilter *colorFilter)
void initErode(double radius_x, double radius_y)
const std::shared_ptr< const DlImageFilter > filter() const
void initBlur(double sigma_x, double sigma_y, DlTileMode tile_mode)
static void Create(Dart_Handle wrapper)
void initDilate(double radius_x, double radius_y)
static DlImageSampling SamplingFromIndex(int filterQualityIndex)
static DlFilterMode FilterModeFromIndex(int index)
static void ThrowIfUIOperationsProhibited()
struct _Dart_Handle * Dart_Handle
Definition dart_api.h:258
#define IMPLEMENT_WRAPPERTYPEINFO(LibraryName, ClassName)
#define FML_DCHECK(condition)
Definition logging.h:103
static float SafeNarrow(double value)
SkMatrix ToSkMatrix(const tonic::Float64List &matrix4)
Definition matrix.cc:32
static const std::array< DlImageSampling, 4 > kFilterQualities