6 #include "flutter/fml/logging.h"
12 class ImageFilterTraceVisitor :
public ImageFilterVisitor {
14 explicit ImageFilterTraceVisitor(std::ostream& os) : os_(os) {}
15 void Visit(
const BlurImageFilter& filter)
override {
16 os_ <<
"BlurImageFilter";
18 void Visit(
const LocalMatrixImageFilter& filter)
override {
19 os_ <<
"LocalMatrixImageFilter";
21 void Visit(
const DilateImageFilter& filter)
override {
22 os_ <<
"DilateImageFilter";
24 void Visit(
const ErodeImageFilter& filter)
override {
25 os_ <<
"ErodeImageFilter";
27 void Visit(
const MatrixImageFilter& filter)
override {
28 os_ <<
"{MatrixImageFilter matrix: " << filter.GetMatrix() <<
"}";
30 void Visit(
const ComposeImageFilter& filter)
override {
31 os_ <<
"ComposeImageFilter";
33 void Visit(
const ColorImageFilter& filter)
override {
34 os_ <<
"ColorImageFilter";
42 const std::shared_ptr<ImageFilter>& image_filter) {
45 ImageFilterTraceVisitor visitor(os);
46 image_filter->Visit(visitor);
54 std::ostream&
operator<<(std::ostream& os,
const ColorSource& color_source) {
56 switch (color_source.GetType()) {
64 os <<
"kLinearGradient";
67 os <<
"kRadialGradient";
70 os <<
"kConicalGradient";
73 os <<
"kSweepGradient";
76 os <<
"kRuntimeEffect";
86 std::ostream&
operator<<(std::ostream& os,
const Paint& paint) {
87 os <<
"{" << std::endl;
88 os <<
" color: [" << paint.color <<
"]" << std::endl;
89 os <<
" color_source:" <<
"[" << paint.color_source <<
"]" << std::endl;
90 os <<
" dither: [" << paint.dither <<
"]" << std::endl;
91 os <<
" stroke_width: [" << paint.stroke_width <<
"]" << std::endl;
92 os <<
" stroke_cap: " <<
"[Paint::Cap]" << std::endl;
93 os <<
" stroke_join: " <<
"[Paint::Join]" << std::endl;
94 os <<
" stroke_miter: [" << paint.stroke_miter <<
"]" << std::endl;
95 os <<
" style:" <<
"[Paint::Style]" << std::endl;
98 os <<
" invert_colors: [" << paint.invert_colors <<
"]" << std::endl;
99 os <<
" image_filter: " << paint.image_filter << std::endl;
100 os <<
" color_filter: " << paint.color_filter << std::endl;
101 os <<
" mask_blur_descriptor: " <<
"[std::optional<MaskBlurDescriptor>]"
108 #define FLT_CANVAS_RECORDER_OP_TO_STRING(name) \
109 case CanvasRecorderOp::name: \
154 FML_LOG(ERROR) <<
"######################################################";
156 FML_LOG(ERROR) << CanvasRecorderOpToString(op) <<
":" << buffer_.str();
163 buffer_ <<
"[" << paint <<
"] ";
167 if (optional_rect.has_value()) {
168 buffer_ <<
"[" << optional_rect.value() <<
"] ";
170 buffer_ <<
"[None] ";
175 buffer_ << image_filter <<
" ";
179 buffer_ <<
"[" << size <<
"] ";
183 buffer_ <<
"[" << matrix <<
"] ";
187 buffer_ <<
"[" << vec3 <<
"] ";
191 buffer_ <<
"[" << vec2 <<
"] ";
195 buffer_ <<
"[" << radians.
radians <<
"] ";
199 buffer_ <<
"[Path] ";
203 buffer_ <<
"[std::vector<Point>] ";
207 buffer_ <<
"[PointStyle] ";
211 buffer_ <<
"[std::shared_ptr<Image>] ";
215 buffer_ <<
"[SamplerDescriptor] ";
221 buffer_ <<
"[kDifference] ";
224 buffer_ <<
"[kIntersect] ";
230 buffer_ <<
"[Picture] ";
234 buffer_ <<
"[std::shared_ptr<TextFrame>] ";
238 buffer_ <<
"[std::shared_ptr<VerticesGeometry>] ";
246 buffer_ <<
"[std::vector<Matrix>] ";
250 buffer_ <<
"[std::vector<Rect>] ";
254 buffer_ <<
"[std::vector<Color>] ";
258 buffer_ <<
"[SourceRectConstraint] ";
262 buffer_ <<
"[SaveLayerBoundsPromise]";