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