Code: Select all
REM Requires full version of BB4W v6.14a or later,
REM and an active internet connection.
*ESC OFF
HIMEM=PAGE+3*&100000
MODE 8:PRINT'" Please wait a mo..";
ON ERROR PROCerror(REPORT$+" at line "+STR$ERL)
urlstem$="http://www.proggies.uk/files/temp/toodlepip/"
PROCnetload(urlstem$+"GFXLIB2.BBC",@tmp$+"GFXLIB2.BBC")
PROCnetload(urlstem$+"BPlotScale.BBC",@tmp$+"BPlotScale.BBC")
PROCnetload(urlstem$+"PlotScaleShape.BBC",@tmp$+"PlotScaleShape.BBC")
PROCnetload(urlstem$+"PlotRotateScale2.BBC",@tmp$+"PlotRotateScale2.BBC")
PROCnetload(urlstem$+"GaussianBlur3x3.BBC",@tmp$+"GaussianBlur3x3.BBC")
PROCnetload(urlstem$+"gifimage_480x66.gif",@tmp$+"gifimage_480x66.gif")
INSTALL @tmp$+"GFXLIB2":PROCInitGFXLIB(gfx{},0)
ON ERROR PROCerror(REPORT$+" at line "+STR$ERL)
INSTALL @tmp$+"BPlotScale.BBC":PROCInitModule(0)
INSTALL @tmp$+"PlotScaleShape.BBC":PROCInitModule(0)
INSTALL @tmp$+"PlotRotateScale2.BBC":PROCInitModule(0)
INSTALL @tmp$+"GaussianBlur3x3.BBC":PROCInitModule(0)
`GetTickCount64`=SYS("GetTickCount64")
winW%=@vdu%!208 : winH%=@vdu%!212
cx%=winW%/2 : cy%=winH%/2
DIM bm{a%,w%,h%}:bm.w%=480:bm.h%=66
bm.a%=FNLoadImg(@tmp$+"gifimage_480x66.gif", 0)
S%=2*SQR((0.5*bm.w%)^2+(0.5*bm.h%)^2)
buf%=FNmalloc(4*S%^2) : buf2%=FNmalloc(4*winW%*winH%)
DIM p(S%-1,2), q(S%-1,2), m(2,2)
FOR Y%=0 TO S%-1:p(Y%,0)=-0.5*S%:p(Y%,1)=Y%-S%/2:NEXT Y%
DIM C%(7):C%()=&FF0000,&FF8000,&FFFF00,&FF00,&8080FF,&FFFF,&FF00FF
D%=8000
bmAngle=0
SYS `GetTickCount64` TO time0%%
OSCLI "REFRESH OFF" : OFF
REPEAT
SYS `GetTickCount64` TO time1%%
time%% = time1%% - time0%%
SYS GFXLIB_SaveAndSetDispVars%,gfx{},buf%,S%,S%
SYS GFXLIB_Clr%,gfx{},0
IF time%% >= D% THEN
IF bmAngle=0 timeAngle0%%=time%%+1
bmAngle = 0.0075*(time%%-timeAngle0%%)
ENDIF
SYS GFXLIB_PlotRotateScale2%,gfx{},bm.a%,bm.w%,bm.h%, \
\ S%/2,S%/2,&10000*bmAngle,&10000
SYS GFXLIB_RestoreDispVars%,gfx{}
SYS GFXLIB_SaveAndSetDispVars%,gfx{},buf2%,winW%,winH%
theta=0.001*time%%
m()=1,0,0, 0,COStheta,-SINtheta, 0,SINtheta,COStheta
q()=p().m()
B%=buf%
G%=gfx{}
P%=GFXLIB_PlotScaleShape%
U%=cx%
V%=cy%
t=3.5*(1+SIN(0.0005*time%%))
I%=(INTt) MOD 7 : J%=(INT(t+1)) MOD 7
SYS GFXLIB_LerpRGB%, C%(I%), C%(J%), 256*(t-INTt) TO K%
FOR I%=0 TO S%-1
z=S%/(q(I%,2)+S%+150)
rowLen=S%*z
X%=U%-0.5*rowLen
Y%=V%+q(I%,1)*z
SYS P%,G%,B%+4*S%*I%,S%,1,rowLen,1,X%,Y%,K%
NEXT
SYS GFXLIB_GaussianBlur3x3%, gfx.bmBuffAddr%, winW%, winH%
SYS GFXLIB_RestoreDispVars%,gfx{}
scale=2+SIN(0.0005*time%%)*SIN(0.0006525*time%%+1.2)
SYS GFXLIB_BPlotScale%,gfx{},buf2%,winW%,winH%,scale*winW%,scale*winH%, \
\ 0.5*(winW%-scale*winW%),0.5*(winH%-scale*winH%)
PROCdisplay
UNTIL FALSE
DEFPROCnetload(url$,file$)
LOCAL F% : PRIVATE urlmon%, UDTF%
IF urlmon%=FALSE THEN
SYS "LoadLibrary", "URLMON.DLL" TO urlmon%
SYS "GetProcAddress", urlmon%, "URLDownloadToFileA" TO UDTF%
ENDIF
SYS UDTF%, 0, url$, file$, 0, 0 TO F%
IF F% PROCerror("PROCnetload: Can't download resource '"+url$+"'")
ENDPROC
DEFPROCerror(s$)
OSCLI"REFRESH ON":CLS:ON:VDU 7:PRINT'" "+s$;:REPEATUNTILINKEY(1)=0
ENDPROC