GithubHelp home page GithubHelp logo

waimea's Introduction

Waimea

Compact standalone chronogram editor for Windows using OpenGL, written in good ol' VB6. Inspired by Wavedrom.

Download v0.20 HERE.

Waimea screenshot

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.

Features

  • 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 ?)

Usage

  • Holding Alt shows all popup notes (if enabled)
  • Right click and drag to measure time
  • Double left click to reset view to origin

Syntax

A wave name starts with name: and a string.

A wave definition starts with wave::

  • . (dot): Repeat last block (except for H and L, they become h and l`)
  • z : Hi-Z
  • x : Undefined
  • l : Low
  • h : High
  • L : Falling with arrow
  • H : Rising with arrow
  • n : Clock negative
  • p : Clock positive
  • N : Clock negative with arrow
  • P : 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.

Layout.txt format

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

known bugs

  • 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.

waimea's People

Contributors

furrtek avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

xxdoc vb6hobbyst7

waimea's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.