Compact standalone chronogram editor for Windows using OpenGL, written in good ol' VB6. Inspired by Wavedrom.
Download v0.20 HERE.
Why VB6 ?
- I still live in 1999
- Super fast dev cycle for GUI apps
- Small executables
- No framework, only requires a 1.3MB dll (msvbvm60.dll)
- Rather slow execution, but here we only need fast drawing
- Can't be worse than Java !
- I believe that a web browser is a program to browse the web, not an application host
- Not portable :( But should run in Wine :)
Also: No install, no registry keys.
- Markdown syntax very similar to Wavedrom's
- Fast and clean OpenGL rendering
- Drag-scroll for large chronograms
- Rulers
- Time measurements
- Popup notes (pins)
- Modifiable layout/appearence (not as flexible as Wavedrom)
- To come: Export to image (and svg ?)
- Holding Alt shows all popup notes (if enabled)
- Right click and drag to measure time
- Double left click to reset view to origin
A wave name starts with name:
and a string.
A wave definition starts with wave:
:
.
(dot): Repeat last block (except forH
andL
, they becomeh
and l`)z
: Hi-Zx
: Undefinedl
: Lowh
: HighL
: Falling with arrowH
: Rising with arrown
: Clock negativep
: Clock positiveN
: Clock negative with arrowP
: Clock positive with arrow=
: Data (grey)0~5
: Data (colored)
Text for data zones starts with data:
and strings separated by commas.
A vertical ruler can be set with ruler:
, a x position, and a color index.
A note can be added with pin:
, a x position, a color index, and a string.
A wave group is started with group:
, a string, and a color index. A group is ended with groupend
. Groups can be nested.
A block definition starts with the DEF
keyword followed by the letter assigned to the block. Any text after the letter is ignored, it can be used as a comment to describe the block.
The drawing commands follow on the next line. The currently supported commands are:
SP
: Start Point. Required, defines the block's starting point for hookup. Takes x,y.EP
: Ending Point. Required, defines the block's ending point for hookup. Takes x,y.L
: Line. Simply draws a line. Takes x1,y1:x2,y2.LS
: Line strip. Draws multiples lines, one connected to the other. Takes x1,y1:x2,y2:x3,y3...SH
: Shape. Draws a filled polygon. Takes x1,y1:x2,y2:x3,y3...LC
: Reset color to line color. Useful for colored blocks (data).
Coordinates 0,0 are top-left. Sizes should be normalized to 16x16.
For example, drawing a filled square clockwise: SH 0,0:16,0:16,16:0,16
- Might crash on badly formatted layout.txt file.
- Drag-scroll not well optimized, can be laggy on some setups. Will have to draw in a buffer and scroll the buffer instead of redrawing everything each time.