Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/easonzero/terminalcanvas
A module that is used to create a canvas in the terminal
https://github.com/easonzero/terminalcanvas
canvas nodejs terminal
Last synced: about 2 months ago
JSON representation
A module that is used to create a canvas in the terminal
- Host: GitHub
- URL: https://github.com/easonzero/terminalcanvas
- Owner: Easonzero
- Created: 2016-09-26T15:21:06.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2019-04-07T07:45:06.000Z (almost 6 years ago)
- Last Synced: 2024-11-07T16:06:20.924Z (2 months ago)
- Topics: canvas, nodejs, terminal
- Language: JavaScript
- Homepage:
- Size: 59.6 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# TerminalCanvas
[![LICENSE](https://img.shields.io/badge/license-Anti%20996-blue.svg)](https://github.com/996icu/996.ICU/blob/master/LICENSE)
[![Badge](https://img.shields.io/badge/link-996.icu-red.svg)](https://996.icu/#/zh_CN)一个用于在linux终端上创建画布的node模块,支持事件监听,图形绘制...
### Installation
* npm install canvas-terminal [-g]### Getting Started
```javascript
const Canvas = require('../index').Canvas;
const Container = require('../index').Container;
const Graphics = require('../index').Graphics;
const BgColor = require('../index').BgColor;
const FontColor = require('../index').FontColor;let canvas = new Canvas(33,33);
let container = new Container();let graphics = new Graphics();//创建绘图类Graphics
//绘制一条线
graphics.setLineStyle(FontColor.black,BgColor.cyan);
graphics.setFillStyle(FontColor.white,BgColor.black);
graphics.drawPath([
[5,1],[7,7]
]);
let line = graphics.toDisplayObject();graphics.clear();//清除绘制缓存,准备下次绘制
//绘制一个圆
graphics.setLineStyle(FontColor.black,BgColor.cyan);
graphics.drawCycle(10,10,9,' ',true);
let cycle = graphics.toDisplayObject();//将线和圆放入container容器中
container.addChild(cycle);
container.addChild(line);//初始化线和圆的位置
line.x = 1;
line.y = 1;
cycle.x = 10;
cycle.y = 10;//初始化线的事件响应
line.on('onKeyDown',(key)=>{
switch (key){
case 'w':
line.y--;
break;
case 'a':
line.x--;
break;
case 's':
line.y++;
break;
case 'd':
line.x++;
break;
case 'z':
line.scale(2);
break;}
});//初始化渲染循环
setInterval(()=>{
canvas.render(container);
},200);```
结果如图,这样我们就得到了一条可以控制位置的线和一个静止不动的圆
![结果](./image/result.png)简单说明:
`Canvas`是核心类,负责将数据渲染到terminal上.`Container`是容器类,负责承载数据.`Graphics`是绘制类,负责通过内部方法生成图像数据.框架通常的使用流程是:
* 创建一个固定长宽的`Canvas`类实例
* 创建一个`Container`类实例
* 通过`Graphics`类创建出各种图像数据,并放入`Container`容器实例中
* 最后将`Container`实例交给`Canvas`实例渲染即可.### API
#### `Canvas` extends `EventEmitter`
* 属性
emptyGird
string
空格子的填充元素,格子大小按照该元素大小进行计算
* 方法
constructor
结构体,创建一个固定大小的渲染区间
@height int 渲染区间的高度
@width int 渲染区间的宽度
render
渲染函数,将数据渲染到terminal上
@display DisplayObject 需要渲染的DisplayObject
setPoint
直接在终端上绘制一个点的方法
@x int@y int 横竖坐标,起始点在画布左上角
@char string 填充字符,超过单位长度会进行截取
@font FontColor@bg BgColor@light Light 填充风格,详见Color部分
clear
清屏函数
#### `Container` extends `DisplayObject`
* 属性
children
array
空格子的填充元素,格子大小按照该元素大小进行计算
* 方法
constructor
结构体
@?height int 数据容器的高度
@?width int 数据容器的宽度
addChild
添加一个子节点
@child DisplayObject 子节点
removeChild
去除一个子节点
@index int 删除子节点的序号
removeAll
去除所有子节点
#### `Graphics`
* 方法
constructor
结构体
@?height int 数据容器的高度
@?width int 数据容器的宽度
setLineStyle
设置线的绘制风格
@font FontColor@bg BgColor@light Light 绘制风格,详见Color部分
setFillStyle
设置填充时的绘制风格
@font FontColor@bg BgColor@light Light 绘制风格,详见Color部分
drawPoint
绘制点
@x int@y int 点坐标
@char string 绘制字符
@?isFill 是否使用填充风格
drawLine
绘制直线
@x0 int@y0 int 起点坐标
@x int@y int 终点坐标
drawRectangle
绘制矩形
@x0 int@y0 int 左上角顶点坐标
@width int@height int 宽高
@char string 填充字符
@isFill 是否使用填充风格
drawCycle
绘制圆
@xc int@yc int 圆坐标
@r int 半径
@char string 填充字符
@isFill 是否使用填充风格
drawPath
绘制路径
@points Array 路径节点
toDisplayObject
将绘制结果转成DisplayObject
@RETURN DisplayObject
#### `DisplayObject` extends `EventEmitter`
* 属性
x
int
横坐标
y
int
纵坐标
fillStyle
Array
填充风格,数组内容为[FontColor,BgColor,Light]
lineStyle
Array
线风格,数组内容为[FontColor,BgColor,Light]
height
int
容器高度
width
int
容器宽度
visible
boolean
是否可见
* 方法
constructor
结构体
@?height int 数据容器的高度
@?width int 数据容器的宽度
on
设置监听器
@event string 监听事件,目前可以监听事件有@onKeyDown,
回调参数是按下的按键值
@callback function 回调函数
clear
清空数据
copy
拷贝函数
@o DisplayObject 拷贝的对象
scale
放缩函数
@a int 放缩倍数
#### `Color`
FontColor
字色类
terminal字色号映射
BgColor
背景色类
terminal背景色号映射
Light
高亮类
terminal高亮号映射