Visit http://tdillon.github.io/7/demo.html for a demo of what information this library can produce.
You can use npm, jspm, or directly link the files as you see fit. The bundle file (dist/seven-segment.bundle.js) may be beneficial to you if you need a System.register version.
npm i seven-segment --save
After you have the library, import it.
import {Seven} from 'seven-segment';
The default options give you a quintessential seven segment.
var x = new Seven();
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';
var x = new Seven({
height: 50,
angle: 0,
ratioLtoW: 2,
ratioLtoS: .5,
digit: Digit.TWO
});
You can configure the Seven
by using setters after the object has been instantiated.
var x = new Seven();
x.height = 20; //or x.width = 20
x.angle = -25;
x.ratioLtoW = 4;
x.ratioLtoS = 5;
x.digit = Digit.SIX;
Each of the configuration properties are getters.
var x = new Seven();
console.log(
x.height,
x.width,
x.angle,
x.ratioLtoW,
x.ratioLtoS,
Digit[x.digit]
);
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
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
}
}
}