Vertices.raw constructor

Vertices.raw(VertexMode mode, Float32List positions, { Float32List textureCoordinates, Int32List colors, Uint16List indices })

Creates a set of vertex data for use with Canvas.drawVertices, directly using the encoding methods of new Vertices.

The mode parameter must not be null.

The positions list is interpreted as a list of repeated pairs of x,y coordinates. It must not be null.

The textureCoordinates list is interpreted as a list of repeated pairs of x,y coordinates, and must be the same length of positions if it is not null.

The colors list is interpreted as a list of RGBA encoded colors, similar to Color.value. It must be half length of positions if it is not null.

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

Implementation

Vertices.raw(
  VertexMode mode,
  Float32List positions, {
  Float32List textureCoordinates,
  Int32List colors,
  Uint16List indices,
}) : assert(mode != null),
     assert(positions != null) {
  if (textureCoordinates != null && textureCoordinates.length != positions.length)
    throw ArgumentError('"positions" and "textureCoordinates" lengths must match.');
  if (colors != null && colors.length * 2 != 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.');

  _constructor();
  if (!_init(mode.index, positions, textureCoordinates, colors, indices))
    throw ArgumentError('Invalid configuration for vertices.');
}