writeRadialGradient method
int
writeRadialGradient(
- VectorGraphicsBuffer buffer, {
- required double centerX,
- required double centerY,
- required double radius,
- required double? focalX,
- required double? focalY,
- required Int32List colors,
- required Float32List? offsets,
- required Float64List? transform,
- required int tileMode,
Write a radial gradient into the current buffer.
focalX
and focalY
must be either both null
or both non-null
.
Implementation
int writeRadialGradient(
VectorGraphicsBuffer buffer, {
required double centerX,
required double centerY,
required double radius,
required double? focalX,
required double? focalY,
required Int32List colors,
required Float32List? offsets,
required Float64List? transform,
required int tileMode,
}) {
assert((focalX == null && focalY == null) ||
(focalX != null && focalY != null));
assert(transform == null || transform.length == 16);
buffer._checkPhase(_CurrentSection.shaders);
final int shaderId = buffer._nextShaderId++;
assert(shaderId < kMaxId);
buffer._putUint8(_radialGradientTag);
buffer._putUint16(shaderId);
buffer._putFloat32(centerX);
buffer._putFloat32(centerY);
buffer._putFloat32(radius);
if (focalX != null) {
buffer._putUint8(1);
buffer._putFloat32(focalX);
buffer._putFloat32(focalY!);
} else {
buffer._putUint8(0);
}
buffer._putUint16(colors.length);
buffer._putInt32List(colors);
if (offsets != null) {
buffer._putUint16(offsets.length);
buffer._putFloat32List(offsets);
} else {
buffer._putUint16(0);
}
buffer._writeTransform(transform);
buffer._putUint8(tileMode);
return shaderId;
}