From 5b486f6b689fdd79fbf85299c25c7b78a4f99fd4 Mon Sep 17 00:00:00 2001 From: otsmr Date: Fri, 17 Oct 2025 23:49:48 +0200 Subject: [PATCH] fix #267 --- CHANGELOG.md | 2 +- .../views/camera/image_editor/data/layer.dart | 9 ++++- .../image_editor/layers/draw_layer.dart | 34 ++++++++++++++++++- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 318f153..5121631 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,11 +2,11 @@ ## 0.0.61 +- Improving image editor when changing colors - Fixing message decryption error - Fixing issue with user deletion - Fixing issue with flame counter sync - Dependency and Flutter upgrade -- Developer Settings ## 0.0.60 diff --git a/lib/src/views/camera/image_editor/data/layer.dart b/lib/src/views/camera/image_editor/data/layer.dart index c2a8e42..707e348 100755 --- a/lib/src/views/camera/image_editor/data/layer.dart +++ b/lib/src/views/camera/image_editor/data/layer.dart @@ -77,5 +77,12 @@ class DrawLayerData extends Layer { super.hasCustomActionButtons = true, super.isEditing = true, }); - final control = HandSignatureControl(); + final control = HandSignatureControl( + // ignore: prefer_const_constructors + setup: () => SignaturePathSetup( + args: { + 'color': null, + }, + ), + ); } diff --git a/lib/src/views/camera/image_editor/layers/draw_layer.dart b/lib/src/views/camera/image_editor/layers/draw_layer.dart index bc2ccd9..a04f753 100644 --- a/lib/src/views/camera/image_editor/layers/draw_layer.dart +++ b/lib/src/views/camera/image_editor/layers/draw_layer.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:hand_signature/signature.dart'; +// ignore: implementation_imports +import 'package:hand_signature/src/utils.dart'; import 'package:screenshot/screenshot.dart'; import 'package:twonly/src/utils/misc.dart'; import 'package:twonly/src/views/camera/image_editor/action_button.dart'; @@ -91,7 +93,7 @@ class _DrawLayerState extends State { controller: screenshotController, child: HandSignature( control: widget.layerData.control, - drawer: LineSignatureDrawer(color: currentColor, width: 7), + drawer: CustomSignatureDrawer(color: currentColor, width: 7), ), ), ), @@ -242,3 +244,33 @@ class MagnifyingGlass extends StatelessWidget { ); } } + +class CustomSignatureDrawer extends HandSignatureDrawer { + const CustomSignatureDrawer({ + this.width = 1.0, + this.color = Colors.black, + }); + final Color color; + final double width; + + @override + void paint(Canvas canvas, Size size, List paths) { + for (final path in paths) { + var lineColor = color; + if (path.setup.args!['color'] != null) { + lineColor = path.setup.args!['color'] as Color; + } else { + path.setup.args!['color'] = color; + } + final paint = Paint() + ..color = lineColor + ..style = PaintingStyle.stroke + ..strokeCap = StrokeCap.round + ..strokeJoin = StrokeJoin.round + ..strokeWidth = width; + if (path.isFilled) { + canvas.drawPath(PathUtil.toLinePath(path.lines), paint); + } + } + } +}