Sub Process_Globals
Dim x0 = 50%x As Int ' original center x coordinate
Dim y0 = 50%y As Int ' original center y coordinate
Dim r0 = 50dip As Int ' original radius
Dim sx, sy, x1, y1, r1 As Int
Dim flgMove As String ' flag used to define Move or Resize
Dim MinRadius = 30dip As Int ' limit for the radius
Dim SelectionWidth = 10dip As Int ' width for detection of resize
Dim CircleStroke = 3dip As Int ' circle line thickness
Dim rectCircle As Rect ' rectangle used for Invalidate2
End Sub
Sub Globals
Dim cvsActivity As Canvas
Dim CircleColor As Int
End Sub
Sub Activity_Create(FirstTime As Boolean)
Activity.Color = Colors.Black
cvsActivity.Initialize(Activity)
rectCircle.Initialize(x0 - r0 - CircleStroke, y0 - r0 - CircleStroke, x0 + r0 + CircleStroke, y0 + r0 + CircleStroke)
End Sub
Sub Activity_Resume
' draw initial circle
cvsActivity.DrawCircle(x0, y0, r0, Colors.Red, False, CircleStroke)
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub Activity_Touch (Action As Int, X As Float, Y As Float)
Select Action
Case Activity.ACTION_DOWN
flgMove = 0
x1 = x0
y1 = y0
sx = X
sy = Y
r1 = Sqrt(Power(X - x0, 2) + Power(Y - y0, 2))
If Abs(r1 - r0) < SelectionWidth Then
flgMove = "Resize"
CircleColor = Colors.Green
Activity.Title = "Resize" 'draws a green cicle for Resize
cvsActivity.DrawCircle(x1, y1, r0, CircleColor, False, CircleStroke)
Activity.Invalidate2(rectCircle)
Else If r1 < r0 - SelectionWidth Then
flgMove = "Move"
CircleColor = Colors.Blue 'draws a blue cicle for Move
Activity.Title = "Move"
cvsActivity.DrawCircle(x1, y1, r0, CircleColor, False, CircleStroke)
Activity.Invalidate2(rectCircle)
End If
Case Activity.ACTION_MOVE
If flgMove.Length > 0 Then
' erase old circle
cvsActivity.DrawCircle(x1, y1, r0, Colors.Black, False, CircleStroke)
Activity.Invalidate2(rectCircle)
If flgMove = "Move" Then
' calculate new center coordinates
x1 = x0 + X - sx
y1 = y0 + Y - sy
Else ' Resize
' calculate new radius
r0 = Max(MinRadius, Sqrt(Power(X - x0, 2) + Power(Y - y0, 2)))
End If
' draw new circle
rectCircle.Initialize(x1 - r0 - CircleStroke, y1 - r0 - CircleStroke, x1 + r0 + CircleStroke, y1 + r0 + CircleStroke)
cvsActivity.DrawCircle(x1, y1, r0, CircleColor, False, CircleStroke)
Activity.Invalidate2(rectCircle)
End If
Case Activity.ACTION_UP
If flgMove.Length > 0 Then
' draw new cicle default color
cvsActivity.DrawCircle(x1, y1, r0, Colors.Red, False, CircleStroke)
Activity.Invalidate2(rectCircle)
x0 = x1
y0 = y1
End If
End Select
End Sub