*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
|
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