|
@@ -4,7 +4,10 @@ import 'package:fis_measure/interfaces/date_types/point.dart';
|
|
|
import 'package:fis_measure/interfaces/process/items/item.dart';
|
|
|
import 'package:fis_measure/interfaces/process/items/item_feature.dart';
|
|
|
import 'package:fis_measure/interfaces/process/visuals/visual_area.dart';
|
|
|
+import 'package:fis_measure/utils/canvas.dart';
|
|
|
+import 'package:fis_measure/values/colors.dart';
|
|
|
import 'package:flutter/foundation.dart';
|
|
|
+import 'package:flutter/painting.dart';
|
|
|
|
|
|
abstract class MeasureItemFeature implements IMeasureItemFeature {
|
|
|
late IMeasureItem _refItem;
|
|
@@ -56,4 +59,33 @@ abstract class MeasureItemFeature implements IMeasureItemFeature {
|
|
|
final y = size.height * logicPoint.y;
|
|
|
return DPoint(x, y);
|
|
|
}
|
|
|
+
|
|
|
+ /// 画序号
|
|
|
+ ///
|
|
|
+ /// [text] 自定义序号内容
|
|
|
+ @protected
|
|
|
+ void drawId(Canvas canvas, Size size, [String? text]) {
|
|
|
+ final displayText = text ?? id.toString();
|
|
|
+ final fontSize = 14.0 * refItem.scaleRatio; // TODO: from config
|
|
|
+ final letterSpacing = 0.0 * refItem.scaleRatio;
|
|
|
+ final width = fontSize * displayText.length +
|
|
|
+ letterSpacing * (displayText.length - 1);
|
|
|
+ var offset = convert2ViewPoint(size, innerPoints[0]).toOffset();
|
|
|
+ if (offset.dx < width) {
|
|
|
+ offset = offset.translate(fontSize, -fontSize);
|
|
|
+ } else {
|
|
|
+ offset = offset.translate(-width, -fontSize);
|
|
|
+ }
|
|
|
+ TextStyle style = TextStyle(
|
|
|
+ fontSize: fontSize,
|
|
|
+ color: MeasureColors.Primary,
|
|
|
+ // fontWeight: FontWeight.bold,
|
|
|
+ letterSpacing: letterSpacing,
|
|
|
+ );
|
|
|
+ canvas.drawText(
|
|
|
+ displayText,
|
|
|
+ offset,
|
|
|
+ style: style,
|
|
|
+ );
|
|
|
+ }
|
|
|
}
|