The good news, is that I'm now *reasonably* certain that my function setGridPositionsAndCardSize along with a new and game specific function gameSpecificGrid work.
Cards can be positioned anywhere on the screen, scaling and rotating as required.
As I write this, I realise that I still need to account for individual rotation for Clock Solitaire.
But before concerning myself with such trifles, it's time to start thinking about data structres and how to store and manipulate card information.
I have been so focused on displaying cards correctly, that I haven't given any thought to waste piles, foundations and whether or not a card should be displayed face up or face down. Such is the joy of iterative design.
To be fair I always knew that this would be the case. I picked the simplest card structure possible to enable me to experiment with positioning the cards correctly.
I created a deck of card objects, and assigned each one to a grid position, and drew the cards centred on that position.
A card object contains an index to it's grid position, the card name and it's dom index.
Card objects are pushed to the deck - itself an array.
The array is displayed card by card.
Although this is fine for test purposes, it's not sufficient to display a Game of Solitaire.
And so overnight, I'll let my subconscious work on this.