Example Code No.4:

#IFDEF __STORY_DEBUG__
Print "Story DevKit v6.2.1 Core / Gfx Manip / Buffer Alpha"
Flip : WaitKey ( )
#ENDIF

Declare Sub Gfx_Buffer_Alpha ( ByRef Dest As FB.Image Ptr, A As Long = 0 )

Sub Gfx_Buffer_Alpha ( ByRef Dest As FB.Image Ptr, A As Long = 0 )

	Dim As FB.Image Ptr Source = ImageCreate( Dest -> Width, Dest-> Height, RGBA ( 0, 0, 0, 0 ), 32 )
	
	Swap Dest, Source

	Dim AS Double LevelsR = 0.43, LevelsG = 0.53, LevelsB = 0.33,LevelsTotal = 1.0, aA = 1.0
	
	aA = A / 255.0
	
	LevelsTotal = LevelsR + LevelsG + LevelsB
	
	LevelsR = LevelsR * LevelsTotal / 3.0
	LevelsG = LevelsG * LevelsTotal / 3.0
	LevelsB = LevelsB * LevelsTotal / 3.0
	
	LevelsTotal = 1.0
	
	If Dest = 0 Then Exit Sub

	Dim As Long pX = 0, pY = 0, pC = 0, pA = 0
	
	Dim As Double pAC = 0.0
	Dim As Long pAC2 = 0
	
	For pY = 0 To Dest -> Height - 1 Step 1
	For pX = 0 To Dest -> Width - 1 Step 1
		
		pC = Point( pX, pY, Source )
		
		pAC = ( RGBAr( pC ) * LevelsR + RGBAg( pC ) * LevelsG + RGBAb( pC ) * LevelsB )
		
		pAC2 = RGBA ( RGBAr( pC ) * pAC, RGBAg( pC ) * pAC, RGBAb( pC ) * pAC, pA )
		
		If RGBAa( pC ) <> 0 Then

			PSet Dest, ( pX, pY ), RGBA( pAC, pAC, pAC, pAC2 )
		
		End If
		
	Next pX
	Next pY
	
	Source = ImageDestroy2 ( Source )
	
End Sub