https://github.com/icholy/draw
Basic 2d drawing primitives for the terminal
https://github.com/icholy/draw
Last synced: over 1 year ago
JSON representation
Basic 2d drawing primitives for the terminal
- Host: GitHub
- URL: https://github.com/icholy/draw
- Owner: icholy
- Created: 2018-12-02T21:04:11.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-12-17T17:26:44.000Z (over 7 years ago)
- Last Synced: 2025-01-30T03:13:09.617Z (over 1 year ago)
- Language: Go
- Homepage:
- Size: 11.7 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Basic 2d drawing primitives for the terminal
[](https://godoc.org/github.com/icholy/draw)
> I found myself writing subsets of this code over and over for quick experiments.
> So I figured I'd put it in a package.
``` go
package main
import (
"fmt"
"log"
"os"
"github.com/icholy/draw"
)
func main() {
cv := draw.NewCanvas(80, 40)
// draw a point
p := draw.Point{
X: 10,
Y: 10,
}
cv.Draw(p, '$')
// draw a line
l := draw.Line{
A: cv.Bounds().TopRight(),
B: draw.Point{
X: 40,
Y: 5,
},
}
cv.Draw(l, '*')
// add a border
cv.Draw(cv.Bounds().Box(), 0)
// draw text
t := draw.Text{
Origin: cv.Bounds().TopLeft().AddXY(20, 10),
Text: "You can draw\nmulti-line text",
}
cv.Draw(t, 0)
// add border to text
cv.Draw(draw.BoxAround(t), 0)
// draw circle
c := draw.Circle{
Center: cv.Bounds().Center().AddXY(5, 5),
Radius: 10,
}
cv.Draw(c, '%')
if err := cv.WriteTo(os.Stdout); err != nil {
log.Fatal(err)
}
fmt.Println()
}
```
```
|------------------------------------------------------------------------------|
| ******** |
| ******** |
| ******** |
| ******** |
| **** |
| |
| |
| |
| |---------------| |
| $ |You can draw | |
| |multi-line text| |
| |---------------| |
| |
| |
| %%%%%%%%%%%%%%%%%% |
| %%%% %%%% |
| %%% %%% |
| %% %% |
| %% %% |
| %% %% |
| %% %% |
| % % |
| % % |
| % % |
| % % |
| % % |
| % % |
| %% % |
| %% %% |
| %% %% |
| %% %% |
| %%% %%% |
| %%%% %%%% |
| %%%%%%%%%%%%%%%%%% |
| |
| |
| |
| |
|------------------------------------------------------------------------------|
```