Vertices constructor

Vertices(
  1. VertexMode mode,
  2. List<Offset> positions,
  3. {List<Offset> textureCoordinates,
  4. List<Color> colors,
  5. List<int> indices}
)

Creates a set of vertex data for use with Canvas.drawVertices.

The mode and positions parameters must not be null.

If the textureCoordinates or colors parameters are provided, they must be the same length as positions.

If the indices parameter is provided, all values in the list must be valid index values for positions.

Implementation

Vertices(
  VertexMode mode,
  List<Offset> positions, {
  List<Offset>? textureCoordinates,
  List<Color>? colors,
  List<int>? indices,
}) : assert(mode != null), // ignore: unnecessary_null_comparison
     assert(positions != null) { // ignore: unnecessary_null_comparison
  if (textureCoordinates != null && textureCoordinates.length != positions.length)
    throw ArgumentError('"positions" and "textureCoordinates" lengths must match.');
  if (colors != null && colors.length != positions.length)
    throw ArgumentError('"positions" and "colors" lengths must match.');
  if (indices != null && indices.any((int i) => i < 0 || i >= positions.length))
    throw ArgumentError('"indices" values must be valid indices in the positions list.');

  final Float32List encodedPositions = _encodePointList(positions);
  final Float32List? encodedTextureCoordinates = (textureCoordinates != null)
    ? _encodePointList(textureCoordinates)
    : null;
  final Int32List? encodedColors = colors != null
    ? _encodeColorList(colors)
    : null;
  final Uint16List? encodedIndices = indices != null
    ? Uint16List.fromList(indices)
    : null;

  if (!_init(this, mode.index, encodedPositions, encodedTextureCoordinates, encodedColors, encodedIndices))
    throw ArgumentError('Invalid configuration for vertices.');
}