7

A seven segment display geometry library.

View project on GitHub

Demo

Visit http://tdillon.github.io/7/demo.html for a demo of what information this library can produce.

Installation

You can use npm, jspm, or directly link the files as you see fit.

npm i seven-segment

After you have the library, import it.

import {Seven} from 'seven-segment/7';

Basic options

The default options give you a quintessential seven segment.

var x = new Seven();

Configuration Parameter

You can optionally pass a configuration object to the constructor. Each property is optional.

//import Digit if you want access to the enum for setting the digit type.
import {Seven, Digit} from 'seven-segment/7';

var x = new Seven({segmentLength: 10, angle: 0, ratioLtoW: 2, ratioLtoS: .5, digit: Digit.TWO});

Setters

You can configure the Seven by using setters after the object has been instantiated.

var x = new Seven();
x.segmentLength = 20;
x.angle = -25;
x.ratioLtoW = 4;
x.ratioLtoS = 5;
x.digit = Digit.SIX;

Getters

Each of the configuration properties as well as height and width are getters.

var x = new Seven();
console.log(x.height, x.width, x.segmentLength, x.angle, x.ratioLtoW, x.ratioLtoS, Digit[x.digit]);

Exceptions

Setting the configuration properties to invalid values will cause an exception to be thrown. All properties expect a number, except for the digit property which expects a member of the Digit enum. Passing a string that can be converted to a number may work. Objects, nulls, and other 'non-numeric' values will throw exceptions. Setting a property to a number which would produce bad geometry will also throw an exception. You should wrap construction and property setters in try/catches if you are unsure of the validity of the settings.

//constructor throws an exception
var x = new Seven({angle: 'foo'});  //ERROR

//setting a property throws an exception
var x = new Seven();
x.angle = 89;  //ERROR, too sharp an angle produces bad geometry

Geometry

Finally, we've configured our Seven how we want it, now we can access the geometry.

var x = new Seven();

for (let s of x.segments) {  //Access the segments A-G
  //'on' specifies if the segment is used for the 'digit' specified
  if (s.on) {
    for (let p of s.points) {  //each segment has a 'point' array
      console.log(p.x, p.y);  //points have 'x' and 'y' properties
    }
  }
}