automated snapshot
This commit is contained in:
52
sketch.go
52
sketch.go
@@ -6,14 +6,20 @@ import (
|
||||
)
|
||||
|
||||
type Sketch struct {
|
||||
sourceWidth int32
|
||||
sourceHeight int32
|
||||
layerTools map[string]LayerTools
|
||||
layerToolsOrdered []LayerTools
|
||||
composite rl.RenderTexture2D
|
||||
}
|
||||
|
||||
func NewSketch() Sketch {
|
||||
return Sketch{
|
||||
func NewSketch(sourceWidth, sourceHeight int32) Sketch {
|
||||
return Sketch {
|
||||
sourceWidth: sourceWidth,
|
||||
sourceHeight: sourceHeight,
|
||||
layerTools: make(map[string]LayerTools),
|
||||
layerToolsOrdered: []LayerTools {},
|
||||
composite: rl.LoadRenderTexture(sourceWidth, sourceHeight),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,12 +55,28 @@ func (s *Sketch) Draw(ctx *RenderCtx) {
|
||||
Height: float32(ctx.TargetHeight),
|
||||
}
|
||||
|
||||
viewport := s.CalcViewport(ctx)
|
||||
|
||||
for _, instance := range s.layerToolsOrdered {
|
||||
rl.DrawTexturePro(instance.texture.Texture, viewport, screen, rl.Vector2{}, 0, rl.White)
|
||||
// copy from full texture for compositing, with vertical flipping
|
||||
src := rl.Rectangle {
|
||||
X: 0, Y: 0,
|
||||
Width: float32(ctx.SourceWidth),
|
||||
Height: -float32(ctx.SourceHeight),
|
||||
}
|
||||
dst := rl.Rectangle {
|
||||
X: 0, Y: 0,
|
||||
Width: float32(ctx.SourceWidth),
|
||||
Height: float32(ctx.SourceHeight),
|
||||
}
|
||||
|
||||
viewport := s.CalcViewport(ctx)
|
||||
|
||||
rl.BeginTextureMode(s.composite)
|
||||
rl.ClearBackground(rl.Black)
|
||||
for _, instance := range s.layerToolsOrdered {
|
||||
rl.DrawTexturePro(instance.texture.Texture, src, dst, rl.Vector2{}, 0, rl.White)
|
||||
}
|
||||
rl.EndTextureMode()
|
||||
|
||||
rl.DrawTexturePro(s.composite.Texture, viewport, screen, rl.Vector2{}, 0, rl.White)
|
||||
}
|
||||
|
||||
func (s *Sketch) CalcViewport(ctx *RenderCtx) rl.Rectangle {
|
||||
@@ -98,6 +120,24 @@ func (s *Sketch) Update(ctx *RenderCtx) {
|
||||
|
||||
}
|
||||
|
||||
type SketchCapture struct {
|
||||
compositeImage *rl.Image
|
||||
layerImages []*rl.Image
|
||||
}
|
||||
|
||||
func (s *Sketch) Capture() *SketchCapture {
|
||||
composite := rl.LoadImageFromTexture(s.composite.Texture)
|
||||
layerImages := make([]*rl.Image, len(s.layerToolsOrdered))
|
||||
for i, layerTool := range s.layerToolsOrdered {
|
||||
layerImages[i] = rl.LoadImageFromTexture(layerTool.texture.Texture)
|
||||
}
|
||||
return &SketchCapture {
|
||||
compositeImage: composite,
|
||||
layerImages: layerImages,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
type LayerTools struct {
|
||||
name string
|
||||
layer Layer
|
||||
|
||||
Reference in New Issue
Block a user