encodeTextInteraction method
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();
}