Difference between revisions of "love.graphics.setStencil"

(Newin 0.8.0.)
(Examples don't help if they're wrong. :/)
Line 25: Line 25:
 
Releases the active mask.
 
Releases the active mask.
 
== Examples ==
 
== Examples ==
 +
=== Drawing circles masked by a rectangle ===
 +
<source lang="lua">
 +
myMaskFunction = function()
 +
  love.graphics.rectangle("fill", 225, 200, 350, 300)
 +
end
 +
 +
myMask = love.graphics.newMask(myMaskFunction)
 +
 +
love.graphics.setMask(myMask)
 +
 +
love.graphics.setColor(255, 0, 0, 120)
 +
love.graphics.circle("fill", 300, 300, 150, 50)
 +
love.graphics.setColor(0, 255, 0, 120)
 +
love.graphics.circle("fill", 500, 300, 150, 50)
 +
love.graphics.setColor(0, 0, 255, 120)
 +
love.graphics.circle("fill", 400, 400, 150, 50)
 +
</source>
 
=== Drawing a circle with a hole ===
 
=== Drawing a circle with a hole ===
 
<source lang="lua">
 
<source lang="lua">
myMask = function()
+
myMaskFunction = function()
 
   love.graphics.circle("fill", 400, 300, 50)
 
   love.graphics.circle("fill", 400, 300, 50)
 
end
 
end
  
love.graphics.setMask(myMask)
+
myMask = love.graphics.newMask(myMaskFunction)
 +
 
 +
love.graphics.setInvertedMask(myMask)
 
love.graphics.circle("fill", 400, 300, 150)
 
love.graphics.circle("fill", 400, 300, 150)
 
</source>
 
</source>
 
=== Drawing two masked triangles with different colors ===
 
=== Drawing two masked triangles with different colors ===
 
<source lang="lua">
 
<source lang="lua">
myMask = function()
+
myMaskFunction = function()
 
   love.graphics.circle("fill", 400, 300, 60, 25)
 
   love.graphics.circle("fill", 400, 300, 60, 25)
 
end
 
end
 +
 +
myMask = love.graphics.newMask(myMaskFunction)
  
 
love.graphics.setMask(myMask)
 
love.graphics.setMask(myMask)
Line 51: Line 72:
 
== See Also ==
 
== See Also ==
 
* [[parent::love.graphics]]
 
* [[parent::love.graphics]]
 +
* [[parent::love.graphics.newMask]]
 
* [[parent::love.graphics.setInvertedMask]]
 
* [[parent::love.graphics.setInvertedMask]]
 
[[Category:Functions]]
 
[[Category:Functions]]

Revision as of 11:54, 10 August 2011

Available since LÖVE 0.8.0
This function is not supported in earlier versions.

Defines or releases a mask for the drawing operations.

The passed function draws to the mask instead of the screen, creating an image with transparent and opaque pixel. While active, it is used to test where pixel will be drawn or discarded.
Calling the function without arguments releases the active mask.

Function

Synopsis

love.graphics.setMask( maskFunction )

Arguments

function maskFunction
Function that draws to the mask.

Returns

Nothing.

Function

Synopsis

love.graphics.setMask( )

Arguments

None.

Returns

Nothing.

Notes

Releases the active mask.

Examples

Drawing circles masked by a rectangle

myMaskFunction = function()
   love.graphics.rectangle("fill", 225, 200, 350, 300)
end

myMask = love.graphics.newMask(myMaskFunction)

love.graphics.setMask(myMask)

love.graphics.setColor(255, 0, 0, 120)
love.graphics.circle("fill", 300, 300, 150, 50)
love.graphics.setColor(0, 255, 0, 120)
love.graphics.circle("fill", 500, 300, 150, 50)
love.graphics.setColor(0, 0, 255, 120)
love.graphics.circle("fill", 400, 400, 150, 50)

Drawing a circle with a hole

myMaskFunction = function()
   love.graphics.circle("fill", 400, 300, 50)
end

myMask = love.graphics.newMask(myMaskFunction)

love.graphics.setInvertedMask(myMask)
love.graphics.circle("fill", 400, 300, 150)

Drawing two masked triangles with different colors

myMaskFunction = function()
   love.graphics.circle("fill", 400, 300, 60, 25)
end

myMask = love.graphics.newMask(myMaskFunction)

love.graphics.setMask(myMask)
love.graphics.setColor(155, 0, 128)
love.graphics.triangle("fill", 400, 200, 486, 350, 314, 350)


love.graphics.setInvertedMask(myMask)
love.graphics.setColor(144, 214, 128)
love.graphics.triangle("fill", 400, 200, 486, 350, 314, 350)

See Also


Other Languages