Sub iniGriglia As Boolean
griglia.Initialize(lavagna)
background( griglia, 252526)
Dim x0,y0,x1,y1
x0=0
y0=0
x1=0
y1=lavagna.Height
For i=0 To lavagna.Width
griglia.DrawLine(x0,y0,x1,y1,xui.Color_DarkGray,0.5)
x0 = x0+10
x1=x0
Next
x0=0
y0=0
x1=lavagna.Width
y1=0
For i=0 To lavagna.Height
griglia.DrawLine(x0,y0,x1,y1,xui.Color_DarkGray,0.5)
y0 = y0+10
y1=y0
Next
Return True
End Sub
'-------------------------- gioco di linee gruppo ----------------------------------------------------------
Sub iniGroup As Boolean
groupline.Initialize(lavagna)
background( groupline,252526)
Return True
End Sub
Sub LineGroup
Dim cvsRect As B4XRect
cvsRect.Left=0
cvsRect.Top=0
cvsRect.Width=lavagna.Width
cvsRect.Height=lavagna.Height
groupline.ClearRect(cvsRect)
groupline.Invalidate
background( groupline,252526)
If groupValue = False Then Return
'crea base rettangolare colorata
listSlave.Clear
listMaster.Clear
For i = 0 To lavagna.NumberOfViews-1
If lavagna.GetView(i) Is Button Then
Dim ls As List = lavagna.GetView(i).Tag
' leggo appartenenza se master or slave
If ls.Get(18) = "master" Then
listMaster.Add(ls)
Else
listSlave.Add(ls)
End If
' credo il rect da disegnare
Dim cvsRect As B4XRect
cvsRect.Left=lavagna.GetView(i).Left-1
cvsRect.Top=lavagna.GetView(i).Top-1
cvsRect.Width=lavagna.GetView(i).Width+2
cvsRect.Height=lavagna.GetView(i).Height+4
groupline.DrawRect(cvsRect,HexToColor(ls.Get(17)) , True,3)
groupline.Invalidate
End If
Next
Dim x,y,x2,y2 As Int
' crea linee gruppo
For i=0 To listMaster.Size-1
Dim lsM As List = listMaster.Get(i)
x = lsM.Get(0) +( lsM.Get(2)/2)
y = lsM.Get(1) +( lsM.Get(3)/2)
For ii=0 To listSlave.Size-1
Dim lsS As List = listSlave.Get(ii)
If lsS.Get(16) = lsM.Get(16) Then
x2=lsS.Get(0) + ( lsS.Get(2)/2)
y2=lsS.Get(1) + ( lsS.Get(3)/2)
groupline.DrawLine(x, y, x2, y2, HexToColor(lsS.Get(17)) ,1)
groupline.Invalidate
End If
Next
Next
End Sub
'------------------------------------------------------------- codici funzioni -----------------------------------------------
Private Sub ColorToHex(clr As Int) As String
Dim bc As ByteConverter
Return bc.HexFromBytes(bc.IntsToBytes(Array As Int(clr)))
End Sub
Private Sub HexToColor(Hex As String) As Int
Dim bc As ByteConverter
If Hex.StartsWith("#") Then
Hex = Hex.SubString(1)
Else If Hex.StartsWith("0x") Then
Hex = Hex.SubString(2)
End If
Dim ints() As Int = bc.IntsFromBytes(bc.HexToBytes(Hex))
Return ints(0)
End Sub
Public Sub background(cv As B4XCanvas, color As Int)
Dim cvsRect As B4XRect
cvsRect.Left=0
cvsRect.Top=0
cvsRect.Width=lavagna.Width
cvsRect.Height=lavagna.Height
cv.DrawRect(cvsRect,color , True,3)
cv.ClearRect(cvsRect)
cv.Invalidate
End Sub