#############################################################
# Various thoughts on design issues
#############################################################
*************************************
* Overarching Design Principles
*************************************
- low level canvas drawing API
- add text
- add shapes / images
- higher level "widget" API
- text boxes
- form helpers ( check boxes, etc)
- water mark
- repeating elements (page numbers, headers/footers, etc)
- image boxes
- lists
- tables (port simple table?)
- add pages from existing PDFs
*************************************
* Thoughts on the table API
*************************************
FPDF::Table
- .table(data = [], columns = [])
- http://source.mihelac.org/2006/6/19/creating-pdf-documents-with-tables-in-ruby-rails#comments
PDF::SimpleTable
- .table(data = [{}], columns = []
XHTML?
- .table(data = String, opts = {})
*************************************
* API consistency
*************************************
When placing objects onto the canvas, 2 styles
- func(data, opts)
- positioning details default to sensible defaults. x,y the current cursor location, w,h the distance from the cursor to the right and bottom borders
- positioning options can be overridden in opts
- func(x, y, w, h, opts)
- when default positioning can't be sensibly inferred (shapes, text cells, etc)
- forces user to choose details when they call it