vid_us_logical_coordinate.dart 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import 'dart:typed_data';
  2. import 'package:vid/us/vid_us_data_reader.dart';
  3. import 'package:vid/us/vid_us_data_writer.dart';
  4. import 'package:vid/us/vid_us_point.dart';
  5. import 'package:vid/us/vid_us_rect.dart';
  6. import 'package:vid/us/vid_us_unit.dart';
  7. class VidUsLogicalCoordinate {
  8. bool _isFlipHorizontal;
  9. bool _isFlipVertical;
  10. VidUsRect _region;
  11. VidUsUnit _xUnit;
  12. VidUsUnit _yUnit;
  13. bool get isFlipHorizontal => _isFlipHorizontal;
  14. bool get isFlipVertical => _isFlipVertical;
  15. VidUsRect get region => _region;
  16. VidUsUnit get xUnit => _xUnit;
  17. VidUsUnit get yUnit => _yUnit;
  18. VidUsLogicalCoordinate(this._isFlipHorizontal, this._isFlipVertical,
  19. this._region, this._xUnit, this._yUnit);
  20. Uint8List toBytes() {
  21. var writer = VidUsDataWriter();
  22. writer.writeBool(_isFlipHorizontal);
  23. writer.writeBool(_isFlipVertical);
  24. writer.writeByte(VidUsUnitMap.getUnitValue(_xUnit));
  25. writer.writeByte(VidUsUnitMap.getUnitValue(_yUnit));
  26. writer.writeDouble(_region.left);
  27. writer.writeDouble(_region.top);
  28. writer.writeDouble(_region.right);
  29. writer.writeDouble(_region.bottom);
  30. return writer.data;
  31. }
  32. static VidUsLogicalCoordinate fromBytes(Uint8List bytes) {
  33. var reader = VidUsDataReader(bytes);
  34. var isFlipHorizontal = reader.readBool();
  35. var isFlipVertical = reader.readBool();
  36. var xUnit = VidUsUnitMap.getUnit(reader.readByte());
  37. var yUnit = VidUsUnitMap.getUnit(reader.readByte());
  38. var left = reader.readDouble();
  39. var top = reader.readDouble();
  40. var right = reader.readDouble();
  41. var bottom = reader.readDouble();
  42. var region = VidUsRect.tlbr(
  43. VidUsPoint(left, top), VidUsPoint(right, bottom));
  44. return VidUsLogicalCoordinate(
  45. isFlipHorizontal, isFlipVertical, region, xUnit, yUnit);
  46. }
  47. }