10 REM Kaleidoscope by Richard Russell ('BBC BASIC for SDL 2.0' only)
20 MODE 9 : ORIGIN 640,512 : GCOL 0 : OFF
30 INSTALL @lib$ + "gfxlib" : PROC_gfxInit
40 pic%% = FN_gfxLoadTexture(@dir$ + "butterflies.jpg", FALSE)
50 seg%% = FN_gfxCreateTexture(640, 512)
60 SYS `SDL_SetTextureBlendMode`, seg%%, SDL_BLENDMODE_ADD
70 *REFRESH OFF
80 REPEAT
90 a = 2 * PI * SIN(TIME/800) : s = 1280
100 PROC_gfxSaveAndSetDispVars(g{}, seg%%)
110 PROC_gfxPlotScale(pic%%, 640, 640, 0, 0)
120 MOVE s*SINa,-s*COSa : MOVE s*COSa,s*SINa : PLOT 85,-s*COSa,-s*SINa
130 a -= PI + PI/6
140 MOVE s*SINa,-s*COSa : MOVE s*COSa,s*SINa : PLOT 85,-s*COSa,-s*SINa
150 a += PI + PI/6
160 PROC_gfxRestoreDispVars(g{})
170 PROC_gfxClr(0, 0, 0)
180 FOR b = 0 TO 300 STEP 60
190 PROC_gfxPlotRotateScale(seg%%, 640, 512, 320, 256, DEG(a) + b)
200 PROC_gfxPlotRotateScale(seg%%, 640, -512, 320, 256, -DEG(a) + b)
210 NEXT
220 *REFRESH
230 UNTIL FALSE