*ESC OFF *FLOAT 64 HIMEM = PAGE + 2*&100000 ScrW% = 480 ScrH% = 480 PROCFixWndSz VDU 23,22,ScrW%;ScrH%;8,16,16,0 : OFF INSTALL @lib$ + "GFXLIB2" PROCInitGFXLIB( d{}, 0 ) D% = d{} INSTALL @lib$ + "GFXLIB_modules\BPlotScaleBlend" PROCInitModule(0) img% = FNLoadImg( @dir$ + "img2_480x480.bmp", 0 ) srcSprW% = 480 srcSprH% = 480 cX% = ScrW% DIV 2 cY% = ScrH% DIV 2 DIM p(srcSprH%, 2), q(srcSprH%, 2), m(2,2), Y%( 512 ) DIM bgCol{ r%, g%, b% } dZ% = 1300 minZ% = srcSprH% + 1 maxZ% = minZ% + dZ% + (dZ% DIV 2) scale% = 925 FOR I% = 0 TO srcSprH%-1 p(I%, 0) = srcSprW%/2 p(I%, 1) = I% - srcSprH%/2 p(I%, 2) = 0 NEXT I% *REFRESH OFF REPEAT T% = TIME bgCol.r% = 128+127*SIN(T%/800) bgCol.g% = 128+127*SIN(T%/990 + 1.34) bgCol.b% = 128+127*SIN(T%/1006 - 0.85) SYS GFXLIB_Clr%, d{}, FNrgb(bgCol.r%, bgCol.g%, bgCol.b%) zo% = minZ% + dZ% + (dZ% DIV 2)*SIN(T%/60)*SIN(T%/200 + 1.85) angle = 4*PI*SIN(T%/400)*SIN(T%/600 + 1.7) sin = SIN(angle) cos = COS(angle) m() = 1,0,0, 0,cos,-sin, 0,sin,cos q() = p().m() Y%() = FALSE FOR I% = 0 TO srcSprH%-1 z% = q(I%,2) z = scale%/(z% + zo%) dx% = q(I%,0)*z dy% = q(I%,1)*z x1% = cX% - dx% y1% = cY% + dy% x2% = cX% + dx% y2% = cY% + dy% blend% = 255*(1 - ((z%+zo%)/maxZ%)^2) IF NOT Y%(y1%) THEN SYS GFXLIB_BPlotScaleBlend%, D%, img% + 4*480*I%, 480, 1, x2%-x1%, 1, x1%, y1%, blend% Y%(y1%) = TRUE ENDIF NEXT I% PROCdisplay UNTIL FALSE END DEF PROCFixWndSz LOCAL W% SYS"GetWindowLong",@hwnd%,-16 TO W% SYS"SetWindowLong",@hwnd%,-16,W% ANDNOT&40000 ANDNOT&10000 ENDPROC