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

@theunixman
Copy link

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