58 lines
1.1 KiB
Go
58 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/tfriedel6/canvas"
|
|
"github.com/tfriedel6/canvas/backend/xmobilebackend"
|
|
"golang.org/x/exp/shiny/driver/gldriver"
|
|
"golang.org/x/exp/shiny/screen"
|
|
"golang.org/x/exp/shiny/widget"
|
|
"golang.org/x/exp/shiny/widget/glwidget"
|
|
"golang.org/x/exp/shiny/widget/node"
|
|
)
|
|
|
|
var cv *canvas.Canvas
|
|
var sheet *widget.Sheet
|
|
|
|
func main() {
|
|
gldriver.Main(func(s screen.Screen) {
|
|
glw := glwidget.NewGL(draw)
|
|
sheet = widget.NewSheet(glw)
|
|
ctx, err := xmobilebackend.NewGLContext(glw.Ctx)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
backend, err := xmobilebackend.New(0, 0, 600, 600, ctx)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
cv = canvas.New(backend)
|
|
|
|
err = widget.RunWindow(s, sheet, &widget.RunWindowOptions{
|
|
NewWindowOptions: screen.NewWindowOptions{
|
|
Title: "Shiny Canvas Example",
|
|
Width: 600,
|
|
Height: 600,
|
|
},
|
|
})
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
})
|
|
}
|
|
|
|
func draw(w *glwidget.GL) {
|
|
cv.Save()
|
|
defer cv.Restore()
|
|
|
|
cv.Translate(0, 600)
|
|
cv.Scale(1, -1)
|
|
|
|
cv.ClearRect(0, 0, 600, 600)
|
|
cv.SetFillStyle("#FF00FF")
|
|
cv.FillRect(100, 100, 200, 200)
|
|
|
|
w.Publish()
|
|
w.Mark(node.MarkNeedsPaintBase)
|
|
}
|