_Title "Does anyone really know what time it is?" ' b+ 2022-01-23 ' 2022-01-24 now with Steve's audio time announcer! Press spacebar.
' And now with customImage load of a wonderful back side of a Time piece.
' Made a number of modifications to SayTime sub and Clock drawing
As Single X
, Y
, ScaleX
, ScaleY
, RotXY
, DScaleX
, DScaleY
, DRotXY
, ScaleLimit
Const SW
= 1025, SH
= 721, NClocks
= 40
' check clock drawing
c
= _NewImage(351, 351, 32) ' for the c=clock face conatinermidP
= Int((351 - 1) / 2)'fcirc midP, midP, 165, &HFF114422
'clock midP, midP, 150
'Line (0, 0)-(351, 351), , B ' check centering
'Sleep
' create back of clock image
bl = LoadCustomImage("Clock Back") ' pretty cool image!!!
' check our image
'Cls , &HFFFFFFFF
'_PutImage (0, 0), b, 0
'Line (0, 0)-(351, 351), &HFF000000, B
'Sleep
newClock i, 1
_Title "Does anyone really know what time it is? Sure just press the spacebar." Line (0, 0)-(351, 351), &HFF000000, BF
' blank out fro redraw fcirc midP
, midP
, i
, _RGB32(220 - i
) clock midP, midP, 150
If (Clocks
(i
).ScaleX
> 0 And Clocks
(i
).ScaleY
> 0) Or (Clocks
(i
).ScaleX
< 0 And Clocks
(i
).ScaleY
< 0) Then RotoZoom3 Clocks(i).X, Clocks(i).Y, c, Clocks(i).ScaleX, Clocks(i).ScaleY, Clocks(i).RotXY
RotoZoom3 Clocks(i).X, Clocks(i).Y, b, Clocks(i).ScaleX, Clocks(i).ScaleY, Clocks(i).RotXY
Clocks(i).Y = Clocks(i).Y + 1
newClock i, 0
'updates
Clocks(i).ScaleX = Clocks(i).ScaleX + Clocks(i).DScaleX
If Clocks
(i
).ScaleX
< -Clocks
(i
).ScaleLimit
Then Clocks
(i
).DScaleX
= -Clocks
(i
).DScaleX: Clocks
(i
).ScaleX
= -Clocks
(i
).ScaleLimit
If Clocks
(i
).ScaleX
> Clocks
(i
).ScaleLimit
Then Clocks
(i
).DScaleX
= -Clocks
(i
).DScaleX: Clocks
(i
).ScaleX
= Clocks
(i
).ScaleLimit
Clocks(i).ScaleY = Clocks(i).ScaleY + Clocks(i).DScaleY
If Clocks
(i
).ScaleY
< -Clocks
(i
).ScaleLimit
Then Clocks
(i
).DScaleY
= -Clocks
(i
).DScaleY: Clocks
(i
).ScaleY
= -Clocks
(i
).ScaleLimit
If Clocks
(i
).ScaleY
> Clocks
(i
).ScaleLimit
Then Clocks
(i
).DScaleY
= -Clocks
(i
).DScaleY: Clocks
(i
).ScaleY
= Clocks
(i
).ScaleLimit
Clocks(i).RotXY = Clocks(i).RotXY + Clocks(i).DRotXY
If initTF
Then Clocks
(i
).Y
= rrnd
(-150, SH
) Else Clocks
(i
).Y
= -150 Clocks(i).ScaleLimit = 1
Clocks(i).ScaleX = rrnd(-Clocks(i).ScaleLimit, Clocks(i).ScaleLimit)
Clocks(i).ScaleY = rrnd(-Clocks(i).ScaleLimit, Clocks(i).ScaleLimit)
Clocks(i).DScaleX = rrnd(-.005 * Clocks(i).ScaleLimit, .005 * Clocks(i).ScaleLimit)
Clocks(i).DScaleY = rrnd(-.005 * Clocks(i).ScaleLimit, .005 * Clocks(i).ScaleLimit)
Clocks
(i
).RotXY
= _Pi(2) * Rnd Clocks
(i
).DRotXY
= rrnd
(-.005 * _Pi, .005 * _Pi)
clr~& = &HFF888888
If a
Mod 360 = 270 Then r1
= 1 / 15 * r: clr~&
= &HFFFFFFFF fcirc x
+ r
* Cos(_D2R(a
)), y
+ r
* Sin(_D2R(a
)), r1
- 2, clr~&
' _RGB32(255, 255, 255) ftri x
+ 1 / 15 * r
* Cos(Val(Mid$(Time$, 4, 2)) * _Pi(1 / 30) - _Pi(1 / 2) + _Pi(1 / 2)), y
+ 1 / 15 * r
* Sin(Val(Mid$(Time$, 4, 2)) * _Pi(1 / 30) - _Pi(1 / 2) + _Pi(1 / 2)), x
+ 1 / 15 * r
* Cos(Val(Mid$(Time$, 4, 2)) * _Pi(1 / 30) - _Pi(1 / 2) - _Pi(1 / 2)), y
+ 1 / 15 * r
* Sin(Val(Mid$(Time$, 4, 2)) * _Pi(1 / 30) - _Pi(1 / 2) - _Pi(1 / 2)), x
+ r
* Cos(Val(Mid$(Time$, 4, 2)) * _Pi(1 / 30) - _Pi(1 / 2)), y
+ r
* Sin(Val(Mid$(Time$, 4, 2)) * _Pi(1 / 30) - _Pi(1 / 2)), _RGB32(128) ftri x
+ 1 / 10 * r
* Cos(hrs
* _Pi(1 / 6) - _Pi(1 / 2) + _Pi(1 / 2)), y
+ 1 / 10 * r
* Sin(hrs
* _Pi(1 / 6) - _Pi(1 / 2) + _Pi(1 / 2)), x
+ 1 / 10 * r
* Cos(hrs
* _Pi(1 / 6) - _Pi(1 / 2) - _Pi(1 / 2)), y
+ 1 / 10 * r
* Sin(hrs
* _Pi(1 / 6) - _Pi(1 / 2) - _Pi(1 / 2)), x
+ 2 / 3 * r
* Cos(hrs
* _Pi(1 / 6) - _Pi(1 / 2)), y
+ 2 / 3 * r
* Sin(hrs
* _Pi(1 / 6) - _Pi(1 / 2)), _RGB32(128) Paint (x
+ 1 / 75 * r
, y
+ 1 / 75 * r
), &HFF888888, _RGB32(255, 255, 255)
_Blend a&
'<<<< new 2019-12-16 fix
Dim W&
, H&
, sinr!
, cosr!
, i&
, x2&
, y2&
px(0) = -W& / 2: py(0) = -H& / 2: px(1) = -W& / 2: py(1) = H& / 2
px(2) = W& / 2: py(2) = H& / 2: px(3) = W& / 2: py(3) = -H& / 2
sinr!
= Sin(-radianRotation
): cosr!
= Cos(-radianRotation
) x2& = xScale * (px(i&) * cosr! + sinr! * py(i&)) + X: y2& = yScale * (py(i&) * cosr! - px(i&) * sinr!) + Y
px(i&) = x2&: py(i&) = y2&
Function rrnd
(n1
, n2
) 'return real number (_single, double, _float depending on default / define setup) rrnd
= (n2
- n1
) * Rnd + n1
Radius
= Abs(R
): RadiusError
= -Radius: X
= Radius: Y
= 0 Line (CX
- X
, CY
)-(CX
+ X
, CY
), C
, BF
RadiusError = RadiusError + Y * 2 + 1
Line (CX
- Y
, CY
- X
)-(CX
+ Y
, CY
- X
), C
, BF
Line (CX
- Y
, CY
+ X
)-(CX
+ Y
, CY
+ X
), C
, BF
X = X - 1
RadiusError = RadiusError - X * 2
Y = Y + 1
Line (CX
- X
, CY
- Y
)-(CX
+ X
, CY
- Y
), C
, BF
Line (CX
- X
, CY
+ Y
)-(CX
+ X
, CY
+ Y
), C
, BF
' Function returns Image Handle& (like _LoadFile)
Function LoadCustomImage&
(fileLoadBaseName$
) ' reverse the Save Open fileLoadBaseName$
+ ".CI_DIM" For Input As #1 ' get dimensions of custom image Dim imgHdl&: imgHdl&
= _NewImage(w
, h
, 32) 'setup space and handle for it Dim screenGrab$: screenGrab$
= Space$(M.SIZE
) screenGrab$
= _Inflate$(screenGrab$
) ' fixed ? LoadCustomImage& = imgHdl& ' finally assign the function
't = "23:03:05"
message
= Str$(h
) + " " + m
+ " and " + s
+ " seconds" Shell _DontWait _Hide "Powershell -Command " + Chr$(34) + "Add-Type -AssemblyName System.Speech; (New-Object System.Speech.Synthesis.SpeechSynthesizer).Speak('" + message
+ "');" + Chr$(34)