Code archives/Graphics/Blender
The code archive is locked. These are the original blitzbasic.com code archives, kept so they can still be read. No new entries, edits or comments can be made here. To join in, head over to the Blitz3D+ code archives.
This code has not been declared by its author to be Public Domain code, and therefore should not be assumed to be so.
Download source code
| 3 different codes for blending/fading! its fast - but use it inside a buffer Warning: dont use FLIP - The functions do all what you need... -BlackBlender (for black backgrounds) -WhiteBlender (for white backgrounds) -GrayBlender (converts color-gray) mode=(0 or 1 = fade in/out) time=time in msec WWW.BLITZBASE.DE |
;Example GRAPHICS 640,480,0,1 b1=LOADIMAGE("1.bmp") b2=LOADIMAGE("2.bmp") b3=LOADIMAGE("3.bmp") BlackBlender b1,170,190,0,3000 DELAY 1000 BlackBlender b1,170,190,1,1500 BlackBlender b2,170,190,0,3000 DELAY 1000 BlackBlender b2,170,190,1,1500 BlackBlender b3,170,190,0,3000 WAITKEY() BlackBlender b3,170,190,1,1500 END ;------------------------------------------------- FUNCTION BlackBlender(Image, X, Y, Mode, Time) Source=IMAGEBUFFER(Image) Dest=FRONTBUFFER() MaxX=IMAGEWIDTH(Image)-1 MaxY=IMAGEHEIGHT(Image)-1 Start=MILLISECS() LOCKBUFFER Source LOCKBUFFER Dest WHILE MILLISECS()-Start<Time Count=(Count+1) MOD 4 IF Count=0 THEN MinX=0: MinY=0 IF Count=1 THEN MinX=1: MinY=1 IF Count=2 THEN MinX=1: MinY=0 IF Count=3 THEN MinX=0: MinY=1 IF Mode=0 THEN Value=MILLISECS()-Start IF Mode=1 THEN Value=Time-MILLISECS()+Start FOR ii=MinY TO MaxY STEP 2 FOR i=MinX TO MaxX STEP 2 rgb=READPIXELFAST(i,ii,Source) r=(rgb AND $FF0000)/$10000 g=(rgb AND $FF00)/$100 b=rgb AND $FF rgb=r*Value/Time*65536 + g*Value/Time*256 + b*Value/Time WRITEPIXELFAST X+i,Y+ii,rgb,Dest NEXT NEXT WEND UNLOCKBUFFER Source UNLOCKBUFFER Dest IF Mode=0 THEN DRAWBLOCK Image,X,Y IF Mode=1 THEN COLOR 0,0,0: RECT X,Y,MaxX+1,MaxY+1 END FUNCTION ;------------------------------------------------- FUNCTION WhiteBlender(Image, X, Y, Mode, Time) Source=IMAGEBUFFER(Image) Dest=FRONTBUFFER() MaxX=IMAGEWIDTH(Image)-1 MaxY=IMAGEHEIGHT(Image)-1 Start=MILLISECS() LOCKBUFFER Source LOCKBUFFER Dest WHILE MILLISECS()-Start<Time Count=(Count+1) MOD 4 IF Count=0 THEN MinX=0: MinY=0 IF Count=1 THEN MinX=1: MinY=1 IF Count=2 THEN MinX=1: MinY=0 IF Count=3 THEN MinX=0: MinY=1 IF Mode=0 THEN Value=Time-MILLISECS()+Start IF Mode=1 THEN Value=MILLISECS()-Start FOR ii=MinY TO MaxY STEP 2 FOR i=MinX TO MaxX STEP 2 rgb=READPIXELFAST(i,ii,Source) r=(rgb AND $FF0000)/$10000 g=(rgb AND $FF00)/$100 b=rgb AND $FF m=(r+g+b)/3 rgb=((255-r)*Value/Time+r)*65536 + ((255-g)*Value/Time+g)*256 + ((255-b)*Value/Time+b) WRITEPIXELFAST X+i,Y+ii,rgb,Dest NEXT NEXT WEND UNLOCKBUFFER Source UNLOCKBUFFER Dest IF Mode=0 THEN DRAWBLOCK Image,X,Y IF Mode=1 THEN COLOR 255,255,255: RECT X,Y,MaxX+1,MaxY+1 END FUNCTION ;------------------------------------------------- FUNCTION GrayBlender(Image, X, Y, Mode, Time) Source=IMAGEBUFFER(Image) Dest=FRONTBUFFER() MaxX=IMAGEWIDTH(Image)-1 MaxY=IMAGEHEIGHT(Image)-1 Start=MILLISECS() LOCKBUFFER Source LOCKBUFFER Dest WHILE MILLISECS()-Start<Time Count=(Count+1) MOD 4 IF Count=0 THEN MinX=0: MinY=0 IF Count=1 THEN MinX=1: MinY=1 IF Count=2 THEN MinX=1: MinY=0 IF Count=3 THEN MinX=0: MinY=1 IF Mode=0 THEN Value=Time-MILLISECS()+Start IF Mode=1 THEN Value=MILLISECS()-Start FOR ii=MinY TO MaxY STEP 2 FOR i=MinX TO MaxX STEP 2 rgb=READPIXELFAST(i,ii,Source) r=(rgb AND $FF0000)/$10000 g=(rgb AND $FF00)/$100 b=rgb AND $FF m=(r+g+b)/3 rgb=((m-r)*Value/Time+r)*65536 + ((m-g)*Value/Time+g)*256 + ((m-b)*Value/Time+b) WRITEPIXELFAST X+i,Y+ii,rgb,Dest NEXT NEXT WEND UNLOCKBUFFER Source UNLOCKBUFFER Dest IF Mode=0 THEN DRAWBLOCK Image,X,Y END FUNCTION |
Comments
None.
Code Archives Forum