Skip to content

Instantly share code, notes, and snippets.

@nnathan
Last active June 8, 2017 03:59
Show Gist options
  • Save nnathan/db2ff30200ab55dc47d6e152e0bedcb7 to your computer and use it in GitHub Desktop.
Save nnathan/db2ff30200ab55dc47d6e152e0bedcb7 to your computer and use it in GitHub Desktop.
ftd

ftd

ftd aims to be a tool for drawing text-based diagrams in the same vein as OmniGraffle, Visio, and Monodraw. It should provide a UI that is WYSIWYG and should be "pixel perfect."

Desiderata

Software

  1. Must be cross-platform and support Desktop Linux/Windows/Mac. The UI must be consistent across all platforms.
  2. Must be released in source and binary form as public domain (i.e. prevent crippling from the bondage of licensing).

Canvas

  1. A Canvas is made up of Cells. A Cell supports the placement of a single unicode character.
  2. Support a canvas of at minimum 512x512 Cells.
  3. Canvas size is inferred by cell occupancy.

Rectangles

  1. Support placing a Rectangle shape in a canvas. The minimum length must be 2 cells. The minimum height must be 2 cells. We say an NxM Rectangle has length N and height M. Examples:
2x2:
┌┐
└┘

3x2:
┌─┐
└─┘

3x3:
┌─┐
│ │
└─┘
  1. Support embedding text within the borders of a Rectangle shape. A Rectangle with embedded text is colloquially called a TextBox.

Lines

  1. Support a Line shape.

  2. Lines may have configurable arrow heads.

  3. Lines must support attachment to a Rectangle.

  4. A Rectangle must support 4 attachment points, in the North/South and East/West mid-points of the borders, specifically the outside mid-point of each side in the rectangle.

  5. Rectangle shape must support snap-in with lines using attachment points. At minimum, there should be 4 attachment points: the outside mid-point of each side in the rectangle.

  6. Pencil tool with different "tips" (characters), draws will be converted into Rectangles without borders

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment