The flam rendering got completed on the plane last night, a 12 hour flight to Singapore, ouch. What's good about it is Path2D is used to create miniature parallelograms for the strike and tail elements, allowing pretty smooth scaling.
Just figured out I've called the objects the wrong way round through, a left flam is a light stroke on the right hand, before the main note on the left. Therefore you should add a right grace note to make a left flam. I've gone and called the object a left flam, so a left hand note has a left flam object attached to it, to make it a flam. I think I'll do some renaming here, maybe not call it a JLeftFlam, but rather a JLeftFlamGrace - thankfully eclipse and it's refactor -> rename is pretty handy!
Looking at the rest of the grace notes now for drags, roughs and swiss roughs. They all share common building blocks in that each grace note that makes up the grouping has it's stem finish at the same level, ie the stem of left and right grace notes is not the same length. This is unlike flams, where the whole grace note moves above or below the line as needed. So for the drags, roughs and swiss roughs we can probably create an object to represent a left stroke and another to represent a right, then bundle as needed in a grouping class, one for each type.
Open drags point the stems the other way and their stem lengths remain consistent across hands, so that's yet another discrete group of rendering classes.
Let's see what "plane" coding can get done this trip.