Author |
Topic: Just a spinning "BB4W" graphic (Read 531 times) |
|
David Williams
Developer
member is offline

meh

Gender: 
Posts: 452
|
 |
Just a spinning "BB4W" graphic
« Thread started on: Nov 28th, 2016, 11:59pm » |
|
Copy, paste, run...
Code: *FLOAT 64
*ESC OFF
PROCFixWindowSize
scrW%=512:scrH%=512:VDU23,22,scrW%;scrH%;8,16,16,0:OFF
GA$="GlobalAlloc":GF$="GlobalFree"
PROCInitGLIB(g{},p{})
ON CLOSE PROCCleanup:QUIT
ON ERROR PROCCleanup:OSCLI"REFRESH ON":REPORT:PRINT ERL:END
www$="http://www.proggies.uk/temp/"
bg%=FNLoadFromNet(www$+"bb4w_2048x2048.jpg",@tmp$+"bb4w_2048x2048.jpg")
bgW%=2048:bgH%=2048
glib%=FNLoadFromNet(www$+"glib_480x128.gif",@tmp$+"glib_480x128.gif")
glibW%=480:glibH%=128
SYS p.CopyToAlphaChannel%,glib%,glibW%,glibH%,3
*REFRESH OFF
REPEAT
SYS"GetTickCount" TO T%
angle=360*SIN(T%/11500)*SIN(T%/13200+1.45)
scale=0.36+ABS(SIN(T%/2000)*SIN(T%/2750+2.0))
SYSp.Clr%,g{},0
SYSp.PlotRotateScaleBilinear%,g{},bg%,bgW%,bgH%, \
\ 8*scrW%,8*scrH%,angle*&10000,scale*&10000
SYSp.PlotAlphaBlend%,g{},glib%,glibW%,glibH%,(scrW%-480)/2,scrH%-128-32
PROCDisplay(TRUE)
UNTIL0
END
DEFFNLoadFromNet(url$,file$)
LOCAL A%,file%
file%=OPENIN(file$)
IF file%=0 THEN
PROCurldownload(url$, file$)
ENDIF
CLOSE#file%
A%=FNLoadImg(file$,-1)
=A%
DEFPROCInitGLIB( RETURN b{}, RETURN p{} )
LOCALS%,Z%
DIMb{a%,w%,h%}
DIMp{Clr%,PlotAlphaBlend%,CopyToAlphaChannel%,PlotRotateScaleBilinear%,clipBm%,dibs%}
PROC`cds(b.a%,p.dibs%)
b.w%=@vdu%!208:b.h%=@vdu%!212:Z%=FN`ga(4096,TRUE):S%=FN`ga(4096,TRUE)
$S%="608B5C2424C703FFFFFFFF8B7C24383B7C24280F8DC70000008B74243C3B74242C0F8DB9"
$S%+="0000008B4C24308B54243483F9007D03F7D99083FA007D03F7DA90F7D93BF90F8E970000"
$S%+="00F7DA3BF20F8E8D000000F7D9F7DAC70300000000C7430400000000C7430800000000C7"
$S%+="430C00000000894B10895314897B1889731C8BEF03E93B6C24287E0E2B6C2428296B10C7"
$S%+="4304FFFFFFFF83FF007D14297B0C017B10C7431800000000C74304FFFFFFFF8BEE03EA3B"
$S%+="6C242C7E0E2B6C242C296B14C74304FFFFFFFF83FE007D14297308017314C7431C000000"
$S%+="00C74304FFFFFFFF61C21C0060"
p.clipBm%=FN`m(S%,0,0)
$S%="608B6C24248B4424288B7D008B4D040FAF4D08FCF3AB61C2080000"
p.Clr%=FN`m(S%,0,0)
$S%="608BEC81EC800000008B75248BC4FF7538FF7534FF7530FF752CFF7608FF760450E85FFE"
$S%+="FFFFF70424FFFFFFFF0F85690000008B552C89542434C1642434020FAF5424080354240C"
$S%+="C1E2020355288B7E04897C2438C1642438020FAF7C241C037C2418C1E702033E8B5C2410"
$S%+="33C98B048AA9000000FF740F3D000000FF722725FFFFFF0089048F83C1013BCB7CE00354"
$S%+="2434037C2438FF4C241475D081C48000000061C218008BF0C1EE180FB66C8A020FB6448F"
$S%+="022BE80FAFEEC1FD0803C588448F020FB66C8A010FB6448F012BE80FAFEEC1FD0803C588"
$S%+="448F010FB62C8A0FB6048F2BE80FAFEEC1FD0803C588048FC6448F030083C1013BCB0F8C"
$S%+="6EFFFFFF03542434037C2438FF4C24140F855AFFFFFF81C48000000061C2180060"
p.PlotAlphaBlend%=FN`m(S%,33,p.clipBm%)
$S%="60837C2430040F83530000008B7424280FAF74242C8B7C242433D2837C2430010F843D00"
$S%+="0000837C2430020F8446000000837C2430030F846C0000008B5C243481E3FF000000C644"
$S%+="970300F70497FFFFFF007404885C970383C2013BD67CE761C2140033DB8A1C97885C9703"
$S%+="83C2013BD67CF261C21400BD555505000FB604970FB65C97010FB64C970203C303C10FAF"
$S%+="C50500000800C1E8148844970383C2013BD67CD861C214000FB604970FB65C97010FB64C"
$S%+="970269C0F1D2010069DB5A64090069C9B4C8040003C303C1C1E81483D0008844970383C2"
$S%+="013BD67CCB61C2140000"
p.CopyToAlphaChannel%=FN`m(S%,0,0)
$S%="680000B0416A0068DCA54C4168F8C1631ADB44242CDC3424D9FBDC4C2408DB1424D9C9DC"
$S%+="4C2408DB542404DA742430DB5C240CDA742430DB5C2408595D0F6F2C24585BF7DB0FC4EB"
$S%+="010FC4E803C1F90CC1FD0C8BC10FAF44240CC1F8109933C22BC28BD88BC50FAF442410C1"
$S%+="F8109933C22BC203C30FAF442420C1E81083C0068B5C24048B5B043BC372028BC3894424"
$S%+="1C8BC10FAF442410C1F8109933C22BC28BD88BC50FAF44240CC1F8109933C22BC203C30F"
$S%+="AF442420C1E81083C0068B5C24048B5B083BC372028BC3894424208BF08B4424188BDEF7"
$S%+="DB8D1CD88B6C24048B4D082BCEC1E1040BDB790233DB3BD972028BD983E3F08BFB2BD80F"
$S%+="C4E3010FC4E303C1EF040FAF7D04C1E702037D0033C033DB0FBA64240C00F566D1D80FBA"
$S%+="64241000F566D1DB0FEFD20FC4D0000FC4D302B8100000000F6ED80F70DBCC8B6C241C8B"
$S%+="4424148BDDF7DB8D1CD88B4C24048B49042BCDC1E1040BDB790233DB3BD972028BD983E3"
$S%+="F08BCB2BD80FC4E3000FC4E302897C2418C1E90203F90F6FC40FF5C50FFAC20FC5D8010F"
$S%+="C5C8030FBFDB0FBFC98B44240C8B542410D1E8D1EA03D803CA8B54241083C1010FBAE11F"
$S%+="0F94C0D0D03BD10F94C4D0D4C1E0108B54240C83C3010FBAE31F0F94C0D0D03BD30F94C4"
$S%+="D0D4A9010101010F85B700000083E90183EB010FAFCA03CB8B5C24088D1C8BB9FF000000"
$S%+="0F6EC90F70C9330F71D0080F70C0A00FEFC10F70F0110F70C0AF0FD5F00FEFC0A9030103"
$S%+="01750A0F70FE000F60030FE4C7A901030301750E0F70FE550F604B040FE4CF0FFDC1A903"
$S%+="010103750E0F70FEAA0F600C930FE4CF0FFDC1A901030103750F0F70FEFF0F604C93040F"
$S%+="E4CF0FFDC183C1010F6EC90F70C9000F70F0FF0F6FF90F71D6080FF9FE0F60370F71D608"
$S%+="0FD5FE0FDDC70F71D0080F67C00F7E070FFDE383C70483ED010F85D7FEFFFF8B7C24188B"
$S%+="5C24048B5B04C1E30203FBB8100000000F6EC00F70C0330FFDE04E0F8572FEFFFF0F77C2"
$S%+="200000"
p.PlotRotateScaleBilinear%=FN`m(S%,0,0)
Z%=FN`ga(4096,TRUE)
ENDPROC
DEFPROCDisplay(W%):PRIVATEI%:IFI%=0 I%=FNSYS_NameToAddress("InvalidateRect")
SYSI%,@hwnd%,0,0:IFW%PROC`w
*REFRESH
ENDPROC
DEFFNLoadImg(p$,A%):LOCALK%,X%,Y%,W%,H%,M%:X%=0:Y%=0:K%=FN`l(p$,X%,Y%,0)
IFK%=0ERROR100,"LoadImg failed"
A%=FN`g(K%,A%,W%,H%):SYS"DeleteObject",K%:SYS"RtlMoveMemory",A%,A%+54,4*W%*H%
=A%
DEFPROCCleanup:PROC`n(3,0):ENDPROC
DEFFN`m(S%,O%,M%):LOCALA%,I%:A%=FN`ga(LEN$S%,TRUE):FORI%=0TOLEN$S%DIV2-1
A%?I%=EVAL("&"+MID$($S%,2*I%+1,2)):NEXT
IFO%>0PROC`d(A%,O%,M%)
=A%
DEFPROC`cds(RETURN A%, RETURN B%):LOCALH%,O%
DIMB%19:!B%=44:B%!4=@vdu%!208:B%!8=@vdu%!212:B%!12=&200001
SYS"CreateDIBSection",@memhdc%,B%,0,^A%,0,0TOH%:IFH%=0ERROR100,"`cds failed"
SYS"SelectObject",@memhdc%,H%TOO%:SYS"DeleteObject",O%:CLS
ENDPROC
DEFPROC`w:PRIVATEB%,G%,I%,S%,W%:LOCALL%,P%,T%:IFS%=0 S%=FNSYS_NameToAddress("Sleep")
IFB%=0SYS"timeBeginPeriod",1:B%=1
IFI%=0PROC`7(I%,G%)
L%=0:P%=^T%:REPEAT:L%=T%:SYSS%,1:SYSG%,I%,P%:UNTILT%<L%:ENDPROC
DEFPROC`7(RETURN I%,RETURN G%):LOCALD%,E%,J%,K%,L%
SYS"LoadLibrary","DDRAW.DLL"TOD%:IFD%=0 ERROR100,"`7 failed"
SYS"GetProcAddress",D%,"DirectDrawCreateEx"TOE%:DIMJ%19,L%95:J%=J%+3AND-4
L%=L%+3AND-4:!J%=&15E65EC0:J%!4=&11D23B9C:J%!8=&60002FB9:J%!12=&5BEA9797
SYSE%,0,^K%,J%,0:L%=!K%:I%=K%:G%=L%!64
ENDPROC
DEFFN`l(f$,RETURN X%,RETURN Y%,R%)
LOCALi{},b{},x%,y%,H%,C%,P%,O%,Q%,T%
DIMi{a%,b%,c%,d%},T% LOCAL 513
i.a%=&7BF80980:i.b%=&101ABF32:i.c%=&AA00BB8B:i.d%=&AB0C3000
SYS"MultiByteToWideChar",0,0,f$,-1,T%,256
SYS"LoadLibrary","OLEAUT32.DLL"TOO%
SYS"GetProcAddress",O%,"OleLoadPicturePath"TOQ%:IFQ%=0 THEN=0
SYSQ%,T%,0,0,0,i{},^P%:IFP%=0 THEN=0
SYS!(!P%+12),P%,^H%:IFH%=0 THEN=0
DIMb{T%,W%,H%,B%,P{l&,h&},p{l&,h&},s%}:SYS"GetObject",H%,DIM(b{}),b{}
x%=b.W%:y%=b.H%:IFX%=0 X%=x%
IFY%=0 Y%=y%
IFR%THEN
IFX%/Y%>x%/y% X%=Y%*x%/y%ELSEY%=X%*y%/x%
ENDIF
SYS"CopyImage",H%,0,X%,Y%,0TOC%:SYS"DeleteObject",H%:SYS!(!P%+8),P%:=C%
DEFFN`g(h%,RETURN D%,RETURN W%,RETURN H%):LOCALB%,S%,R%:DIMB%LOCAL26
B%=B%+3AND-4:SYS"GetObject",h%,24,B%TOR%
IFR%=0 ERROR100,"GetObject failed"
W%=B%!4:H%=B%!8:S%=54+4*W%*H%:IFD%=0DIMD% S%+7:D%=D%+7AND-8
IFD%=-1 D%=FN`ga(54+4*W%*H%,TRUE)
$$D%=STRING$(53,CHR$0)
!D%=19778:D%!2=S%:D%!10=54:D%!14=40:D%!18=W%:D%!22=H%:D%!26=&200001
SYS"GetDIBits",@memhdc%,h%,0,H%,D%+54,D%+14,0TOR%
IFR%<>H% ERROR100,"GetDIBits failed"
=D%
DEFPROC`n(O%,H%)
LOCALI%,M%
M%=20
PRIVATED%
IFD%=0THEN
D%=FN`ga(4*M%,FALSE)
IFD%=0THENERROR100,GA$+" failed"
FORI%=0TOM%-1
D%!(4*I%)=0
NEXT
ENDIF
CASEO%OF
WHEN1:
I%=0
WHILED%!(4*I%)<>0ANDI%<M%
I%+=1
ENDWHILE
D%!(4*I%)=H%
WHEN2:
I%=0
WHILED%!(4*I%)<>H%ANDI%<M%
I%+=1
ENDWHILE
IFI%<M%THEN
SYSGF$,H%
D%!(4*I%)=0
ENDIF
WHEN3:
FORI%=0TOM%-1
IFD%!(4*I%)<>0THEN
SYSGF$,D%!(4*I%)
ENDIF
D%!(4*I%)=0
NEXT
SYSGF$,D%
D%=0
ENDCASE
ENDPROC
DEFFNSYS_NameToAddress(f$):LOCALP%:DIMP%LOCAL5:[OPT 0:CALL f$:]:=P%!-4+P%
DEFPROC`d(B%,O%,C%):LOCALD%,P%:D%=C%-B%-O%-5:P%=B%+O%+1:!P%=D%:ENDPROC
DEFFN`ga(S%,F%)
LOCALA%
SYSGA$,64,S%TOA%
IFF%THENPROC`n(1,A%)
=A%
DEFPROCFixWindowSize:LOCALW%:SYS"GetWindowLong",@hwnd%,-16TOW%
SYS"SetWindowLong",@hwnd%,-16,W%AND&FFFAFFFF
ENDPROC
DEFPROCurldownload(url$,file$)
LOCALurlmon%,res%
SYS"LoadLibrary","urlmon.dll"TOurlmon%
SYS"GetProcAddress",urlmon%,"URLDownloadToFileA"TO`URLDownloadToFile`
SYS`URLDownloadToFile`,0,url$,file$,0,0TOres%
SYS"FreeLibrary",urlmon%
IFres%ERROR100,"Couldn'tdownload"+url$
ENDPROC
|
|
|
|
michael
Senior Member
member is offline


Posts: 335
|
 |
Re: Just a spinning "BB4W" graphic
« Reply #1 on: Nov 29th, 2016, 04:12am » |
|
That's pretty cool.
|
|
Logged
|
I like making program generators and like reinventing the wheel
|
|
|
David Williams
Developer
member is offline

meh

Gender: 
Posts: 452
|
 |
Re: Just a spinning "BB4W" graphic
« Reply #2 on: Nov 29th, 2016, 07:23am » |
|
on Nov 29th, 2016, 04:12am, michael wrote:
Thanks. If you replace PROCDisplay(TRUE) with PROCDisplay(0) then it will probably run more smoothly, but the program will gobble up a lot more CPU time.
The bitmap rotation routine 'PlotRotateScaleBilinear' (which, as its name suggests performs bilinear filtering) is actually Richard's work. A superb bit of code!
---
Here's an updated version which some might find more visually interesting:
Code:
REM Version 2.0 // 29-Nov-2016
*FLOAT 64
*ESC OFF
PROCFixWindowSize
scrW%=512:scrH%=512:VDU23,22,scrW%;scrH%;8,16,16,0:OFF
GA$="GlobalAlloc":GF$="GlobalFree"
PROCInitGLIB(g{},p{})
ON CLOSE PROCCleanup:QUIT
ON ERROR PROCCleanup:OSCLI"REFRESH ON":REPORT:PRINT ERL:END
www$="http://www.proggies.uk/temp/"
bg%=FNLoadFromNet(www$,"bb4w_2048x2048.jpg"):bgW%=2048:bgH%=2048
glib%=FNLoadFromNet(www$,"glib_480x128.gif"):glibW%=480:glibH%=128
SYS p.CopyToAlphaChannel%,glib%,glibW%,glibH%,5
SYS p.SetGlobalAlpha%,bg%,bgW%,bgH%,4
SYS p.PremultiplyAlpha%,bg%,bgW%,bgH%
GetTickCount%=FNSYS_NameToAddress("GetTickCount")
*REFRESH OFF
SYSp.BPlot%,g{},glib%,glibW%,glibH%,(scrW%-480)/2,(scrH%-128)/2
REPEAT
SYSGetTickCount%TOT%
angle=360*SIN(T%/11500)*SIN(T%/13200+1.45)
scale=0.36+ABS(SIN(T%/2000)*SIN(T%/2750+2.0))
SYSp.PlotRotateScaleBilinear%,g{},bg%,bgW%,bgH%, \
\ 8*scrW%,8*scrH%,angle*&10000,scale*&10000
PROCDisplay(0)
WAIT 1
UNTIL0
END
DEFPROCInitGLIB( RETURN b{}, RETURN p{} )
LOCALS%,Z%
DIMb{a%,w%,h%}
DIMp{CopyToAlphaChannel%,PlotRotateScaleBilinear%,PremultiplyAlpha%,SetGlobalAlpha%,\
\BPlot%,clipBm%,dibs%}
PROC`cds(b.a%,p.dibs%)
b.w%=@vdu%!208:b.h%=@vdu%!212:Z%=FN`ga(4096,TRUE):S%=FN`ga(4096,TRUE)
$S%="608B5C2424C703FFFFFFFF8B7C24383B7C24280F8DC70000008B74243C3B74242C0F8DB9"
$S%+="0000008B4C24308B54243483F9007D03F7D99083FA007D03F7DA90F7D93BF90F8E970000"
$S%+="00F7DA3BF20F8E8D000000F7D9F7DAC70300000000C7430400000000C7430800000000C7"
$S%+="430C00000000894B10895314897B1889731C8BEF03E93B6C24287E0E2B6C2428296B10C7"
$S%+="4304FFFFFFFF83FF007D14297B0C017B10C7431800000000C74304FFFFFFFF8BEE03EA3B"
$S%+="6C242C7E0E2B6C242C296B14C74304FFFFFFFF83FE007D14297308017314C7431C000000"
$S%+="00C74304FFFFFFFF61C21C0060"
p.clipBm%=FN`m(S%,0,0)
$S%="60837C2430040F83530000008B7424280FAF74242C8B7C242433D2837C2430010F843D00"
$S%+="0000837C2430020F8446000000837C2430030F846C0000008B5C243481E3FF000000C644"
$S%+="970300F70497FFFFFF007404885C970383C2013BD67CE761C2140033DB8A1C97885C9703"
$S%+="83C2013BD67CF261C21400BD555505000FB604970FB65C97010FB64C970203C303C10FAF"
$S%+="C50500000800C1E8148844970383C2013BD67CD861C214000FB604970FB65C97010FB64C"
$S%+="970269C0F1D2010069DB5A64090069C9B4C8040003C303C1C1E81483D0008844970383C2"
$S%+="013BD67CCB61C2140000"
p.CopyToAlphaChannel%=FN`m(S%,0,0)
$S%="680000B0416A0068DCA54C4168F8C1631ADB44242CDC3424D9FBDC4C2408DB1424D9C9DC"
$S%+="4C2408DB542404DA742430DB5C240CDA742430DB5C2408595D0F6F2C24585BF7DB0FC4EB"
$S%+="010FC4E803C1F90CC1FD0C8BC10FAF44240CC1F8109933C22BC28BD88BC50FAF442410C1"
$S%+="F8109933C22BC203C30FAF442420C1E81083C0068B5C24048B5B043BC372028BC3894424"
$S%+="1C8BC10FAF442410C1F8109933C22BC28BD88BC50FAF44240CC1F8109933C22BC203C30F"
$S%+="AF442420C1E81083C0068B5C24048B5B083BC372028BC3894424208BF08B4424188BDEF7"
$S%+="DB8D1CD88B6C24048B4D082BCEC1E1040BDB790233DB3BD972028BD983E3F08BFB2BD80F"
$S%+="C4E3010FC4E303C1EF040FAF7D04C1E702037D0033C033DB0FBA64240C00F566D1D80FBA"
$S%+="64241000F566D1DB0FEFD20FC4D0000FC4D302B8100000000F6ED80F70DBCC8B6C241C8B"
$S%+="4424148BDDF7DB8D1CD88B4C24048B49042BCDC1E1040BDB790233DB3BD972028BD983E3"
$S%+="F08BCB2BD80FC4E3000FC4E302897C2418C1E90203F90F6FC40FF5C50FFAC20FC5D8010F"
$S%+="C5C8030FBFDB0FBFC98B44240C8B542410D1E8D1EA03D803CA8B54241083C1010FBAE11F"
$S%+="0F94C0D0D03BD10F94C4D0D4C1E0108B54240C83C3010FBAE31F0F94C0D0D03BD30F94C4"
$S%+="D0D4A9010101010F85B700000083E90183EB010FAFCA03CB8B5C24088D1C8BB9FF000000"
$S%+="0F6EC90F70C9330F71D0080F70C0A00FEFC10F70F0110F70C0AF0FD5F00FEFC0A9030103"
$S%+="01750A0F70FE000F60030FE4C7A901030301750E0F70FE550F604B040FE4CF0FFDC1A903"
$S%+="010103750E0F70FEAA0F600C930FE4CF0FFDC1A901030103750F0F70FEFF0F604C93040F"
$S%+="E4CF0FFDC183C1010F6EC90F70C9000F70F0FF0F6FF90F71D6080FF9FE0F60370F71D608"
$S%+="0FD5FE0FDDC70F71D0080F67C00F7E070FFDE383C70483ED010F85D7FEFFFF8B7C24188B"
$S%+="5C24048B5B04C1E30203FBB8100000000F6EC00F70C0330FFDE04E0F8572FEFFFF0F77C2"
$S%+="200000"
p.PlotRotateScaleBilinear%=FN`m(S%,0,0)
$S%="609BDBE38B44242433FF8B7424280FAF74242C0FB61CB8530FB65CB801530FB65CB80253"
$S%+="0FB65CB8035368FF000000DB442404DA3424DB442408D8C9DB5C2408DB44240CD8C9DB5C"
$S%+="240CDB442410DEC9DB5C24108B5C24088B4C240C8B542410885CB802884CB8018814B883"
$S%+="C414473BFE7CA061C20C0000"
p.PremultiplyAlpha%=FN`m(S%,0,0)
$S%="608BEC8B5D248B453083F8007D0233C03DFF0000007E05B8FF0000008B4D280FAF4D2C33"
$S%+="D288449303423BD17CF761C2100000"
p.SetGlobalAlpha%=FN`m(S%,0,0)
$S%="608BEC81EC800000008B75248BC4FF7538FF7534FF7530FF752CFF7608FF760450E85FFE"
$S%+="FFFFF70424FFFFFFFF0F85570000008B552C89542434C1642434020FAF5424080354240C"
$S%+="C1E2020355288B7E04897C2438C1642438020FAF7C241C037C2418C1E702033E8BF28B5C"
$S%+="24108B4424348B5424388B6C241456578BCBFCF3A55F5E03F003FA4D7FF081C480000000"
$S%+="61C218008B"
p.BPlot% = FN`m(S%, 33, p.clipBm%)
Z%=FN`ga(4096,TRUE)
ENDPROC
DEFPROCDisplay(W%):PRIVATEI%:IFI%=0 I%=FNSYS_NameToAddress("InvalidateRect")
SYSI%,@hwnd%,0,0
*REFRESH
ENDPROC
DEFFNLoadImg(p$,A%):LOCALK%,X%,Y%,W%,H%,M%:X%=0:Y%=0:K%=FN`l(p$,X%,Y%,0)
IFK%=0ERROR100,"LoadImg failed"
A%=FN`g(K%,A%,W%,H%):SYS"DeleteObject",K%:SYS"RtlMoveMemory",A%,A%+54,4*W%*H%
=A%
DEFPROCCleanup:PROC`n(3,0):ENDPROC
DEFFN`m(S%,O%,M%):LOCALA%,I%:A%=FN`ga(LEN$S%,TRUE):FORI%=0TOLEN$S%DIV2-1
A%?I%=EVAL("&"+MID$($S%,2*I%+1,2)):NEXT
IFO%>0PROC`d(A%,O%,M%)
=A%
DEFPROC`cds(RETURN A%, RETURN B%):LOCALH%,O%
DIMB%19:!B%=44:B%!4=@vdu%!208:B%!8=@vdu%!212:B%!12=&200001
SYS"CreateDIBSection",@memhdc%,B%,0,^A%,0,0TOH%:IFH%=0ERROR100,"`cds failed"
SYS"SelectObject",@memhdc%,H%TOO%:SYS"DeleteObject",O%:CLS
ENDPROC
DEFFN`l(f$,RETURN X%,RETURN Y%,R%)
LOCALi{},b{},x%,y%,H%,C%,P%,O%,Q%,T%
DIMi{a%,b%,c%,d%},T% LOCAL 513
i.a%=&7BF80980:i.b%=&101ABF32:i.c%=&AA00BB8B:i.d%=&AB0C3000
SYS"MultiByteToWideChar",0,0,f$,-1,T%,256
SYS"LoadLibrary","OLEAUT32.DLL"TOO%
SYS"GetProcAddress",O%,"OleLoadPicturePath"TOQ%:IFQ%=0 THEN=0
SYSQ%,T%,0,0,0,i{},^P%:IFP%=0 THEN=0
SYS!(!P%+12),P%,^H%:IFH%=0 THEN=0
DIMb{T%,W%,H%,B%,P{l&,h&},p{l&,h&},s%}:SYS"GetObject",H%,DIM(b{}),b{}
x%=b.W%:y%=b.H%:IFX%=0 X%=x%
IFY%=0 Y%=y%
IFR%THEN
IFX%/Y%>x%/y% X%=Y%*x%/y%ELSEY%=X%*y%/x%
ENDIF
SYS"CopyImage",H%,0,X%,Y%,0TOC%:SYS"DeleteObject",H%:SYS!(!P%+8),P%:=C%
DEFFN`g(h%,RETURN D%,RETURN W%,RETURN H%):LOCALB%,S%,R%:DIMB%LOCAL26
B%=B%+3AND-4:SYS"GetObject",h%,24,B%TOR%
IFR%=0 ERROR100,"GetObject failed"
W%=B%!4:H%=B%!8:S%=54+4*W%*H%:IFD%=0DIMD% S%+7:D%=D%+7AND-8
IFD%=-1 D%=FN`ga(54+4*W%*H%,TRUE)
$$D%=STRING$(53,CHR$0)
!D%=19778:D%!2=S%:D%!10=54:D%!14=40:D%!18=W%:D%!22=H%:D%!26=&200001
SYS"GetDIBits",@memhdc%,h%,0,H%,D%+54,D%+14,0TOR%
IFR%<>H% ERROR100,"GetDIBits failed"
=D%
DEFPROC`n(O%,H%)
LOCALI%,M%
M%=20
PRIVATED%
IFD%=0THEN
D%=FN`ga(4*M%,FALSE)
IFD%=0THENERROR100,GA$+" failed"
FORI%=0TOM%-1
D%!(4*I%)=0
NEXT
ENDIF
CASEO%OF
WHEN1:
I%=0
WHILED%!(4*I%)<>0ANDI%<M%
I%+=1
ENDWHILE
D%!(4*I%)=H%
WHEN2:
I%=0
WHILED%!(4*I%)<>H%ANDI%<M%
I%+=1
ENDWHILE
IFI%<M%THEN
SYSGF$,H%
D%!(4*I%)=0
ENDIF
WHEN3:
FORI%=0TOM%-1
IFD%!(4*I%)<>0THEN
SYSGF$,D%!(4*I%)
ENDIF
D%!(4*I%)=0
NEXT
SYSGF$,D%
D%=0
ENDCASE
ENDPROC
DEFFNSYS_NameToAddress(f$):LOCALP%:DIMP%LOCAL5:[OPT 0:CALL f$:]:=P%!-4+P%
DEFPROC`d(B%,O%,C%):LOCALD%,P%:D%=C%-B%-O%-5:P%=B%+O%+1:!P%=D%:ENDPROC
DEFFN`ga(S%,F%)
LOCALA%
SYSGA$,64,S%TOA%
IFF%THENPROC`n(1,A%)
=A%
DEFPROCFixWindowSize:LOCALW%:SYS"GetWindowLong",@hwnd%,-16TOW%
SYS"SetWindowLong",@hwnd%,-16,W%AND&FFFAFFFF
ENDPROC
DEFFNLoadFromNet(url$,file$):LOCALA%,F%:F%=OPENIN(@tmp$+file$)
IF F%=0 PROCurldownload(url$+file$,@tmp$+file$)
CLOSE#F%
A%=FNLoadImg(@tmp$+file$,-1):=A%
DEFPROCurldownload(url$,file$)
LOCALurlmon%,res%
SYS"LoadLibrary","urlmon.dll"TOurlmon%
SYS"GetProcAddress",urlmon%,"URLDownloadToFileA"TO`URLDownloadToFile`
SYS`URLDownloadToFile`,0,url$,file$,0,0TOres%
SYS"FreeLibrary",urlmon%
IFres%ERROR100,"Couldn't download "+url$
ENDPROC
David. --
|
|
|
|
David Williams
Developer
member is offline

meh

Gender: 
Posts: 452
|
 |
Re: Just a spinning "BB4W" graphic
« Reply #3 on: Nov 29th, 2016, 10:36am » |
|
Here's a full-screen version (uses DirectX 9) - zipped EXE only:
http://www.proggies.uk/temp/blurryrotatingbb4wdx9fs.zip (right-click then 'Save As...')
You will probably need to give Windows permission to run the program. I scanned it with 'F-Secure SAFE' prior to uploading the file.
David. --
|
|
Logged
|
|
|
|
michael
Senior Member
member is offline


Posts: 335
|
 |
Re: Just a spinning "BB4W" graphic
« Reply #4 on: Nov 29th, 2016, 1:47pm » |
|
What is this:
$S%
It poses as a string $ but has %
Is it isolating the numbers and letters?
|
|
Logged
|
I like making program generators and like reinventing the wheel
|
|
|
|