A clone needs its own SPItems because the <use> element can have different styling which cascades down into the clone's elements. However, a gradient should not need to be forked. It is either inside the cloned object, and thus the same for all clones or it is defined outside and cascades down.
A clone needs its own SPItems because the <use> element can have different styling which cascades down into the clone's elements. However, a gradient should not need to be forked. It is either inside the cloned object, and thus the same for all clones or it is defined outside and cascades down.
Gradient inside cloned object:
<rect id="myClonedRect" fill="url( #myGradient) " ... /> "#myClonedRect" ... /> "#myClonedRect" ... />
<use xlink:href=
<use xlink:href=
Gradient outside cloned object:
<rect id="myClonedRect" .../> <-- No fill "#myClonedRect2 " fill="url( #myGradient1) " ... /> <-- Different gradients "#myClonedRect2 " fill="url( #myGradient2) " ... />
<use xlink:href=
<use xlink:href=
If a gradient is defined relative to the bounding box its transform should be handled in the rendering code (like masks and clips).