import 'dart:typed_data';

import 'package:fis_measure/interfaces/date_types/rect_region.dart';
import 'package:fis_measure/interfaces/date_types/size.dart';
import 'package:fis_measure/interfaces/process/standard_line/pixel_space.dart';
import 'package:fis_measure/interfaces/process/visuals/visual.dart';
import 'package:vid/us/vid_us_probe.dart';

import '../application.dart';
import 'standard_line.dart';
import 'visual.dart';

/// 第三方应用
class ThirdPartApplication extends Application {
  ThirdPartApplication(
    VidUsProbe probe,
    Uint8List extendedData,
  ) : super(probe) {
    standardLine.loadFromVidExtData(extendedData);
    standardLine.pixelSpacingChanged.addListener(_onPixelSpacingChanged);
  }

  /// 参考线
  final standardLine = StandardLine();

  /// 是否请求过 将空的校准线填充
  bool hasFillEmtpyStandardLineRequested = false;

  @override
  bool get isThirdPart => true;

  @override
  List<IVisual> convertVisuals() {
    final visualData = frameData!.visuals.first;
    final region = RectRegion.size(DSize(1, 1));
    return [ThirdPartVisual(this, visualData, region)];
  }

  void _onPixelSpacingChanged(Object sender, PixelSpacing? pixelSpacing) {
    loadVisuals();
  }
}