writeLinearGradient method

int writeLinearGradient(
  1. VectorGraphicsBuffer buffer, {
  2. required double fromX,
  3. required double fromY,
  4. required double toX,
  5. required double toY,
  6. required Int32List colors,
  7. required Float32List? offsets,
  8. required int tileMode,
})

Write a linear gradient into the current buffer.

Implementation

int writeLinearGradient(
  VectorGraphicsBuffer buffer, {
  required double fromX,
  required double fromY,
  required double toX,
  required double toY,
  required Int32List colors,
  required Float32List? offsets,
  required int tileMode,
}) {
  buffer._checkPhase(_CurrentSection.shaders);

  final int shaderId = buffer._nextShaderId++;
  assert(shaderId < kMaxId);
  buffer._putUint8(_linearGradientTag);
  buffer._putUint16(shaderId);
  buffer._putFloat32(fromX);
  buffer._putFloat32(fromY);
  buffer._putFloat32(toX);
  buffer._putFloat32(toY);
  buffer._putUint16(colors.length);
  buffer._putInt32List(colors);
  if (offsets == null) {
    buffer._putUint16(0);
  } else {
    buffer._putUint16(offsets.length);
    buffer._putFloat32List(offsets);
  }
  buffer._putUint8(tileMode);
  return shaderId;
}