StrokeInputBatch
abstract class StrokeInputBatch
ImmutableStrokeInputBatch |
An immutable implementation of |
MutableStrokeInputBatch |
A mutable implementation of |
A read-only view of an object that stores multiple StrokeInput values together in a more memory-efficient manner than just List<StrokeInput>. The input points in this batch are guaranteed to be consistent with one another – for example, they all have the same toolType and the same set of optional fields like pressure/tilt/orientation, and their timestamps are all monotonically non-decreasing. This can be an ImmutableStrokeInputBatch for data that cannot change, and a MutableStrokeInputBatch for data that is meant to be modified or incrementally built.
Summary
Nested types |
|---|
object StrokeInputBatch.Companion |
Public functions |
|
|---|---|
operator StrokeInput |
Gets the value of the i-th input. |
Long |
The duration between the first and last input in milliseconds. |
Int |
Returns the seed value that should be used for seeding any noise generators for brush behaviors when a full stroke is regenerated with this input batch. |
Float |
The physical distance in centimeters that the pointer must travel in order to produce an input motion of one stroke unit. |
InputToolType |
How this input stream should be interpreted, as coming from a |
Boolean |
Whether all of the individual inputs have a defined value for |
Boolean |
Whether all of the individual inputs have a defined value for |
Boolean |
Whether strokeUnitLengthCm has a valid value, which is something other than |
Boolean |
hasTilt()Whether all of the individual inputs have a defined value for |
Boolean |
isEmpty()
|
StrokeInput |
populate(index: Int, outStrokeInput: StrokeInput)Gets the value of the i-th input and overwrites |
Public properties |
|
|---|---|
Int |
Number of |
Extension functions |
|
|---|---|
PartitionedMesh |
Creates a |
Unit |
StrokeInputBatch.encode(output: OutputStream)Write a gzip-compressed |
Public functions
get
operator fun get(index: Int): StrokeInput
Gets the value of the i-th input. Requires that index is non-negative and less than size.
In performance-sensitive code, prefer to use populate to pass in a pre-allocated instance and reuse that instance across multiple calls to this function.
getDurationMillis
fun getDurationMillis(): Long
The duration between the first and last input in milliseconds.
getNoiseSeed
@ExperimentalInkCustomBrushApi
fun getNoiseSeed(): Int
Returns the seed value that should be used for seeding any noise generators for brush behaviors when a full stroke is regenerated with this input batch. If no seed value has yet been set for this input batch, returns the default seed of zero.
getStrokeUnitLengthCm
fun getStrokeUnitLengthCm(): Float
The physical distance in centimeters that the pointer must travel in order to produce an input motion of one stroke unit. For stylus/touch, this is the real-world distance that the stylus/fingertip must move in physical space; for mouse, this is the visual distance that the mouse pointer must travel along the surface of the display.
A value of StrokeInput.NO_STROKE_UNIT_LENGTH indicates that the relationship between stroke space and physical space is unknown or ill-defined.
getToolType
fun getToolType(): InputToolType
How this input stream should be interpreted, as coming from a InputToolType.MOUSE, InputToolType.TOUCH, or InputToolType.STYLUS.
hasOrientation
fun hasOrientation(): Boolean
Whether all of the individual inputs have a defined value for StrokeInput.orientationRadians. If not, then no input items have an orientation value.
hasPressure
fun hasPressure(): Boolean
Whether all of the individual inputs have a defined value for StrokeInput.pressure. If not, then no input items have a pressure value.
hasStrokeUnitLength
fun hasStrokeUnitLength(): Boolean
Whether strokeUnitLengthCm has a valid value, which is something other than StrokeInput.NO_STROKE_UNIT_LENGTH.
hasTilt
fun hasTilt(): Boolean
Whether all of the individual inputs have a defined value for StrokeInput.tiltRadians. If not, then no input items have a tilt value.
isEmpty
fun isEmpty(): Boolean
true if there are no StrokeInput objects in the batch, and false otherwise.
populate
fun populate(index: Int, outStrokeInput: StrokeInput): StrokeInput
Gets the value of the i-th input and overwrites outStrokeInput, which it then returns. Requires that index is non-negative and less than size.
Protected functions
Public properties
Extension functions
createClosedShape
fun StrokeInputBatch.createClosedShape(): PartitionedMesh
Creates a PartitionedMesh of the shape enclosed by the given StrokeInputBatch input points. A typical use case is selecting a region of the scene and performing hit testing with the resulting PartitionedMesh.
For a given stroke this algorithm aims to:
-
Identify and create any connections that the user may have intended to make but did not fully connect.
-
Trim any extra end points that the user did not intend to be part of the selected area.
Example usage:
fun onStrokeFinished(stroke: Stroke) {
val selectionRegion = stroke.inputs.createClosedShape()
for (stroke in myScene.strokes) {
if (stroke.shape.intersects(selectionRegion)) {
myScene.setSelected(stroke, true)
}
}
}
| Parameters | |
|---|---|
StrokeInputBatch |
The |
| Returns | |
|---|---|
PartitionedMesh |
The |
encode
fun StrokeInputBatch.encode(output: OutputStream): Unit
Write a gzip-compressed ink.proto.CodedStrokeInputBatch binary proto message representing the StrokeInputBatch to the given OutputStream.