merge static method

Will merge two DrawablePaints, preferring properties defined in a if they're not null.

If a is identical with DrawablePaint.empty, b will be ignored.

Implementation

static DrawablePaint? merge(DrawablePaint? a, DrawablePaint? b) {
  if (a == null && b == null) {
    return null;
  }

  if (b == null && a != null) {
    return a;
  }

  if (identical(a, DrawablePaint.empty) ||
      identical(b, DrawablePaint.empty)) {
    return a ?? b;
  }

  if (a == null) {
    return b;
  }

  // If we got here, the styles should not be null.
  assert(a.style == b!.style,
      'Cannot merge Paints with different PaintStyles; got:\na: $a\nb: $b.');

  return DrawablePaint(
    a.style ?? b!.style,
    color: a.color ?? b!.color,
    shader: a.shader ?? b!.shader,
    blendMode: a.blendMode ?? b!.blendMode,
    colorFilter: a.colorFilter ?? b!.colorFilter,
    isAntiAlias: a.isAntiAlias ?? b!.isAntiAlias,
    filterQuality: a.filterQuality ?? b!.filterQuality,
    maskFilter: a.maskFilter ?? b!.maskFilter,
    strokeCap: a.strokeCap ?? b!.strokeCap,
    strokeJoin: a.strokeJoin ?? b!.strokeJoin,
    strokeMiterLimit: a.strokeMiterLimit ?? b!.strokeMiterLimit,
    strokeWidth: a.strokeWidth ?? b!.strokeWidth,
  );
}