encodeTextInteraction method

Uint8List encodeTextInteraction(
  1. RitoTextInteractionRequest request
)

Encodes a RITOTIQ1 text interaction request.

Implementation

Uint8List encodeTextInteraction(RitoTextInteractionRequest request) {
  final writer = _Writer.message(ascii.encode('RITOTIQ1'), 1);
  writer.externalId(request.sessionId, 'session id');
  writer.externalId(request.artifactId, 'artifact id');
  switch (request.query) {
    case RitoCaretQuery(:final point):
      writer.uint8(0);
      _textPoint(writer, point);
    case RitoRangeQuery(:final anchor, :final focus):
      writer.uint8(1);
      _caretAddress(writer, anchor);
      _caretAddress(writer, focus);
    case RitoRangeToPointQuery(:final anchor, :final focus):
      writer.uint8(2);
      _caretAddress(writer, anchor);
      _textPoint(writer, focus);
    case RitoRangeFromPointsQuery(
      :final anchor,
      :final focus,
      :final granularity,
    ):
      writer.uint8(3);
      _textPoint(writer, anchor);
      _textPoint(writer, focus);
      writer.uint8(granularity.index);
    case final RitoMovementQuery query:
      writer.uint8(4);
      _caretAddress(writer, query.anchor);
      _caretAddress(writer, query.focus);
      writer.uint8(query.movement.index);
      writer.option(
        query.preferredInlinePosition,
        (value) => writer.float64(value, 'preferred inline position'),
      );
      writer.option(
        query.preferredBlockPosition,
        (value) => writer.float64(value, 'preferred block position'),
      );
  }
  writer.boolean(request.everyPage);
  return writer.finish();
}