diff --git a/lib/core/commands/command_factory/command_factory.dart b/lib/core/commands/command_factory/command_factory.dart index 220b530e..0cfddaa7 100644 --- a/lib/core/commands/command_factory/command_factory.dart +++ b/lib/core/commands/command_factory/command_factory.dart @@ -12,6 +12,7 @@ import 'package:paintroid/core/commands/command_implementation/graphic/shape/hea import 'package:paintroid/core/commands/command_implementation/graphic/shape/square_shape_command.dart'; import 'package:paintroid/core/commands/command_implementation/graphic/shape/star_shape_command.dart'; import 'package:paintroid/core/commands/command_implementation/graphic/spray_command.dart'; +import 'package:paintroid/core/commands/command_implementation/graphic/fill_command.dart'; import 'package:paintroid/core/commands/command_implementation/graphic/color_changed_command.dart'; import 'package:paintroid/core/commands/path_with_action_history.dart'; import 'package:paintroid/core/enums/shape_style.dart'; @@ -131,6 +132,10 @@ class CommandFactory { return SprayCommand(points, paint); } + FillCommand createFillCommand(List points, Paint paint) { + return FillCommand(points, paint); + } + DeleteRegionCommand createDeleteRegionCommand( ui.Rect region, ) => diff --git a/lib/core/commands/command_implementation/graphic/fill_command.dart b/lib/core/commands/command_implementation/graphic/fill_command.dart new file mode 100644 index 00000000..af6d2cc8 --- /dev/null +++ b/lib/core/commands/command_implementation/graphic/fill_command.dart @@ -0,0 +1,53 @@ +// ignore_for_file: must_be_immutable + +import 'dart:ui'; + +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:paintroid/core/commands/command_implementation/graphic/graphic_command.dart'; +import 'package:paintroid/core/json_serialization/converter/offset_converter.dart'; +import 'package:paintroid/core/json_serialization/converter/paint_converter.dart'; +import 'package:paintroid/core/json_serialization/versioning/serializer_version.dart'; +import 'package:paintroid/core/json_serialization/versioning/version_strategy.dart'; + +part 'fill_command.g.dart'; + +@JsonSerializable() +class FillCommand extends GraphicCommand { + final String type; + final int version; + + @OffsetConverter() + List points; + + FillCommand( + this.points, + super.paint, { + this.type = SerializerType.FILL_COMMAND, + int? version, + }) : version = + version ?? VersionStrategyManager.strategy.getFillCommandVersion(); + + @override + void call(Canvas canvas) { + for (int i = 0; i < points.length; i+=2) { + canvas.drawLine(points[i], points[i+1], paint); + } + } + + @override + List get props => [paint, points]; + + @override + Map toJson() => _$FillCommandToJson(this); + + factory FillCommand.fromJson(Map json) { + int version = json['version'] as int; + + switch (version) { + case Version.v1: + return _$FillCommandFromJson(json); + default: + return _$FillCommandFromJson(json); + } + } +} diff --git a/lib/core/commands/command_implementation/graphic/fill_command.g.dart b/lib/core/commands/command_implementation/graphic/fill_command.g.dart new file mode 100644 index 00000000..1f91e67d --- /dev/null +++ b/lib/core/commands/command_implementation/graphic/fill_command.g.dart @@ -0,0 +1,25 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'fill_command.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +FillCommand _$FillCommandFromJson(Map json) => FillCommand( + (json['points'] as List) + .map((e) => + const OffsetConverter().fromJson(e as Map)) + .toList(), + const PaintConverter().fromJson(json['paint'] as Map), + type: json['type'] as String? ?? SerializerType.FILL_COMMAND, + version: (json['version'] as num?)?.toInt(), + ); + +Map _$FillCommandToJson(FillCommand instance) => + { + 'paint': const PaintConverter().toJson(instance.paint), + 'type': instance.type, + 'version': instance.version, + 'points': instance.points.map(const OffsetConverter().toJson).toList(), + }; diff --git a/lib/core/commands/command_manager/command_manager.dart b/lib/core/commands/command_manager/command_manager.dart index dc3a00e5..fc7dcc89 100644 --- a/lib/core/commands/command_manager/command_manager.dart +++ b/lib/core/commands/command_manager/command_manager.dart @@ -15,6 +15,7 @@ import 'package:paintroid/core/tools/line_tool/vertex_stack.dart'; import 'package:paintroid/core/tools/tool_data.dart'; import 'package:paintroid/core/commands/command_implementation/graphic/spray_command.dart'; import 'package:paintroid/core/commands/command_implementation/graphic/color_changed_command.dart'; +import 'package:paintroid/core/commands/command_implementation/graphic/fill_command.dart'; enum ActionType { UNDO, REDO } @@ -128,6 +129,8 @@ class CommandManager { return ToolData.SHAPES; } else if (command.runtimeType == HeartShapeCommand) { return ToolData.SHAPES; + } else if (command is FillCommand) { + return ToolData.FILL; } else if (command is PathCommand) { if (command.isCursorPath) { return ToolData.CURSOR; diff --git a/lib/core/json_serialization/versioning/serializer_version.dart b/lib/core/json_serialization/versioning/serializer_version.dart index 28d88e89..7b4c17a1 100644 --- a/lib/core/json_serialization/versioning/serializer_version.dart +++ b/lib/core/json_serialization/versioning/serializer_version.dart @@ -9,6 +9,7 @@ class SerializerVersion { static const int STAR_SHAPE_COMMAND_VERSION = Version.v1; static const int HEART_SHAPE_COMMAND_VERSION = Version.v1; static const int SPRAY_COMMAND_VERSION = Version.v1; + static const int FILL_COMMAND_VERSION = Version.v1; static const int CLIPBOARD_COMMAND_VERSION = Version.v1; static const int DELETE_REGION_COMMAND_VERSION = Version.v1; static const int COLOR_CHANGED_COMMAND_VERSION = Version.v1; @@ -32,6 +33,7 @@ class SerializerType { static const String STAR_SHAPE_COMMAND = 'StarShapeCommand'; static const String HEART_SHAPE_COMMAND = 'HeartShapeCommand'; static const String SPRAY_COMMAND = 'SprayCommand'; + static const String FILL_COMMAND = 'FillCommand'; static const String CLIPBOARD_COMMAND = 'ClipboardCommand'; static const String DELETE_REGION_COMMAND = 'DeleteRegionCommand'; static const String COLOR_CHANGED_COMMAND = 'ColorChangedCommand'; diff --git a/lib/core/json_serialization/versioning/version_strategy.dart b/lib/core/json_serialization/versioning/version_strategy.dart index 42bf991e..b45a5651 100644 --- a/lib/core/json_serialization/versioning/version_strategy.dart +++ b/lib/core/json_serialization/versioning/version_strategy.dart @@ -19,6 +19,8 @@ abstract class IVersionStrategy { int getSprayCommandVersion(); + int getFillCommandVersion(); + int getClipboardCommandVersion(); int getDeleteRegionCommandVersion(); @@ -58,6 +60,9 @@ class ProductionVersionStrategy implements IVersionStrategy { @override int getSprayCommandVersion() => SerializerVersion.SPRAY_COMMAND_VERSION; + @override + int getFillCommandVersion() => SerializerVersion.FILL_COMMAND_VERSION; + @override int getClipboardCommandVersion() => SerializerVersion.CLIPBOARD_COMMAND_VERSION; diff --git a/lib/core/providers/object/tools/fill_tool_provider.dart b/lib/core/providers/object/tools/fill_tool_provider.dart new file mode 100644 index 00000000..67944e25 --- /dev/null +++ b/lib/core/providers/object/tools/fill_tool_provider.dart @@ -0,0 +1,25 @@ +import 'package:riverpod_annotation/riverpod_annotation.dart'; +import 'package:paintroid/core/commands/command_factory/command_factory_provider.dart'; +import 'package:paintroid/core/commands/command_manager/command_manager_provider.dart'; +import 'package:paintroid/core/commands/graphic_factory/graphic_factory_provider.dart'; +import 'package:paintroid/core/providers/state/canvas_state_provider.dart'; +import 'package:paintroid/core/enums/tool_types.dart'; +import 'package:paintroid/core/tools/implementation/fill_tool.dart'; +import 'package:paintroid/core/providers/object/canvas_painter_provider.dart'; + +part 'fill_tool_provider.g.dart'; + +@riverpod +class FillToolProvider extends _$FillToolProvider { + @override + FillTool build() { + return FillTool( + type: ToolType.FILL, + commandManager: ref.watch(commandManagerProvider), + commandFactory: ref.watch(commandFactoryProvider), + graphicFactory: ref.watch(graphicFactoryProvider), + canvasStateProvider: ref.watch(canvasStateProvider.notifier), + canvasPainterProvider: ref.watch(canvasPainterProvider.notifier) + ); + } +} \ No newline at end of file diff --git a/lib/core/providers/object/tools/fill_tool_provider.g.dart b/lib/core/providers/object/tools/fill_tool_provider.g.dart new file mode 100644 index 00000000..ea10af4f --- /dev/null +++ b/lib/core/providers/object/tools/fill_tool_provider.g.dart @@ -0,0 +1,26 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'fill_tool_provider.dart'; + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +String _$fillToolProviderHash() => r'2e3f2f14df2ea2b046299551603c94b269425849'; + +/// See also [FillToolProvider]. +@ProviderFor(FillToolProvider) +final fillToolProvider = + AutoDisposeNotifierProvider.internal( + FillToolProvider.new, + name: r'fillToolProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$fillToolProviderHash, + dependencies: null, + allTransitiveDependencies: null, +); + +typedef _$FillToolProvider = AutoDisposeNotifier; +// ignore_for_file: type=lint +// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member diff --git a/lib/core/providers/state/canvas_state_provider.g.dart b/lib/core/providers/state/canvas_state_provider.g.dart index 7c12698d..65e70ea5 100644 --- a/lib/core/providers/state/canvas_state_provider.g.dart +++ b/lib/core/providers/state/canvas_state_provider.g.dart @@ -7,7 +7,7 @@ part of 'canvas_state_provider.dart'; // ************************************************************************** String _$canvasStateProviderHash() => - r'6fa5c88a3b5be5465d87823e71be449753bb911a'; + r'e0cd5a879590dfa2b4e9e45a896624927f0e9541'; /// See also [CanvasStateProvider]. @ProviderFor(CanvasStateProvider) diff --git a/lib/core/providers/state/toolbox_state_provider.dart b/lib/core/providers/state/toolbox_state_provider.dart index b7fb5e47..ef745904 100644 --- a/lib/core/providers/state/toolbox_state_provider.dart +++ b/lib/core/providers/state/toolbox_state_provider.dart @@ -7,6 +7,7 @@ import 'package:paintroid/core/providers/object/tools/brush_tool_provider.dart'; import 'package:paintroid/core/providers/object/tools/clipboard_tool_provider.dart'; import 'package:paintroid/core/providers/object/tools/cursor_tool_provider.dart'; import 'package:paintroid/core/providers/object/tools/eraser_tool_provider.dart'; +import 'package:paintroid/core/providers/object/tools/fill_tool_provider.dart'; import 'package:paintroid/core/providers/object/tools/hand_tool_provider.dart'; import 'package:paintroid/core/providers/object/tools/line_tool_provider.dart'; import 'package:paintroid/core/providers/object/tools/pipette_tool_provider.dart'; @@ -16,6 +17,7 @@ import 'package:paintroid/core/providers/object/tools/watercolor_tool_provider.d import 'package:paintroid/core/providers/state/paint_provider.dart'; import 'package:paintroid/core/providers/state/spray_tool_provider.dart'; import 'package:paintroid/core/providers/state/toolbox_state_data.dart'; +import 'package:paintroid/core/tools/implementation/fill_tool.dart'; import 'package:paintroid/core/tools/implementation/spray_tool.dart'; import 'package:paintroid/core/tools/tool_data.dart'; import 'package:paintroid/ui/utils/toast_utils.dart'; @@ -59,6 +61,10 @@ class ToolBoxStateProvider extends _$ToolBoxStateProvider { final currentRadius = (state.currentTool as SprayTool).sprayRadius; ref.read(paintProvider.notifier).updateStrokeWidth(currentRadius); } + if (state.currentTool is FillTool) { + final prevStrokeSize = (state.currentTool as FillTool).prevStrokeSize; + ref.read(paintProvider.notifier).updateStrokeWidth(prevStrokeSize); + } switch (data.type) { case ToolType.BRUSH: state = state.copyWith(currentTool: ref.read(brushToolProvider)); @@ -75,6 +81,12 @@ class ToolBoxStateProvider extends _$ToolBoxStateProvider { case ToolType.LINE: state = state.copyWith(currentTool: ref.read(lineToolProvider)); break; + case ToolType.FILL: + state = state.copyWith(currentTool: ref.read(fillToolProvider)); + final currentStrokeWidth = ref.read(paintProvider).strokeWidth; + (state.currentTool as FillTool).savePrevStrokeSize(currentStrokeWidth); + ref.read(paintProvider.notifier).updateStrokeWidth(1); + break; case ToolType.SHAPES: state = state.copyWith(currentTool: ref.read(shapesToolProvider)); ref.read(canvasPainterProvider.notifier).repaint(); diff --git a/lib/core/providers/state/toolbox_state_provider.g.dart b/lib/core/providers/state/toolbox_state_provider.g.dart index f6c224e0..0b3e464d 100644 --- a/lib/core/providers/state/toolbox_state_provider.g.dart +++ b/lib/core/providers/state/toolbox_state_provider.g.dart @@ -7,7 +7,7 @@ part of 'toolbox_state_provider.dart'; // ************************************************************************** String _$toolBoxStateProviderHash() => - r'c6fa1661445899c5abd6725b49ccbaf6ca3340e8'; + r'aea0ea4aaed019e172e6587ac31048acd6af470a'; /// See also [ToolBoxStateProvider]. @ProviderFor(ToolBoxStateProvider) diff --git a/lib/core/tools/implementation/fill_tool.dart b/lib/core/tools/implementation/fill_tool.dart new file mode 100644 index 00000000..d2694aa1 --- /dev/null +++ b/lib/core/tools/implementation/fill_tool.dart @@ -0,0 +1,212 @@ +import 'dart:ui'; +import 'dart:collection'; + +import 'package:flutter/foundation.dart'; +import 'package:paintroid/core/providers/object/canvas_painter_provider.dart'; +import 'package:paintroid/core/providers/state/canvas_state_provider.dart'; +import 'package:paintroid/core/tools/tool.dart'; +import 'package:paintroid/core/commands/graphic_factory/graphic_factory.dart'; +import 'package:paintroid/core/commands/command_implementation/graphic/fill_command.dart'; + +class FillTool extends Tool { + final GraphicFactory graphicFactory; + final CanvasPainterProvider canvasPainterProvider; + final CanvasStateProvider canvasStateProvider; + final maxAbsoluteTolerance = 2.0; + double tolerancePercent = 12; + + @visibleForTesting + late FillCommand fillCommand; + late Paint fillPaint; + late Uint8List pixels; + late double prevStrokeSize; + late Uint8List visited; + late Color clickedColor; + late int height; + late int width; + final queue = Queue(); + + FillTool({ + required super.type, + required super.commandManager, + required super.commandFactory, + required this.graphicFactory, + required this.canvasStateProvider, + required this.canvasPainterProvider, + super.hasAddFunctionality = false, + super.hasFinalizeFunctionality = false, + }); + + @override + void onDown(Offset point, Paint paint) {} + + @override + void onDrag(Offset point, Paint paint) {} + + @override + Future onUp(Offset point, Paint paint) async{ + fillPaint = graphicFactory.copyPaint(paint); + final fillPoints = await _initFillAlgorithm(point); + fillCommand = commandFactory.createFillCommand(fillPoints, fillPaint); + commandManager.addGraphicCommand(fillCommand); + canvasPainterProvider.repaint(); + canvasStateProvider.updateCachedImage(); + } + + @override + void onCancel() { + commandManager.discardLastCommand(); + } + + @override + void onCheckmark(Paint paint) {} + + @override + void onPlus() {} + + @override + void onRedo() { + commandManager.redo(); + } + + @override + void onUndo() { + commandManager.undo(); + } + + void updateTolerance(double newTolerance) { + tolerancePercent = newTolerance; + } + + void savePrevStrokeSize(double prevStrokeSize) { + this.prevStrokeSize = prevStrokeSize; + } + + Color _getPixelColor(int width, int x, int y) { + final index = (y * width + x) * 4; + + return Color.fromARGB( + pixels[index + 3], + pixels[index], + pixels[index + 1], + pixels[index + 2], + ); + } + + bool _isPixelWithinColorTolerance(Color pixelColor, Color clickedColor) { + if (pixelColor == clickedColor) return true; + double absoluteTolerance = maxAbsoluteTolerance * tolerancePercent / 100.0; + double redDiff = pixelColor.r - clickedColor.r; + double greenDiff = pixelColor.g - clickedColor.g; + double blueDiff = pixelColor.b - clickedColor.b; + double alphaDiff = pixelColor.a - clickedColor.a; + return ((redDiff * redDiff) + (greenDiff * greenDiff) + (blueDiff * blueDiff) + (alphaDiff * alphaDiff)) <= (absoluteTolerance * alphaDiff); + } + + Future> _initFillAlgorithm(Offset center) async { + List points = []; + + Image? canvasImage = canvasStateProvider.currentState.cachedImage; + if (canvasImage == null) return points; + + ByteData? byteData = await canvasImage.toByteData(); + if (byteData == null) return points; + + pixels = byteData.buffer.asUint8List(); + height = canvasImage.height; + width = canvasImage.width; + + return _scanlineFloodFill(center); + } + + Future> _scanlineFloodFill(Offset center) async{ + final List points = []; + visited = Uint8List(width * height); + int startX = center.dx.toInt(); + int startY = center.dy.toInt(); + + queue.add(Range(startY, startX, startX, false)); + clickedColor = _getPixelColor(width, startX, startY); + + while (queue.isNotEmpty) { + final range = queue.removeFirst(); + + int y = range.line; + int left = range.start; + int right = range.end; + + if (y < 0 || y >= height) continue; + if (left < 0 || left >= width) continue; + if (right < 0 || right >= width) continue; + + final indexLeft = y * width + left; + final indexRight = y * width + right; + if (visited[indexLeft] == 1 && visited[indexRight] == 1) continue; + + if (!range.completed) { + while (left > 0 && + visited[y * width + left - 1] == 0 && + _isPixelWithinColorTolerance(_getPixelColor(width, left - 1, y), clickedColor)) { + left--; + } + + while (right < width - 1 && + visited[y * width + right + 1] == 0 && + _isPixelWithinColorTolerance(_getPixelColor(width, right + 1, y), clickedColor)) { + right++; + } + } + + for (int i = left; i <= right; i++) { + visited[y * width + i] = 1; + } + + points.add(Offset(left.toDouble(), y.toDouble())); + points.add(Offset(right.toDouble(), y.toDouble())); + + _findNewRanges(y, left, right, false); //UP + _findNewRanges(y, left, right, true); //DOWN + } + + return points; + } + + void _findNewRanges(int y, int left, int right, bool direction) { + bool pixelChanged = false; + int newRangeLeft = left; + int delta = direction ? 1 : -1; + for (int i = left; i <= right; i++) { + if (y > 0 && y < height - 1) { + final index = (y + delta) * width + i; + if (visited[index] == 0) { + if (_isPixelWithinColorTolerance(_getPixelColor(width, i, y + delta), clickedColor)) { + if (!pixelChanged){ + newRangeLeft = i; + pixelChanged = true; + } else { + if (i == right) queue.add(Range(y + delta, newRangeLeft, right, false)); + } + } else { + if (pixelChanged){ + if (newRangeLeft == left){ + queue.add(Range(y + delta, newRangeLeft, i - 1, false)); + } else { + queue.add(Range(y + delta, newRangeLeft, i - 1, true)); + } + pixelChanged = false; + } + } + } + } + } + } +} + +class Range { + int line = 0; + int start = 0; + int end = 0; + bool completed = false; + + Range(this.line, this.start, this.end, this.completed); +} \ No newline at end of file diff --git a/lib/ui/pages/workspace_page/components/bottom_bar/tool_options/fill_tool_options.dart b/lib/ui/pages/workspace_page/components/bottom_bar/tool_options/fill_tool_options.dart new file mode 100644 index 00000000..4df738a1 --- /dev/null +++ b/lib/ui/pages/workspace_page/components/bottom_bar/tool_options/fill_tool_options.dart @@ -0,0 +1,14 @@ +import 'package:flutter/cupertino.dart'; +import 'package:paintroid/ui/pages/workspace_page/components/bottom_bar/tool_options/widgets/tolerance_slider.dart'; + +class FillToolOptions extends StatelessWidget { + const FillToolOptions({super.key}); + + @override + Widget build(BuildContext context) { + return const Column(children: [ + Spacer(), + ToleranceSlider(), + ]); + } +} diff --git a/lib/ui/pages/workspace_page/components/bottom_bar/tool_options/tool_options.dart b/lib/ui/pages/workspace_page/components/bottom_bar/tool_options/tool_options.dart index d1343033..d9f18dfb 100644 --- a/lib/ui/pages/workspace_page/components/bottom_bar/tool_options/tool_options.dart +++ b/lib/ui/pages/workspace_page/components/bottom_bar/tool_options/tool_options.dart @@ -4,6 +4,7 @@ import 'package:paintroid/core/enums/tool_types.dart'; import 'package:paintroid/core/providers/state/tool_options_visibility_state_provider.dart'; import 'package:paintroid/core/providers/state/toolbox_state_provider.dart'; import 'package:paintroid/ui/pages/workspace_page/components/bottom_bar/tool_options/clipboard_tool_options.dart'; +import 'package:paintroid/ui/pages/workspace_page/components/bottom_bar/tool_options/fill_tool_options.dart'; import 'package:paintroid/ui/pages/workspace_page/components/bottom_bar/tool_options/shapes_tool_options.dart'; import 'package:paintroid/ui/pages/workspace_page/components/bottom_bar/tool_options/spray_tool_options.dart'; import 'package:paintroid/ui/pages/workspace_page/components/bottom_bar/tool_options/stroke_tool_options.dart'; @@ -39,6 +40,7 @@ class ToolOptions extends ConsumerWidget { ToolType.SPRAY => const SprayToolOptions(), ToolType.CLIPBOARD => const ClipboardToolOptions(), ToolType.TEXT => const TextToolOptions(), + ToolType.FILL => const FillToolOptions(), _ => Container(), }, ), diff --git a/lib/ui/pages/workspace_page/components/bottom_bar/tool_options/widgets/tolerance_slider.dart b/lib/ui/pages/workspace_page/components/bottom_bar/tool_options/widgets/tolerance_slider.dart new file mode 100644 index 00000000..7c04d1a6 --- /dev/null +++ b/lib/ui/pages/workspace_page/components/bottom_bar/tool_options/widgets/tolerance_slider.dart @@ -0,0 +1,112 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:paintroid/core/providers/state/toolbox_state_provider.dart'; +import 'package:paintroid/core/tools/implementation/fill_tool.dart'; +import 'package:paintroid/ui/theme/theme.dart'; + +class ToleranceSlider extends ConsumerStatefulWidget { + const ToleranceSlider({super.key}); + + @override + ConsumerState createState() => _ToleranceSliderState(); +} + +class _ToleranceSliderState extends ConsumerState { + late final TextEditingController _toleranceTextController; + double _tolerance = 12; + + void _onChangedTextField(String value) { + final newTolerance = int.tryParse(value) ?? 1; + setState(() { + _tolerance = newTolerance.toDouble(); + _toleranceTextController.text = newTolerance.toString(); + }); + final currentTool = ref.read(toolBoxStateProvider).currentTool; + if (currentTool is FillTool) { + currentTool.updateTolerance(_tolerance); + } + } + + void _onChangedSlider(double newValue) { + setState(() { + _tolerance = newValue; + _toleranceTextController.text = newValue.toInt().toString(); + }); + final currentTool = ref.read(toolBoxStateProvider).currentTool; + if (currentTool is FillTool) { + currentTool.updateTolerance(_tolerance); + } + } + + @override + void initState() { + super.initState(); + final currentTool = ref.read(toolBoxStateProvider).currentTool; + if (currentTool is FillTool) { + _tolerance = currentTool.tolerancePercent; + } + _toleranceTextController = TextEditingController( + text: _tolerance.toInt().toString(), + ); + } + + @override + void dispose() { + _toleranceTextController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return SizedBox( + height: 25, + child: Row( + children: [ + Expanded( + flex: 8, + child: SliderTheme( + data: SliderTheme.of(context).copyWith( + showValueIndicator: ShowValueIndicator.never, + ), + child: Slider( + value: _tolerance, + min: 1, + max: 100, + divisions: 99, + label: _tolerance.toInt().toString(), + onChanged: _onChangedSlider, + ), + ), + ), + Expanded( + flex: 1, + child: TextField( + controller: _toleranceTextController, + style: PaintroidTheme.of(context).textTheme.bodyMedium, + textAlign: TextAlign.center, + keyboardType: TextInputType.number, + inputFormatters: [ + FilteringTextInputFormatter.allow( + RegExp(r'^(100|[1-9][0-9]?)$'), + replacementString: _tolerance.toInt().toString(), + ), + ], + onChanged: _onChangedTextField, + decoration: InputDecoration( + filled: true, + fillColor: PaintroidTheme.of(context).onSurfaceColor, + contentPadding: EdgeInsets.zero, + hintText: '1', + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide.none, + ), + ), + ), + ), + ], + ), + ); + } +} diff --git a/test/integration/fill_tool_test.dart b/test/integration/fill_tool_test.dart new file mode 100644 index 00000000..5b4318a1 --- /dev/null +++ b/test/integration/fill_tool_test.dart @@ -0,0 +1,235 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:integration_test/integration_test.dart'; +import 'package:paintroid/app.dart'; +import 'package:paintroid/core/tools/implementation/fill_tool.dart'; +import 'package:paintroid/core/tools/tool_data.dart'; + +import '../utils/test_utils.dart'; + +void main() { + IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + + const String testIDStr = String.fromEnvironment('id', defaultValue: '-1'); + final testID = int.tryParse(testIDStr) ?? testIDStr; + + late Widget sut; + + setUp(() async { + sut = ProviderScope( + child: App( + showOnboardingPage: false, + ), + ); + }); + + if (testID == -1 || testID == 0) { + testWidgets('[FILL_TOOL]: test fill whole canvas', + (WidgetTester tester) async { + UIInteraction.initialize(tester); + await tester.pumpWidget(sut); + await UIInteraction.createNewImage(); + await UIInteraction.selectTool(ToolData.FILL.name); + UIInteraction.setColor(Colors.black); + + var color = await UIInteraction.getPixelColor( + CanvasPosition.centerX, + CanvasPosition.centerY, + ); + expect(color, Colors.transparent); + + await UIInteraction.tapAt(CanvasPosition.center); + + await tester.pumpAndSettle(); + + var colorCenter = await UIInteraction.getPixelColor(CanvasPosition.centerX, CanvasPosition.centerY); + var colorTopLeft = await UIInteraction.getPixelColor(CanvasPosition.left, CanvasPosition.top); + var colorTopRight = await UIInteraction.getPixelColor(CanvasPosition.right, CanvasPosition.top); + var colorBottomLeft = await UIInteraction.getPixelColor(CanvasPosition.left, CanvasPosition.bottom); + var colorBottomRight = await UIInteraction.getPixelColor(CanvasPosition.right, CanvasPosition.bottom); + + expect(colorCenter, isNot(Colors.transparent)); + expect(colorTopLeft, isNot(Colors.transparent)); + expect(colorTopRight, isNot(Colors.transparent)); + expect(colorBottomLeft, isNot(Colors.transparent)); + expect(colorBottomRight, isNot(Colors.transparent)); + }); + } + + if (testID == -1 || testID == 1) { + testWidgets('[FILL_TOOL]: fill inside of square outside should be transparent', + (WidgetTester tester) async { + UIInteraction.initialize(tester); + await tester.pumpWidget(sut); + await UIInteraction.createNewImage(); + await UIInteraction.selectTool(ToolData.BRUSH.name); + UIInteraction.setColor(Colors.black); + + var color = await UIInteraction.getPixelColor( + CanvasPosition.centerX, + CanvasPosition.centerY, + ); + expect(color, Colors.transparent); + + await UIInteraction.dragFromTo(CanvasPosition.halfTopLeft, CanvasPosition.halfTopRight); + + await UIInteraction.dragFromTo(CanvasPosition.halfTopLeft, CanvasPosition.halfBottomLeft); + await UIInteraction.dragFromTo(CanvasPosition.halfTopRight, CanvasPosition.halfBottomRight); + + await UIInteraction.dragFromTo(CanvasPosition.halfBottomLeft, CanvasPosition.halfBottomRight); + + await tester.pumpAndSettle(); + + await UIInteraction.selectTool(ToolData.FILL.name); + + await UIInteraction.tapAt(CanvasPosition.center); + + await tester.pumpAndSettle(); + + var colorCenter = await UIInteraction.getPixelColor(CanvasPosition.centerX, CanvasPosition.centerY); + var colorTopLeft = await UIInteraction.getPixelColor(CanvasPosition.left, CanvasPosition.top); + var colorTopRight = await UIInteraction.getPixelColor(CanvasPosition.right, CanvasPosition.top); + var colorBottomLeft = await UIInteraction.getPixelColor(CanvasPosition.left, CanvasPosition.bottom); + var colorBottomRight = await UIInteraction.getPixelColor(CanvasPosition.right, CanvasPosition.bottom); + + expect(colorCenter, isNot(Colors.transparent)); + expect(colorTopLeft, Colors.transparent); + expect(colorTopRight, Colors.transparent); + expect(colorBottomLeft, Colors.transparent); + expect(colorBottomRight, Colors.transparent); + }); + } + + if (testID == -1 || testID == 2) { + testWidgets('[FILL_TOOL]: fill outside of square outside be colored', + (WidgetTester tester) async { + UIInteraction.initialize(tester); + await tester.pumpWidget(sut); + await UIInteraction.createNewImage(); + await UIInteraction.selectTool(ToolData.BRUSH.name); + UIInteraction.setColor(Colors.black); + + var color = await UIInteraction.getPixelColor( + CanvasPosition.centerX, + CanvasPosition.centerY, + ); + expect(color, Colors.transparent); + + await UIInteraction.dragFromTo(CanvasPosition.halfTopLeft, CanvasPosition.halfTopRight); + + await UIInteraction.dragFromTo(CanvasPosition.halfTopLeft, CanvasPosition.halfBottomLeft); + await UIInteraction.dragFromTo(CanvasPosition.halfTopRight, CanvasPosition.halfBottomRight); + + await UIInteraction.dragFromTo(CanvasPosition.halfBottomLeft, CanvasPosition.halfBottomRight); + + await tester.pumpAndSettle(); + + await UIInteraction.selectTool(ToolData.FILL.name); + + await UIInteraction.tapAt(CanvasPosition.topLeft); + + await tester.pumpAndSettle(); + + var colorCenter = await UIInteraction.getPixelColor(CanvasPosition.centerX, CanvasPosition.centerY); + var colorTopLeft = await UIInteraction.getPixelColor(CanvasPosition.left, CanvasPosition.top); + var colorTopRight = await UIInteraction.getPixelColor(CanvasPosition.right, CanvasPosition.top); + var colorBottomLeft = await UIInteraction.getPixelColor(CanvasPosition.left, CanvasPosition.bottom); + var colorBottomRight = await UIInteraction.getPixelColor(CanvasPosition.right, CanvasPosition.bottom); + + expect(colorCenter, Colors.transparent); + expect(colorTopLeft, isNot(Colors.transparent)); + expect(colorTopRight, isNot(Colors.transparent)); + expect(colorBottomLeft, isNot(Colors.transparent)); + expect(colorBottomRight, isNot(Colors.transparent)); + }); + } + + if (testID == -1 || testID == 3) { + testWidgets('[FILL_TOOL]: fill with tolerance 100, paint over everything', + (WidgetTester tester) async { + UIInteraction.initialize(tester); + await tester.pumpWidget(sut); + await UIInteraction.createNewImage(); + await UIInteraction.selectTool(ToolData.BRUSH.name); + UIInteraction.setColor(Colors.black); + + var color = await UIInteraction.getPixelColor( + CanvasPosition.centerX, + CanvasPosition.centerY, + ); + expect(color, Colors.transparent); + + await UIInteraction.dragFromTo(CanvasPosition.halfTopLeft, CanvasPosition.halfTopRight); + + await UIInteraction.dragFromTo(CanvasPosition.halfTopLeft, CanvasPosition.halfBottomLeft); + await UIInteraction.dragFromTo(CanvasPosition.halfTopRight, CanvasPosition.halfBottomRight); + + await UIInteraction.dragFromTo(CanvasPosition.halfBottomLeft, CanvasPosition.halfBottomRight); + + await tester.pumpAndSettle(); + + await UIInteraction.selectTool(ToolData.FILL.name); + UIInteraction.setColor(Colors.blue); + + const tolerance = 100.0; + + (UIInteraction.getCurrentTool() as FillTool).updateTolerance(tolerance); + + await UIInteraction.tapAt(CanvasPosition.center); + + await tester.pumpAndSettle(); + + var colorCenter = await UIInteraction.getPixelColor(CanvasPosition.centerX, CanvasPosition.centerY); + var colorTopLeft = await UIInteraction.getPixelColor(CanvasPosition.left, CanvasPosition.top); + var colorTopRight = await UIInteraction.getPixelColor(CanvasPosition.right, CanvasPosition.top); + var colorBottomLeft = await UIInteraction.getPixelColor(CanvasPosition.left, CanvasPosition.bottom); + var colorBottomRight = await UIInteraction.getPixelColor(CanvasPosition.right, CanvasPosition.bottom); + var colorHalfwayBottomLeft = await UIInteraction.getPixelColor(CanvasPosition.halfwayLeft, CanvasPosition.halfwayBottom); + + expect(colorCenter, isNot(Colors.transparent)); + expect(colorTopLeft, isNot(Colors.transparent)); + expect(colorTopRight, isNot(Colors.transparent)); + expect(colorBottomLeft, isNot(Colors.transparent)); + expect(colorBottomRight, isNot(Colors.transparent)); + expect(colorHalfwayBottomLeft, isNot(Colors.transparent)); + }); + } + + if (testID == -1 || testID == 4) { + testWidgets('[FILL_TOOL]: test fill undo and redo', + (WidgetTester tester) async { + UIInteraction.initialize(tester); + await tester.pumpWidget(sut); + await UIInteraction.createNewImage(); + await UIInteraction.selectTool(ToolData.FILL.name); + + + await UIInteraction.tapAt(CanvasPosition.center, times: 2); + + await tester.pumpAndSettle(); + + var color = await UIInteraction.getPixelColor( + CanvasPosition.centerX, + CanvasPosition.centerY, + ); + expect(color, isNot(Colors.transparent)); + + await UIInteraction.clickUndo(times: 2); + + color = await UIInteraction.getPixelColor( + CanvasPosition.centerX, + CanvasPosition.centerY, + ); + expect(color, Colors.transparent); + + await UIInteraction.clickRedo(times: 2); + + color = await UIInteraction.getPixelColor( + CanvasPosition.centerX, + CanvasPosition.centerY, + ); + expect(color, isNot(Colors.transparent)); + }); + } +} diff --git a/test/unit/serialization/utils/dummy_version_strategy.dart b/test/unit/serialization/utils/dummy_version_strategy.dart index 0ccc3a37..cc303861 100644 --- a/test/unit/serialization/utils/dummy_version_strategy.dart +++ b/test/unit/serialization/utils/dummy_version_strategy.dart @@ -10,6 +10,7 @@ class DummyVersionStrategy implements IVersionStrategy { final int starShapeCommandVersion; final int heartShapeCommandVersion; final int sprayCommandVersion; + final int fillCommandVersion; final int clipboardCommandVersion; final int deleteRegionCommandVersion; final int textCommandVersion; @@ -27,6 +28,7 @@ class DummyVersionStrategy implements IVersionStrategy { this.heartShapeCommandVersion = SerializerVersion.HEART_SHAPE_COMMAND_VERSION, this.sprayCommandVersion = SerializerVersion.SPRAY_COMMAND_VERSION, + this.fillCommandVersion = SerializerVersion.FILL_COMMAND_VERSION, this.clipboardCommandVersion = SerializerVersion.CLIPBOARD_COMMAND_VERSION, this.deleteRegionCommandVersion = SerializerVersion.DELETE_REGION_COMMAND_VERSION, @@ -59,6 +61,9 @@ class DummyVersionStrategy implements IVersionStrategy { @override int getSprayCommandVersion() => sprayCommandVersion; + @override + int getFillCommandVersion() => fillCommandVersion; + @override int getClipboardCommandVersion() => clipboardCommandVersion; diff --git a/test/unit/tools/clipboard_tool_test.mocks.dart b/test/unit/tools/clipboard_tool_test.mocks.dart index c7c26633..23f934e7 100644 --- a/test/unit/tools/clipboard_tool_test.mocks.dart +++ b/test/unit/tools/clipboard_tool_test.mocks.dart @@ -3,26 +3,28 @@ // Do not manually edit this file. // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'dart:async' as _i29; -import 'dart:typed_data' as _i27; +import 'dart:async' as _i30; +import 'dart:typed_data' as _i28; import 'dart:ui' as _i2; -import 'package:flutter/material.dart' as _i28; -import 'package:logging/logging.dart' as _i16; +import 'package:flutter/material.dart' as _i29; +import 'package:logging/logging.dart' as _i17; import 'package:mockito/mockito.dart' as _i1; -import 'package:mockito/src/dummies.dart' as _i20; +import 'package:mockito/src/dummies.dart' as _i21; import 'package:paintroid/core/commands/command_factory/command_factory.dart' - as _i24; + as _i25; import 'package:paintroid/core/commands/command_implementation/command.dart' as _i3; import 'package:paintroid/core/commands/command_implementation/graphic/clipboard_command.dart' as _i9; import 'package:paintroid/core/commands/command_implementation/graphic/color_changed_command.dart' - as _i15; + as _i16; import 'package:paintroid/core/commands/command_implementation/graphic/delete_region_command.dart' + as _i15; +import 'package:paintroid/core/commands/command_implementation/graphic/fill_command.dart' as _i14; import 'package:paintroid/core/commands/command_implementation/graphic/graphic_command.dart' - as _i22; + as _i23; import 'package:paintroid/core/commands/command_implementation/graphic/line_command.dart' as _i6; import 'package:paintroid/core/commands/command_implementation/graphic/path_command.dart' @@ -40,13 +42,13 @@ import 'package:paintroid/core/commands/command_implementation/graphic/spray_com import 'package:paintroid/core/commands/command_implementation/graphic/text_command.dart' as _i10; import 'package:paintroid/core/commands/command_manager/command_manager.dart' - as _i21; -import 'package:paintroid/core/commands/path_with_action_history.dart' as _i25; -import 'package:paintroid/core/enums/bounding_box_action.dart' as _i18; -import 'package:paintroid/core/enums/bounding_box_resize_action.dart' as _i19; -import 'package:paintroid/core/enums/shape_style.dart' as _i26; -import 'package:paintroid/core/tools/bounding_box.dart' as _i17; -import 'package:paintroid/core/tools/line_tool/vertex_stack.dart' as _i23; + as _i22; +import 'package:paintroid/core/commands/path_with_action_history.dart' as _i26; +import 'package:paintroid/core/enums/bounding_box_action.dart' as _i19; +import 'package:paintroid/core/enums/bounding_box_resize_action.dart' as _i20; +import 'package:paintroid/core/enums/shape_style.dart' as _i27; +import 'package:paintroid/core/tools/bounding_box.dart' as _i18; +import 'package:paintroid/core/tools/line_tool/vertex_stack.dart' as _i24; import 'package:paintroid/core/tools/tool_data.dart' as _i4; // ignore_for_file: type=lint @@ -197,9 +199,19 @@ class _FakeSprayCommand_12 extends _i1.SmartFake implements _i13.SprayCommand { ); } -class _FakeDeleteRegionCommand_13 extends _i1.SmartFake - implements _i14.DeleteRegionCommand { - _FakeDeleteRegionCommand_13( +class _FakeFillCommand_13 extends _i1.SmartFake implements _i14.FillCommand { + _FakeFillCommand_13( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeDeleteRegionCommand_14 extends _i1.SmartFake + implements _i15.DeleteRegionCommand { + _FakeDeleteRegionCommand_14( Object parent, Invocation parentInvocation, ) : super( @@ -208,9 +220,9 @@ class _FakeDeleteRegionCommand_13 extends _i1.SmartFake ); } -class _FakeColorChangedCommand_14 extends _i1.SmartFake - implements _i15.ColorChangedCommand { - _FakeColorChangedCommand_14( +class _FakeColorChangedCommand_15 extends _i1.SmartFake + implements _i16.ColorChangedCommand { + _FakeColorChangedCommand_15( Object parent, Invocation parentInvocation, ) : super( @@ -219,8 +231,8 @@ class _FakeColorChangedCommand_14 extends _i1.SmartFake ); } -class _FakeLogger_15 extends _i1.SmartFake implements _i16.Logger { - _FakeLogger_15( +class _FakeLogger_16 extends _i1.SmartFake implements _i17.Logger { + _FakeLogger_16( Object parent, Invocation parentInvocation, ) : super( @@ -229,8 +241,8 @@ class _FakeLogger_15 extends _i1.SmartFake implements _i16.Logger { ); } -class _FakeImage_16 extends _i1.SmartFake implements _i2.Image { - _FakeImage_16( +class _FakeImage_17 extends _i1.SmartFake implements _i2.Image { + _FakeImage_17( Object parent, Invocation parentInvocation, ) : super( @@ -242,7 +254,7 @@ class _FakeImage_16 extends _i1.SmartFake implements _i2.Image { /// A class which mocks [BoundingBox]. /// /// See the documentation for Mockito's code generation for more information. -class MockBoundingBox extends _i1.Mock implements _i17.BoundingBox { +class MockBoundingBox extends _i1.Mock implements _i18.BoundingBox { MockBoundingBox() { _i1.throwOnMissingStub(this); } @@ -311,13 +323,13 @@ class MockBoundingBox extends _i1.Mock implements _i17.BoundingBox { ); @override - _i18.BoundingBoxAction get currentAction => (super.noSuchMethod( + _i19.BoundingBoxAction get currentAction => (super.noSuchMethod( Invocation.getter(#currentAction), - returnValue: _i18.BoundingBoxAction.none, - ) as _i18.BoundingBoxAction); + returnValue: _i19.BoundingBoxAction.none, + ) as _i19.BoundingBoxAction); @override - set currentAction(_i18.BoundingBoxAction? _currentAction) => + set currentAction(_i19.BoundingBoxAction? _currentAction) => super.noSuchMethod( Invocation.setter( #currentAction, @@ -327,15 +339,15 @@ class MockBoundingBox extends _i1.Mock implements _i17.BoundingBox { ); @override - _i19.BoundingBoxResizeAction get currentBoundingBoxResizeAction => + _i20.BoundingBoxResizeAction get currentBoundingBoxResizeAction => (super.noSuchMethod( Invocation.getter(#currentBoundingBoxResizeAction), - returnValue: _i19.BoundingBoxResizeAction.none, - ) as _i19.BoundingBoxResizeAction); + returnValue: _i20.BoundingBoxResizeAction.none, + ) as _i20.BoundingBoxResizeAction); @override set currentBoundingBoxResizeAction( - _i19.BoundingBoxResizeAction? _currentBoundingBoxResizeAction) => + _i20.BoundingBoxResizeAction? _currentBoundingBoxResizeAction) => super.noSuchMethod( Invocation.setter( #currentBoundingBoxResizeAction, @@ -383,7 +395,7 @@ class MockBoundingBox extends _i1.Mock implements _i17.BoundingBox { @override _i2.Paint get boxPaint => (super.noSuchMethod( Invocation.getter(#boxPaint), - returnValue: _i20.dummyValue<_i2.Paint>( + returnValue: _i21.dummyValue<_i2.Paint>( this, Invocation.getter(#boxPaint), ), @@ -401,7 +413,7 @@ class MockBoundingBox extends _i1.Mock implements _i17.BoundingBox { @override _i2.Paint get handlePaint => (super.noSuchMethod( Invocation.getter(#handlePaint), - returnValue: _i20.dummyValue<_i2.Paint>( + returnValue: _i21.dummyValue<_i2.Paint>( this, Invocation.getter(#handlePaint), ), @@ -419,7 +431,7 @@ class MockBoundingBox extends _i1.Mock implements _i17.BoundingBox { @override _i2.Paint get rotationHandlePaint => (super.noSuchMethod( Invocation.getter(#rotationHandlePaint), - returnValue: _i20.dummyValue<_i2.Paint>( + returnValue: _i21.dummyValue<_i2.Paint>( this, Invocation.getter(#rotationHandlePaint), ), @@ -508,7 +520,7 @@ class MockBoundingBox extends _i1.Mock implements _i17.BoundingBox { /// A class which mocks [CommandManager]. /// /// See the documentation for Mockito's code generation for more information. -class MockCommandManager extends _i1.Mock implements _i21.CommandManager { +class MockCommandManager extends _i1.Mock implements _i22.CommandManager { MockCommandManager() { _i1.throwOnMissingStub(this); } @@ -526,7 +538,7 @@ class MockCommandManager extends _i1.Mock implements _i21.CommandManager { ) as List<_i3.Command>); @override - void addGraphicCommand(_i22.GraphicCommand? command) => super.noSuchMethod( + void addGraphicCommand(_i23.GraphicCommand? command) => super.noSuchMethod( Invocation.method( #addGraphicCommand, [command], @@ -611,7 +623,7 @@ class MockCommandManager extends _i1.Mock implements _i21.CommandManager { @override void drawLineToolVertices( _i2.Canvas? canvas, - _i23.VertexStack? vertexStack, + _i24.VertexStack? vertexStack, ) => super.noSuchMethod( Invocation.method( @@ -649,7 +661,7 @@ class MockCommandManager extends _i1.Mock implements _i21.CommandManager { ); @override - _i4.ToolData getNextTool(_i21.ActionType? actionType) => (super.noSuchMethod( + _i4.ToolData getNextTool(_i22.ActionType? actionType) => (super.noSuchMethod( Invocation.method( #getNextTool, [actionType], @@ -676,14 +688,14 @@ class MockCommandManager extends _i1.Mock implements _i21.CommandManager { /// A class which mocks [CommandFactory]. /// /// See the documentation for Mockito's code generation for more information. -class MockCommandFactory extends _i1.Mock implements _i24.CommandFactory { +class MockCommandFactory extends _i1.Mock implements _i25.CommandFactory { MockCommandFactory() { _i1.throwOnMissingStub(this); } @override _i5.PathCommand createPathCommand( - _i25.PathWithActionHistory? path, + _i26.PathWithActionHistory? path, _i2.Paint? paint, { bool? isCursor = false, }) => @@ -711,7 +723,7 @@ class MockCommandFactory extends _i1.Mock implements _i24.CommandFactory { @override _i6.LineCommand createLineCommand( - _i25.PathWithActionHistory? path, + _i26.PathWithActionHistory? path, _i2.Paint? paint, _i2.Offset? startPoint, _i2.Offset? endPoint, @@ -747,7 +759,7 @@ class MockCommandFactory extends _i1.Mock implements _i24.CommandFactory { _i2.Offset? topRight, _i2.Offset? bottomLeft, _i2.Offset? bottomRight, - _i26.ShapeStyle? style, + _i27.ShapeStyle? style, ) => (super.noSuchMethod( Invocation.method( @@ -783,7 +795,7 @@ class MockCommandFactory extends _i1.Mock implements _i24.CommandFactory { double? radiusX, double? radiusY, _i2.Offset? center, - _i26.ShapeStyle? style, + _i27.ShapeStyle? style, double? angle, ) => (super.noSuchMethod( @@ -817,7 +829,7 @@ class MockCommandFactory extends _i1.Mock implements _i24.CommandFactory { @override _i9.ClipboardCommand createClipboardCommand( _i2.Paint? paint, - _i27.Uint8List? imageData, + _i28.Uint8List? imageData, _i2.Offset? offset, double? scale, double? rotation, @@ -852,7 +864,7 @@ class MockCommandFactory extends _i1.Mock implements _i24.CommandFactory { _i10.TextCommand createTextCommand( _i2.Offset? point, String? text, - _i28.TextStyle? style, + _i29.TextStyle? style, double? fontSize, _i2.Paint? paint, double? rotationAngle, { @@ -901,7 +913,7 @@ class MockCommandFactory extends _i1.Mock implements _i24.CommandFactory { int? numPoints, double? angle, _i2.Offset? center, - _i26.ShapeStyle? style, + _i27.ShapeStyle? style, double? radiusX, double? radiusY, ) => @@ -942,7 +954,7 @@ class MockCommandFactory extends _i1.Mock implements _i24.CommandFactory { double? height, double? angle, _i2.Offset? center, - _i26.ShapeStyle? style, + _i27.ShapeStyle? style, ) => (super.noSuchMethod( Invocation.method( @@ -998,23 +1010,48 @@ class MockCommandFactory extends _i1.Mock implements _i24.CommandFactory { ) as _i13.SprayCommand); @override - _i14.DeleteRegionCommand createDeleteRegionCommand(_i2.Rect? region) => + _i14.FillCommand createFillCommand( + List<_i2.Offset>? points, + _i2.Paint? paint, + ) => + (super.noSuchMethod( + Invocation.method( + #createFillCommand, + [ + points, + paint, + ], + ), + returnValue: _FakeFillCommand_13( + this, + Invocation.method( + #createFillCommand, + [ + points, + paint, + ], + ), + ), + ) as _i14.FillCommand); + + @override + _i15.DeleteRegionCommand createDeleteRegionCommand(_i2.Rect? region) => (super.noSuchMethod( Invocation.method( #createDeleteRegionCommand, [region], ), - returnValue: _FakeDeleteRegionCommand_13( + returnValue: _FakeDeleteRegionCommand_14( this, Invocation.method( #createDeleteRegionCommand, [region], ), ), - ) as _i14.DeleteRegionCommand); + ) as _i15.DeleteRegionCommand); @override - _i15.ColorChangedCommand createColorChangedCommand( + _i16.ColorChangedCommand createColorChangedCommand( _i2.Color? oldColor, _i2.Color? newColor, _i2.Paint? paint, @@ -1028,7 +1065,7 @@ class MockCommandFactory extends _i1.Mock implements _i24.CommandFactory { paint, ], ), - returnValue: _FakeColorChangedCommand_14( + returnValue: _FakeColorChangedCommand_15( this, Invocation.method( #createColorChangedCommand, @@ -1039,7 +1076,7 @@ class MockCommandFactory extends _i1.Mock implements _i24.CommandFactory { ], ), ), - ) as _i15.ColorChangedCommand); + ) as _i16.ColorChangedCommand); } /// A class which mocks [ClipboardCommand]. @@ -1051,10 +1088,10 @@ class MockClipboardCommand extends _i1.Mock implements _i9.ClipboardCommand { } @override - _i27.Uint8List get imageData => (super.noSuchMethod( + _i28.Uint8List get imageData => (super.noSuchMethod( Invocation.getter(#imageData), - returnValue: _i27.Uint8List(0), - ) as _i27.Uint8List); + returnValue: _i28.Uint8List(0), + ) as _i28.Uint8List); @override _i2.Offset get offset => (super.noSuchMethod( @@ -1086,7 +1123,7 @@ class MockClipboardCommand extends _i1.Mock implements _i9.ClipboardCommand { @override String get type => (super.noSuchMethod( Invocation.getter(#type), - returnValue: _i20.dummyValue( + returnValue: _i21.dummyValue( this, Invocation.getter(#type), ), @@ -1101,30 +1138,30 @@ class MockClipboardCommand extends _i1.Mock implements _i9.ClipboardCommand { @override _i2.Paint get paint => (super.noSuchMethod( Invocation.getter(#paint), - returnValue: _i20.dummyValue<_i2.Paint>( + returnValue: _i21.dummyValue<_i2.Paint>( this, Invocation.getter(#paint), ), ) as _i2.Paint); @override - _i16.Logger get logger => (super.noSuchMethod( + _i17.Logger get logger => (super.noSuchMethod( Invocation.getter(#logger), - returnValue: _FakeLogger_15( + returnValue: _FakeLogger_16( this, Invocation.getter(#logger), ), - ) as _i16.Logger); + ) as _i17.Logger); @override - _i29.Future prepareForRuntime() => (super.noSuchMethod( + _i30.Future prepareForRuntime() => (super.noSuchMethod( Invocation.method( #prepareForRuntime, [], ), - returnValue: _i29.Future.value(), - returnValueForMissingStub: _i29.Future.value(), - ) as _i29.Future); + returnValue: _i30.Future.value(), + returnValueForMissingStub: _i30.Future.value(), + ) as _i30.Future); @override void call(_i2.Canvas? canvas) => super.noSuchMethod( @@ -1187,7 +1224,7 @@ class MockImage extends _i1.Mock implements _i2.Image { ); @override - _i29.Future<_i27.ByteData?> toByteData( + _i30.Future<_i28.ByteData?> toByteData( {_i2.ImageByteFormat? format = _i2.ImageByteFormat.rawRgba}) => (super.noSuchMethod( Invocation.method( @@ -1195,8 +1232,8 @@ class MockImage extends _i1.Mock implements _i2.Image { [], {#format: format}, ), - returnValue: _i29.Future<_i27.ByteData?>.value(), - ) as _i29.Future<_i27.ByteData?>); + returnValue: _i30.Future<_i28.ByteData?>.value(), + ) as _i30.Future<_i28.ByteData?>); @override _i2.Image clone() => (super.noSuchMethod( @@ -1204,7 +1241,7 @@ class MockImage extends _i1.Mock implements _i2.Image { #clone, [], ), - returnValue: _FakeImage_16( + returnValue: _FakeImage_17( this, Invocation.method( #clone, diff --git a/test/unit/tools/fill_tool_test.dart b/test/unit/tools/fill_tool_test.dart new file mode 100644 index 00000000..2d3c4296 --- /dev/null +++ b/test/unit/tools/fill_tool_test.dart @@ -0,0 +1,48 @@ +import 'dart:ui'; + +import 'package:flutter_test/flutter_test.dart'; +import 'package:paintroid/core/commands/command_factory/command_factory.dart'; +//import 'package:paintroid/core/commands/command_implementation/graphic/fill_command.dart'; +import 'package:paintroid/core/commands/command_manager/command_manager.dart'; +import 'package:paintroid/core/commands/graphic_factory/graphic_factory.dart'; +import 'package:paintroid/core/enums/tool_types.dart'; +import 'package:paintroid/core/providers/object/canvas_painter_provider.dart'; +import 'package:paintroid/core/providers/state/canvas_state_provider.dart'; +import 'package:paintroid/core/tools/implementation/fill_tool.dart'; + +void main() { + late FillTool sut; + + const Offset pointA = Offset(100, 100); + + Paint paint = Paint(); + + setUp(() { + sut = FillTool( + commandFactory: const CommandFactory(), + commandManager: CommandManager(), + graphicFactory: const GraphicFactory(), + type: ToolType.FILL, + canvasPainterProvider: CanvasPainterProvider(), + canvasStateProvider: CanvasStateProvider(), + ); + }); + + test('On down, no command is created', () { + sut.onDown(pointA, paint); + expect(sut.commandManager.undoStack.length, 0); + }); + + group('FillTool properties and methods', () { + test('Should return FILL as ToolType', () { + expect(sut.type, ToolType.FILL); + }); + + test('updateTolerance should change tolerance', () { + double initialRadius = sut.tolerancePercent; + sut.updateTolerance(80.0); + expect(sut.tolerancePercent, equals(80.0)); + expect(sut.tolerancePercent, isNot(equals(initialRadius))); + }); + }); +} diff --git a/test/unit/tools/pipette_tool_test.mocks.dart b/test/unit/tools/pipette_tool_test.mocks.dart index 20b51656..4152481b 100644 --- a/test/unit/tools/pipette_tool_test.mocks.dart +++ b/test/unit/tools/pipette_tool_test.mocks.dart @@ -3,26 +3,28 @@ // Do not manually edit this file. // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'dart:async' as _i31; -import 'dart:typed_data' as _i25; -import 'dart:ui' as _i16; +import 'dart:async' as _i32; +import 'dart:typed_data' as _i26; +import 'dart:ui' as _i17; -import 'package:flutter/material.dart' as _i26; -import 'package:logging/logging.dart' as _i18; +import 'package:flutter/material.dart' as _i27; +import 'package:logging/logging.dart' as _i19; import 'package:mockito/mockito.dart' as _i1; -import 'package:mockito/src/dummies.dart' as _i28; +import 'package:mockito/src/dummies.dart' as _i29; import 'package:paintroid/core/commands/command_factory/command_factory.dart' - as _i23; + as _i24; import 'package:paintroid/core/commands/command_implementation/command.dart' as _i2; import 'package:paintroid/core/commands/command_implementation/graphic/clipboard_command.dart' as _i8; import 'package:paintroid/core/commands/command_implementation/graphic/color_changed_command.dart' - as _i14; + as _i15; import 'package:paintroid/core/commands/command_implementation/graphic/delete_region_command.dart' + as _i14; +import 'package:paintroid/core/commands/command_implementation/graphic/fill_command.dart' as _i13; import 'package:paintroid/core/commands/command_implementation/graphic/graphic_command.dart' - as _i21; + as _i22; import 'package:paintroid/core/commands/command_implementation/graphic/line_command.dart' as _i5; import 'package:paintroid/core/commands/command_implementation/graphic/path_command.dart' @@ -40,19 +42,19 @@ import 'package:paintroid/core/commands/command_implementation/graphic/spray_com import 'package:paintroid/core/commands/command_implementation/graphic/text_command.dart' as _i9; import 'package:paintroid/core/commands/command_manager/command_manager.dart' - as _i20; + as _i21; import 'package:paintroid/core/commands/graphic_factory/graphic_factory.dart' - as _i32; -import 'package:paintroid/core/commands/path_with_action_history.dart' as _i19; -import 'package:paintroid/core/enums/shape_style.dart' as _i24; -import 'package:paintroid/core/enums/tool_types.dart' as _i29; -import 'package:paintroid/core/providers/state/canvas_state_data.dart' as _i17; + as _i33; +import 'package:paintroid/core/commands/path_with_action_history.dart' as _i20; +import 'package:paintroid/core/enums/shape_style.dart' as _i25; +import 'package:paintroid/core/enums/tool_types.dart' as _i30; +import 'package:paintroid/core/providers/state/canvas_state_data.dart' as _i18; import 'package:paintroid/core/providers/state/canvas_state_provider.dart' - as _i30; -import 'package:paintroid/core/providers/state/paint_provider.dart' as _i27; -import 'package:paintroid/core/tools/line_tool/vertex_stack.dart' as _i22; + as _i31; +import 'package:paintroid/core/providers/state/paint_provider.dart' as _i28; +import 'package:paintroid/core/tools/line_tool/vertex_stack.dart' as _i23; import 'package:paintroid/core/tools/tool_data.dart' as _i3; -import 'package:riverpod_annotation/riverpod_annotation.dart' as _i15; +import 'package:riverpod_annotation/riverpod_annotation.dart' as _i16; // ignore_for_file: type=lint // ignore_for_file: avoid_redundant_argument_values @@ -182,9 +184,8 @@ class _FakeSprayCommand_10 extends _i1.SmartFake implements _i12.SprayCommand { ); } -class _FakeDeleteRegionCommand_11 extends _i1.SmartFake - implements _i13.DeleteRegionCommand { - _FakeDeleteRegionCommand_11( +class _FakeFillCommand_11 extends _i1.SmartFake implements _i13.FillCommand { + _FakeFillCommand_11( Object parent, Invocation parentInvocation, ) : super( @@ -193,9 +194,9 @@ class _FakeDeleteRegionCommand_11 extends _i1.SmartFake ); } -class _FakeColorChangedCommand_12 extends _i1.SmartFake - implements _i14.ColorChangedCommand { - _FakeColorChangedCommand_12( +class _FakeDeleteRegionCommand_12 extends _i1.SmartFake + implements _i14.DeleteRegionCommand { + _FakeDeleteRegionCommand_12( Object parent, Invocation parentInvocation, ) : super( @@ -204,9 +205,9 @@ class _FakeColorChangedCommand_12 extends _i1.SmartFake ); } -class _FakeNotifierProviderRef_13 extends _i1.SmartFake - implements _i15.NotifierProviderRef { - _FakeNotifierProviderRef_13( +class _FakeColorChangedCommand_13 extends _i1.SmartFake + implements _i15.ColorChangedCommand { + _FakeColorChangedCommand_13( Object parent, Invocation parentInvocation, ) : super( @@ -215,8 +216,9 @@ class _FakeNotifierProviderRef_13 extends _i1.SmartFake ); } -class _FakeSize_14 extends _i1.SmartFake implements _i16.Size { - _FakeSize_14( +class _FakeNotifierProviderRef_14 extends _i1.SmartFake + implements _i16.NotifierProviderRef { + _FakeNotifierProviderRef_14( Object parent, Invocation parentInvocation, ) : super( @@ -225,9 +227,8 @@ class _FakeSize_14 extends _i1.SmartFake implements _i16.Size { ); } -class _FakeCanvasStateData_15 extends _i1.SmartFake - implements _i17.CanvasStateData { - _FakeCanvasStateData_15( +class _FakeSize_15 extends _i1.SmartFake implements _i17.Size { + _FakeSize_15( Object parent, Invocation parentInvocation, ) : super( @@ -236,8 +237,9 @@ class _FakeCanvasStateData_15 extends _i1.SmartFake ); } -class _FakeLogger_16 extends _i1.SmartFake implements _i18.Logger { - _FakeLogger_16( +class _FakeCanvasStateData_16 extends _i1.SmartFake + implements _i18.CanvasStateData { + _FakeCanvasStateData_16( Object parent, Invocation parentInvocation, ) : super( @@ -246,8 +248,8 @@ class _FakeLogger_16 extends _i1.SmartFake implements _i18.Logger { ); } -class _FakeColor_17 extends _i1.SmartFake implements _i16.Color { - _FakeColor_17( +class _FakeLogger_17 extends _i1.SmartFake implements _i19.Logger { + _FakeLogger_17( Object parent, Invocation parentInvocation, ) : super( @@ -256,9 +258,8 @@ class _FakeColor_17 extends _i1.SmartFake implements _i16.Color { ); } -class _FakePathWithActionHistory_18 extends _i1.SmartFake - implements _i19.PathWithActionHistory { - _FakePathWithActionHistory_18( +class _FakeColor_18 extends _i1.SmartFake implements _i17.Color { + _FakeColor_18( Object parent, Invocation parentInvocation, ) : super( @@ -267,9 +268,9 @@ class _FakePathWithActionHistory_18 extends _i1.SmartFake ); } -class _FakePictureRecorder_19 extends _i1.SmartFake - implements _i16.PictureRecorder { - _FakePictureRecorder_19( +class _FakePathWithActionHistory_19 extends _i1.SmartFake + implements _i20.PathWithActionHistory { + _FakePathWithActionHistory_19( Object parent, Invocation parentInvocation, ) : super( @@ -278,8 +279,19 @@ class _FakePictureRecorder_19 extends _i1.SmartFake ); } -class _FakeCanvas_20 extends _i1.SmartFake implements _i16.Canvas { - _FakeCanvas_20( +class _FakePictureRecorder_20 extends _i1.SmartFake + implements _i17.PictureRecorder { + _FakePictureRecorder_20( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeCanvas_21 extends _i1.SmartFake implements _i17.Canvas { + _FakeCanvas_21( Object parent, Invocation parentInvocation, ) : super( @@ -291,7 +303,7 @@ class _FakeCanvas_20 extends _i1.SmartFake implements _i16.Canvas { /// A class which mocks [CommandManager]. /// /// See the documentation for Mockito's code generation for more information. -class MockCommandManager extends _i1.Mock implements _i20.CommandManager { +class MockCommandManager extends _i1.Mock implements _i21.CommandManager { MockCommandManager() { _i1.throwOnMissingStub(this); } @@ -309,7 +321,7 @@ class MockCommandManager extends _i1.Mock implements _i20.CommandManager { ) as List<_i2.Command>); @override - void addGraphicCommand(_i21.GraphicCommand? command) => super.noSuchMethod( + void addGraphicCommand(_i22.GraphicCommand? command) => super.noSuchMethod( Invocation.method( #addGraphicCommand, [command], @@ -327,7 +339,7 @@ class MockCommandManager extends _i1.Mock implements _i20.CommandManager { ); @override - void executeLastCommand(_i16.Canvas? canvas) => super.noSuchMethod( + void executeLastCommand(_i17.Canvas? canvas) => super.noSuchMethod( Invocation.method( #executeLastCommand, [canvas], @@ -336,7 +348,7 @@ class MockCommandManager extends _i1.Mock implements _i20.CommandManager { ); @override - void executeAllCommands(_i16.Canvas? canvas) => super.noSuchMethod( + void executeAllCommands(_i17.Canvas? canvas) => super.noSuchMethod( Invocation.method( #executeAllCommands, [canvas], @@ -375,7 +387,7 @@ class MockCommandManager extends _i1.Mock implements _i20.CommandManager { @override void drawLineToolGhostPaths( - _i16.Canvas? canvas, + _i17.Canvas? canvas, _i5.LineCommand? ingoingGhostPathCommand, _i5.LineCommand? outgoingGhostPathCommand, ) => @@ -393,8 +405,8 @@ class MockCommandManager extends _i1.Mock implements _i20.CommandManager { @override void drawLineToolVertices( - _i16.Canvas? canvas, - _i22.VertexStack? vertexStack, + _i17.Canvas? canvas, + _i23.VertexStack? vertexStack, ) => super.noSuchMethod( Invocation.method( @@ -432,7 +444,7 @@ class MockCommandManager extends _i1.Mock implements _i20.CommandManager { ); @override - _i3.ToolData getNextTool(_i20.ActionType? actionType) => (super.noSuchMethod( + _i3.ToolData getNextTool(_i21.ActionType? actionType) => (super.noSuchMethod( Invocation.method( #getNextTool, [actionType], @@ -459,15 +471,15 @@ class MockCommandManager extends _i1.Mock implements _i20.CommandManager { /// A class which mocks [CommandFactory]. /// /// See the documentation for Mockito's code generation for more information. -class MockCommandFactory extends _i1.Mock implements _i23.CommandFactory { +class MockCommandFactory extends _i1.Mock implements _i24.CommandFactory { MockCommandFactory() { _i1.throwOnMissingStub(this); } @override _i4.PathCommand createPathCommand( - _i19.PathWithActionHistory? path, - _i16.Paint? paint, { + _i20.PathWithActionHistory? path, + _i17.Paint? paint, { bool? isCursor = false, }) => (super.noSuchMethod( @@ -494,10 +506,10 @@ class MockCommandFactory extends _i1.Mock implements _i23.CommandFactory { @override _i5.LineCommand createLineCommand( - _i19.PathWithActionHistory? path, - _i16.Paint? paint, - _i16.Offset? startPoint, - _i16.Offset? endPoint, + _i20.PathWithActionHistory? path, + _i17.Paint? paint, + _i17.Offset? startPoint, + _i17.Offset? endPoint, ) => (super.noSuchMethod( Invocation.method( @@ -525,12 +537,12 @@ class MockCommandFactory extends _i1.Mock implements _i23.CommandFactory { @override _i6.SquareShapeCommand createSquareShapeCommand( - _i16.Paint? paint, - _i16.Offset? topLeft, - _i16.Offset? topRight, - _i16.Offset? bottomLeft, - _i16.Offset? bottomRight, - _i24.ShapeStyle? style, + _i17.Paint? paint, + _i17.Offset? topLeft, + _i17.Offset? topRight, + _i17.Offset? bottomLeft, + _i17.Offset? bottomRight, + _i25.ShapeStyle? style, ) => (super.noSuchMethod( Invocation.method( @@ -562,11 +574,11 @@ class MockCommandFactory extends _i1.Mock implements _i23.CommandFactory { @override _i7.EllipseShapeCommand createEllipseShapeCommand( - _i16.Paint? paint, + _i17.Paint? paint, double? radiusX, double? radiusY, - _i16.Offset? center, - _i24.ShapeStyle? style, + _i17.Offset? center, + _i25.ShapeStyle? style, double? angle, ) => (super.noSuchMethod( @@ -599,9 +611,9 @@ class MockCommandFactory extends _i1.Mock implements _i23.CommandFactory { @override _i8.ClipboardCommand createClipboardCommand( - _i16.Paint? paint, - _i25.Uint8List? imageData, - _i16.Offset? offset, + _i17.Paint? paint, + _i26.Uint8List? imageData, + _i17.Offset? offset, double? scale, double? rotation, ) => @@ -633,11 +645,11 @@ class MockCommandFactory extends _i1.Mock implements _i23.CommandFactory { @override _i9.TextCommand createTextCommand( - _i16.Offset? point, + _i17.Offset? point, String? text, - _i26.TextStyle? style, + _i27.TextStyle? style, double? fontSize, - _i16.Paint? paint, + _i17.Paint? paint, double? rotationAngle, { double? scaleX = 1.0, double? scaleY = 1.0, @@ -680,11 +692,11 @@ class MockCommandFactory extends _i1.Mock implements _i23.CommandFactory { @override _i10.StarShapeCommand createStarShapeCommand( - _i16.Paint? paint, + _i17.Paint? paint, int? numPoints, double? angle, - _i16.Offset? center, - _i24.ShapeStyle? style, + _i17.Offset? center, + _i25.ShapeStyle? style, double? radiusX, double? radiusY, ) => @@ -720,12 +732,12 @@ class MockCommandFactory extends _i1.Mock implements _i23.CommandFactory { @override _i11.HeartShapeCommand createHeartShapeCommand( - _i16.Paint? paint, + _i17.Paint? paint, double? width, double? height, double? angle, - _i16.Offset? center, - _i24.ShapeStyle? style, + _i17.Offset? center, + _i25.ShapeStyle? style, ) => (super.noSuchMethod( Invocation.method( @@ -757,8 +769,8 @@ class MockCommandFactory extends _i1.Mock implements _i23.CommandFactory { @override _i12.SprayCommand createSprayCommand( - List<_i16.Offset>? points, - _i16.Paint? paint, + List<_i17.Offset>? points, + _i17.Paint? paint, ) => (super.noSuchMethod( Invocation.method( @@ -781,26 +793,51 @@ class MockCommandFactory extends _i1.Mock implements _i23.CommandFactory { ) as _i12.SprayCommand); @override - _i13.DeleteRegionCommand createDeleteRegionCommand(_i16.Rect? region) => + _i13.FillCommand createFillCommand( + List<_i17.Offset>? points, + _i17.Paint? paint, + ) => + (super.noSuchMethod( + Invocation.method( + #createFillCommand, + [ + points, + paint, + ], + ), + returnValue: _FakeFillCommand_11( + this, + Invocation.method( + #createFillCommand, + [ + points, + paint, + ], + ), + ), + ) as _i13.FillCommand); + + @override + _i14.DeleteRegionCommand createDeleteRegionCommand(_i17.Rect? region) => (super.noSuchMethod( Invocation.method( #createDeleteRegionCommand, [region], ), - returnValue: _FakeDeleteRegionCommand_11( + returnValue: _FakeDeleteRegionCommand_12( this, Invocation.method( #createDeleteRegionCommand, [region], ), ), - ) as _i13.DeleteRegionCommand); + ) as _i14.DeleteRegionCommand); @override - _i14.ColorChangedCommand createColorChangedCommand( - _i16.Color? oldColor, - _i16.Color? newColor, - _i16.Paint? paint, + _i15.ColorChangedCommand createColorChangedCommand( + _i17.Color? oldColor, + _i17.Color? newColor, + _i17.Paint? paint, ) => (super.noSuchMethod( Invocation.method( @@ -811,7 +848,7 @@ class MockCommandFactory extends _i1.Mock implements _i23.CommandFactory { paint, ], ), - returnValue: _FakeColorChangedCommand_12( + returnValue: _FakeColorChangedCommand_13( this, Invocation.method( #createColorChangedCommand, @@ -822,46 +859,46 @@ class MockCommandFactory extends _i1.Mock implements _i23.CommandFactory { ], ), ), - ) as _i14.ColorChangedCommand); + ) as _i15.ColorChangedCommand); } /// A class which mocks [PaintProvider]. /// /// See the documentation for Mockito's code generation for more information. -class MockPaintProvider extends _i1.Mock implements _i27.PaintProvider { +class MockPaintProvider extends _i1.Mock implements _i28.PaintProvider { MockPaintProvider() { _i1.throwOnMissingStub(this); } @override - _i16.Paint get currentState => (super.noSuchMethod( + _i17.Paint get currentState => (super.noSuchMethod( Invocation.getter(#currentState), - returnValue: _i28.dummyValue<_i16.Paint>( + returnValue: _i29.dummyValue<_i17.Paint>( this, Invocation.getter(#currentState), ), - ) as _i16.Paint); + ) as _i17.Paint); @override - _i15.NotifierProviderRef<_i16.Paint> get ref => (super.noSuchMethod( + _i16.NotifierProviderRef<_i17.Paint> get ref => (super.noSuchMethod( Invocation.getter(#ref), - returnValue: _FakeNotifierProviderRef_13<_i16.Paint>( + returnValue: _FakeNotifierProviderRef_14<_i17.Paint>( this, Invocation.getter(#ref), ), - ) as _i15.NotifierProviderRef<_i16.Paint>); + ) as _i16.NotifierProviderRef<_i17.Paint>); @override - _i16.Paint get state => (super.noSuchMethod( + _i17.Paint get state => (super.noSuchMethod( Invocation.getter(#state), - returnValue: _i28.dummyValue<_i16.Paint>( + returnValue: _i29.dummyValue<_i17.Paint>( this, Invocation.getter(#state), ), - ) as _i16.Paint); + ) as _i17.Paint); @override - set state(_i16.Paint? value) => super.noSuchMethod( + set state(_i17.Paint? value) => super.noSuchMethod( Invocation.setter( #state, value, @@ -870,19 +907,19 @@ class MockPaintProvider extends _i1.Mock implements _i27.PaintProvider { ); @override - _i16.Paint build() => (super.noSuchMethod( + _i17.Paint build() => (super.noSuchMethod( Invocation.method( #build, [], ), - returnValue: _i28.dummyValue<_i16.Paint>( + returnValue: _i29.dummyValue<_i17.Paint>( this, Invocation.method( #build, [], ), ), - ) as _i16.Paint); + ) as _i17.Paint); @override void updateStrokeWidth(double? newStrokeWidth) => super.noSuchMethod( @@ -894,7 +931,7 @@ class MockPaintProvider extends _i1.Mock implements _i27.PaintProvider { ); @override - void updateStrokeCap(_i16.StrokeCap? newStrokeCap) => super.noSuchMethod( + void updateStrokeCap(_i17.StrokeCap? newStrokeCap) => super.noSuchMethod( Invocation.method( #updateStrokeCap, [newStrokeCap], @@ -903,7 +940,7 @@ class MockPaintProvider extends _i1.Mock implements _i27.PaintProvider { ); @override - void updateColor(_i16.Color? newColor) => super.noSuchMethod( + void updateColor(_i17.Color? newColor) => super.noSuchMethod( Invocation.method( #updateColor, [newColor], @@ -912,7 +949,7 @@ class MockPaintProvider extends _i1.Mock implements _i27.PaintProvider { ); @override - void updateBlendMode(_i16.BlendMode? newMode) => super.noSuchMethod( + void updateBlendMode(_i17.BlendMode? newMode) => super.noSuchMethod( Invocation.method( #updateBlendMode, [newMode], @@ -921,7 +958,7 @@ class MockPaintProvider extends _i1.Mock implements _i27.PaintProvider { ); @override - void updateBlendModeByToolType(_i29.ToolType? toolType) => super.noSuchMethod( + void updateBlendModeByToolType(_i30.ToolType? toolType) => super.noSuchMethod( Invocation.method( #updateBlendModeByToolType, [toolType], @@ -932,8 +969,8 @@ class MockPaintProvider extends _i1.Mock implements _i27.PaintProvider { @override void listenSelf( void Function( - _i16.Paint?, - _i16.Paint, + _i17.Paint?, + _i17.Paint, )? listener, { void Function( Object, @@ -951,8 +988,8 @@ class MockPaintProvider extends _i1.Mock implements _i27.PaintProvider { @override bool updateShouldNotify( - _i16.Paint? previous, - _i16.Paint? next, + _i17.Paint? previous, + _i17.Paint? next, ) => (super.noSuchMethod( Invocation.method( @@ -970,22 +1007,22 @@ class MockPaintProvider extends _i1.Mock implements _i27.PaintProvider { /// /// See the documentation for Mockito's code generation for more information. class MockCanvasStateProvider extends _i1.Mock - implements _i30.CanvasStateProvider { + implements _i31.CanvasStateProvider { MockCanvasStateProvider() { _i1.throwOnMissingStub(this); } @override - _i16.Size get initialCanvasSize => (super.noSuchMethod( + _i17.Size get initialCanvasSize => (super.noSuchMethod( Invocation.getter(#initialCanvasSize), - returnValue: _FakeSize_14( + returnValue: _FakeSize_15( this, Invocation.getter(#initialCanvasSize), ), - ) as _i16.Size); + ) as _i17.Size); @override - set initialCanvasSize(_i16.Size? _initialCanvasSize) => super.noSuchMethod( + set initialCanvasSize(_i17.Size? _initialCanvasSize) => super.noSuchMethod( Invocation.setter( #initialCanvasSize, _initialCanvasSize, @@ -994,34 +1031,34 @@ class MockCanvasStateProvider extends _i1.Mock ); @override - _i17.CanvasStateData get currentState => (super.noSuchMethod( + _i18.CanvasStateData get currentState => (super.noSuchMethod( Invocation.getter(#currentState), - returnValue: _FakeCanvasStateData_15( + returnValue: _FakeCanvasStateData_16( this, Invocation.getter(#currentState), ), - ) as _i17.CanvasStateData); + ) as _i18.CanvasStateData); @override - _i15.NotifierProviderRef<_i17.CanvasStateData> get ref => (super.noSuchMethod( + _i16.NotifierProviderRef<_i18.CanvasStateData> get ref => (super.noSuchMethod( Invocation.getter(#ref), - returnValue: _FakeNotifierProviderRef_13<_i17.CanvasStateData>( + returnValue: _FakeNotifierProviderRef_14<_i18.CanvasStateData>( this, Invocation.getter(#ref), ), - ) as _i15.NotifierProviderRef<_i17.CanvasStateData>); + ) as _i16.NotifierProviderRef<_i18.CanvasStateData>); @override - _i17.CanvasStateData get state => (super.noSuchMethod( + _i18.CanvasStateData get state => (super.noSuchMethod( Invocation.getter(#state), - returnValue: _FakeCanvasStateData_15( + returnValue: _FakeCanvasStateData_16( this, Invocation.getter(#state), ), - ) as _i17.CanvasStateData); + ) as _i18.CanvasStateData); @override - set state(_i17.CanvasStateData? value) => super.noSuchMethod( + set state(_i18.CanvasStateData? value) => super.noSuchMethod( Invocation.setter( #state, value, @@ -1030,13 +1067,13 @@ class MockCanvasStateProvider extends _i1.Mock ); @override - _i18.Logger get logger => (super.noSuchMethod( + _i19.Logger get logger => (super.noSuchMethod( Invocation.getter(#logger), - returnValue: _FakeLogger_16( + returnValue: _FakeLogger_17( this, Invocation.getter(#logger), ), - ) as _i18.Logger); + ) as _i19.Logger); @override void requestResetView() => super.noSuchMethod( @@ -1048,22 +1085,22 @@ class MockCanvasStateProvider extends _i1.Mock ); @override - _i17.CanvasStateData build() => (super.noSuchMethod( + _i18.CanvasStateData build() => (super.noSuchMethod( Invocation.method( #build, [], ), - returnValue: _FakeCanvasStateData_15( + returnValue: _FakeCanvasStateData_16( this, Invocation.method( #build, [], ), ), - ) as _i17.CanvasStateData); + ) as _i18.CanvasStateData); @override - void setBackgroundImage(_i16.Image? image) => super.noSuchMethod( + void setBackgroundImage(_i17.Image? image) => super.noSuchMethod( Invocation.method( #setBackgroundImage, [image], @@ -1081,42 +1118,42 @@ class MockCanvasStateProvider extends _i1.Mock ); @override - _i31.Future updateCachedImage() => (super.noSuchMethod( + _i32.Future updateCachedImage() => (super.noSuchMethod( Invocation.method( #updateCachedImage, [], ), - returnValue: _i31.Future.value(), - returnValueForMissingStub: _i31.Future.value(), - ) as _i31.Future); + returnValue: _i32.Future.value(), + returnValueForMissingStub: _i32.Future.value(), + ) as _i32.Future); @override - _i31.Future resetCanvasWithNewCommands( + _i32.Future resetCanvasWithNewCommands( Iterable<_i2.Command>? commands) => (super.noSuchMethod( Invocation.method( #resetCanvasWithNewCommands, [commands], ), - returnValue: _i31.Future.value(), - returnValueForMissingStub: _i31.Future.value(), - ) as _i31.Future); + returnValue: _i32.Future.value(), + returnValueForMissingStub: _i32.Future.value(), + ) as _i32.Future); @override - _i31.Future resetCanvasWithExistingCommands() => (super.noSuchMethod( + _i32.Future resetCanvasWithExistingCommands() => (super.noSuchMethod( Invocation.method( #resetCanvasWithExistingCommands, [], ), - returnValue: _i31.Future.value(), - returnValueForMissingStub: _i31.Future.value(), - ) as _i31.Future); + returnValue: _i32.Future.value(), + returnValueForMissingStub: _i32.Future.value(), + ) as _i32.Future); @override void listenSelf( void Function( - _i17.CanvasStateData?, - _i17.CanvasStateData, + _i18.CanvasStateData?, + _i18.CanvasStateData, )? listener, { void Function( Object, @@ -1134,8 +1171,8 @@ class MockCanvasStateProvider extends _i1.Mock @override bool updateShouldNotify( - _i17.CanvasStateData? previous, - _i17.CanvasStateData? next, + _i18.CanvasStateData? previous, + _i18.CanvasStateData? next, ) => (super.noSuchMethod( Invocation.method( @@ -1153,7 +1190,7 @@ class MockCanvasStateProvider extends _i1.Mock /// /// See the documentation for Mockito's code generation for more information. class MockColorChangedCommand extends _i1.Mock - implements _i14.ColorChangedCommand { + implements _i15.ColorChangedCommand { MockColorChangedCommand() { _i1.throwOnMissingStub(this); } @@ -1161,7 +1198,7 @@ class MockColorChangedCommand extends _i1.Mock @override String get type => (super.noSuchMethod( Invocation.getter(#type), - returnValue: _i28.dummyValue( + returnValue: _i29.dummyValue( this, Invocation.getter(#type), ), @@ -1174,22 +1211,22 @@ class MockColorChangedCommand extends _i1.Mock ) as int); @override - _i16.Color get oldColor => (super.noSuchMethod( + _i17.Color get oldColor => (super.noSuchMethod( Invocation.getter(#oldColor), - returnValue: _FakeColor_17( + returnValue: _FakeColor_18( this, Invocation.getter(#oldColor), ), - ) as _i16.Color); + ) as _i17.Color); @override - _i16.Color get newColor => (super.noSuchMethod( + _i17.Color get newColor => (super.noSuchMethod( Invocation.getter(#newColor), - returnValue: _FakeColor_17( + returnValue: _FakeColor_18( this, Invocation.getter(#newColor), ), - ) as _i16.Color); + ) as _i17.Color); @override List get props => (super.noSuchMethod( @@ -1198,16 +1235,16 @@ class MockColorChangedCommand extends _i1.Mock ) as List); @override - _i16.Paint get paint => (super.noSuchMethod( + _i17.Paint get paint => (super.noSuchMethod( Invocation.getter(#paint), - returnValue: _i28.dummyValue<_i16.Paint>( + returnValue: _i29.dummyValue<_i17.Paint>( this, Invocation.getter(#paint), ), - ) as _i16.Paint); + ) as _i17.Paint); @override - void call(_i16.Canvas? canvas) => super.noSuchMethod( + void call(_i17.Canvas? canvas) => super.noSuchMethod( Invocation.method( #call, [canvas], @@ -1225,89 +1262,89 @@ class MockColorChangedCommand extends _i1.Mock ) as Map); @override - _i31.Future prepareForRuntime() => (super.noSuchMethod( + _i32.Future prepareForRuntime() => (super.noSuchMethod( Invocation.method( #prepareForRuntime, [], ), - returnValue: _i31.Future.value(), - returnValueForMissingStub: _i31.Future.value(), - ) as _i31.Future); + returnValue: _i32.Future.value(), + returnValueForMissingStub: _i32.Future.value(), + ) as _i32.Future); } /// A class which mocks [GraphicFactory]. /// /// See the documentation for Mockito's code generation for more information. -class MockGraphicFactory extends _i1.Mock implements _i32.GraphicFactory { +class MockGraphicFactory extends _i1.Mock implements _i33.GraphicFactory { MockGraphicFactory() { _i1.throwOnMissingStub(this); } @override - _i16.Paint createPaint() => (super.noSuchMethod( + _i17.Paint createPaint() => (super.noSuchMethod( Invocation.method( #createPaint, [], ), - returnValue: _i28.dummyValue<_i16.Paint>( + returnValue: _i29.dummyValue<_i17.Paint>( this, Invocation.method( #createPaint, [], ), ), - ) as _i16.Paint); + ) as _i17.Paint); @override - _i19.PathWithActionHistory createPathWithActionHistory() => + _i20.PathWithActionHistory createPathWithActionHistory() => (super.noSuchMethod( Invocation.method( #createPathWithActionHistory, [], ), - returnValue: _FakePathWithActionHistory_18( + returnValue: _FakePathWithActionHistory_19( this, Invocation.method( #createPathWithActionHistory, [], ), ), - ) as _i19.PathWithActionHistory); + ) as _i20.PathWithActionHistory); @override - _i16.PictureRecorder createPictureRecorder() => (super.noSuchMethod( + _i17.PictureRecorder createPictureRecorder() => (super.noSuchMethod( Invocation.method( #createPictureRecorder, [], ), - returnValue: _FakePictureRecorder_19( + returnValue: _FakePictureRecorder_20( this, Invocation.method( #createPictureRecorder, [], ), ), - ) as _i16.PictureRecorder); + ) as _i17.PictureRecorder); @override - _i16.Canvas createCanvasWithRecorder(_i16.PictureRecorder? recorder) => + _i17.Canvas createCanvasWithRecorder(_i17.PictureRecorder? recorder) => (super.noSuchMethod( Invocation.method( #createCanvasWithRecorder, [recorder], ), - returnValue: _FakeCanvas_20( + returnValue: _FakeCanvas_21( this, Invocation.method( #createCanvasWithRecorder, [recorder], ), ), - ) as _i16.Canvas); + ) as _i17.Canvas); @override - _i16.Paint createWatercolorPaint( - _i16.Paint? originalPaint, + _i17.Paint createWatercolorPaint( + _i17.Paint? originalPaint, double? blurSigma, ) => (super.noSuchMethod( @@ -1318,7 +1355,7 @@ class MockGraphicFactory extends _i1.Mock implements _i32.GraphicFactory { blurSigma, ], ), - returnValue: _i28.dummyValue<_i16.Paint>( + returnValue: _i29.dummyValue<_i17.Paint>( this, Invocation.method( #createWatercolorPaint, @@ -1328,20 +1365,20 @@ class MockGraphicFactory extends _i1.Mock implements _i32.GraphicFactory { ], ), ), - ) as _i16.Paint); + ) as _i17.Paint); @override - _i16.Paint copyPaint(_i16.Paint? original) => (super.noSuchMethod( + _i17.Paint copyPaint(_i17.Paint? original) => (super.noSuchMethod( Invocation.method( #copyPaint, [original], ), - returnValue: _i28.dummyValue<_i16.Paint>( + returnValue: _i29.dummyValue<_i17.Paint>( this, Invocation.method( #copyPaint, [original], ), ), - ) as _i16.Paint); + ) as _i17.Paint); } diff --git a/test/unit/tools/text_tool_test.mocks.dart b/test/unit/tools/text_tool_test.mocks.dart index 7d9297a5..3bfdf8e6 100644 --- a/test/unit/tools/text_tool_test.mocks.dart +++ b/test/unit/tools/text_tool_test.mocks.dart @@ -3,25 +3,27 @@ // Do not manually edit this file. // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'dart:async' as _i26; -import 'dart:typed_data' as _i24; -import 'dart:ui' as _i16; +import 'dart:async' as _i27; +import 'dart:typed_data' as _i25; +import 'dart:ui' as _i17; -import 'package:flutter/material.dart' as _i17; +import 'package:flutter/material.dart' as _i18; import 'package:mockito/mockito.dart' as _i1; -import 'package:mockito/src/dummies.dart' as _i25; +import 'package:mockito/src/dummies.dart' as _i26; import 'package:paintroid/core/commands/command_factory/command_factory.dart' - as _i22; + as _i23; import 'package:paintroid/core/commands/command_implementation/command.dart' as _i2; import 'package:paintroid/core/commands/command_implementation/graphic/clipboard_command.dart' as _i8; import 'package:paintroid/core/commands/command_implementation/graphic/color_changed_command.dart' - as _i14; + as _i15; import 'package:paintroid/core/commands/command_implementation/graphic/delete_region_command.dart' + as _i14; +import 'package:paintroid/core/commands/command_implementation/graphic/fill_command.dart' as _i13; import 'package:paintroid/core/commands/command_implementation/graphic/graphic_command.dart' - as _i20; + as _i21; import 'package:paintroid/core/commands/command_implementation/graphic/line_command.dart' as _i5; import 'package:paintroid/core/commands/command_implementation/graphic/path_command.dart' @@ -39,17 +41,17 @@ import 'package:paintroid/core/commands/command_implementation/graphic/spray_com import 'package:paintroid/core/commands/command_implementation/graphic/text_command.dart' as _i9; import 'package:paintroid/core/commands/command_manager/command_manager.dart' - as _i19; + as _i20; import 'package:paintroid/core/commands/graphic_factory/graphic_factory.dart' - as _i27; -import 'package:paintroid/core/commands/path_with_action_history.dart' as _i18; -import 'package:paintroid/core/enums/bounding_box_action.dart' as _i29; -import 'package:paintroid/core/enums/bounding_box_resize_action.dart' as _i30; -import 'package:paintroid/core/enums/shape_style.dart' as _i23; -import 'package:paintroid/core/tools/bounding_box.dart' as _i28; -import 'package:paintroid/core/tools/line_tool/vertex_stack.dart' as _i21; + as _i28; +import 'package:paintroid/core/commands/path_with_action_history.dart' as _i19; +import 'package:paintroid/core/enums/bounding_box_action.dart' as _i30; +import 'package:paintroid/core/enums/bounding_box_resize_action.dart' as _i31; +import 'package:paintroid/core/enums/shape_style.dart' as _i24; +import 'package:paintroid/core/tools/bounding_box.dart' as _i29; +import 'package:paintroid/core/tools/line_tool/vertex_stack.dart' as _i22; import 'package:paintroid/core/tools/tool_data.dart' as _i3; -import 'package:riverpod/src/internals.dart' as _i15; +import 'package:riverpod/src/internals.dart' as _i16; // ignore_for_file: type=lint // ignore_for_file: avoid_redundant_argument_values @@ -179,9 +181,8 @@ class _FakeSprayCommand_10 extends _i1.SmartFake implements _i12.SprayCommand { ); } -class _FakeDeleteRegionCommand_11 extends _i1.SmartFake - implements _i13.DeleteRegionCommand { - _FakeDeleteRegionCommand_11( +class _FakeFillCommand_11 extends _i1.SmartFake implements _i13.FillCommand { + _FakeFillCommand_11( Object parent, Invocation parentInvocation, ) : super( @@ -190,9 +191,9 @@ class _FakeDeleteRegionCommand_11 extends _i1.SmartFake ); } -class _FakeColorChangedCommand_12 extends _i1.SmartFake - implements _i14.ColorChangedCommand { - _FakeColorChangedCommand_12( +class _FakeDeleteRegionCommand_12 extends _i1.SmartFake + implements _i14.DeleteRegionCommand { + _FakeDeleteRegionCommand_12( Object parent, Invocation parentInvocation, ) : super( @@ -201,9 +202,9 @@ class _FakeColorChangedCommand_12 extends _i1.SmartFake ); } -class _FakeProviderContainer_13 extends _i1.SmartFake - implements _i15.ProviderContainer { - _FakeProviderContainer_13( +class _FakeColorChangedCommand_13 extends _i1.SmartFake + implements _i15.ColorChangedCommand { + _FakeColorChangedCommand_13( Object parent, Invocation parentInvocation, ) : super( @@ -212,9 +213,9 @@ class _FakeProviderContainer_13 extends _i1.SmartFake ); } -class _FakeKeepAliveLink_14 extends _i1.SmartFake - implements _i15.KeepAliveLink { - _FakeKeepAliveLink_14( +class _FakeProviderContainer_14 extends _i1.SmartFake + implements _i16.ProviderContainer { + _FakeProviderContainer_14( Object parent, Invocation parentInvocation, ) : super( @@ -223,9 +224,9 @@ class _FakeKeepAliveLink_14 extends _i1.SmartFake ); } -class _FakeProviderSubscription_15 extends _i1.SmartFake - implements _i15.ProviderSubscription { - _FakeProviderSubscription_15( +class _FakeKeepAliveLink_15 extends _i1.SmartFake + implements _i16.KeepAliveLink { + _FakeKeepAliveLink_15( Object parent, Invocation parentInvocation, ) : super( @@ -234,8 +235,9 @@ class _FakeProviderSubscription_15 extends _i1.SmartFake ); } -class _FakeRect_16 extends _i1.SmartFake implements _i16.Rect { - _FakeRect_16( +class _FakeProviderSubscription_16 extends _i1.SmartFake + implements _i16.ProviderSubscription { + _FakeProviderSubscription_16( Object parent, Invocation parentInvocation, ) : super( @@ -244,8 +246,8 @@ class _FakeRect_16 extends _i1.SmartFake implements _i16.Rect { ); } -class _FakeOffset_17 extends _i1.SmartFake implements _i16.Offset { - _FakeOffset_17( +class _FakeRect_17 extends _i1.SmartFake implements _i17.Rect { + _FakeRect_17( Object parent, Invocation parentInvocation, ) : super( @@ -254,8 +256,18 @@ class _FakeOffset_17 extends _i1.SmartFake implements _i16.Offset { ); } -class _FakeTextStyle_18 extends _i1.SmartFake implements _i17.TextStyle { - _FakeTextStyle_18( +class _FakeOffset_18 extends _i1.SmartFake implements _i17.Offset { + _FakeOffset_18( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeTextStyle_19 extends _i1.SmartFake implements _i18.TextStyle { + _FakeTextStyle_19( Object parent, Invocation parentInvocation, ) : super( @@ -265,13 +277,13 @@ class _FakeTextStyle_18 extends _i1.SmartFake implements _i17.TextStyle { @override String toString( - {_i17.DiagnosticLevel? minLevel = _i17.DiagnosticLevel.info}) => + {_i18.DiagnosticLevel? minLevel = _i18.DiagnosticLevel.info}) => super.toString(); } -class _FakePathWithActionHistory_19 extends _i1.SmartFake - implements _i18.PathWithActionHistory { - _FakePathWithActionHistory_19( +class _FakePathWithActionHistory_20 extends _i1.SmartFake + implements _i19.PathWithActionHistory { + _FakePathWithActionHistory_20( Object parent, Invocation parentInvocation, ) : super( @@ -280,9 +292,9 @@ class _FakePathWithActionHistory_19 extends _i1.SmartFake ); } -class _FakePictureRecorder_20 extends _i1.SmartFake - implements _i16.PictureRecorder { - _FakePictureRecorder_20( +class _FakePictureRecorder_21 extends _i1.SmartFake + implements _i17.PictureRecorder { + _FakePictureRecorder_21( Object parent, Invocation parentInvocation, ) : super( @@ -291,8 +303,8 @@ class _FakePictureRecorder_20 extends _i1.SmartFake ); } -class _FakeCanvas_21 extends _i1.SmartFake implements _i16.Canvas { - _FakeCanvas_21( +class _FakeCanvas_22 extends _i1.SmartFake implements _i17.Canvas { + _FakeCanvas_22( Object parent, Invocation parentInvocation, ) : super( @@ -304,7 +316,7 @@ class _FakeCanvas_21 extends _i1.SmartFake implements _i16.Canvas { /// A class which mocks [CommandManager]. /// /// See the documentation for Mockito's code generation for more information. -class MockCommandManager extends _i1.Mock implements _i19.CommandManager { +class MockCommandManager extends _i1.Mock implements _i20.CommandManager { MockCommandManager() { _i1.throwOnMissingStub(this); } @@ -322,7 +334,7 @@ class MockCommandManager extends _i1.Mock implements _i19.CommandManager { ) as List<_i2.Command>); @override - void addGraphicCommand(_i20.GraphicCommand? command) => super.noSuchMethod( + void addGraphicCommand(_i21.GraphicCommand? command) => super.noSuchMethod( Invocation.method( #addGraphicCommand, [command], @@ -340,7 +352,7 @@ class MockCommandManager extends _i1.Mock implements _i19.CommandManager { ); @override - void executeLastCommand(_i16.Canvas? canvas) => super.noSuchMethod( + void executeLastCommand(_i17.Canvas? canvas) => super.noSuchMethod( Invocation.method( #executeLastCommand, [canvas], @@ -349,7 +361,7 @@ class MockCommandManager extends _i1.Mock implements _i19.CommandManager { ); @override - void executeAllCommands(_i16.Canvas? canvas) => super.noSuchMethod( + void executeAllCommands(_i17.Canvas? canvas) => super.noSuchMethod( Invocation.method( #executeAllCommands, [canvas], @@ -388,7 +400,7 @@ class MockCommandManager extends _i1.Mock implements _i19.CommandManager { @override void drawLineToolGhostPaths( - _i16.Canvas? canvas, + _i17.Canvas? canvas, _i5.LineCommand? ingoingGhostPathCommand, _i5.LineCommand? outgoingGhostPathCommand, ) => @@ -406,8 +418,8 @@ class MockCommandManager extends _i1.Mock implements _i19.CommandManager { @override void drawLineToolVertices( - _i16.Canvas? canvas, - _i21.VertexStack? vertexStack, + _i17.Canvas? canvas, + _i22.VertexStack? vertexStack, ) => super.noSuchMethod( Invocation.method( @@ -445,7 +457,7 @@ class MockCommandManager extends _i1.Mock implements _i19.CommandManager { ); @override - _i3.ToolData getNextTool(_i19.ActionType? actionType) => (super.noSuchMethod( + _i3.ToolData getNextTool(_i20.ActionType? actionType) => (super.noSuchMethod( Invocation.method( #getNextTool, [actionType], @@ -472,15 +484,15 @@ class MockCommandManager extends _i1.Mock implements _i19.CommandManager { /// A class which mocks [CommandFactory]. /// /// See the documentation for Mockito's code generation for more information. -class MockCommandFactory extends _i1.Mock implements _i22.CommandFactory { +class MockCommandFactory extends _i1.Mock implements _i23.CommandFactory { MockCommandFactory() { _i1.throwOnMissingStub(this); } @override _i4.PathCommand createPathCommand( - _i18.PathWithActionHistory? path, - _i16.Paint? paint, { + _i19.PathWithActionHistory? path, + _i17.Paint? paint, { bool? isCursor = false, }) => (super.noSuchMethod( @@ -507,10 +519,10 @@ class MockCommandFactory extends _i1.Mock implements _i22.CommandFactory { @override _i5.LineCommand createLineCommand( - _i18.PathWithActionHistory? path, - _i16.Paint? paint, - _i16.Offset? startPoint, - _i16.Offset? endPoint, + _i19.PathWithActionHistory? path, + _i17.Paint? paint, + _i17.Offset? startPoint, + _i17.Offset? endPoint, ) => (super.noSuchMethod( Invocation.method( @@ -538,12 +550,12 @@ class MockCommandFactory extends _i1.Mock implements _i22.CommandFactory { @override _i6.SquareShapeCommand createSquareShapeCommand( - _i16.Paint? paint, - _i16.Offset? topLeft, - _i16.Offset? topRight, - _i16.Offset? bottomLeft, - _i16.Offset? bottomRight, - _i23.ShapeStyle? style, + _i17.Paint? paint, + _i17.Offset? topLeft, + _i17.Offset? topRight, + _i17.Offset? bottomLeft, + _i17.Offset? bottomRight, + _i24.ShapeStyle? style, ) => (super.noSuchMethod( Invocation.method( @@ -575,11 +587,11 @@ class MockCommandFactory extends _i1.Mock implements _i22.CommandFactory { @override _i7.EllipseShapeCommand createEllipseShapeCommand( - _i16.Paint? paint, + _i17.Paint? paint, double? radiusX, double? radiusY, - _i16.Offset? center, - _i23.ShapeStyle? style, + _i17.Offset? center, + _i24.ShapeStyle? style, double? angle, ) => (super.noSuchMethod( @@ -612,9 +624,9 @@ class MockCommandFactory extends _i1.Mock implements _i22.CommandFactory { @override _i8.ClipboardCommand createClipboardCommand( - _i16.Paint? paint, - _i24.Uint8List? imageData, - _i16.Offset? offset, + _i17.Paint? paint, + _i25.Uint8List? imageData, + _i17.Offset? offset, double? scale, double? rotation, ) => @@ -646,11 +658,11 @@ class MockCommandFactory extends _i1.Mock implements _i22.CommandFactory { @override _i9.TextCommand createTextCommand( - _i16.Offset? point, + _i17.Offset? point, String? text, - _i17.TextStyle? style, + _i18.TextStyle? style, double? fontSize, - _i16.Paint? paint, + _i17.Paint? paint, double? rotationAngle, { double? scaleX = 1.0, double? scaleY = 1.0, @@ -693,11 +705,11 @@ class MockCommandFactory extends _i1.Mock implements _i22.CommandFactory { @override _i10.StarShapeCommand createStarShapeCommand( - _i16.Paint? paint, + _i17.Paint? paint, int? numPoints, double? angle, - _i16.Offset? center, - _i23.ShapeStyle? style, + _i17.Offset? center, + _i24.ShapeStyle? style, double? radiusX, double? radiusY, ) => @@ -733,12 +745,12 @@ class MockCommandFactory extends _i1.Mock implements _i22.CommandFactory { @override _i11.HeartShapeCommand createHeartShapeCommand( - _i16.Paint? paint, + _i17.Paint? paint, double? width, double? height, double? angle, - _i16.Offset? center, - _i23.ShapeStyle? style, + _i17.Offset? center, + _i24.ShapeStyle? style, ) => (super.noSuchMethod( Invocation.method( @@ -770,8 +782,8 @@ class MockCommandFactory extends _i1.Mock implements _i22.CommandFactory { @override _i12.SprayCommand createSprayCommand( - List<_i16.Offset>? points, - _i16.Paint? paint, + List<_i17.Offset>? points, + _i17.Paint? paint, ) => (super.noSuchMethod( Invocation.method( @@ -794,26 +806,51 @@ class MockCommandFactory extends _i1.Mock implements _i22.CommandFactory { ) as _i12.SprayCommand); @override - _i13.DeleteRegionCommand createDeleteRegionCommand(_i16.Rect? region) => + _i13.FillCommand createFillCommand( + List<_i17.Offset>? points, + _i17.Paint? paint, + ) => + (super.noSuchMethod( + Invocation.method( + #createFillCommand, + [ + points, + paint, + ], + ), + returnValue: _FakeFillCommand_11( + this, + Invocation.method( + #createFillCommand, + [ + points, + paint, + ], + ), + ), + ) as _i13.FillCommand); + + @override + _i14.DeleteRegionCommand createDeleteRegionCommand(_i17.Rect? region) => (super.noSuchMethod( Invocation.method( #createDeleteRegionCommand, [region], ), - returnValue: _FakeDeleteRegionCommand_11( + returnValue: _FakeDeleteRegionCommand_12( this, Invocation.method( #createDeleteRegionCommand, [region], ), ), - ) as _i13.DeleteRegionCommand); + ) as _i14.DeleteRegionCommand); @override - _i14.ColorChangedCommand createColorChangedCommand( - _i16.Color? oldColor, - _i16.Color? newColor, - _i16.Paint? paint, + _i15.ColorChangedCommand createColorChangedCommand( + _i17.Color? oldColor, + _i17.Color? newColor, + _i17.Paint? paint, ) => (super.noSuchMethod( Invocation.method( @@ -824,7 +861,7 @@ class MockCommandFactory extends _i1.Mock implements _i22.CommandFactory { paint, ], ), - returnValue: _FakeColorChangedCommand_12( + returnValue: _FakeColorChangedCommand_13( this, Invocation.method( #createColorChangedCommand, @@ -835,34 +872,34 @@ class MockCommandFactory extends _i1.Mock implements _i22.CommandFactory { ], ), ), - ) as _i14.ColorChangedCommand); + ) as _i15.ColorChangedCommand); } /// A class which mocks [Ref]. /// /// See the documentation for Mockito's code generation for more information. class MockRef extends _i1.Mock - implements _i15.Ref { + implements _i16.Ref { MockRef() { _i1.throwOnMissingStub(this); } @override - _i15.ProviderContainer get container => (super.noSuchMethod( + _i16.ProviderContainer get container => (super.noSuchMethod( Invocation.getter(#container), - returnValue: _FakeProviderContainer_13( + returnValue: _FakeProviderContainer_14( this, Invocation.getter(#container), ), - ) as _i15.ProviderContainer); + ) as _i16.ProviderContainer); @override - T refresh(_i15.Refreshable? provider) => (super.noSuchMethod( + T refresh(_i16.Refreshable? provider) => (super.noSuchMethod( Invocation.method( #refresh, [provider], ), - returnValue: _i25.dummyValue( + returnValue: _i26.dummyValue( this, Invocation.method( #refresh, @@ -872,7 +909,7 @@ class MockRef extends _i1.Mock ) as T); @override - void invalidate(_i15.ProviderOrFamily? provider) => super.noSuchMethod( + void invalidate(_i16.ProviderOrFamily? provider) => super.noSuchMethod( Invocation.method( #invalidate, [provider], @@ -964,12 +1001,12 @@ class MockRef extends _i1.Mock ); @override - T read(_i15.ProviderListenable? provider) => (super.noSuchMethod( + T read(_i16.ProviderListenable? provider) => (super.noSuchMethod( Invocation.method( #read, [provider], ), - returnValue: _i25.dummyValue( + returnValue: _i26.dummyValue( this, Invocation.method( #read, @@ -979,7 +1016,7 @@ class MockRef extends _i1.Mock ) as T); @override - bool exists(_i15.ProviderBase? provider) => (super.noSuchMethod( + bool exists(_i16.ProviderBase? provider) => (super.noSuchMethod( Invocation.method( #exists, [provider], @@ -988,12 +1025,12 @@ class MockRef extends _i1.Mock ) as bool); @override - T watch(_i15.ProviderListenable? provider) => (super.noSuchMethod( + T watch(_i16.ProviderListenable? provider) => (super.noSuchMethod( Invocation.method( #watch, [provider], ), - returnValue: _i25.dummyValue( + returnValue: _i26.dummyValue( this, Invocation.method( #watch, @@ -1003,23 +1040,23 @@ class MockRef extends _i1.Mock ) as T); @override - _i15.KeepAliveLink keepAlive() => (super.noSuchMethod( + _i16.KeepAliveLink keepAlive() => (super.noSuchMethod( Invocation.method( #keepAlive, [], ), - returnValue: _FakeKeepAliveLink_14( + returnValue: _FakeKeepAliveLink_15( this, Invocation.method( #keepAlive, [], ), ), - ) as _i15.KeepAliveLink); + ) as _i16.KeepAliveLink); @override - _i15.ProviderSubscription listen( - _i15.ProviderListenable? provider, + _i16.ProviderSubscription listen( + _i16.ProviderListenable? provider, void Function( T?, T, @@ -1042,7 +1079,7 @@ class MockRef extends _i1.Mock #fireImmediately: fireImmediately, }, ), - returnValue: _FakeProviderSubscription_15( + returnValue: _FakeProviderSubscription_16( this, Invocation.method( #listen, @@ -1056,13 +1093,13 @@ class MockRef extends _i1.Mock }, ), ), - ) as _i15.ProviderSubscription); + ) as _i16.ProviderSubscription); } /// A class which mocks [Canvas]. /// /// See the documentation for Mockito's code generation for more information. -class MockCanvas extends _i1.Mock implements _i16.Canvas { +class MockCanvas extends _i1.Mock implements _i17.Canvas { MockCanvas() { _i1.throwOnMissingStub(this); } @@ -1078,8 +1115,8 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void saveLayer( - _i16.Rect? bounds, - _i16.Paint? paint, + _i17.Rect? bounds, + _i17.Paint? paint, ) => super.noSuchMethod( Invocation.method( @@ -1177,7 +1214,7 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { ); @override - void transform(_i24.Float64List? matrix4) => super.noSuchMethod( + void transform(_i25.Float64List? matrix4) => super.noSuchMethod( Invocation.method( #transform, [matrix4], @@ -1186,18 +1223,18 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { ); @override - _i24.Float64List getTransform() => (super.noSuchMethod( + _i25.Float64List getTransform() => (super.noSuchMethod( Invocation.method( #getTransform, [], ), - returnValue: _i24.Float64List(0), - ) as _i24.Float64List); + returnValue: _i25.Float64List(0), + ) as _i25.Float64List); @override void clipRect( - _i16.Rect? rect, { - _i16.ClipOp? clipOp = _i16.ClipOp.intersect, + _i17.Rect? rect, { + _i17.ClipOp? clipOp = _i17.ClipOp.intersect, bool? doAntiAlias = true, }) => super.noSuchMethod( @@ -1214,7 +1251,7 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void clipRRect( - _i16.RRect? rrect, { + _i17.RRect? rrect, { bool? doAntiAlias = true, }) => super.noSuchMethod( @@ -1228,7 +1265,7 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void clipRSuperellipse( - _i16.RSuperellipse? rsuperellipse, { + _i17.RSuperellipse? rsuperellipse, { bool? doAntiAlias = true, }) => super.noSuchMethod( @@ -1242,7 +1279,7 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void clipPath( - _i16.Path? path, { + _i17.Path? path, { bool? doAntiAlias = true, }) => super.noSuchMethod( @@ -1255,39 +1292,39 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { ); @override - _i16.Rect getLocalClipBounds() => (super.noSuchMethod( + _i17.Rect getLocalClipBounds() => (super.noSuchMethod( Invocation.method( #getLocalClipBounds, [], ), - returnValue: _FakeRect_16( + returnValue: _FakeRect_17( this, Invocation.method( #getLocalClipBounds, [], ), ), - ) as _i16.Rect); + ) as _i17.Rect); @override - _i16.Rect getDestinationClipBounds() => (super.noSuchMethod( + _i17.Rect getDestinationClipBounds() => (super.noSuchMethod( Invocation.method( #getDestinationClipBounds, [], ), - returnValue: _FakeRect_16( + returnValue: _FakeRect_17( this, Invocation.method( #getDestinationClipBounds, [], ), ), - ) as _i16.Rect); + ) as _i17.Rect); @override void drawColor( - _i16.Color? color, - _i16.BlendMode? blendMode, + _i17.Color? color, + _i17.BlendMode? blendMode, ) => super.noSuchMethod( Invocation.method( @@ -1302,9 +1339,9 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void drawLine( - _i16.Offset? p1, - _i16.Offset? p2, - _i16.Paint? paint, + _i17.Offset? p1, + _i17.Offset? p2, + _i17.Paint? paint, ) => super.noSuchMethod( Invocation.method( @@ -1319,7 +1356,7 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { ); @override - void drawPaint(_i16.Paint? paint) => super.noSuchMethod( + void drawPaint(_i17.Paint? paint) => super.noSuchMethod( Invocation.method( #drawPaint, [paint], @@ -1329,8 +1366,8 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void drawRect( - _i16.Rect? rect, - _i16.Paint? paint, + _i17.Rect? rect, + _i17.Paint? paint, ) => super.noSuchMethod( Invocation.method( @@ -1345,8 +1382,8 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void drawRRect( - _i16.RRect? rrect, - _i16.Paint? paint, + _i17.RRect? rrect, + _i17.Paint? paint, ) => super.noSuchMethod( Invocation.method( @@ -1361,9 +1398,9 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void drawDRRect( - _i16.RRect? outer, - _i16.RRect? inner, - _i16.Paint? paint, + _i17.RRect? outer, + _i17.RRect? inner, + _i17.Paint? paint, ) => super.noSuchMethod( Invocation.method( @@ -1379,8 +1416,8 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void drawRSuperellipse( - _i16.RSuperellipse? rsuperellipse, - _i16.Paint? paint, + _i17.RSuperellipse? rsuperellipse, + _i17.Paint? paint, ) => super.noSuchMethod( Invocation.method( @@ -1395,8 +1432,8 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void drawOval( - _i16.Rect? rect, - _i16.Paint? paint, + _i17.Rect? rect, + _i17.Paint? paint, ) => super.noSuchMethod( Invocation.method( @@ -1411,9 +1448,9 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void drawCircle( - _i16.Offset? c, + _i17.Offset? c, double? radius, - _i16.Paint? paint, + _i17.Paint? paint, ) => super.noSuchMethod( Invocation.method( @@ -1429,11 +1466,11 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void drawArc( - _i16.Rect? rect, + _i17.Rect? rect, double? startAngle, double? sweepAngle, bool? useCenter, - _i16.Paint? paint, + _i17.Paint? paint, ) => super.noSuchMethod( Invocation.method( @@ -1451,8 +1488,8 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void drawPath( - _i16.Path? path, - _i16.Paint? paint, + _i17.Path? path, + _i17.Paint? paint, ) => super.noSuchMethod( Invocation.method( @@ -1467,9 +1504,9 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void drawImage( - _i16.Image? image, - _i16.Offset? offset, - _i16.Paint? paint, + _i17.Image? image, + _i17.Offset? offset, + _i17.Paint? paint, ) => super.noSuchMethod( Invocation.method( @@ -1485,10 +1522,10 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void drawImageRect( - _i16.Image? image, - _i16.Rect? src, - _i16.Rect? dst, - _i16.Paint? paint, + _i17.Image? image, + _i17.Rect? src, + _i17.Rect? dst, + _i17.Paint? paint, ) => super.noSuchMethod( Invocation.method( @@ -1505,10 +1542,10 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void drawImageNine( - _i16.Image? image, - _i16.Rect? center, - _i16.Rect? dst, - _i16.Paint? paint, + _i17.Image? image, + _i17.Rect? center, + _i17.Rect? dst, + _i17.Paint? paint, ) => super.noSuchMethod( Invocation.method( @@ -1524,7 +1561,7 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { ); @override - void drawPicture(_i16.Picture? picture) => super.noSuchMethod( + void drawPicture(_i17.Picture? picture) => super.noSuchMethod( Invocation.method( #drawPicture, [picture], @@ -1534,8 +1571,8 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void drawParagraph( - _i16.Paragraph? paragraph, - _i16.Offset? offset, + _i17.Paragraph? paragraph, + _i17.Offset? offset, ) => super.noSuchMethod( Invocation.method( @@ -1550,9 +1587,9 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void drawPoints( - _i16.PointMode? pointMode, - List<_i16.Offset>? points, - _i16.Paint? paint, + _i17.PointMode? pointMode, + List<_i17.Offset>? points, + _i17.Paint? paint, ) => super.noSuchMethod( Invocation.method( @@ -1568,9 +1605,9 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void drawRawPoints( - _i16.PointMode? pointMode, - _i24.Float32List? points, - _i16.Paint? paint, + _i17.PointMode? pointMode, + _i25.Float32List? points, + _i17.Paint? paint, ) => super.noSuchMethod( Invocation.method( @@ -1586,9 +1623,9 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void drawVertices( - _i16.Vertices? vertices, - _i16.BlendMode? blendMode, - _i16.Paint? paint, + _i17.Vertices? vertices, + _i17.BlendMode? blendMode, + _i17.Paint? paint, ) => super.noSuchMethod( Invocation.method( @@ -1604,13 +1641,13 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void drawAtlas( - _i16.Image? atlas, - List<_i16.RSTransform>? transforms, - List<_i16.Rect>? rects, - List<_i16.Color>? colors, - _i16.BlendMode? blendMode, - _i16.Rect? cullRect, - _i16.Paint? paint, + _i17.Image? atlas, + List<_i17.RSTransform>? transforms, + List<_i17.Rect>? rects, + List<_i17.Color>? colors, + _i17.BlendMode? blendMode, + _i17.Rect? cullRect, + _i17.Paint? paint, ) => super.noSuchMethod( Invocation.method( @@ -1630,13 +1667,13 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void drawRawAtlas( - _i16.Image? atlas, - _i24.Float32List? rstTransforms, - _i24.Float32List? rects, - _i24.Int32List? colors, - _i16.BlendMode? blendMode, - _i16.Rect? cullRect, - _i16.Paint? paint, + _i17.Image? atlas, + _i25.Float32List? rstTransforms, + _i25.Float32List? rects, + _i25.Int32List? colors, + _i17.BlendMode? blendMode, + _i17.Rect? cullRect, + _i17.Paint? paint, ) => super.noSuchMethod( Invocation.method( @@ -1656,8 +1693,8 @@ class MockCanvas extends _i1.Mock implements _i16.Canvas { @override void drawShadow( - _i16.Path? path, - _i16.Color? color, + _i17.Path? path, + _i17.Color? color, double? elevation, bool? transparentOccluder, ) => @@ -1684,16 +1721,16 @@ class MockTextCommand extends _i1.Mock implements _i9.TextCommand { } @override - _i16.Offset get point => (super.noSuchMethod( + _i17.Offset get point => (super.noSuchMethod( Invocation.getter(#point), - returnValue: _FakeOffset_17( + returnValue: _FakeOffset_18( this, Invocation.getter(#point), ), - ) as _i16.Offset); + ) as _i17.Offset); @override - set point(_i16.Offset? _point) => super.noSuchMethod( + set point(_i17.Offset? _point) => super.noSuchMethod( Invocation.setter( #point, _point, @@ -1702,18 +1739,18 @@ class MockTextCommand extends _i1.Mock implements _i9.TextCommand { ); @override - _i17.TextStyle get style => (super.noSuchMethod( + _i18.TextStyle get style => (super.noSuchMethod( Invocation.getter(#style), - returnValue: _FakeTextStyle_18( + returnValue: _FakeTextStyle_19( this, Invocation.getter(#style), ), - ) as _i17.TextStyle); + ) as _i18.TextStyle); @override String get text => (super.noSuchMethod( Invocation.getter(#text), - returnValue: _i25.dummyValue( + returnValue: _i26.dummyValue( this, Invocation.getter(#text), ), @@ -1734,7 +1771,7 @@ class MockTextCommand extends _i1.Mock implements _i9.TextCommand { @override String get type => (super.noSuchMethod( Invocation.getter(#type), - returnValue: _i25.dummyValue( + returnValue: _i26.dummyValue( this, Invocation.getter(#type), ), @@ -1771,16 +1808,16 @@ class MockTextCommand extends _i1.Mock implements _i9.TextCommand { ) as bool); @override - _i16.Paint get paint => (super.noSuchMethod( + _i17.Paint get paint => (super.noSuchMethod( Invocation.getter(#paint), - returnValue: _i25.dummyValue<_i16.Paint>( + returnValue: _i26.dummyValue<_i17.Paint>( this, Invocation.getter(#paint), ), - ) as _i16.Paint); + ) as _i17.Paint); @override - void call(_i16.Canvas? canvas) => super.noSuchMethod( + void call(_i17.Canvas? canvas) => super.noSuchMethod( Invocation.method( #call, [canvas], @@ -1798,89 +1835,89 @@ class MockTextCommand extends _i1.Mock implements _i9.TextCommand { ) as Map); @override - _i26.Future prepareForRuntime() => (super.noSuchMethod( + _i27.Future prepareForRuntime() => (super.noSuchMethod( Invocation.method( #prepareForRuntime, [], ), - returnValue: _i26.Future.value(), - returnValueForMissingStub: _i26.Future.value(), - ) as _i26.Future); + returnValue: _i27.Future.value(), + returnValueForMissingStub: _i27.Future.value(), + ) as _i27.Future); } /// A class which mocks [GraphicFactory]. /// /// See the documentation for Mockito's code generation for more information. -class MockGraphicFactory extends _i1.Mock implements _i27.GraphicFactory { +class MockGraphicFactory extends _i1.Mock implements _i28.GraphicFactory { MockGraphicFactory() { _i1.throwOnMissingStub(this); } @override - _i16.Paint createPaint() => (super.noSuchMethod( + _i17.Paint createPaint() => (super.noSuchMethod( Invocation.method( #createPaint, [], ), - returnValue: _i25.dummyValue<_i16.Paint>( + returnValue: _i26.dummyValue<_i17.Paint>( this, Invocation.method( #createPaint, [], ), ), - ) as _i16.Paint); + ) as _i17.Paint); @override - _i18.PathWithActionHistory createPathWithActionHistory() => + _i19.PathWithActionHistory createPathWithActionHistory() => (super.noSuchMethod( Invocation.method( #createPathWithActionHistory, [], ), - returnValue: _FakePathWithActionHistory_19( + returnValue: _FakePathWithActionHistory_20( this, Invocation.method( #createPathWithActionHistory, [], ), ), - ) as _i18.PathWithActionHistory); + ) as _i19.PathWithActionHistory); @override - _i16.PictureRecorder createPictureRecorder() => (super.noSuchMethod( + _i17.PictureRecorder createPictureRecorder() => (super.noSuchMethod( Invocation.method( #createPictureRecorder, [], ), - returnValue: _FakePictureRecorder_20( + returnValue: _FakePictureRecorder_21( this, Invocation.method( #createPictureRecorder, [], ), ), - ) as _i16.PictureRecorder); + ) as _i17.PictureRecorder); @override - _i16.Canvas createCanvasWithRecorder(_i16.PictureRecorder? recorder) => + _i17.Canvas createCanvasWithRecorder(_i17.PictureRecorder? recorder) => (super.noSuchMethod( Invocation.method( #createCanvasWithRecorder, [recorder], ), - returnValue: _FakeCanvas_21( + returnValue: _FakeCanvas_22( this, Invocation.method( #createCanvasWithRecorder, [recorder], ), ), - ) as _i16.Canvas); + ) as _i17.Canvas); @override - _i16.Paint createWatercolorPaint( - _i16.Paint? originalPaint, + _i17.Paint createWatercolorPaint( + _i17.Paint? originalPaint, double? blurSigma, ) => (super.noSuchMethod( @@ -1891,7 +1928,7 @@ class MockGraphicFactory extends _i1.Mock implements _i27.GraphicFactory { blurSigma, ], ), - returnValue: _i25.dummyValue<_i16.Paint>( + returnValue: _i26.dummyValue<_i17.Paint>( this, Invocation.method( #createWatercolorPaint, @@ -1901,43 +1938,43 @@ class MockGraphicFactory extends _i1.Mock implements _i27.GraphicFactory { ], ), ), - ) as _i16.Paint); + ) as _i17.Paint); @override - _i16.Paint copyPaint(_i16.Paint? original) => (super.noSuchMethod( + _i17.Paint copyPaint(_i17.Paint? original) => (super.noSuchMethod( Invocation.method( #copyPaint, [original], ), - returnValue: _i25.dummyValue<_i16.Paint>( + returnValue: _i26.dummyValue<_i17.Paint>( this, Invocation.method( #copyPaint, [original], ), ), - ) as _i16.Paint); + ) as _i17.Paint); } /// A class which mocks [BoundingBox]. /// /// See the documentation for Mockito's code generation for more information. -class MockBoundingBox extends _i1.Mock implements _i28.BoundingBox { +class MockBoundingBox extends _i1.Mock implements _i29.BoundingBox { MockBoundingBox() { _i1.throwOnMissingStub(this); } @override - _i16.Offset get center => (super.noSuchMethod( + _i17.Offset get center => (super.noSuchMethod( Invocation.getter(#center), - returnValue: _FakeOffset_17( + returnValue: _FakeOffset_18( this, Invocation.getter(#center), ), - ) as _i16.Offset); + ) as _i17.Offset); @override - set center(_i16.Offset? _center) => super.noSuchMethod( + set center(_i17.Offset? _center) => super.noSuchMethod( Invocation.setter( #center, _center, @@ -1991,13 +2028,13 @@ class MockBoundingBox extends _i1.Mock implements _i28.BoundingBox { ); @override - _i29.BoundingBoxAction get currentAction => (super.noSuchMethod( + _i30.BoundingBoxAction get currentAction => (super.noSuchMethod( Invocation.getter(#currentAction), - returnValue: _i29.BoundingBoxAction.none, - ) as _i29.BoundingBoxAction); + returnValue: _i30.BoundingBoxAction.none, + ) as _i30.BoundingBoxAction); @override - set currentAction(_i29.BoundingBoxAction? _currentAction) => + set currentAction(_i30.BoundingBoxAction? _currentAction) => super.noSuchMethod( Invocation.setter( #currentAction, @@ -2007,15 +2044,15 @@ class MockBoundingBox extends _i1.Mock implements _i28.BoundingBox { ); @override - _i30.BoundingBoxResizeAction get currentBoundingBoxResizeAction => + _i31.BoundingBoxResizeAction get currentBoundingBoxResizeAction => (super.noSuchMethod( Invocation.getter(#currentBoundingBoxResizeAction), - returnValue: _i30.BoundingBoxResizeAction.none, - ) as _i30.BoundingBoxResizeAction); + returnValue: _i31.BoundingBoxResizeAction.none, + ) as _i31.BoundingBoxResizeAction); @override set currentBoundingBoxResizeAction( - _i30.BoundingBoxResizeAction? _currentBoundingBoxResizeAction) => + _i31.BoundingBoxResizeAction? _currentBoundingBoxResizeAction) => super.noSuchMethod( Invocation.setter( #currentBoundingBoxResizeAction, @@ -2025,7 +2062,7 @@ class MockBoundingBox extends _i1.Mock implements _i28.BoundingBox { ); @override - set lastDragGlobalPosition(_i16.Offset? _lastDragGlobalPosition) => + set lastDragGlobalPosition(_i17.Offset? _lastDragGlobalPosition) => super.noSuchMethod( Invocation.setter( #lastDragGlobalPosition, @@ -2035,7 +2072,7 @@ class MockBoundingBox extends _i1.Mock implements _i28.BoundingBox { ); @override - set dragStartLocalPosition(_i16.Offset? _dragStartLocalPosition) => + set dragStartLocalPosition(_i17.Offset? _dragStartLocalPosition) => super.noSuchMethod( Invocation.setter( #dragStartLocalPosition, @@ -2061,16 +2098,16 @@ class MockBoundingBox extends _i1.Mock implements _i28.BoundingBox { ); @override - _i16.Paint get boxPaint => (super.noSuchMethod( + _i17.Paint get boxPaint => (super.noSuchMethod( Invocation.getter(#boxPaint), - returnValue: _i25.dummyValue<_i16.Paint>( + returnValue: _i26.dummyValue<_i17.Paint>( this, Invocation.getter(#boxPaint), ), - ) as _i16.Paint); + ) as _i17.Paint); @override - set boxPaint(_i16.Paint? _boxPaint) => super.noSuchMethod( + set boxPaint(_i17.Paint? _boxPaint) => super.noSuchMethod( Invocation.setter( #boxPaint, _boxPaint, @@ -2079,16 +2116,16 @@ class MockBoundingBox extends _i1.Mock implements _i28.BoundingBox { ); @override - _i16.Paint get handlePaint => (super.noSuchMethod( + _i17.Paint get handlePaint => (super.noSuchMethod( Invocation.getter(#handlePaint), - returnValue: _i25.dummyValue<_i16.Paint>( + returnValue: _i26.dummyValue<_i17.Paint>( this, Invocation.getter(#handlePaint), ), - ) as _i16.Paint); + ) as _i17.Paint); @override - set handlePaint(_i16.Paint? _handlePaint) => super.noSuchMethod( + set handlePaint(_i17.Paint? _handlePaint) => super.noSuchMethod( Invocation.setter( #handlePaint, _handlePaint, @@ -2097,16 +2134,16 @@ class MockBoundingBox extends _i1.Mock implements _i28.BoundingBox { ); @override - _i16.Paint get rotationHandlePaint => (super.noSuchMethod( + _i17.Paint get rotationHandlePaint => (super.noSuchMethod( Invocation.getter(#rotationHandlePaint), - returnValue: _i25.dummyValue<_i16.Paint>( + returnValue: _i26.dummyValue<_i17.Paint>( this, Invocation.getter(#rotationHandlePaint), ), - ) as _i16.Paint); + ) as _i17.Paint); @override - set rotationHandlePaint(_i16.Paint? _rotationHandlePaint) => + set rotationHandlePaint(_i17.Paint? _rotationHandlePaint) => super.noSuchMethod( Invocation.setter( #rotationHandlePaint, @@ -2131,25 +2168,25 @@ class MockBoundingBox extends _i1.Mock implements _i28.BoundingBox { ); @override - _i16.Rect get rect => (super.noSuchMethod( + _i17.Rect get rect => (super.noSuchMethod( Invocation.getter(#rect), - returnValue: _FakeRect_16( + returnValue: _FakeRect_17( this, Invocation.getter(#rect), ), - ) as _i16.Rect); + ) as _i17.Rect); @override - List<_i16.Offset> getCorners() => (super.noSuchMethod( + List<_i17.Offset> getCorners() => (super.noSuchMethod( Invocation.method( #getCorners, [], ), - returnValue: <_i16.Offset>[], - ) as List<_i16.Offset>); + returnValue: <_i17.Offset>[], + ) as List<_i17.Offset>); @override - void determineAction(_i16.Offset? globalPoint) => super.noSuchMethod( + void determineAction(_i17.Offset? globalPoint) => super.noSuchMethod( Invocation.method( #determineAction, [globalPoint], @@ -2158,7 +2195,7 @@ class MockBoundingBox extends _i1.Mock implements _i28.BoundingBox { ); @override - void updateDrag(_i16.Offset? globalPoint) => super.noSuchMethod( + void updateDrag(_i17.Offset? globalPoint) => super.noSuchMethod( Invocation.method( #updateDrag, [globalPoint], @@ -2176,7 +2213,7 @@ class MockBoundingBox extends _i1.Mock implements _i28.BoundingBox { ); @override - void drawGuides(_i16.Canvas? canvas) => super.noSuchMethod( + void drawGuides(_i17.Canvas? canvas) => super.noSuchMethod( Invocation.method( #drawGuides, [canvas],