From c6fc5ab865761f885f65f4bc7777ccc5f7f3ea9a Mon Sep 17 00:00:00 2001 From: Hajime Hoshi Date: Tue, 1 Mar 2016 02:16:32 +0900 Subject: [PATCH] graphics: CompositionMode -> CompositeMode (#170) --- examples/composition/main.go | 4 +- examples/masking/main.go | 2 +- graphics.go | 28 +++++----- image.go | 10 ++-- image_test.go | 4 +- internal/graphics/draw.go | 2 +- internal/graphics/framebuffer.go | 2 +- internal/graphics/opengl/context_desktop.go | 16 +++--- internal/graphics/opengl/context_js.go | 20 +++---- internal/graphics/opengl/types.go | 58 ++++++++++----------- 10 files changed, 73 insertions(+), 73 deletions(-) diff --git a/examples/composition/main.go b/examples/composition/main.go index 5fba974d5..23eb389b3 100644 --- a/examples/composition/main.go +++ b/examples/composition/main.go @@ -43,7 +43,7 @@ func update(screen *ebiten.Image) error { screen.DrawImage(ebitenImage, op) op = &ebiten.DrawImageOptions{} op.GeoM.Translate(ox+float64(w), oy) - op.CompositionMode = ebiten.CompositionModeLighter + op.CompositeMode = ebiten.CompositeModeLighter screen.DrawImage(ebitenImage, op) return nil } @@ -54,7 +54,7 @@ func main() { if err != nil { log.Fatal(err) } - if err := ebiten.Run(update, screenWidth, screenHeight, 2, "Composition Mode (Ebiten Demo)"); err != nil { + if err := ebiten.Run(update, screenWidth, screenHeight, 2, "Composite Mode (Ebiten Demo)"); err != nil { log.Fatal(err) } } diff --git a/examples/masking/main.go b/examples/masking/main.go index 2789ed676..5654735db 100644 --- a/examples/masking/main.go +++ b/examples/masking/main.go @@ -74,7 +74,7 @@ func update(screen *ebiten.Image) error { } op = &ebiten.DrawImageOptions{} - op.CompositionMode = ebiten.CompositionModeSourceOut + op.CompositeMode = ebiten.CompositeModeSourceOut if err := maskImage.DrawImage(fiveyearsImage, op); err != nil { return err } diff --git a/graphics.go b/graphics.go index 81aa058b4..0502128e7 100644 --- a/graphics.go +++ b/graphics.go @@ -36,22 +36,22 @@ func glFilter(c *opengl.Context, filter Filter) opengl.Filter { panic("not reach") } -// CompositionMode represents Porter-Duff composition mode. -type CompositionMode int +// CompositeMode represents Porter-Duff composition mode. +type CompositeMode int // Note: This name convention follow CSS compositing: https://drafts.fxtf.org/compositing-2/ const ( - CompositionModeSourceOver CompositionMode = CompositionMode(opengl.CompositionModeSourceOver) // regular alpha blending - CompositionModeClear = CompositionMode(opengl.CompositionModeClear) - CompositionModeCopy = CompositionMode(opengl.CompositionModeCopy) - CompositionModeDestination = CompositionMode(opengl.CompositionModeDestination) - CompositionModeSourceIn = CompositionMode(opengl.CompositionModeSourceIn) - CompositionModeDestinationIn = CompositionMode(opengl.CompositionModeDestinationIn) - CompositionModeSourceOut = CompositionMode(opengl.CompositionModeSourceOut) - CompositionModeDestinationOut = CompositionMode(opengl.CompositionModeDestinationOut) - CompositionModeSourceAtop = CompositionMode(opengl.CompositionModeSourceAtop) - CompositionModeDestinationAtop = CompositionMode(opengl.CompositionModeDestinationAtop) - CompositionModeXor = CompositionMode(opengl.CompositionModeXor) - CompositionModeLighter = CompositionMode(opengl.CompositionModeLighter) // sum of source and destination (a.k.a. 'plus' or 'additive') + CompositeModeSourceOver CompositeMode = CompositeMode(opengl.CompositeModeSourceOver) // regular alpha blending + CompositeModeClear = CompositeMode(opengl.CompositeModeClear) + CompositeModeCopy = CompositeMode(opengl.CompositeModeCopy) + CompositeModeDestination = CompositeMode(opengl.CompositeModeDestination) + CompositeModeSourceIn = CompositeMode(opengl.CompositeModeSourceIn) + CompositeModeDestinationIn = CompositeMode(opengl.CompositeModeDestinationIn) + CompositeModeSourceOut = CompositeMode(opengl.CompositeModeSourceOut) + CompositeModeDestinationOut = CompositeMode(opengl.CompositeModeDestinationOut) + CompositeModeSourceAtop = CompositeMode(opengl.CompositeModeSourceAtop) + CompositeModeDestinationAtop = CompositeMode(opengl.CompositeModeDestinationAtop) + CompositeModeXor = CompositeMode(opengl.CompositeModeXor) + CompositeModeLighter = CompositeMode(opengl.CompositeModeLighter) // sum of source and destination (a.k.a. 'plus' or 'additive') ) diff --git a/image.go b/image.go index 58dcb7fbf..417d32e2c 100644 --- a/image.go +++ b/image.go @@ -99,7 +99,7 @@ func (i *Image) DrawImage(image *Image, options *DrawImageOptions) (err error) { } w, h := image.Size() quads := &textureQuads{parts: parts, width: w, height: h} - m := opengl.CompositionMode(options.CompositionMode) + m := opengl.CompositeMode(options.CompositeMode) return i.framebuffer.DrawTexture(glContext, image.texture, quads, &options.GeoM, &options.ColorM, m) } @@ -184,10 +184,10 @@ func (i *Image) ReplacePixels(p []uint8) error { // A DrawImageOptions represents options to render an image on an image. type DrawImageOptions struct { - ImageParts ImageParts - GeoM GeoM - ColorM ColorM - CompositionMode CompositionMode + ImageParts ImageParts + GeoM GeoM + ColorM ColorM + CompositeMode CompositeMode // Deprecated (as of 1.1.0-alpha): Use ImageParts instead. Parts []ImagePart diff --git a/image_test.go b/image_test.go index bba260211..27496c2df 100644 --- a/image_test.go +++ b/image_test.go @@ -246,7 +246,7 @@ func min(a, b int) int { return b } -func TestImageCompositionModeLighter(t *testing.T) { +func TestImageCompositeModeLighter(t *testing.T) { img0, _, err := openEbitenImage("testdata/ebiten.png") if err != nil { t.Fatal(err) @@ -261,7 +261,7 @@ func TestImageCompositionModeLighter(t *testing.T) { } img1.Fill(color.RGBA{0x01, 0x02, 0x03, 0x04}) op := &DrawImageOptions{} - op.CompositionMode = CompositionModeLighter + op.CompositeMode = CompositeModeLighter img1.DrawImage(img0, op) for j := 0; j < img1.Bounds().Size().Y; j++ { for i := 0; i < img1.Bounds().Size().X; i++ { diff --git a/internal/graphics/draw.go b/internal/graphics/draw.go index aa4542e1a..6744574c5 100644 --- a/internal/graphics/draw.go +++ b/internal/graphics/draw.go @@ -37,7 +37,7 @@ var vertices = make([]int16, 16*quadsMaxNum) var shadersInitialized = false -func drawTexture(c *opengl.Context, texture opengl.Texture, projectionMatrix *[4][4]float64, quads TextureQuads, geo Matrix, color Matrix, mode opengl.CompositionMode) error { +func drawTexture(c *opengl.Context, texture opengl.Texture, projectionMatrix *[4][4]float64, quads TextureQuads, geo Matrix, color Matrix, mode opengl.CompositeMode) error { c.BlendFunc(mode) // NOTE: WebGL doesn't seem to have Check gl.MAX_ELEMENTS_VERTICES or gl.MAX_ELEMENTS_INDICES so far. diff --git a/internal/graphics/framebuffer.go b/internal/graphics/framebuffer.go index 6950a2665..c349fb280 100644 --- a/internal/graphics/framebuffer.go +++ b/internal/graphics/framebuffer.go @@ -116,7 +116,7 @@ func (f *Framebuffer) Fill(c *opengl.Context, clr color.Color) error { return c.FillFramebuffer(r, g, b, a) } -func (f *Framebuffer) DrawTexture(c *opengl.Context, t *Texture, quads TextureQuads, geo, clr Matrix, mode opengl.CompositionMode) error { +func (f *Framebuffer) DrawTexture(c *opengl.Context, t *Texture, quads TextureQuads, geo, clr Matrix, mode opengl.CompositeMode) error { if err := f.setAsViewport(c); err != nil { return err } diff --git a/internal/graphics/opengl/context_desktop.go b/internal/graphics/opengl/context_desktop.go index f4aad11dc..ba6c74f24 100644 --- a/internal/graphics/opengl/context_desktop.go +++ b/internal/graphics/opengl/context_desktop.go @@ -47,9 +47,9 @@ func (p Program) id() programID { } type context struct { - locationCache *locationCache - funcs chan func() - lastCompositionMode CompositionMode + locationCache *locationCache + funcs chan func() + lastCompositeMode CompositeMode } func NewContext() *Context { @@ -73,7 +73,7 @@ func NewContext() *Context { } c.locationCache = newLocationCache() c.funcs = make(chan func()) - c.lastCompositionMode = CompositionModeUnknown + c.lastCompositeMode = CompositeModeUnknown return c } @@ -107,15 +107,15 @@ func (c *Context) Init() { // Textures' pixel formats are alpha premultiplied. gl.Enable(gl.BLEND) }) - c.BlendFunc(CompositionModeSourceOver) + c.BlendFunc(CompositeModeSourceOver) } -func (c *Context) BlendFunc(mode CompositionMode) { +func (c *Context) BlendFunc(mode CompositeMode) { c.RunOnContextThread(func() { - if c.lastCompositionMode == mode { + if c.lastCompositeMode == mode { return } - c.lastCompositionMode = mode + c.lastCompositeMode = mode s, d := c.operations(mode) gl.BlendFunc(uint32(s), uint32(d)) }) diff --git a/internal/graphics/opengl/context_js.go b/internal/graphics/opengl/context_js.go index 6154b877a..29baa4377 100644 --- a/internal/graphics/opengl/context_js.go +++ b/internal/graphics/opengl/context_js.go @@ -63,11 +63,11 @@ func (p Program) id() programID { } type context struct { - gl *webgl.Context - lastFramebuffer Framebuffer - locationCache *locationCache - lastProgramID programID - lastCompositionMode CompositionMode + gl *webgl.Context + lastFramebuffer Framebuffer + locationCache *locationCache + lastProgramID programID + lastCompositeMode CompositeMode } func NewContext() *Context { @@ -115,7 +115,7 @@ func NewContext() *Context { } c.gl = gl c.locationCache = newLocationCache() - c.lastCompositionMode = CompositionModeUnknown + c.lastCompositeMode = CompositeModeUnknown c.init() return c } @@ -125,14 +125,14 @@ func (c *Context) init() { // Textures' pixel formats are alpha premultiplied. gl.Enable(gl.BLEND) //gl.BlendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA) - c.BlendFunc(CompositionModeSourceOver) + c.BlendFunc(CompositeModeSourceOver) } -func (c *Context) BlendFunc(mode CompositionMode) { - if c.lastCompositionMode == mode { +func (c *Context) BlendFunc(mode CompositeMode) { + if c.lastCompositeMode == mode { return } - c.lastCompositionMode = mode + c.lastCompositeMode = mode s, d := c.operations(mode) gl := c.gl gl.BlendFunc(int(s), int(d)) diff --git a/internal/graphics/opengl/types.go b/internal/graphics/opengl/types.go index d5fb7e9f8..858757a65 100644 --- a/internal/graphics/opengl/types.go +++ b/internal/graphics/opengl/types.go @@ -41,52 +41,52 @@ type Context struct { context } -type CompositionMode int +type CompositeMode int const ( - CompositionModeSourceOver CompositionMode = iota // This value must be 0 (= initial value) - CompositionModeClear - CompositionModeCopy - CompositionModeDestination - CompositionModeDestinationOver - CompositionModeSourceIn - CompositionModeDestinationIn - CompositionModeSourceOut - CompositionModeDestinationOut - CompositionModeSourceAtop - CompositionModeDestinationAtop - CompositionModeXor - CompositionModeLighter - CompositionModeUnknown + CompositeModeSourceOver CompositeMode = iota // This value must be 0 (= initial value) + CompositeModeClear + CompositeModeCopy + CompositeModeDestination + CompositeModeDestinationOver + CompositeModeSourceIn + CompositeModeDestinationIn + CompositeModeSourceOut + CompositeModeDestinationOut + CompositeModeSourceAtop + CompositeModeDestinationAtop + CompositeModeXor + CompositeModeLighter + CompositeModeUnknown ) -func (c *Context) operations(mode CompositionMode) (src operation, dst operation) { +func (c *Context) operations(mode CompositeMode) (src operation, dst operation) { switch mode { - case CompositionModeSourceOver: + case CompositeModeSourceOver: return c.one, c.oneMinusSrcAlpha - case CompositionModeClear: + case CompositeModeClear: return c.zero, c.zero - case CompositionModeCopy: + case CompositeModeCopy: return c.one, c.zero - case CompositionModeDestination: + case CompositeModeDestination: return c.zero, c.one - case CompositionModeDestinationOver: + case CompositeModeDestinationOver: return c.oneMinusDstAlpha, c.one - case CompositionModeSourceIn: + case CompositeModeSourceIn: return c.dstAlpha, c.zero - case CompositionModeDestinationIn: + case CompositeModeDestinationIn: return c.zero, c.srcAlpha - case CompositionModeSourceOut: + case CompositeModeSourceOut: return c.oneMinusDstAlpha, c.zero - case CompositionModeDestinationOut: + case CompositeModeDestinationOut: return c.zero, c.oneMinusSrcAlpha - case CompositionModeSourceAtop: + case CompositeModeSourceAtop: return c.dstAlpha, c.oneMinusSrcAlpha - case CompositionModeDestinationAtop: + case CompositeModeDestinationAtop: return c.oneMinusDstAlpha, c.srcAlpha - case CompositionModeXor: + case CompositeModeXor: return c.oneMinusDstAlpha, c.oneMinusSrcAlpha - case CompositionModeLighter: + case CompositeModeLighter: return c.one, c.one default: panic("not reach")