Strict
Import mojo2
Class myClass Extends App
Field canvas:Canvas
Field blend:Int=0
Field mask_img:Image, pic_img:Image
Field dest_img:Image,dest_cnvs:Canvas
Method OnCreate:Int()
mask_img = Image.Load("mask.png")
pic_img = Image.Load("pic.png")
dest_img = New Image(200,200)
dest_cnvs = New Canvas(dest_img)
SetUpdateRate(60)
canvas = New Canvas
Return 0
End
Method OnUpdate:Int()
If KeyHit(KEY_SPACE) Or MouseHit(MOUSE_LEFT) Then blend=(blend+1) Mod 16
Return 0
End
Method OnRender:Int()
dest_cnvs.Clear(0,0,0,0)
If blend<8
dest_cnvs.SetBlendMode BlendMode.Alpha
dest_cnvs.DrawImage mask_img,100,100
dest_cnvs.SetBlendMode blend
dest_cnvs.DrawImage pic_img,100,100
Else
dest_cnvs.SetBlendMode BlendMode.Alpha
dest_cnvs.DrawImage pic_img,100,100
dest_cnvs.SetBlendMode blend-8
dest_cnvs.DrawImage mask_img,100,100
End
dest_cnvs.Flush()
canvas.Clear (0,0.5,0)
canvas.SetBlendMode BlendMode.Alpha
If blend<8
canvas.DrawText "BlendMode."+blendmode(blend),0,0
canvas.DrawImage mask_img,100,200
canvas.DrawImage pic_img,300,200
canvas.DrawImage dest_img,500,200
Else
canvas.DrawText "BlendMode."+blendmode(blend-8),0,0
canvas.DrawImage pic_img,100,200
canvas.DrawImage mask_img,300,200
canvas.DrawImage dest_img,500,200
End
canvas.DrawText "+",200,200
canvas.DrawText "=",400,200
canvas.Flush
Return 0
End
Method blendmode:String(mode:Int)
Select mode
Case 0
Return "Opaque"
Case 1
Return "Alpha"
Case 2
Return "Additive"
Case 3
Return "Multiply"
Case 4
Return "Multiply2"
Case 5
Return "Alpha2"
Case 6
Return "Opaque2"
Case 7
Return "AlphaStamp"
End
Return "no blend mode"
End
End
Function Main:Int()
New myClass
Return 0
End