Thanks, this looks like a great idea. I presume you must have added some extra code to the setPaint() method in SVGGraphics2D to register the pattern paint instance, and some code in getSVGElement() to write the pattern definitions to SVG.
I'm thinking the paintPattern(Graphics2D) method in the PatternPainter interface could also take width and height arguments so that it knows the bounds that it should be working with. And also, I guess this implementation won't show any pattern when rendering to the screen, only for SVG...I will take a look at the Paint interface to see if there is some way to make it work on screen. Or did I miss something maybe?