Is it possible for next release of hollywood to make a similar function of my function p_EraseBrushAlpha() (see my script)
currently is it too slow if I use my function
Thank you
Code: Select all
BeginDoubleBuffer(True)
/********************************************************************************************************************/
; Brush 0
SizeDamier = 5
Color1 = "$5D5D5D"
Color2 = "$3D3D3D"
SetFillStyle(#FILLCOLOR)
Damier=CreateBrush(NIL,SizeDamier*2,SizeDamier*2)
SelectBrush(Damier)
BOX(0,0,SizeDamier,SizeDamier,Color1)
BOX(SizeDamier,0,SizeDamier,SizeDamier,Color2)
BOX(0,SizeDamier,SizeDamier,SizeDamier,Color2)
BOX(SizeDamier,SizeDamier,SizeDamier,SizeDamier,Color1)
EndSelect
Background=CreateBrush(NIL,640,480)
SelectBrush(Background)
SetFillStyle(#FILLTEXTURE,Damier)
BOX(0,0,640,480)
EndSelect
; Brush 1
BackBrush=Createbrush(NIL,300,300,#RED,{AlphaChannel=True})
SelectBrush(BackBrush)
SetFont(#SANS,20)
SetFontColor(#BLACK)
SetFontStyle(#ANTIALIAS)
TextOut(#CENTER,#CENTER,"Function\n [b]p_EraseBrushAlpha()[/b]\n for erase with all alpha at the same time",{align=#CENTER})
EndSelect
BackBrushW$=GetAttribute(#BRUSH,BackBrush,#ATTRWIDTH) ; Width brush
BackBrushH$=GetAttribute(#BRUSH,BackBrush,#ATTRHEIGHT) ; Height brush
; Brush 2
MouseBrush=Createbrush(NIL,50,50,#BLACK,{AlphaChannel=True, Clear=True})
SelectBrush(MouseBrush,#SELMODE_COMBO,2)
SetFormStyle(#ANTIALIAS)
SetFillStyle(#FILLCOLOR)
Circle(#CENTER,#CENTER,10,#BLUE)
EndSelect
BlurBrush(MouseBrush,15)
TrimBrush(MouseBrush)
MouseBrushW$=GetAttribute(#BRUSH,MouseBrush,#ATTRWIDTH) ; Width brush
MouseBrushH$=GetAttribute(#BRUSH,MouseBrush,#ATTRHEIGHT) ; Height brush
/********************************************************************************************************************/
Function p_EraseBrushAlpha(Bsh,PosX,PosY)
ArrayBrush=BrushToRGBArray(Bsh,1)
For Local Y=0 TO MouseBrushH$-1
Local OffsetY=Y*MouseBrushW$
IF (PosY+Y>=0)&(PosY+Y<BackBrushH$)
For Local X=0 TO MouseBrushW$-1
Local tempAlpha = (ArrayBrush[X+OffsetY]>>24)
Local A, BrushAlphaDest=ReadBrushPixel(BackBrush,PosX+X,PosY+Y)
IF (PosX+X>=0)&(PosX+X<BackBrushW$)
FinalAlpha=((tempAlpha)*BrushAlphaDest)>>8
SetAlphaIntensity(FinalAlpha)
Plot(PosX+X,PosY+Y, #BLACK)
EndIF
NEXT
EndIF
NEXT
EndFunction
/********************************************************************************************************************/
Function p_Move(msg)
Cls()
SelectAlphaChannel(BackBrush)
p_EraseBrushAlpha(MouseBrush, MouseX()-(MouseBrushW$>>1)-150, MouseY()-(MouseBrushH$>>1)-50)
EndSelect
DisplayBrush(Background,0,0)
DisplayBrush(BackBrush,150,50)
Flip()
Endfunction
IntervalDessin=SetInterval(NIL, p_Move, 1000/100) ; 100fps
/********************************************************************************************************************/
EscapeQuit(True)
/* Boucle infinie */
Repeat
WaitEvent
Forever