This is so cool, I’m a little bummed out I discovered it after Valentine’s Day, but my kids still appreciated the cards I made them today. One thing that threw me off initially is that the selector boxes were sized so that there is a lot of white space at the bottom and despite what the scroll bar was showing, I didn’t realize there were so many additional options. After I realized, I just expanded the box to display the last row on my local copy. Looking through the implementation code a little deeper, I’m curious about how the transformation from 384 x 512 to 342 x 512 works for the border graphics since they seem to take up a full card. I didn’t really notice any distortion, but the final output is clearly narrower.
Glad you and your kids had fun with it!
The valentine's day theme does limit its applicability, but it should be reasonably easy to repurpose for other holidays in the future; everything is data-driven, and adding cover art or border images is simply a matter of creating new cards that follow an appropriate naming convention.
Decker cards are 512x342 pixels by default, just like the display on a Macintosh Plus. Most of the cards in the wizard expose a "render[]" event handler that composites together their preview image (locally) and is invoked by subsequent cards to assemble more and more of the final greeting card image. The script for the "Border" card can be seen here:
on view do on tr x do (count "back_") drop x end back.value:select "Border Style":tr@key where key like "back_*" from deck.cards preview.clear[] preview.paste[render[]] end on render do i:deck.cards["back_%s" format first back.rowvalue].image.copy[] i.transform["right"] i end
If the images look somewhat horizontally compressed on the final printout it probably relates to how much of the page border your printer is filling and how the PDF aspect ratio gets squeezed. I dialed things in fairly close for my home laser printer, but this behavior can vary quite a bit.