Delete compose.go
This commit is contained in:
parent
402e0520bd
commit
80d4f96be1
65
compose.go
65
compose.go
|
@ -1,65 +0,0 @@
|
||||||
package pixel
|
|
||||||
|
|
||||||
import "errors"
|
|
||||||
|
|
||||||
// ComposeTarget is a BasicTarget capable of Porter-Duff composition.
|
|
||||||
type ComposeTarget interface {
|
|
||||||
BasicTarget
|
|
||||||
|
|
||||||
// SetComposeMethod sets a Porter-Duff composition method to be used.
|
|
||||||
SetComposeMethod(ComposeMethod)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ComposeMethod is a Porter-Duff composition method.
|
|
||||||
type ComposeMethod int
|
|
||||||
|
|
||||||
// Here's the list of all available Porter-Duff composition methods. Use ComposeOver for the basic
|
|
||||||
// alpha blending.
|
|
||||||
const (
|
|
||||||
ComposeOver ComposeMethod = iota
|
|
||||||
ComposeIn
|
|
||||||
ComposeOut
|
|
||||||
ComposeAtop
|
|
||||||
ComposeRover
|
|
||||||
ComposeRin
|
|
||||||
ComposeRout
|
|
||||||
ComposeRatop
|
|
||||||
ComposeXor
|
|
||||||
ComposePlus
|
|
||||||
ComposeCopy
|
|
||||||
)
|
|
||||||
|
|
||||||
// Compose composes two colors together according to the ComposeMethod. A is the foreground, B is
|
|
||||||
// the background.
|
|
||||||
func (cm ComposeMethod) Compose(a, b RGBA) RGBA {
|
|
||||||
var fa, fb float64
|
|
||||||
|
|
||||||
switch cm {
|
|
||||||
case ComposeOver:
|
|
||||||
fa, fb = 1, 1-a.A
|
|
||||||
case ComposeIn:
|
|
||||||
fa, fb = b.A, 0
|
|
||||||
case ComposeOut:
|
|
||||||
fa, fb = 1-b.A, 0
|
|
||||||
case ComposeAtop:
|
|
||||||
fa, fb = b.A, 1-a.A
|
|
||||||
case ComposeRover:
|
|
||||||
fa, fb = 1-b.A, 1
|
|
||||||
case ComposeRin:
|
|
||||||
fa, fb = 0, a.A
|
|
||||||
case ComposeRout:
|
|
||||||
fa, fb = 0, 1-a.A
|
|
||||||
case ComposeRatop:
|
|
||||||
fa, fb = 1-b.A, a.A
|
|
||||||
case ComposeXor:
|
|
||||||
fa, fb = 1-b.A, 1-a.A
|
|
||||||
case ComposePlus:
|
|
||||||
fa, fb = 1, 1
|
|
||||||
case ComposeCopy:
|
|
||||||
fa, fb = 1, 0
|
|
||||||
default:
|
|
||||||
panic(errors.New("Compose: invalid ComposeMethod"))
|
|
||||||
}
|
|
||||||
|
|
||||||
return a.Mul(Alpha(fa)).Add(b.Mul(Alpha(fb)))
|
|
||||||
}
|
|
Loading…
Reference in New Issue