1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- import 'dart:ui';
- import 'package:fis_measure/interfaces/date_types/point.dart';
- import 'package:fis_measure/interfaces/enums/items.dart';
- import 'package:fis_measure/interfaces/process/items/item.dart';
- import 'package:fis_measure/interfaces/process/items/item_metas.dart';
- import 'package:fis_measure/interfaces/process/workspace/point_info.dart';
- import 'package:fis_measure/process/calcuators/ray.dart';
- import 'package:fis_measure/process/items/item.dart';
- import 'package:fis_measure/process/items/item_feature.dart';
- import 'package:fis_measure/utils/canvas.dart';
- class Ray extends MeasureItem<RayFeature> {
- Ray(ItemMeta meta, IMeasureItem? parent) : super(meta, parent);
- final double initializeAngle = 0;
- @override
- bool onExecuteMouse(PointInfo args) {
- if (state == ItemStates.finished || state == ItemStates.waiting) {
- if (args.pointType == PointInfoType.mouseMove) {
- feature = RayFeature(this, args);
- feature!.hostVisualArea = args.hostVisualArea;
- final viewport = args.hostVisualArea!.viewport!;
- feature!.isReverse =
- viewport.isFlipHorizontal ^ viewport.isFlipVertical;
- state = ItemStates.running;
- }
- }
- if (state == ItemStates.running) {
- if (args.pointType == PointInfoType.mouseUp) return false;
- feature?.point = args;
- doCalculate();
- if (args.pointType == PointInfoType.mouseDown) {
- doFeatureFinish();
- }
- }
- return true;
- }
- @override
- bool onExecuteTouch(PointInfo args) {
- // TODO: implement onExecuteTouch
- throw UnimplementedError();
- }
- static Ray createRay(ItemMeta meta, [IMeasureItem? parent]) {
- final ray = Ray(meta, parent);
- ray.calculator = RayDepthCal(ray);
- return ray;
- }
- }
- class RayFeature extends MeasureItemFeature {
- double _angle = 0;
- bool _isReverse = false;
- RayFeature(Ray refItem, DPoint point) : super(refItem) {
- innerPoints.add(point.clone());
- angle = refItem.initializeAngle;
- }
- DPoint get point => innerPoints[0];
- set point(DPoint value) {
- innerPoints[0] = value;
- }
- double get angle => _angle;
- set angle(double value) {
- if (value != _angle) {
- _angle = value;
- }
- }
- bool get isReverse => _isReverse;
- set isReverse(bool value) {
- if (value != _isReverse) {
- _isReverse = value;
- }
- }
- @override
- void paint(Canvas canvas, Size size) {
- if (innerPoints.isEmpty) return;
- final offset = convert2ViewPoint(size, point).toOffset();
- final left = Offset(0, offset.dy);
- final right = Offset(size.width, offset.dy);
- canvas.drawDashLine(left, right, 1, 10, paintPan);
- var idText = '$id.${refItem.displayName}';
- drawCustomId(canvas, size, right, idText);
- }
- }
|