;*****************************************************************************************************
; Progam name : Colums Include
; Version     : 1.00
; Build       : 0001
; PB Version  : 5.62
; Auther      : B.J.Fernhout.
; Copyright   : None
; Date        : 2018
; Discription : Add in to create a button in 3D view
;             :
;             :
;*****************************************************************************************************

;Hier worden de 3d buttons getekend
;x en ypos zijn bekende gegevens
;Breedte en hoogte van de button
;Color1 t/m 3$ is veld kleur,links bovenkleur,rechts onder kleur
;text$ = de button tekst
;Hitpos = merker of deze button al is ingedrukt waarbij
;   0 = niets
;   1 = muis in en boven button
;   2 = muis boven button losgelaten

;  hierbij zijn de volgende situaties van belang
;   0 niets --> 1 als muis boven button en in ingedrukt
;   1 --> 2 als muis is losgelaten boven button
;   1 -- > 0 als muis is los gelaten niet boven de button of niet boven button

Procedure Button3D(Xpos,Ypos,Width,Height,Color1,Color2,Color3,Color4,Text$,Hitpos)
  ExamineMouse()
  Protected LeftUp,RightDown,FontHeight
  Protected MousePosX = MouseX()
  Protected MousePosY = MouseY()
  
  ; standaard kleuren instelling
  Protected Field = Color1
  Protected TextColor = Color4
  ;event=WindowEvent()
  
  ; test als muis is losgelaten boven button
  If (MousePosX > Xpos) And (MousePosX < (Xpos+Width)) And (MousePosY > Ypos) And (MousePosY < (Ypos+Height)) And (Hitpos = 1) And (MouseButton(#PB_MouseButton_Left)=0)
    Hitpos = 2 ; Rem merker muis losgelaten boven button
  EndIf
  
  ;als muis boven button en status geklikt of niet en linker muis in
  If Hitpos <> 2
    If (MousePosX > Xpos) And (MousePosX < (Xpos+Width)) And (MousePosY > Ypos) And (MousePosY < (Ypos+Height)) And ((Hitpos = 0) Or (Hitpos = 1)) And (MouseButton(#PB_MouseButton_Left)=1)
      ;Teken de button als ingedrukte status
      LeftUp = Color3
      RightDown = Color2
      Hitpos = 1 ; Merker buttons is gedrukt.
    Else         ; Muis is boven button maar niet ingedrukt
      LeftUp = Color2
      RightDown = Color3
      Hitpos = 0 ; Merker buttons is niet gedrukt.
    EndIf
  EndIf
  
  ;teken nu de button
  StartDrawing(ScreenOutput())
  FrontColor(LeftUp)
  Line (Xpos,Ypos,Width,1)
  Line (XPos,Ypos+1,Width,1)
  Line (Xpos,Ypos,1,Height)
  Line (XPos+1,Ypos,1,height)
  FrontColor( RightDown)
  Line (Xpos+Width-1,Ypos+1,1,height)
  Line (Xpos+Width,Ypos,1,height)
  Line (Xpos+1,Ypos+height-1,Width,1)
  Line( Xpos,Ypos+height,Width,1)
  FrontColor(Field)
  Box (Xpos+2,Ypos+2,Width-2,height-2)
  
  ; paatst tekst regel
  FrontColor(Color4)
  StopDrawing()
  ;FontHeight =  SelectedFontSize()
  ;StartDrawing(ScreenOutput())
  ;DrawingMode(1)   ;Mode 1 = transparent
  ctext(Text$,Xpos+(Width/2),Ypos+(Height/2))
  ;StopDrawing()
  ProcedureReturn Hitpos
EndProcedure




; IDE Options = PureBasic 5.62 (Windows - x64)
; CursorPosition = 60
; FirstLine = 33
; Folding = -
; EnableXP
; CompileSourceDirectory
; EnableCompileCount = 0
; EnableBuildCount = 0
; EnableExeConstant