mirror of
https://github.com/Fluffy-Bean/ColouringApp.git
synced 2025-05-19 01:44:55 +00:00
Cleaning cleaning cleaning
This commit is contained in:
parent
105785e6c0
commit
d0ebc1ee54
4 changed files with 159 additions and 143 deletions
86
canvas.go
Normal file
86
canvas.go
Normal file
|
@ -0,0 +1,86 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
raylib "github.com/gen2brain/raylib-go/raylib"
|
||||
)
|
||||
|
||||
type Canvas struct {
|
||||
Name string
|
||||
Size raylib.Vector2
|
||||
Offset raylib.Vector2
|
||||
Target raylib.RenderTexture2D
|
||||
Strokes []penTool
|
||||
UndoneStrokes []penTool
|
||||
Refresh bool
|
||||
}
|
||||
|
||||
func (c *Canvas) Update() {
|
||||
if c.Refresh {
|
||||
raylib.BeginTextureMode(c.Target)
|
||||
raylib.ClearBackground(raylib.White)
|
||||
for _, mark := range c.Strokes {
|
||||
mark.Draw(raylib.Vector2Scale(c.Offset, -1))
|
||||
}
|
||||
raylib.EndTextureMode()
|
||||
|
||||
c.Refresh = false
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Canvas) Undo() {
|
||||
if len(c.Strokes) > 0 {
|
||||
c.UndoneStrokes = append(c.UndoneStrokes, c.Strokes[len(c.Strokes)-1])
|
||||
c.Strokes = c.Strokes[:len(c.Strokes)-1]
|
||||
c.Refresh = true
|
||||
|
||||
AddToast("Undo")
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Canvas) Redo() {
|
||||
if len(c.UndoneStrokes) > 0 {
|
||||
c.Strokes = append(c.Strokes, c.UndoneStrokes[len(c.UndoneStrokes)-1])
|
||||
c.UndoneStrokes = c.UndoneStrokes[:len(c.UndoneStrokes)-1]
|
||||
c.Refresh = true
|
||||
|
||||
AddToast("Redo")
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Canvas) Draw() {
|
||||
raylib.DrawTexturePro(
|
||||
c.Target.Texture,
|
||||
raylib.NewRectangle(0, 0, c.Size.X, -c.Size.Y),
|
||||
raylib.NewRectangle(c.Offset.X, c.Offset.Y, c.Size.X, c.Size.Y),
|
||||
raylib.Vector2Zero(),
|
||||
0,
|
||||
raylib.White,
|
||||
)
|
||||
}
|
||||
|
||||
func (c *Canvas) Save() {
|
||||
if c.Name == "" {
|
||||
AddToast("Please enter a file name!")
|
||||
} else {
|
||||
image := raylib.LoadImageFromTexture(c.Target.Texture)
|
||||
|
||||
raylib.ImageRotate(image, 180)
|
||||
raylib.ImageFlipHorizontal(image)
|
||||
|
||||
raylib.ExportImage(*image, DirUserData+c.Name+".png")
|
||||
|
||||
AddToast("Drawing saved as " + c.Name + ".png")
|
||||
}
|
||||
}
|
||||
|
||||
func NewCanvas(name string, size, offset raylib.Vector2) *Canvas {
|
||||
return &Canvas{
|
||||
Name: name,
|
||||
Size: size,
|
||||
Offset: offset,
|
||||
Target: raylib.LoadRenderTexture(int32(size.X), int32(size.Y)),
|
||||
Strokes: []penTool{},
|
||||
UndoneStrokes: []penTool{},
|
||||
Refresh: true,
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue