vid_us_visual.dart 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import 'dart:typed_data';
  2. import 'package:vid/us/vid_us_2d_visual.dart';
  3. import 'package:vid/us/vid_us_3d_visual.dart';
  4. import 'package:vid/us/vid_us_data_reader.dart';
  5. import 'package:vid/us/vid_us_data_writer.dart';
  6. import 'package:vid/us/vid_us_display_mode.dart';
  7. import 'package:vid/us/vid_us_mode.dart';
  8. import 'package:vid/us/vid_us_visual_indicator.dart';
  9. import 'package:vid/us/vid_us_visual_type.dart';
  10. class VidUsVisual {
  11. late VidUsDisplayMode _displayMode;
  12. late VidUsModeType _activeModeType;
  13. late VidUsVisualIndicator _indicator;
  14. late VidUsVisualType _visualType;
  15. late List<VidUsMode> _modes;
  16. /// Gets or sets the Display mode of this image.
  17. VidUsDisplayMode get displayMode => _displayMode;
  18. /// Gets the visual type of this Visual.
  19. VidUsVisualType get visualType => _visualType;
  20. /// Gets or sets the Indicator of this Visual.
  21. VidUsVisualIndicator get indicator => _indicator;
  22. /// Gets or set the active mode type of this visual.
  23. VidUsModeType get activeModeType => _activeModeType;
  24. /// Gets all modse of this visual.
  25. List<VidUsMode> get modes => _modes;
  26. VidUsVisual() {
  27. _activeModeType = VidUsModeType.Undefined;
  28. _modes = [];
  29. //Default is A
  30. _indicator = VidUsVisualIndicator.A;
  31. //Default is Normal
  32. _displayMode = VidUsDisplayMode.Normal;
  33. }
  34. void setVisualType(VidUsVisualType type) {
  35. _visualType = type;
  36. }
  37. void setIndicator(VidUsVisualIndicator indicator) {
  38. _indicator = indicator;
  39. }
  40. void setActiveModeType(VidUsModeType type) {
  41. _activeModeType = type;
  42. }
  43. void setDisplayMode(VidUsDisplayMode mode) {
  44. _displayMode = mode;
  45. }
  46. Uint8List toBytes() {
  47. var writer = VidUsDataWriter();
  48. writer.writeByte(_visualType.index);
  49. writer.writeByte(_displayMode.index);
  50. writer.writeByte(_indicator.index);
  51. writer.writeByte(_activeModeType.index);
  52. writer.writeByte(_modes.length);
  53. _modes.forEach((mode) {
  54. writer.writeBytes(mode.toBytes());
  55. });
  56. return writer.data;
  57. }
  58. static VidUsVisual fromBytes(Uint8List bytes) {
  59. var reader = VidUsDataReader(bytes);
  60. var visualType = VidUsVisualType.values[reader.readByte()];
  61. if (visualType == VidUsVisualType.V2D) {
  62. return VidUs2DVisual.fromBytes(bytes);
  63. }
  64. if (visualType == VidUsVisualType.V3D) {
  65. return VidUs3DVisual.fromBytes(bytes);
  66. }
  67. throw Exception("Not supported visual $visualType");
  68. }
  69. }