6#include "flutter/fml/logging.h"
12class 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);
54std::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";
87 os <<
"{" << std::endl;
88 os <<
" color: [" <<
paint.
color <<
"]" << std::endl;
90 os <<
" dither: [" <<
paint.
dither <<
"]" << std::endl;
92 os <<
" stroke_cap: " <<
"[Paint::Cap]" << std::endl;
93 os <<
" stroke_join: " <<
"[Paint::Join]" << std::endl;
95 os <<
" style:" <<
"[Paint::Style]" << 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]";
static const int points[]
Paths are lightweight objects that describe a collection of linear, quadratic, or cubic segments....
void Write(CanvasRecorderOp op)
std::ostream & operator<<(std::ostream &out, const FlutterPoint &point)
#define FML_LOG(severity)
SourceRectConstraint
Controls the behavior of the source rectangle given to DrawImageRect.
const char * BlendModeToString(BlendMode blend_mode)
A 4x4 matrix using column-major storage.
std::shared_ptr< ImageFilter > image_filter
std::shared_ptr< ColorFilter > color_filter
#define FLT_CANVAS_RECORDER_OP_TO_STRING(name)