LCOV - code coverage report
Current view: top level - path_parser/model/commands - smooth_quadratic_bezier_curve_to_command.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 35 35 100.0 %
Date: 2022-02-22 16:00:34 Functions: 0 0 -

          Line data    Source code
       1             : import 'package:mrx_icon_font_gen/parser/path/model/arguments/coordinate_pair.dart';
       2             : import 'package:mrx_icon_font_gen/parser/path/model/arguments/coordinate_pair_sequence.dart';
       3             : import 'package:mrx_icon_font_gen/parser/path/model/command.dart';
       4             : import 'package:vector_math/vector_math_64.dart';
       5             : 
       6             : class SmoothQuadraticBezierCurveToCommand extends Command {
       7           2 :   @override
       8             :   String get absoluteCommandName => 'T';
       9             : 
      10           2 :   @override
      11             :   String get relativeCommandName => 't';
      12             : 
      13           2 :   SmoothQuadraticBezierCurveToCommand({
      14             :     String? command,
      15             :     bool? isRelative,
      16             :     required CoordinatePairSequence commandArguments,
      17           2 :   }) : super(
      18             :           command: command,
      19             :           isRelative: isRelative,
      20             :           commandArguments: commandArguments,
      21             :         );
      22             : 
      23           1 :   @override
      24             :   List<Command> applyTransformation(
      25             :     Matrix3 transform,
      26             :     CoordinatePair startPoint,
      27             :   ) {
      28           1 :     final Matrix3 transformationMatrix = isAbsolute
      29             :         ? transform
      30           3 :         : (transform.clone()..setColumn(2, Vector3(0.0, 0.0, 1.0)));
      31             :     final CoordinatePairSequence transformedCommandArguments =
      32           1 :         CoordinatePairSequence(
      33           1 :       coordinatePairs: (commandArguments as CoordinatePairSequence)
      34           1 :           .coordinatePairs
      35           2 :           .map((cp) {
      36             :         final Vector3 transformedCoordinates =
      37           4 :             transformationMatrix.transform(Vector3(cp.x, cp.y, 1.0));
      38           1 :         return CoordinatePair(
      39           1 :           x: transformedCoordinates.x,
      40           1 :           y: transformedCoordinates.y,
      41             :         );
      42           1 :       }).toList(),
      43             :     );
      44           1 :     return [
      45           1 :       SmoothQuadraticBezierCurveToCommand(
      46           1 :         command: command,
      47             :         commandArguments: transformedCommandArguments,
      48             :       ),
      49             :     ];
      50             :   }
      51             : 
      52           1 :   @override
      53             :   CoordinatePair getLastPoint(CoordinatePair startPoint) {
      54           1 :     if (isAbsolute) {
      55           3 :       return (commandArguments as CoordinatePairSequence).coordinatePairs.last;
      56             :     }
      57           1 :     double x = startPoint.x;
      58           1 :     double y = startPoint.y;
      59             :     for (final CoordinatePair cp
      60           3 :         in (commandArguments as CoordinatePairSequence).coordinatePairs) {
      61           2 :       x += cp.x;
      62           2 :       y += cp.y;
      63             :     }
      64           1 :     return CoordinatePair(
      65             :       x: x,
      66             :       y: y,
      67             :     );
      68             :   }
      69             : 
      70           2 :   @override
      71             :   bool operator ==(Object other) {
      72           2 :     if (other is! SmoothQuadraticBezierCurveToCommand) {
      73             :       return false;
      74             :     }
      75           6 :     return command == other.command &&
      76           4 :         commandArguments as CoordinatePairSequence ==
      77           2 :             other.commandArguments as CoordinatePairSequence;
      78             :   }
      79             : 
      80           1 :   @override
      81           3 :   int get hashCode => Object.hash(command, commandArguments);
      82             : }

Generated by: LCOV version 1.15