_TITLE "Clock code for QB64 B+ 2018-10-02"
CONST PI
= 3.141492653589793 CONST PI2
= 1.570796326794897
'check scaling
_TITLE "Scale Test: Press m for more, l for less clock size, esc for next test..." sz = 4
clock
360, 360, sz
, _RGB32(0, 0, 80), _RGB32(200, 155, 255), _RGB32(60, 30, 45)
'transparency tests, first some background picture
bgrd&
= _NEWIMAGE(720, 720, 32) 'draw backgroundFOR I
= 1 TO 100 'draw background
_TITLE "Transparency Test: press m for more opaqueness press l for less opaqueness, esc for next test..." sz = 200
t = 15
IF K$
= "m" AND (t
+ 10 <= 255) THEN t
= t
+ 10 IF K$
= "l" AND (t
- 10 >= 15) THEN t
= t
- 10 clock
360, 360, sz
, _RGBA32(60, 30, 10, t
), _RGBA32(128, 196, 255, t
), _RGBA32(60, 30, 10, t
)
'random tests
nClocks = 15
newClocks
_TITLE "Random clocks test, press q to quit..." clock cx(I), cy(I), cr(I), ccf(I), ccb(I), cch(I)
cx
(i
) = RND * 720 - .5 * cr
(i
) cy
(i
) = RND * 720 - .5 * cr
(i
)
clockFace x, y, rr, fc, bc
r = .9 * rr
IF hrs
>= 12 THEN hrs
= hrs
- 12 hrs
= hrs
* _PI(1 / 6) - PI2
x3
= x
+ r
* COS(ms
): y3
= y
+ r
* SIN(ms
) x4
= x
+ r
/ 10 * COS(ms
- PI
): y4
= y
+ r
/ 10 * SIN(ms
- PI
) thic x3, y3, x4, y4, r / 15, hc
x3
= x
+ 3 / 4 * r
* COS(hrs
): y3
= y
+ 3 / 4 * r
* SIN(hrs
) x4
= x
+ r
/ 10 * COS(hrs
- PI
): y4
= y
+ r
/ 10 * SIN(hrs
- PI
) thic x3, y3, x4, y4, r / 15, hc
LINE (x
, y
)-(x
+ r
* COS(ss
), y
+ r
* SIN(ss
)), hc
fcirc x, y, r / 15, hc
fcirc r, r, r, bc
r1 = 1 / 30 * r
_PUTIMAGE (x
- r
, y
- r
)-(x
+ r
, y
+ r
), b&
, 0
'Steve McNeil's copied from his forum note: Radius is too common a name
RadiusError = -subRadius
X = subRadius
Y = 0
' Draw the middle span here so we don't draw it twice in the main loop,
' which would be a problem with blending turned on.
LINE (CX
- X
, CY
)-(CX
+ X
, CY
), K
, BF
RadiusError = RadiusError + Y * 2 + 1
LINE (CX
- Y
, CY
- X
)-(CX
+ Y
, CY
- X
), K
, BF
LINE (CX
- Y
, CY
+ X
)-(CX
+ Y
, CY
+ X
), K
, BF
X = X - 1
RadiusError = RadiusError - X * 2
Y = Y + 1
LINE (CX
- X
, CY
- Y
)-(CX
+ X
, CY
- Y
), K
, BF
LINE (CX
- X
, CY
+ Y
)-(CX
+ X
, CY
+ Y
), K
, BF
t2 = thick / 2
x3
= x1
+ t2
* COS(a
+ PI2
) y3
= y1
+ t2
* SIN(a
+ PI2
) x4
= x1
+ t2
* COS(a
- PI2
) y4
= y1
+ t2
* SIN(a
- PI2
) x5
= x2
+ t2
* COS(a
+ PI2
) y5
= y2
+ t2
* SIN(a
+ PI2
) x6
= x2
+ t2
* COS(a
- PI2
) y6
= y2
+ t2
* SIN(a
- PI2
) ftri x6, y6, x4, y4, x3, y3, K
ftri x3, y3, x5, y5, x6, y6, K