#include "third_party/blink/renderer/modules/canvas/canvas2d/canvas_filter_operation_resolver.h"
#include <stdint.h>
#include <algorithm>
#include <optional>
#include <string>
#include <utility>
#include "base/types/expected.h"
#include "third_party/blink/public/mojom/devtools/console_message.mojom-blink.h"
#include "third_party/blink/renderer/bindings/core/v8/dictionary.h"
#include "third_party/blink/renderer/bindings/core/v8/idl_types.h"
#include "third_party/blink/renderer/bindings/core/v8/script_value.h"
#include "third_party/blink/renderer/core/css/css_property_names.h"
#include "third_party/blink/renderer/core/css/css_value.h"
#include "third_party/blink/renderer/core/css/parser/css_parser.h"
#include "third_party/blink/renderer/core/css/parser/css_parser_context.h"
#include "third_party/blink/renderer/core/css/parser/css_parser_mode.h"
#include "third_party/blink/renderer/core/css/resolver/filter_operation_resolver.h"
#include "third_party/blink/renderer/core/css/resolver/style_resolver.h"
#include "third_party/blink/renderer/core/css/style_color.h"
#include "third_party/blink/renderer/core/dom/document.h"
#include "third_party/blink/renderer/core/dom/element.h"
#include "third_party/blink/renderer/core/execution_context/execution_context.h"
#include "third_party/blink/renderer/core/inspector/console_message.h"
#include "third_party/blink/renderer/core/style/filter_operation.h"
#include "third_party/blink/renderer/core/style/filter_operations.h"
#include "third_party/blink/renderer/core/style/shadow_data.h"
#include "third_party/blink/renderer/core/svg/svg_enumeration.h"
#include "third_party/blink/renderer/core/svg/svg_enumeration_map.h"
#include "third_party/blink/renderer/core/svg/svg_fe_turbulence_element.h"
#include "third_party/blink/renderer/modules/canvas/canvas2d/canvas_style.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h"
#include "third_party/blink/renderer/platform/geometry/length.h"
#include "third_party/blink/renderer/platform/graphics/color.h"
#include "third_party/blink/renderer/platform/graphics/filters/fe_component_transfer.h"
#include "third_party/blink/renderer/platform/graphics/filters/fe_convolve_matrix.h"
#include "third_party/blink/renderer/platform/graphics/filters/fe_turbulence.h"
#include "third_party/blink/renderer/platform/heap/collection_support/heap_vector.h"
#include "third_party/blink/renderer/platform/heap/garbage_collected.h"
#include "third_party/blink/renderer/platform/wtf/text/string_view.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
#include "third_party/blink/renderer/platform/wtf/vector.h"
#include "ui/gfx/geometry/point.h"
#include "ui/gfx/geometry/point_f.h"
#include "ui/gfx/geometry/size.h"
#include "ui/gfx/geometry/vector2d_f.h"
namespace blink {
class Font;
namespace {
int num_canvas_filter_errors_to_console_allowed_ = …;
ColorMatrixFilterOperation* ResolveColorMatrix(
const Dictionary& dict,
ExceptionState& exception_state) { … }
struct KernelMatrix { … };
std::optional<KernelMatrix> GetKernelMatrix(const Dictionary& dict,
ExceptionState& exception_state) { … }
ConvolveMatrixFilterOperation* ResolveConvolveMatrix(
const Dictionary& dict,
ExceptionState& exception_state) { … }
ComponentTransferFunction GetComponentTransferFunction(
const StringView& key,
const Dictionary& filter,
ExceptionState& exception_state) { … }
ComponentTransferFilterOperation* ResolveComponentTransfer(
const Dictionary& dict,
ExceptionState& exception_state) { … }
StyleColor ResolveFloodColor(ExecutionContext& execution_context,
const Dictionary& dict,
ExceptionState& exception_state) { … }
base::expected<gfx::PointF, String> ResolveFloatOrVec2f(
const String property_name,
const Dictionary& dict,
ExceptionState& exception_state) { … }
BlurFilterOperation* ResolveBlur(const Dictionary& blur_dict,
ExceptionState& exception_state) { … }
DropShadowFilterOperation* ResolveDropShadow(
ExecutionContext& execution_context,
const Dictionary& dict,
ExceptionState& exception_state) { … }
TurbulenceFilterOperation* ResolveTurbulence(const Dictionary& dict,
ExceptionState& exception_state) { … }
}
FilterOperations CanvasFilterOperationResolver::CreateFilterOperationsFromList(
const HeapVector<ScriptValue>& filters,
ExecutionContext& execution_context,
ExceptionState& exception_state) { … }
FilterOperations
CanvasFilterOperationResolver::CreateFilterOperationsFromCSSFilter(
const String& filter_string,
const ExecutionContext& execution_context,
Element* style_resolution_host,
const Font& font) { … }
}