Attribute VB_Name = "Module6"
Public Function Insert_BROCHE(ByVal X As Integer, ByVal Y As Integer, ByVal Type_BROCHE As String, ByVal BROCHE_Orientation As String) As Long

' incrémente le nombre de broche
NB_BROCHE = NB_BROCHE + 1

' redimensionne le tableau de liens
ReDim Preserve Objet_BROCHE(NB_BROCHE - 1)

' instancie une nouvelles broche
Set Objet_BROCHE(NB_BROCHE - 1) = New BROCHE

' defini les parametres de la nouvelle broche
 tmp = Objet_BROCHE(NB_BROCHE - 1).SetParametres_BROCHE(Type_BROCHE, NB_BROCHE - 1, X, Y, BROCHE_Orientation)

' retourne l'ID
Insert_BROCHE = NB_BROCHE - 1
    
End Function

Public Sub ReDraw_BROCHE(pic As PictureBox)
    
    'on redessine tout le tableau
    Dim i As Integer, j As Integer
    Dim PosX As Integer, PosY As Integer
    Dim Gravite_Pos_X As Integer, Gravite_Pos_Y As Integer
    Dim Selectionnee As Long
    Dim Type_BROCHE As String
    Dim Orientation_BROCHE As String
    
    
    PosX = 0
    PosY = 0
    'pic.Cls
    
        'on dessine les objets
    For i = 0 To NB_BROCHE - 1
           ' recupere la position
            tmp = Objet_BROCHE(i).GetPosition_BROCHE(PosX, PosY)
            Type_BROCHE = Objet_BROCHE(i).GetType_BROCHE()
            Orientation_BROCHE = Objet_BROCHE(i).GetOrientation_BROCHE()
            'dessine l'objet
            Selectionnee = 0
            If PorteSelectionnee = i Then Selectionnee = 1
            tmp = Dessine_BROCHE(PosX, PosY, Gravite_Pos_X, Gravite_Pos_Y, Orientation_BROCHE, Etat, Type_BROCHE, pic, Selectionnee)
            tmp = Objet_BROCHE(i).SetPosition_BROCHE(PosX, PosY, Gravite_Pos_X, Gravite_Pos_Y)
    Next i
    
End Sub


Public Function Dessine_BROCHE(ByVal X As Integer, ByVal Y As Integer, ByRef Gravite_Pos_X As Integer, ByRef Gravite_Pos_Y As Integer, PAD_Orientation As String, ByVal Etat As Long, ByVal Type_PAD As String, pic As PictureBox, Optional ByRef Selectionne As Long = 0)
            

Dim L As Double
Dim W As Double
Dim couleur_rouge As String
Dim couleur_vert As String
Dim couleur_bleu As String
Dim couleur_noir As String

Dim Boite As Long


Dim A As Point_A
Dim B As Point_A
Dim C As Point_A
Dim D As Point_A



'If Etat = 1 Then couleur = RGB(255, 0, 0)
'If Etat = 0 Then couleur = RGB(0, 255, 0)

'If Selectionne = 1 Then couleurboite = RGB(0, 0, 255)
'If Selectionne = 0 Then couleurboite = RGB(0, 0, 0)

' standard
'Boite = 1

' dessine le corps de la géométrie

couleur_rouge = RGB(255, 0, 0)
couleur_vert = RGB(0, 255, 0)
couleur_bleu = RGB(0, 0, 255)
couleur_noir = RGB(0, 0, 0)


L = 400
W = 200

' calcul
A.X = X - (L / 2)
A.Y = Y - (W / 2)
B.X = X + (L / 2)
B.Y = Y - (W / 2)
C.X = X + (L / 2)
C.Y = Y + (W / 2)
D.X = X - (L / 2)
D.Y = Y + (W / 2)

If PAD_Orientation = "r" Then


End If

If PAD_Orientation = "n" Then
'corps du rectangle
pic.Line (A.X, -A.Y)-(B.X, -B.Y), couleur_noir
pic.Line (B.X, -B.Y)-(C.X, -C.Y), couleur_noir
pic.Line (C.X, -C.Y)-(D.X, -D.Y), couleur_noir
pic.Line (D.X, -D.Y)-(A.X, -A.Y), couleur_noir
' dessine le point de gravité
pic.Circle (X, -Y), taillepuce, couleur_rouge

End If




' dessine la sortie
'If Sortie = 1 Then
'    pic.Line (X + largeur + offsetsortie, Y + hauteur / 2)-(X + largeur + taillepin, Y + hauteur / 2), couleurboite
'    pic.Circle (X + largeur + taillepin + taillepuce, Y + hauteur / 2), taillepuce, couleur
         ' symbole inverse
'    If inverse = 1 Then pic.Circle (X + largeur + taillepuce, Y + hauteur / 2), taillepuce
'    SortiePosX = X + largeur + taillepin + taillepuce
'    SortiePosY = Y + hauteur / 2
'End If

' dessine les entrees
'For i = 0 To NbEntrees - 1
'    If EtatEntrees(i) = 1 Then couleur = RGB(255, 0, 0)
'    If EtatEntrees(i) = 0 Then couleur = RGB(0, 255, 0)
'    pic.Line (X, Y + (i + 1) * hauteurStd)-(X - taillepin, Y + (i + 1) * hauteurStd), couleurboite
'    pic.Circle (X - taillepin - taillepuce, Y + (i + 1) * hauteurStd), taillepuce, couleur
'    EntreePos(0, i) = X - taillepin - taillepuce
'    EntreePos(1, i) = Y + (i + 1) * hauteurStd
'Next i

' dessine le symbole
'pic.CurrentX = X + 100
'pic.CurrentY = Y - 80 + hauteur / 2
'pic.Print symbole

End Function

Public Function Trouve_BROCHE(ByVal X As Integer, ByVal Y As Integer, Optional ByRef DifX As Integer, Optional ByRef DifY As Integer)

' trouve une broche en fonction des coordonnees

Dim PosX As Integer, PosY As Integer
Dim BROCHE As Integer
Dim message As String


'MsgBox "X: " & X & "Y:" & -Y

' correction de l'offset
Y = -Y

' par defaut pad non trouve
BROCHE = -1

For i = 0 To NB_BROCHE - 1
    ' on recupere les positions du pad
    tmp = Objet_BROCHE(i).GetPosition_BROCHE(PosX, PosY)
    
    ' Q1
    If ((X > 0) And (Y > 0)) Then
    End If
    ' Q1
    If ((X < 0) And (Y > 0)) Then
    End If
    ' Q1
    If ((X < 0) And (Y < 0)) Then
    End If
    ' Q1
    If ((X > 0) And (Y < 0)) Then
    End If
    
    ' si le clic est dans la zonne de selection, c'est gagné
    If X > PosX - 50 And X < PosX + 50 And Y > PosY - 50 And Y < PosY + 50 Then
        BROCHE = i
        If IsNumeric(DifX) Then DifX = X - PosX
        If IsNumeric(DifY) Then DifY = Y - PosY
        
    End If
Next i

Trouve_BROCHE = BROCHE

End Function


