Code du potar Slider, [Resolu] OpenWindow et molette
Re: OpenWindow et molette de la souris
Visiblement il y a un problème sur le slider jaune quand je met min = 100 et max = 255, le decalage avec la molette deconne et je ne trouve pas le pourquoi du comment. Si quelqu'un a une idee je susi prenneur.
Cordialement,
GallyHC
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Re: OpenWindow et molette de la souris
Encore une evolution mais toujours le prob sur le potar jaune.
Code : Tout sélectionner
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;- INITIALISATION DES DIRECTIVES COMPILEUR.
DisableASM
EnableExplicit
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;{ - STRUCTURE
Structure DMXSlider
gadget.l
x.l
y.l
w.l
h.l
hb.l
pas.d
min.l
max.l
state.l
value.l
WheelZoom.l
forecolor.l
backcolor.l
disable.b
lImage_01.l
lImage_02.l
lCanva_01.l
EndStructure
;}
;{ - CONSTANTES GLOBALS
Global numDMXSlider.l = 0
Global Dim DMXSlider.DMXSlider(numDMXSlider)
Global FontID1 = LoadFont(#PB_Any, "Century Gothic", 9, #PB_Font_HighQuality | #PB_Font_Bold)
;}
;{ - CONSTANTE
#DMXSlider_Color_01 = $8E6235
#DMXSlider_Color_02 = $E9D6C2
#DMXSlider_Color_03 = $D5B08C
#DMXSlider_Color_04 = $F9F3ED
#DMXSlider_Color_05 = $B88957
#DMXSlider_Color_06 = $DCBD9E
#DMXSlider_Color_07 = $E6D0B9
#DMXSlider_Color_08 = $E9D6C2
#DMX_Color_Default = -1
#DMX_Color_White = $FFFFFF
#DMX_Color_Gray = $000000
#DMX_Color_Red = $0000FF
#DMX_Color_Green = $00FF00
#DMX_Color_Blue = $FF0000
#DMX_Color_Cyan = $FFFF00
#DMX_Color_Purple = $FF00FF
#DMX_Color_Yellow = $00FFFF
#DMX_Zoom_x1 = 1
#DMX_Zoom_x2 = 2
#DMX_Zoom_x4 = 4
#DMX_Zoom_x8 = 8
#DMX_Zoom_x16 = 16
#DMX_Zoom_x32 = 32
;}
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Procedure.l ColorSubstitute(color.l, finalcolor.l)
; ROUTINE DE CHANGEMENT DES TEINTES DE COULEUR
Protected lTempsA.f
Protected lTempsB.f
Protected lColorR.l
Protected lColorG.l
Protected lColorB.l
Protected lColorA.l
Protected lShadeB.l
Protected lShadeN.l
lColorR = Red(color)
lColorG = Green(color)
lColorB = Blue(color)
lColorA = Alpha(color)
If lColorB >= lColorG And lColorB >= lColorR And lColorB > 0
lTempsA = 255 / lColorB
lShadeN = 255 - lColorB
lColorB = 255
lColorG = lTempsA * lColorG
lColorR = lTempsA * lColorR
ElseIf lColorG >= lColorB And lColorG >= lColorR And lColorG > 0
lTempsA = 255 / lColorG
lShadeN = 255 - lColorG
lColorB = lTempsA * lColorB
lColorG = 255
lColorR = lTempsA * lColorR
ElseIf lColorR >= lColorG And lColorR >= lColorB And lColorR > 0
lTempsA = 255 / lColorR
lShadeN = 255 - lColorR
lColorB = lTempsA * lColorB
lColorG = lTempsA * lColorG
lColorR = 255
Else
lShadeN = 255
lColorB = 255
lColorG = 255
lColorR = 255
EndIf
If lColorB < lColorG And lColorB < lColorR
lShadeB = 255 - lColorB
ElseIf lColorG < lColorB And lColorG < lColorR
lShadeB = 255 - lColorG
ElseIf lColorR < lColorB And lColorR < lColorG
lShadeB = 255 - lColorR
Else
lShadeB = 255
EndIf
lColorR = Red(finalcolor)
lColorG = Green(finalcolor)
lColorB = Blue(finalcolor)
If lColorB >= lColorG And lColorB >= lColorR And lColorB > 0
lTempsA = 255 / lColorB
lColorB = 255
lColorG = lTempsA * lColorG
lColorR = lTempsA * lColorR
ElseIf lColorG >= lColorB And lColorG >= lColorR And lColorG > 0
lTempsA = 255 / lColorG
lColorB = lTempsA * lColorB
lColorG = 255
lColorR = lTempsA * lColorR
ElseIf lColorR >= lColorG And lColorR >= lColorB And lColorR > 0
lTempsA = 255 / lColorR
lColorB = lTempsA * lColorB
lColorG = lTempsA * lColorG
lColorR = 255
EndIf
If lColorB < lColorG And lColorB < lColorR
lTempsA = 1 - lColorB / 255
lColorG = (lColorG - lColorB) / lTempsA
lColorR = (lColorR - lColorB) / lTempsA
lColorB = 0
ElseIf lColorG < lColorB And lColorG < lColorR
lTempsA = 1 - lColorG / 255
lColorB = (lColorB - lColorG) / lTempsA
lColorR = (lColorR - lColorG) / lTempsA
lColorG = 0
ElseIf lColorR < lColorB And lColorR < lColorG
lTempsA = 1 - lColorR / 255
lColorB = (lColorB - lColorR) / lTempsA
lColorG = (lColorG - lColorR) / lTempsA
lColorR = 0
EndIf
lTempsA = 1 - lShadeB / 255
lTempsB = (255 - lShadeN) / 255
lColorR = (lColorR + (255 - lColorR) * lTempsA) * lTempsB
If lColorR < 0
lColorR = 0
ElseIf lColorR > 255
lColorR = 255
EndIf
lColorG = (lColorG + (255 - lColorG) * lTempsA) * lTempsB
If lColorG < 0
lColorG = 0
ElseIf lColorG > 255
lColorG = 255
EndIf
lColorB = (lColorB + (255 - lColorB) * lTempsA) * lTempsB
If lColorB < 0
lColorB = 0
ElseIf lColorB > 255
lColorB = 255
EndIf
ProcedureReturn (lColorR | lColorG << 8 | lColorB << 16 | lColorA << 24)
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Procedure.l SetFindDMXGadget(gadget.l)
; ROUTINE DE RECHERCHE DU GADGET DMX.
Define i.l
If numDMXSlider > 0
For i=1 To numDMXSlider
If DMXSlider(i)\gadget = gadget
ProcedureReturn i
EndIf
Next i
EndIf
ProcedureReturn -1
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Procedure SetDrawSlider_Regulatory(gadget.l)
; ROUTINE DE TRACAGE DE LA REGLE DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
Protected w.l
Protected h.l
Protected tmpa.l
Protected tmpb.l
Protected tmpc.l
Protected state.l
Protected pasa.f
Protected pasb.f
Protected pasc.f
Protected mula.f
Protected mulb.f
Protected mulc.f
Protected Dim Couleur(7)
If i > -1
If DMXSlider(i)\lImage_01 <> 0
FreeImage(DMXSlider(i)\lImage_01)
EndIf
DMXSlider(i)\lImage_01 = CreateImage(#PB_Any, DMXSlider(i)\w, DMXSlider(i)\h)
If DMXSlider(i)\lImage_01 <> 0
If StartDrawing(ImageOutput(DMXSlider(i)\lImage_01))
Couleur(0) = ColorSubstitute(#DMXSlider_Color_01, $000000)
Couleur(1) = ColorSubstitute(#DMXSlider_Color_02, $000000)
Couleur(2) = ColorSubstitute(#DMXSlider_Color_03, $000000)
If DMXSlider(i)\backcolor = -1
Couleur(3) = ColorSubstitute(#DMXSlider_Color_04, $000000)
Else
Couleur(3) = DMXSlider(i)\backcolor
EndIf
Couleur(4) = ColorSubstitute(#DMXSlider_Color_05, $000000)
Couleur(5) = ColorSubstitute(#DMXSlider_Color_06, $000000)
Couleur(6) = ColorSubstitute(#DMXSlider_Color_07, $000000)
Couleur(7) = ColorSubstitute(#DMXSlider_Color_08, $000000)
w = DMXSlider(i)\w
h = DMXSlider(i)\h
tmpa = w / 2
tmpc = ((w + (w / 10)) / 2) - 1
Box(0, 0, w, h, Couleur(3))
Box(tmpa - 2, tmpc, 4, h - (tmpc * 2), Couleur(2))
LineXY(tmpa - 2, tmpc, tmpa - 2, h - tmpc, Couleur(0))
LineXY(tmpa - 2, tmpc, tmpa + 1, tmpc, Couleur(0))
LineXY(tmpa + 2, tmpc, tmpa + 2, h - tmpc, Couleur(1))
LineXY(tmpa - 1, h - tmpc, tmpa+2, h-tmpc, Couleur(1))
tmpb = DMXSlider(i)\max - DMXSlider(i)\min
pasa = (h - (tmpc * 2)) / tmpb
For i=0 To h - (tmpc * 2)
LineXY(0, tmpc + i, tmpa - 4, tmpc + i, Couleur(2))
LineXY(0, tmpc + i + 1, tmpa - 4, tmpc + i + 1, Couleur(7))
LineXY(tmpa+4, tmpc + i, w, tmpc + i, Couleur(2))
LineXY(tmpa+4, tmpc + i + 1, w, tmpc + i + 1, Couleur(7))
i + (pasa * 10)
Next i
StopDrawing()
EndIf
EndIf
EndIf
EndProcedure
Procedure SetDrawSlider_Button(gadget.l)
; ROUTINE DE TRACAGE DU BOUTON DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
Protected w.l
Protected tmpa.l
Protected tmpb.l
Protected tmpc.l
Protected pasa.f
Protected pasb.f
Protected pasc.f
Protected mula.f
Protected mulb.f
Protected mulc.f
Protected Dim Couleur(7)
If i > -1
If DMXSlider(i)\lImage_02 <> 0
FreeImage(DMXSlider(i)\lImage_02)
EndIf
w = DMXSlider(i)\w
tmpa = w / 10
DMXSlider(i)\hb = w + tmpa
DMXSlider(i)\lImage_02 = CreateImage(#PB_Any, DMXSlider(i)\w, DMXSlider(i)\w + tmpa)
If DMXSlider(i)\lImage_02 <> 0
If StartDrawing(ImageOutput(DMXSlider(i)\lImage_02))
If DMXSlider(i)\disable = 1
Couleur(0) = ColorSubstitute(#DMXSlider_Color_01, #DMX_Color_White)
Couleur(1) = ColorSubstitute(#DMXSlider_Color_02, #DMX_Color_White)
Couleur(2) = ColorSubstitute(#DMXSlider_Color_03, #DMX_Color_White)
Couleur(3) = ColorSubstitute(#DMXSlider_Color_04, #DMX_Color_White)
Couleur(4) = ColorSubstitute(#DMXSlider_Color_05, #DMX_Color_White)
Couleur(5) = ColorSubstitute(#DMXSlider_Color_06, #DMX_Color_White)
Couleur(6) = ColorSubstitute(#DMXSlider_Color_07, #DMX_Color_White)
Couleur(7) = ColorSubstitute(#DMXSlider_Color_08, #DMX_Color_White)
Else
If DMXSlider(i)\forecolor = -1
Couleur(0) = #DMXSlider_Color_01
Couleur(1) = #DMXSlider_Color_02
Couleur(2) = #DMXSlider_Color_03
Couleur(3) = #DMXSlider_Color_04
Couleur(4) = #DMXSlider_Color_05
Couleur(5) = #DMXSlider_Color_06
Couleur(6) = #DMXSlider_Color_07
Couleur(7) = #DMXSlider_Color_08
Else
Couleur(0) = ColorSubstitute(#DMXSlider_Color_01, DMXSlider(i)\forecolor)
Couleur(1) = ColorSubstitute(#DMXSlider_Color_02, DMXSlider(i)\forecolor)
Couleur(2) = ColorSubstitute(#DMXSlider_Color_03, DMXSlider(i)\forecolor)
Couleur(3) = ColorSubstitute(#DMXSlider_Color_04, DMXSlider(i)\forecolor)
Couleur(4) = ColorSubstitute(#DMXSlider_Color_05, DMXSlider(i)\forecolor)
Couleur(5) = ColorSubstitute(#DMXSlider_Color_06, DMXSlider(i)\forecolor)
Couleur(6) = ColorSubstitute(#DMXSlider_Color_07, DMXSlider(i)\forecolor)
Couleur(7) = ColorSubstitute(#DMXSlider_Color_08, DMXSlider(i)\forecolor)
EndIf
EndIf
Box(0, 0, w, w + tmpa, Couleur(0))
Box(1, 1, w - 2, w + tmpa - 2, Couleur(6))
Box(2, 2, w - 4, w + tmpa - 4, Couleur(2))
tmpb = (DMXSlider(i)\w / 6) - 1
pasa = (Red(Couleur(0)) - Red(Couleur(4))) / tmpb : mula = Red(Couleur(0))
pasb = (Green(Couleur(0)) - Green(Couleur(4))) / tmpb : mulb = Green(Couleur(0))
pasc = (Blue(Couleur(0)) - Blue(Couleur(4))) / tmpb : mulc = Blue(Couleur(0))
For i = 1 To tmpb Step 1
mula = mula - pasa
mulb = mulb - pasb
mulc = mulc - pasc
LineXY(1, i, w - 2, i, RGB(mula, mulb, mulc))
LineXY(1, (w + tmpa - 1) - i, w - 2, (w + tmpa - 1) - i, RGB(mula, mulb, mulc))
Next i
LineXY(1, tmpb + 1, w - 2, tmpb + 1, Couleur(5))
LineXY(1, (w + tmpa) - tmpb - 2, w - 2, (w + tmpa) - tmpb - 2, Couleur(5))
LineXY(1, ((w + tmpa) / 2), w - 2, ((w + tmpa) / 2), Couleur(1))
LineXY(1, ((w + tmpa) / 2) - 1, w - 2, ((w + tmpa) / 2) - 1, Couleur(0))
tmpc = ((w+tmpa)/2) - (tmpb * 2)
mula = Red(Couleur(1))
mulb = Green(Couleur(1))
mulc = Blue(Couleur(1))
pasa = (Red(Couleur(2)) - Red(Couleur(1))) / tmpc
pasb = (Green(Couleur(2)) - Green(Couleur(1))) / tmpc
pasc = (Blue(Couleur(2)) - Blue(Couleur(1))) / tmpc
For i = 1 To tmpc Step 1
mula = mula + pasa
mulb = mulb + pasb
mulc = mulc + pasc
LineXY(3, tmpb + 1 + i, w - 4, tmpb + 1 + i, RGB(mula, mulb, mulc))
LineXY(3, (w + tmpa) - tmpb - 2 - i, w - 4, (w + tmpa) - tmpb - 2 - i, RGB(mula, mulb, mulc))
Next i
StopDrawing()
EndIf
EndIf
EndIf
EndProcedure
Procedure DMXSliderGadget_Draw(gadget.l)
; ROUTINE DE TRACAGE DU DMX SILDER COMPLET.
Protected i.l = SetFindDMXGadget(gadget)
If StartDrawing(CanvasOutput(DMXSlider(i)\lCanva_01))
If DMXSlider(i)\lImage_01 <> 0
DrawAlphaImage(ImageID(DMXSlider(i)\lImage_01), 0, 0)
EndIf
If DMXSlider(i)\lImage_02 <> 0
DrawImage(ImageID(DMXSlider(i)\lImage_02), 0, DMXSlider(i)\state)
EndIf
StopDrawing()
EndIf
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Procedure DMXSliderGadget(gadget.l, x.l, y.l, w.l, h.l, value.l=0, min.l=0, max.l=100, color.l=#DMX_Color_Default)
;
; ROUTINE DE GETION DES BOUTONS.
Protected i.l
Protected j.l
Protected tmps.l
Protected gnew.b = #False
;
; ROUTINE DE VERIFICATION DU NUMERO DU GADGET.
;
If gadget = #PB_Any
EndIf
For i=1 To numDMXSlider
If DMXSlider(i)\gadget = gadget
j = i
gnew = #True
EndIf
Next i
If gnew = #False
numDMXSlider + 1
j = numDMXSlider
ReDim DMXSlider.DMXSlider(numDMXSlider)
EndIf
;
; ROUTINE DE VERIFICATION DES VALEURS.
;
If value < 0
value = 0
EndIf
If value > max
value = max
EndIf
tmps = w + (w / 10)
;
; ROUTINE D'ENREGISTREMENT DES INFORMATIONS.
;
DMXSlider(j)\gadget = gadget
DMXSlider(j)\x = x
DMXSlider(j)\y = y
DMXSlider(j)\w = w
DMXSlider(j)\h = h
DMXSlider(j)\pas = (max - min) / (h - tmps)
DMXSlider(j)\min = min
DMXSlider(j)\max = max
DMXSlider(j)\WheelZoom = #DMX_Zoom_x1
DMXSlider(j)\state = (-value + (DMXSlider(j)\max - DMXSlider(j)\min)) / DMXSlider(j)\pas
DMXSlider(j)\value = value + min
DMXSlider(j)\forecolor = color
DMXSlider(j)\backcolor = -1
DMXSlider(j)\disable = 0
;
; ROUTINE DE TACAGE DU DMX SLIDER GADGET.
;
If DMXSlider(i)\lCanva_01 <> 0
FreeGadget(DMXSlider(i)\lCanva_01)
EndIf
DMXSlider(i)\lCanva_01 = CanvasGadget(#PB_Any, DMXSlider(i)\x, DMXSlider(i)\y, DMXSlider(i)\w, DMXSlider(i)\h, #PB_Canvas_Keyboard)
SetDrawSlider_Button(DMXSlider(j)\gadget)
SetDrawSlider_Regulatory(DMXSlider(j)\gadget)
DMXSliderGadget_Draw(DMXSlider(j)\gadget)
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Procedure.l DMXGadget_Event(event.l, evenp.l, eveng.l)
;
Protected i.l
Protected lMosY.l
If event = #PB_Event_Gadget
For i=1 To numDMXSlider
If eveng = DMXSlider(i)\lCanva_01
If DMXSlider(i)\disable = 0
If evenp = #PB_EventType_MouseWheel
DMXSlider(i)\value + (GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_WheelDelta) * DMXSlider(i)\WheelZoom) * DMXSlider(i)\pas
If DMXSlider(i)\value < DMXSlider(i)\min
DMXSlider(i)\value = DMXSlider(i)\min
ElseIf DMXSlider(i)\value > DMXSlider(i)\max
DMXSlider(i)\value = DMXSlider(i)\max
EndIf
If DMXSlider(i)\min = 0
DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas)
Else
DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas) - 2
EndIf
DMXSliderGadget_Draw(DMXSlider(i)\gadget)
ProcedureReturn DMXSlider(i)\gadget
EndIf
If evenp = #PB_EventType_LeftButtonDown Or (evenp = #PB_EventType_MouseMove And GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_Buttons) & #PB_Canvas_LeftButton)
lMosY = GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_MouseY) - (DMXSlider(i)\hb / 2)
If lMosY < 0
lMosY = 0
EndIf
If DMXSlider(i)\value <> DMXSlider(i)\min + (DMXSlider(i)\max - DMXSlider(i)\min) - (lMosY * DMXSlider(i)\pas)
If lMosY <= DMXSlider(i)\h - DMXSlider(i)\hb
DMXSlider(i)\value = DMXSlider(i)\min + (DMXSlider(i)\max - DMXSlider(i)\min) - (lMosY * DMXSlider(i)\pas)
Else
DMXSlider(i)\value = DMXSlider(i)\min + (DMXSlider(i)\max - DMXSlider(i)\min) - ((DMXSlider(i)\h - DMXSlider(i)\hb) * DMXSlider(i)\pas)
EndIf
If lMosY > (DMXSlider(i)\h - (DMXSlider(i)\hb))
lMosY = DMXSlider(i)\h - DMXSlider(i)\hb
EndIf
DMXSlider(i)\state = lMosY
DMXSliderGadget_Draw(DMXSlider(i)\gadget)
ProcedureReturn DMXSlider(i)\gadget
EndIf
EndIf
EndIf
EndIf
Next i
EndIf
ProcedureReturn -1
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Procedure WheelZoomDMXGadget(gadget.l, zoom.l = 0)
; ROUTINE DE CHANGEMENT DU PAS DE LA MOLETTE SOURIS.
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
Select zoom
Case 0
DMXSlider(i)\WheelZoom = #DMX_Zoom_x1
Case 1
DMXSlider(i)\WheelZoom = #DMX_Zoom_x2
Case 2
DMXSlider(i)\WheelZoom = #DMX_Zoom_x4
Case 3
DMXSlider(i)\WheelZoom = #DMX_Zoom_x8
Case 4
DMXSlider(i)\WheelZoom = #DMX_Zoom_x16
Case 5
DMXSlider(i)\WheelZoom = #DMX_Zoom_x32
Default
DMXSlider(i)\WheelZoom = #DMX_Zoom_x1
EndSelect
EndIf
EndProcedure
Procedure.l GetDMXGadgetState(gadget.l)
; ROUTINE DE RECUPERATION DU LA VALEUR DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
ProcedureReturn DMXSlider(i)\value
EndIf
EndProcedure
Procedure.l SetDMXGadgetState(gadget.l, value.l)
; ROUTINE DE CHANGEMENT DE LA VALEUR DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
If value < DMXSlider(i)\min
value = DMXSlider(i)\min
ElseIf value > DMXSlider(i)\max
value = DMXSlider(i)\max
EndIf
DMXSlider(i)\value = value
If DMXSlider(i)\min = 0
DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas)
Else
DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas) - 2
EndIf
DMXSliderGadget_Draw(gadget)
EndIf
EndProcedure
Procedure.l GetDMXGadgetColor(gadget.l, colortype.l)
; ROUTINE DE RECUPERATION DES COULEURS DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
Select colortype
Case #PB_Gadget_FrontColor
Case #PB_Gadget_BackColor
EndSelect
EndIf
EndProcedure
Procedure.l SetDMXGadgetColor(gadget.l, colortype.l, color.l)
; ROUTINE DE CHANGEMENT DES COULEURS DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
Select colortype
Case #PB_Gadget_FrontColor
DMXSlider(i)\forecolor = color
SetDrawSlider_Button(gadget)
DMXSliderGadget_Draw(gadget)
Case #PB_Gadget_BackColor
DMXSlider(i)\backcolor = color
SetDrawSlider_Regulatory(gadget)
DMXSliderGadget_Draw(gadget)
EndSelect
EndIf
EndProcedure
Procedure DisableDMXGadget(gadget.l, etat.l)
; ROUTINE D'ACTIVATION/DESACTIVATION DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
If DMXSlider(i)\disable <> etat
DMXSlider(i)\disable = etat
SetDrawSlider_Button(gadget)
SetDrawSlider_Regulatory(gadget)
DMXSliderGadget_Draw(gadget)
EndIf
EndIf
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Define i.l
Define j.l = 1
Define event.l
Define evenp.l
Define eveng.l
Define dmxev.l
Define hWnd.l = OpenWindow(0, 0, 0, 800, 600, "", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
If hWnd <> 0
SmartWindowRefresh(0, 1)
DMXSliderGadget(0, 10, 20, 44, 256, 0, 10, 285, #DMX_Color_Gray)
DMXSliderGadget(1, 58, 20, 44, 256, 0, 11, 255, #DMX_Color_Red)
DMXSliderGadget(2, 106, 20, 44, 256, 0, 0, 255, #DMX_Color_Green)
DMXSliderGadget(3, 154, 20, 44, 256, 0, 0, 255, #DMX_Color_Blue)
DMXSliderGadget(4, 250, 20, 44, 256, 0, 0, 255, #DMX_Color_Default)
DMXSliderGadget(5, 298, 20, 44, 256, 0, 0, 255, #DMX_Color_Purple)
DMXSliderGadget(6, 346, 20, 44, 512, 0, 100, 255, #DMX_Color_Yellow)
DMXSliderGadget(7, 394, 20, 88, 512, 127, 0, 255, #DMX_Color_Default)
WheelZoomDMXGadget(0, 5)
WheelZoomDMXGadget(7, 3)
SetDMXGadgetState(1, 300)
SetDMXGadgetState(4, 100)
SetDMXGadgetColor(4, #PB_Gadget_BackColor, $0000FF)
SetDMXGadgetColor(4, #PB_Gadget_FrontColor, #DMX_Color_Cyan)
SetDMXGadgetColor(5, #PB_Gadget_BackColor, $00FF00)
SetDMXGadgetColor(6, #PB_Gadget_BackColor, $FF0000)
ButtonGadget(0, 500, 5, 80, 40, "Disabled")
TextGadget(1, 10, 5, 44, 12, Str(GetDMXGadgetState(0)), #PB_Text_Center)
TextGadget(2, 58, 5, 44, 12, Str(GetDMXGadgetState(1)), #PB_Text_Center)
TextGadget(3, 106, 5, 44, 12, Str(GetDMXGadgetState(2)), #PB_Text_Center)
TextGadget(4, 154, 5, 44, 12, Str(GetDMXGadgetState(3)), #PB_Text_Center)
TextGadget(5, 250, 5, 44, 12, Str(GetDMXGadgetState(4)), #PB_Text_Center)
TextGadget(6, 298, 5, 44, 12, Str(GetDMXGadgetState(5)), #PB_Text_Center)
TextGadget(7, 346, 5, 44, 12, Str(GetDMXGadgetState(6)), #PB_Text_Center)
TextGadget(8, 394, 5, 88, 12, Str(GetDMXGadgetState(7)), #PB_Text_Center)
Repeat
event = WaitWindowEvent(20)
evenp = EventType()
eveng = EventGadget()
dmxev = DMXGadget_Event(event, evenp, eveng)
Select dmxev
Case 0
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
Case 1
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
Case 2
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
Case 3
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
Case 4
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
Case 5
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
Case 6
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
Case 7
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
EndSelect
If event = #PB_Event_Gadget
If eveng = 0
If i = 0
i = 1
SetGadgetText(0, "enabled")
Else
i = 0
SetGadgetText(0, "Disabled")
EndIf
DisableDMXGadget(0, i)
DisableDMXGadget(1, i)
DisableDMXGadget(2, i)
DisableDMXGadget(3, i)
DisableDMXGadget(4, i)
DisableDMXGadget(5, i)
DisableDMXGadget(6, i)
DisableDMXGadget(7, i)
EndIf
EndIf
Until event = #PB_Event_CloseWindow
EndIf
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Re: Code du potar Slider, [Resolu] OpenWindow et molette
@GallyHC : j'ai ajouté ton DMXSlider dans mon projet CustomGadget.
pour le moment je ne l'ai pas mis en ligne car il y a toujours le pb du potar jaune
et comme j'ai plus ou moins repris ton code, bah, j'ai pas encore corrigé le soucis.
Ce que je vois pour le moment c'est que ca viens de la formule pour calculer le state et la value (dans ton code).
ya un problème avec le minimum.
ensuite j'ai un autre soucis dans mon code, c'est que j'ai du mettre le pas en type : double pour pas avoir des divisions par 0, et apparemment lorsque la hauteur est trop petite, j'ai un nombre de barre de regulatory tres tres important -_-
Je te montre ça demain
, là je pars pour aller au ski demain ^^ ++
pour le moment je ne l'ai pas mis en ligne car il y a toujours le pb du potar jaune

Ce que je vois pour le moment c'est que ca viens de la formule pour calculer le state et la value (dans ton code).
ya un problème avec le minimum.
ensuite j'ai un autre soucis dans mon code, c'est que j'ai du mettre le pas en type : double pour pas avoir des divisions par 0, et apparemment lorsque la hauteur est trop petite, j'ai un nombre de barre de regulatory tres tres important -_-
Je te montre ça demain

_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel
)
Mon site : CeriseCode (Attention Chantier perpétuel

Re: Code du potar Slider, [Resolu] OpenWindow et molette
graph100> pas de problème que tu l'ajoutes a CustomGadget
par contre j'ai ajoute pas mal de chose comme de freeDMXGadget(), SetDMXGadgetAttribute, GetDMXGadgetAttribute ect...
Cordialement,
GallyHC

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Re: Code du potar Slider, [Resolu] OpenWindow et molette
et hop un dernier avant que je parte ;:) : oui, mais ca c'est déja géré dans l'environnement que j'avais programmé, donc déja pris en charge par mon code ^^ (voir mon mp)
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel
)
Mon site : CeriseCode (Attention Chantier perpétuel

Re: Code du potar Slider, [Resolu] OpenWindow et molette
@ GallyHC et graph100
Votre travail est superbe.
Pour la réalisation d'une console son ou table de mixage il ne manque plus que la réalisation d'un
Vu-métre en bargraph.
Allez courage pour la suite.

Votre travail est superbe.

Pour la réalisation d'une console son ou table de mixage il ne manque plus que la réalisation d'un
Vu-métre en bargraph.



Re: Code du potar Slider, [Resolu] OpenWindow et molette
Bonjour tous
MLD> pour le vumètre, cela n'est pas dans mon projet mais je pourrais essayer de voir pour en faire un pourquoi pas. Par contre merci de ton soutien.
J’aime bien essayé de faire des trucs un peu design et surtout modulable facilement. Et le partage apporte beaucoup sur l’évolution d’une routine
.
Sachant que j’utilise par exemple pour le changement de couleur une routine de « Le Soldat Inconnu », que je remercie d’ailleurs une nouvelle fois au passage, car sa routine me permet de faire de bonne chose.
J’espere en le mettant ici qu’un jour cela serve a quelqu’un, même si je dois encore travaille sur l’optimisation du code
cordialement,
GallyHC
MLD> pour le vumètre, cela n'est pas dans mon projet mais je pourrais essayer de voir pour en faire un pourquoi pas. Par contre merci de ton soutien.
J’aime bien essayé de faire des trucs un peu design et surtout modulable facilement. Et le partage apporte beaucoup sur l’évolution d’une routine

Sachant que j’utilise par exemple pour le changement de couleur une routine de « Le Soldat Inconnu », que je remercie d’ailleurs une nouvelle fois au passage, car sa routine me permet de faire de bonne chose.
J’espere en le mettant ici qu’un jour cela serve a quelqu’un, même si je dois encore travaille sur l’optimisation du code

cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Re: Code du potar Slider, [Resolu] OpenWindow et molette
Une question a tous que je me pose.
Si le adget est desactive, d'apres vousd cela empeche ou pas de pouvoir changer les valeurs en programmation et que le slider prend en compte les valeurs?
Cordialement,
GallyHC
Si le adget est desactive, d'apres vousd cela empeche ou pas de pouvoir changer les valeurs en programmation et que le slider prend en compte les valeurs?
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Re: Code du potar Slider, [Resolu] OpenWindow et molette
Bonjour Gally
Pour le slider je ne sais pas, mais pour d'autres gadgets oui, même l'orsque tu les mets " Hide ".
Mais tout dépend de ce que tu entend par désactivé
Pour le slider je ne sais pas, mais pour d'autres gadgets oui, même l'orsque tu les mets " Hide ".
Mais tout dépend de ce que tu entend par désactivé

Re: Code du potar Slider, [Resolu] OpenWindow et molette
bonjour MLD,
HEU en Hide tu ne vois plus le gadget quel qu'il soit ? je disais plutot le mode enabled à 0 ou 1, la question est même si le gadget est désactiver est ce que cela empeche ou pas de pouvoir changer la valeur en code. perso j'ai ma reponse pour mon code mais je pose plutot la question en general pour que tout le monde puisse l'utilise facilement et surtout qu'il fontionne d'une méthode simple et correcte.
Cordialement,
GallyHC
HEU en Hide tu ne vois plus le gadget quel qu'il soit ? je disais plutot le mode enabled à 0 ou 1, la question est même si le gadget est désactiver est ce que cela empeche ou pas de pouvoir changer la valeur en code. perso j'ai ma reponse pour mon code mais je pose plutot la question en general pour que tout le monde puisse l'utilise facilement et surtout qu'il fontionne d'une méthode simple et correcte.
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Re: Code du potar Slider, [Resolu] OpenWindow et molette
Pour les gadgets PB, il est possible de modifier la valeur ou bien le texte des gadgets lorsqu'ils sont désactivés.
Si tu veux faire un truc qui a un fonctionnement proche, garde ça
en plus c'est assez logique ! le but de la désactivation est d’empêché l'utilisateur de faire une action à un moment, mais le prog lui, fait ce que le programmeur lui demande.
Si tu veux faire un truc qui a un fonctionnement proche, garde ça

_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel
)
Mon site : CeriseCode (Attention Chantier perpétuel

Re: Code du potar Slider, [Resolu] OpenWindow et molette
c'est bien ce que je pense mais cela fait que confirme.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Re: Code du potar Slider, [Resolu] OpenWindow et molette
Bonjour,
Encore un peu plus avancer enfin pas mal d'ailleur
Cordialement,
GallyHC
Encore un peu plus avancer enfin pas mal d'ailleur

Code : Tout sélectionner
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;- INITIALISATION DES DIRECTIVES COMPILEUR.
DisableASM
EnableExplicit
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;{ - STRUCTURE
Structure DMXSlider
gadget.l
x.l
y.l
w.l
h.l
hb.l
pas.d
min.l
max.l
blockmin.l
blockmax.l
state.l
value.l
WheelZoom.l
forecolor.l
backcolor.l
endbcolor.l
regulatory.l
disable.b
actived.b
lImage_01.l
lImage_02.l
lCanva_01.l
EndStructure
;}
;{ - CONSTANTES GLOBALS
Global numDMXSlider.l = 0
Global Dim DMXSlider.DMXSlider(numDMXSlider)
Global FontID1 = LoadFont(#PB_Any, "Century Gothic", 9, #PB_Font_HighQuality | #PB_Font_Bold)
;}
;{ - CONSTANTE
#DMXSlider_Color_01 = $8E6235
#DMXSlider_Color_02 = $E9D6C2
#DMXSlider_Color_03 = $D5B08C
#DMXSlider_Color_04 = $F9F3ED
#DMXSlider_Color_05 = $B88957
#DMXSlider_Color_06 = $DCBD9E
#DMXSlider_Color_07 = $E6D0B9
#DMXSlider_Color_08 = $E9D6C2
#DMX_Color_Default = -1
#DMX_Color_White = $FFFFFF
#DMX_Color_Gray = $000000
#DMX_Color_Red = $0000FF
#DMX_Color_Green = $00FF00
#DMX_Color_Blue = $FF0000
#DMX_Color_Cyan = $FFFF00
#DMX_Color_Purple = $FF00FF
#DMX_Color_Yellow = $00FFFF
#DMX_Zoom_x1 = 1
#DMX_Zoom_x2 = 2
#DMX_Zoom_x4 = 4
#DMX_Zoom_x8 = 8
#DMX_Zoom_x16 = 16
#DMX_Zoom_x32 = 32
#DMX_Block_Minimum = 0
#DMX_Block_Maximum = 1
#DMX_Regulatory_Off = 0
#DMX_Regulatory_On = 1
#DMX_Regulatory_progress = 2
;}
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Declare.l SetColorSubstitute(color.l, finalcolor.l)
Declare.l SetFindDMXGadget(gadget.l)
Declare SetDrawSlider_Regulatory(gadget.l)
Declare SetDrawSlider_Button(gadget.l)
Declare DMXSliderGadget_Draw(gadget.l)
Declare DMXSliderGadget(gadget.l, x.l, y.l, w.l, h.l, value.l=0, min.l=0, max.l=100, color.l=#DMX_Color_Default)
Declare.l DMXGadget_Event(event.l, evenp.l, eveng.l)
Declare WheelZoomDMXGadget(gadget.l, zoom.l = 0)
Declare.l GetDMXGadgetState(gadget.l)
Declare SetDMXGadgetState(gadget.l, value.l)
Declare.l GetDMXGadgetColor(gadget.l, colortype.l)
Declare SetDMXGadgetColor(gadget.l, colortype.l, color.l)
Declare DisableDMXGadget(gadget.l, etat.l)
Declare HideDMXGadget(gadget.l, etat.l)
Declare.l GetDMXGadgetAttribute(gadget.l, attribut.l)
Declare SetDMXGadgetAttribute(gadget.l, attribut.l, value.l)
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;- INFORMATION SUR LES FENETRES WINDOWS.
Procedure GetWindowBackgroundColor()
; ROUTINE DE RECHERCHE DE LA COULEUR de FOND.
ProcedureReturn GetSysColor_(#COLOR_3DFACE)
EndProcedure
Procedure GetElementBackgroundColor()
; ROUTINE DE RECHERCHE DE LA COULEUR de FOND.
ProcedureReturn GetSysColor_(#COLOR_BTNFACE)
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;- ROUTINE DE MOFIFICATION DES COULEURS.
Procedure.l SetColorSubstitute(color.l, finalcolor.l)
; ROUTINE DE CHANGEMENT DES TEINTES DE COULEUR
Protected lTempsA.f
Protected lTempsB.f
Protected lColorR.l
Protected lColorG.l
Protected lColorB.l
Protected lColorA.l
Protected lShadeB.l
Protected lShadeN.l
lColorR = Red(color)
lColorG = Green(color)
lColorB = Blue(color)
lColorA = Alpha(color)
If lColorB >= lColorG And lColorB >= lColorR And lColorB > 0
lTempsA = 255 / lColorB
lShadeN = 255 - lColorB
lColorB = 255
lColorG = lTempsA * lColorG
lColorR = lTempsA * lColorR
ElseIf lColorG >= lColorB And lColorG >= lColorR And lColorG > 0
lTempsA = 255 / lColorG
lShadeN = 255 - lColorG
lColorB = lTempsA * lColorB
lColorG = 255
lColorR = lTempsA * lColorR
ElseIf lColorR >= lColorG And lColorR >= lColorB And lColorR > 0
lTempsA = 255 / lColorR
lShadeN = 255 - lColorR
lColorB = lTempsA * lColorB
lColorG = lTempsA * lColorG
lColorR = 255
Else
lShadeN = 255
lColorB = 255
lColorG = 255
lColorR = 255
EndIf
If lColorB < lColorG And lColorB < lColorR
lShadeB = 255 - lColorB
ElseIf lColorG < lColorB And lColorG < lColorR
lShadeB = 255 - lColorG
ElseIf lColorR < lColorB And lColorR < lColorG
lShadeB = 255 - lColorR
Else
lShadeB = 255
EndIf
lColorR = Red(finalcolor)
lColorG = Green(finalcolor)
lColorB = Blue(finalcolor)
If lColorB >= lColorG And lColorB >= lColorR And lColorB > 0
lTempsA = 255 / lColorB
lColorB = 255
lColorG = lTempsA * lColorG
lColorR = lTempsA * lColorR
ElseIf lColorG >= lColorB And lColorG >= lColorR And lColorG > 0
lTempsA = 255 / lColorG
lColorB = lTempsA * lColorB
lColorG = 255
lColorR = lTempsA * lColorR
ElseIf lColorR >= lColorG And lColorR >= lColorB And lColorR > 0
lTempsA = 255 / lColorR
lColorB = lTempsA * lColorB
lColorG = lTempsA * lColorG
lColorR = 255
EndIf
If lColorB < lColorG And lColorB < lColorR
lTempsA = 1 - lColorB / 255
lColorG = (lColorG - lColorB) / lTempsA
lColorR = (lColorR - lColorB) / lTempsA
lColorB = 0
ElseIf lColorG < lColorB And lColorG < lColorR
lTempsA = 1 - lColorG / 255
lColorB = (lColorB - lColorG) / lTempsA
lColorR = (lColorR - lColorG) / lTempsA
lColorG = 0
ElseIf lColorR < lColorB And lColorR < lColorG
lTempsA = 1 - lColorR / 255
lColorB = (lColorB - lColorR) / lTempsA
lColorG = (lColorG - lColorR) / lTempsA
lColorR = 0
EndIf
lTempsA = 1 - lShadeB / 255
lTempsB = (255 - lShadeN) / 255
lColorR = (lColorR + (255 - lColorR) * lTempsA) * lTempsB
If lColorR < 0
lColorR = 0
ElseIf lColorR > 255
lColorR = 255
EndIf
lColorG = (lColorG + (255 - lColorG) * lTempsA) * lTempsB
If lColorG < 0
lColorG = 0
ElseIf lColorG > 255
lColorG = 255
EndIf
lColorB = (lColorB + (255 - lColorB) * lTempsA) * lTempsB
If lColorB < 0
lColorB = 0
ElseIf lColorB > 255
lColorB = 255
EndIf
ProcedureReturn (lColorR | lColorG << 8 | lColorB << 16 | lColorA << 24)
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;-ROUTINE DE RECHERCHE DU DMX SLIDER.
Procedure.l SetFindDMXGadget(gadget.l)
; ROUTINE DE RECHERCHE DU GADGET DMX SLIDER.
Define i.l
If numDMXSlider > 0
For i=1 To numDMXSlider
If DMXSlider(i)\gadget = gadget
ProcedureReturn i
EndIf
Next i
EndIf
ProcedureReturn -1
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;- ROUTINE D'AFFICHAGE DES DMX SLIDER.
Procedure SetDrawSlider_Regulatory(gadget.l)
; ROUTINE DE TRACAGE DE LA REGLE DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
Protected w.l
Protected h.l
Protected tmpa.l
Protected tmpb.l
Protected tmpc.l
Protected state.l
Protected pasa.f
Protected pasb.f
Protected pasc.f
Protected mula.f
Protected mulb.f
Protected mulc.f
Protected Dim Couleur(7)
If i > -1
If DMXSlider(i)\lImage_01 <> 0
FreeImage(DMXSlider(i)\lImage_01)
EndIf
DMXSlider(i)\lImage_01 = CreateImage(#PB_Any, DMXSlider(i)\w, DMXSlider(i)\h)
If DMXSlider(i)\lImage_01 <> 0
If StartDrawing(ImageOutput(DMXSlider(i)\lImage_01))
Couleur(0) = SetColorSubstitute(#DMXSlider_Color_01, $000000)
Couleur(1) = SetColorSubstitute(#DMXSlider_Color_02, $000000)
Couleur(2) = SetColorSubstitute(#DMXSlider_Color_03, $000000)
If DMXSlider(i)\backcolor = -1
Couleur(3) = SetColorSubstitute(#DMXSlider_Color_04, $000000)
Else
Couleur(3) = DMXSlider(i)\backcolor
EndIf
Couleur(4) = SetColorSubstitute(#DMXSlider_Color_05, $000000)
Couleur(5) = SetColorSubstitute(#DMXSlider_Color_06, $000000)
Couleur(6) = SetColorSubstitute(#DMXSlider_Color_07, $000000)
Couleur(7) = SetColorSubstitute(#DMXSlider_Color_08, $000000)
w = DMXSlider(i)\w
h = DMXSlider(i)\h
tmpa = w / 2
tmpc = ((w + (w / 10)) / 2) - 1
Box(0, 0, w, h, Couleur(3))
Box(tmpa - 2, tmpc, 4, h - (tmpc * 2), Couleur(2))
LineXY(tmpa - 2, tmpc, tmpa - 2, h - tmpc, Couleur(0))
LineXY(tmpa - 2, tmpc, tmpa + 1, tmpc, Couleur(0))
LineXY(tmpa + 2, tmpc, tmpa + 2, h - tmpc, Couleur(1))
LineXY(tmpa - 1, h - tmpc, tmpa+2, h-tmpc, Couleur(1))
Select DMXSlider(i)\regulatory
Case #DMX_Regulatory_On
tmpb = DMXSlider(i)\max - DMXSlider(i)\min
pasa = (h - (tmpc * 2)) / tmpb
For i=0 To h - (tmpc * 2)
LineXY(0, tmpc + i, tmpa - 4, tmpc + i, Couleur(0))
LineXY(0, tmpc + i + 1, tmpa - 4, tmpc + i + 1, Couleur(7))
LineXY(tmpa + 4, tmpc + i, w, tmpc + i, Couleur(0))
LineXY(tmpa + 4, tmpc + i + 1, w, tmpc + i + 1, Couleur(7))
i + (pasa * 10)
Next i
Case #DMX_Regulatory_progress
tmpb = DMXSlider(i)\max - DMXSlider(i)\min
pasa = (h - (tmpc * 2)) / tmpb
For i=0 To h - (tmpc * 2)
LineXY(0, tmpc + i, tmpa - 4, tmpc + i, Couleur(0))
LineXY(0, tmpc + i + 1, tmpa - 4, tmpc + i + 1, Couleur(7))
mula + mulc
i + (pasa * 10)
Next i
;LineXY(0, tmpc, tmpa - 4, tmpc, Couleur(7))
;LineXY(tmpa - 4, tmpc, tmpa - 4, tmpc + (h - (tmpc * 2) - 1), Couleur(7))
;LineXY(0, tmpc, tmpa - 4, tmpc + (h - (tmpc * 2) - 1), Couleur(7))
;FillArea(tmpa - 5, tmpc + 1, Couleur(7), Couleur(7))
LineXY(tmpa + 4, tmpc, w, tmpc, Couleur(7))
LineXY(tmpa + 4, tmpc, tmpa + 4, tmpc + (h - (tmpc * 2) - 1), Couleur(7))
LineXY(w - 1, tmpc, tmpa + 4, tmpc + (h - (tmpc * 2) - 1), Couleur(7))
FillArea(tmpa + 5, tmpc + 1, Couleur(7), Couleur(7))
EndSelect
StopDrawing()
EndIf
EndIf
EndIf
EndProcedure
Procedure SetDrawSlider_Button(gadget.l)
; ROUTINE DE TRACAGE DU BOUTON DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
Protected w.l
Protected tmpa.l
Protected tmpb.l
Protected tmpc.l
Protected pasa.f
Protected pasb.f
Protected pasc.f
Protected mula.f
Protected mulb.f
Protected mulc.f
Protected Dim Couleur(7)
If i > -1
If DMXSlider(i)\lImage_02 <> 0
FreeImage(DMXSlider(i)\lImage_02)
EndIf
w = DMXSlider(i)\w
tmpa = w / 10
DMXSlider(i)\hb = w + tmpa
DMXSlider(i)\lImage_02 = CreateImage(#PB_Any, DMXSlider(i)\w, DMXSlider(i)\w + tmpa)
If DMXSlider(i)\lImage_02 <> 0
If StartDrawing(ImageOutput(DMXSlider(i)\lImage_02))
If DMXSlider(i)\disable = 1
Couleur(0) = SetColorSubstitute(#DMXSlider_Color_01, #DMX_Color_White)
Couleur(1) = SetColorSubstitute(#DMXSlider_Color_02, #DMX_Color_White)
Couleur(2) = SetColorSubstitute(#DMXSlider_Color_03, #DMX_Color_White)
Couleur(3) = SetColorSubstitute(#DMXSlider_Color_04, #DMX_Color_White)
Couleur(4) = SetColorSubstitute(#DMXSlider_Color_05, #DMX_Color_White)
Couleur(5) = SetColorSubstitute(#DMXSlider_Color_06, #DMX_Color_White)
Couleur(6) = SetColorSubstitute(#DMXSlider_Color_07, #DMX_Color_White)
Couleur(7) = SetColorSubstitute(#DMXSlider_Color_08, #DMX_Color_White)
Else
If DMXSlider(i)\forecolor = -1
Couleur(0) = #DMXSlider_Color_01
Couleur(1) = #DMXSlider_Color_02
Couleur(2) = #DMXSlider_Color_03
Couleur(3) = #DMXSlider_Color_04
Couleur(4) = #DMXSlider_Color_05
Couleur(5) = #DMXSlider_Color_06
Couleur(6) = #DMXSlider_Color_07
Couleur(7) = #DMXSlider_Color_08
Else
Couleur(0) = SetColorSubstitute(#DMXSlider_Color_01, DMXSlider(i)\forecolor)
Couleur(1) = SetColorSubstitute(#DMXSlider_Color_02, DMXSlider(i)\forecolor)
Couleur(2) = SetColorSubstitute(#DMXSlider_Color_03, DMXSlider(i)\forecolor)
Couleur(3) = SetColorSubstitute(#DMXSlider_Color_04, DMXSlider(i)\forecolor)
Couleur(4) = SetColorSubstitute(#DMXSlider_Color_05, DMXSlider(i)\forecolor)
Couleur(5) = SetColorSubstitute(#DMXSlider_Color_06, DMXSlider(i)\forecolor)
Couleur(6) = SetColorSubstitute(#DMXSlider_Color_07, DMXSlider(i)\forecolor)
Couleur(7) = SetColorSubstitute(#DMXSlider_Color_08, DMXSlider(i)\forecolor)
EndIf
EndIf
Box(0, 0, w, w + tmpa, Couleur(0))
Box(1, 1, w - 2, w + tmpa - 2, Couleur(6))
Box(2, 2, w - 4, w + tmpa - 4, Couleur(2))
tmpb = (DMXSlider(i)\w / 6) - 1
pasa = (Red(Couleur(0)) - Red(Couleur(4))) / tmpb : mula = Red(Couleur(0))
pasb = (Green(Couleur(0)) - Green(Couleur(4))) / tmpb : mulb = Green(Couleur(0))
pasc = (Blue(Couleur(0)) - Blue(Couleur(4))) / tmpb : mulc = Blue(Couleur(0))
For i = 1 To tmpb Step 1
mula = mula - pasa
mulb = mulb - pasb
mulc = mulc - pasc
LineXY(1, i, w - 2, i, RGB(mula, mulb, mulc))
LineXY(1, (w + tmpa - 1) - i, w - 2, (w + tmpa - 1) - i, RGB(mula, mulb, mulc))
Next i
LineXY(1, tmpb + 1, w - 2, tmpb + 1, Couleur(5))
LineXY(1, (w + tmpa) - tmpb - 2, w - 2, (w + tmpa) - tmpb - 2, Couleur(5))
tmpc = ((w+tmpa)/2) - (tmpb * 2)
mula = Red(Couleur(1))
mulb = Green(Couleur(1))
mulc = Blue(Couleur(1))
pasa = (Red(Couleur(2)) - Red(Couleur(1))) / tmpc
pasb = (Green(Couleur(2)) - Green(Couleur(1))) / tmpc
pasc = (Blue(Couleur(2)) - Blue(Couleur(1))) / tmpc
For i = 1 To tmpc Step 1
mula = mula + pasa
mulb = mulb + pasb
mulc = mulc + pasc
LineXY(3, tmpb + 1 + i, w - 4, tmpb + 1 + i, RGB(mula, mulb, mulc))
LineXY(3, (w + tmpa) - tmpb - 2 - i, w - 4, (w + tmpa) - tmpb - 2 - i, RGB(mula, mulb, mulc))
Next i
LineXY(1, ((w + tmpa) / 2), w - 2, ((w + tmpa) / 2), Couleur(1))
LineXY(1, ((w + tmpa) / 2) - 1, w - 2, ((w + tmpa) / 2) - 1, Couleur(0))
StopDrawing()
EndIf
EndIf
EndIf
EndProcedure
Procedure DMXSliderGadget_Draw(gadget.l)
; ROUTINE DE TRACAGE DU DMX SILDER COMPLET.
Protected i.l = SetFindDMXGadget(gadget)
If DMXSlider(i)\actived = #True And DMXSlider(i)\lCanva_01 <> 0
If StartDrawing(CanvasOutput(DMXSlider(i)\lCanva_01))
If DMXSlider(i)\lImage_01 <> 0
DrawAlphaImage(ImageID(DMXSlider(i)\lImage_01), 0, 0)
EndIf
If DMXSlider(i)\lImage_02 <> 0
DrawImage(ImageID(DMXSlider(i)\lImage_02), 0, DMXSlider(i)\state)
EndIf
StopDrawing()
EndIf
EndIf
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Procedure DMXSliderGadget(gadget.l, x.l, y.l, w.l, h.l, value.l=0, min.l=0, max.l=100, color.l=#DMX_Color_Default)
;
; ROUTINE DE GETION DES BOUTONS.
Protected i.l
Protected j.l
Protected tmps.l
Protected gnew.b = #False
;
; ROUTINE DE VERIFICATION DU NUMERO DU GADGET.
;
If gadget = #PB_Any
EndIf
For i=1 To numDMXSlider
If DMXSlider(i)\gadget = gadget
j = i
gnew = #True
EndIf
Next i
If gnew = #False
numDMXSlider + 1
j = numDMXSlider
ReDim DMXSlider.DMXSlider(numDMXSlider)
EndIf
;
; ROUTINE DE VERIFICATION DES VALEURS.
;
If w < 15
w = 15
EndIf
If h < 30
h = 30
EndIf
If value < 0
value = 0
EndIf
If value > max
value = max
EndIf
tmps = w + (w / 10)
;
; ROUTINE D'ENREGISTREMENT DES INFORMATIONS.
;
DMXSlider(j)\gadget = gadget
DMXSlider(j)\x = x
DMXSlider(j)\y = y
DMXSlider(j)\w = w
DMXSlider(j)\h = h
DMXSlider(j)\pas = (max - min) / (h - tmps)
DMXSlider(j)\min = min
DMXSlider(j)\max = max
DMXSlider(j)\WheelZoom = #DMX_Zoom_x1
DMXSlider(j)\state = (-value + (DMXSlider(j)\max - DMXSlider(j)\min)) / DMXSlider(j)\pas
DMXSlider(j)\value = value + min
DMXSlider(j)\forecolor = color
DMXSlider(j)\backcolor = GetWindowBackgroundColor()
DMXSlider(j)\disable = 0
DMXSlider(j)\regulatory = #DMX_Regulatory_On
DMXSlider(j)\actived = #True
;
; ROUTINE DE TACAGE DU DMX SLIDER GADGET.
;
If DMXSlider(i)\lCanva_01 <> 0
FreeGadget(DMXSlider(i)\lCanva_01)
EndIf
DMXSlider(i)\lCanva_01 = CanvasGadget(#PB_Any, DMXSlider(i)\x, DMXSlider(i)\y, DMXSlider(i)\w, DMXSlider(i)\h, #PB_Canvas_Keyboard)
SetDrawSlider_Button(DMXSlider(j)\gadget)
SetDrawSlider_Regulatory(DMXSlider(j)\gadget)
DMXSliderGadget_Draw(DMXSlider(j)\gadget)
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Procedure.l DMXGadget_Event(event.l, evenp.l, eveng.l)
;
Protected i.l
Protected lMosY.l
If event = #PB_Event_Gadget
For i=1 To numDMXSlider
If eveng = DMXSlider(i)\lCanva_01
If DMXSlider(i)\disable = 0 Or DMXSlider(i)\actived = #False
If evenp = #PB_EventType_MouseWheel
DMXSlider(i)\value + (GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_WheelDelta) * DMXSlider(i)\WheelZoom) * DMXSlider(i)\pas
If DMXSlider(i)\value < DMXSlider(i)\min
DMXSlider(i)\value = DMXSlider(i)\min
ElseIf DMXSlider(i)\value > DMXSlider(i)\max
DMXSlider(i)\value = DMXSlider(i)\max
EndIf
If DMXSlider(i)\min = 0
DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas)
Else
DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas) - 2
EndIf
DMXSliderGadget_Draw(DMXSlider(i)\gadget)
ProcedureReturn DMXSlider(i)\gadget
EndIf
If evenp = #PB_EventType_LeftButtonDown Or (evenp = #PB_EventType_MouseMove And GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_Buttons) & #PB_Canvas_LeftButton)
lMosY = GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_MouseY) - (DMXSlider(i)\hb / 2)
If lMosY < 0
lMosY = 0
EndIf
If lMosY <= DMXSlider(i)\h - DMXSlider(i)\hb
DMXSlider(i)\value = DMXSlider(i)\min + (DMXSlider(i)\max - DMXSlider(i)\min) - (lMosY * DMXSlider(i)\pas)
Else
DMXSlider(i)\value = DMXSlider(i)\min + (DMXSlider(i)\max - DMXSlider(i)\min) - ((DMXSlider(i)\h - DMXSlider(i)\hb) * DMXSlider(i)\pas)
EndIf
If lMosY > (DMXSlider(i)\h - (DMXSlider(i)\hb))
lMosY = DMXSlider(i)\h - DMXSlider(i)\hb
EndIf
DMXSlider(i)\state = lMosY
DMXSliderGadget_Draw(DMXSlider(i)\gadget)
ProcedureReturn DMXSlider(i)\gadget
EndIf
EndIf
EndIf
Next i
EndIf
ProcedureReturn -1
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;- PROPRIETE DU GAGDET DMX SLIDER.
Procedure WheelZoomDMXGadget(gadget.l, zoom.l = 0)
; ROUTINE DE CHANGEMENT DU PAS DE LA MOLETTE SOURIS.
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
Select zoom
Case 0
DMXSlider(i)\WheelZoom = #DMX_Zoom_x1
Case 1
DMXSlider(i)\WheelZoom = #DMX_Zoom_x2
Case 2
DMXSlider(i)\WheelZoom = #DMX_Zoom_x4
Case 3
DMXSlider(i)\WheelZoom = #DMX_Zoom_x8
Case 4
DMXSlider(i)\WheelZoom = #DMX_Zoom_x16
Case 5
DMXSlider(i)\WheelZoom = #DMX_Zoom_x32
Default
DMXSlider(i)\WheelZoom = #DMX_Zoom_x1
EndSelect
EndIf
EndProcedure
Procedure.l GetDMXGadgetState(gadget.l)
; ROUTINE DE RECUPERATION DU LA VALEUR DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
ProcedureReturn DMXSlider(i)\value
EndIf
EndProcedure
Procedure SetDMXGadgetState(gadget.l, value.l)
; ROUTINE DE CHANGEMENT DE LA VALEUR DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
If value < DMXSlider(i)\min
value = DMXSlider(i)\min
ElseIf value > DMXSlider(i)\max
value = DMXSlider(i)\max
EndIf
DMXSlider(i)\value = value
If DMXSlider(i)\min = 0
DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas)
Else
DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas) - 2
EndIf
DMXSliderGadget_Draw(gadget)
EndIf
EndProcedure
Procedure.l GetDMXGadgetColor(gadget.l, colortype.l)
; ROUTINE DE RECUPERATION DES COULEURS DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
Select colortype
Case #PB_Gadget_FrontColor
ProcedureReturn DMXSlider(i)\forecolor
Case #PB_Gadget_BackColor
ProcedureReturn DMXSlider(i)\backcolor
EndSelect
EndIf
EndProcedure
Procedure SetDMXGadgetColor(gadget.l, colortype.l, color.l)
; ROUTINE DE CHANGEMENT DES COULEURS DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
Select colortype
Case #PB_Gadget_FrontColor
DMXSlider(i)\forecolor = color
SetDrawSlider_Button(gadget)
DMXSliderGadget_Draw(gadget)
Case #PB_Gadget_BackColor
DMXSlider(i)\backcolor = color
SetDrawSlider_Regulatory(gadget)
DMXSliderGadget_Draw(gadget)
EndSelect
EndIf
EndProcedure
Procedure DisableDMXGadget(gadget.l, etat.l)
; ROUTINE D'ACTIVATION/DESACTIVATION DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
If DMXSlider(i)\disable <> etat
DMXSlider(i)\disable = etat
SetDrawSlider_Button(gadget)
SetDrawSlider_Regulatory(gadget)
DMXSliderGadget_Draw(gadget)
EndIf
EndIf
EndProcedure
Procedure HideDMXGadget(gadget.l, etat.l)
; ROUTINE DE SUPPRESSION DU GADGET SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
Select etat
Case 0
HideGadget(DMXSlider(i)\lCanva_01, 0)
Case 1
HideGadget(DMXSlider(i)\lCanva_01, 1)
EndSelect
EndIf
EndProcedure
Procedure FreeDMXGadget(gadget.l)
; ROUTINE DE SUPPRESSION DU GADGET SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
DMXSlider(i)\actived = #False
If DMXSlider(i)\lImage_01 <> 0
FreeImage(DMXSlider(i)\lImage_01)
EndIf
If DMXSlider(i)\lImage_02 <> 0
FreeImage(DMXSlider(i)\lImage_02)
EndIf
If DMXSlider(i)\lCanva_01 <> 0
FreeGadget(DMXSlider(i)\lCanva_01)
EndIf
EndIf
EndProcedure
Procedure.l GetDMXGadgetAttribute(gadget.l, attribut.l)
;
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
Select attribut
Case #PB_ScrollBar_Minimum
ProcedureReturn DMXSlider(i)\min
Case #PB_ScrollBar_Maximum
ProcedureReturn DMXSlider(i)\max
EndSelect
EndIf
EndProcedure
Procedure SetDMXGadgetAttribute(gadget.l, attribut.l, value.l)
;
Protected i.l = SetFindDMXGadget(gadget)
Protected tmps.l
Protected tmpv.l
If i > -1
Select attribut
Case #PB_ScrollBar_Minimum
If value > DMXSlider(i)\max
value = DMXSlider(i)\max
EndIf
tmpv = DMXSlider(i)\value
If tmpv < value
tmpv = value
EndIf
If tmpv > DMXSlider(i)\max
tmpv = DMXSlider(i)\max
EndIf
tmps = DMXSlider(i)\w + (DMXSlider(i)\w / 10)
DMXSlider(i)\min = value
DMXSlider(i)\pas = (DMXSlider(i)\max - DMXSlider(i)\min) / (DMXSlider(i)\h - tmps)
DMXSlider(i)\state = (-tmpv + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas
DMXSlider(i)\value = tmpv + DMXSlider(i)\min
SetDrawSlider_Regulatory(gadget)
DMXSliderGadget_Draw(gadget)
Case #PB_ScrollBar_Maximum
If value < DMXSlider(i)\min
value = DMXSlider(i)\min
EndIf
tmpv = DMXSlider(i)\value
If tmpv < DMXSlider(i)\min
tmpv = DMXSlider(i)\min
EndIf
If tmpv > value
tmpv = value
EndIf
tmps = DMXSlider(i)\w + (DMXSlider(i)\w / 10)
DMXSlider(i)\max = value
DMXSlider(i)\pas = (DMXSlider(i)\max - DMXSlider(i)\min) / (DMXSlider(i)\h - tmps)
DMXSlider(i)\state = (-tmpv + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas
DMXSlider(i)\value = tmpv + DMXSlider(i)\min
SetDrawSlider_Regulatory(gadget)
DMXSliderGadget_Draw(gadget)
EndSelect
EndIf
EndProcedure
Procedure.l GetDMXGadgetBlock(gadget.l, attribut.l)
;
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
Select attribut
Case #DMX_Block_Minimum
ProcedureReturn DMXSlider(i)\blockmin
Case #DMX_Block_Maximum
ProcedureReturn DMXSlider(i)\blockmax
EndSelect
EndIf
EndProcedure
Procedure.l SetDMXGadgetBlock(gadget.l, attribut.l, value.l)
;
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
Select attribut
Case #DMX_Block_Minimum
Case #DMX_Block_Maximum
EndSelect
EndIf
EndProcedure
Procedure.l GetDMXGadgetRegulatory(gadget.l, attribut.l)
;
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
Select attribut
Case #DMX_Regulatory_Off
ProcedureReturn #DMX_Regulatory_Off
Case #DMX_Regulatory_On
ProcedureReturn #DMX_Regulatory_On
Case #DMX_Regulatory_progress
ProcedureReturn #DMX_Regulatory_progress
EndSelect
EndIf
EndProcedure
Procedure.l SetDMXGadgetRegulatory(gadget.l, attribut.l)
;
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
Select attribut
Case #DMX_Regulatory_Off
DMXSlider(i)\regulatory = #DMX_Regulatory_Off
SetDrawSlider_Regulatory(gadget)
DMXSliderGadget_Draw(gadget)
Case #DMX_Regulatory_On
DMXSlider(i)\regulatory = #DMX_Regulatory_On
SetDrawSlider_Regulatory(gadget)
DMXSliderGadget_Draw(gadget)
Case #DMX_Regulatory_progress
DMXSlider(i)\regulatory = #DMX_Regulatory_progress
SetDrawSlider_Regulatory(gadget)
DMXSliderGadget_Draw(gadget)
EndSelect
EndIf
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Define i.l
Define j.l
Define event.l
Define evenp.l
Define eveng.l
Define dmxev.l
Define hWnd.l = OpenWindow(0, 0, 0, 800, 600, "", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
If hWnd <> 0
SmartWindowRefresh(0, 1)
DMXSliderGadget(0, 10, 20, 44, 256, 0, 0, 255, #DMX_Color_Gray)
DMXSliderGadget(1, 58, 20, 44, 256, 0, 0, 255, #DMX_Color_Red)
DMXSliderGadget(2, 106, 20, 44, 256, 0, 0, 255, #DMX_Color_Green)
DMXSliderGadget(3, 154, 20, 44, 256, 0, 0, 255, #DMX_Color_Blue)
DMXSliderGadget(4, 250, 20, 44, 256, 0, 0, 255, #DMX_Color_Default)
DMXSliderGadget(5, 298, 20, 44, 256, 0, 0, 255, #DMX_Color_Purple)
DMXSliderGadget(6, 346, 20, 44, 256, 0, 100, 255, #DMX_Color_Yellow)
DMXSliderGadget(7, 394, 20, 44, 256, 127, 0, 255, #DMX_Color_Default)
WheelZoomDMXGadget(0, 5)
WheelZoomDMXGadget(7, 3)
SetDMXGadgetState(1, 300)
SetDMXGadgetState(4, 100)
SetDMXGadgetColor(4, #PB_Gadget_BackColor, $0000FF)
SetDMXGadgetColor(4, #PB_Gadget_FrontColor, #DMX_Color_Cyan)
SetDMXGadgetColor(5, #PB_Gadget_BackColor, $00FF00)
SetDMXGadgetColor(6, #PB_Gadget_BackColor, $FF0000)
SetDMXGadgetColor(7, #PB_Gadget_BackColor, $FF00FF)
SetDMXGadgetAttribute(6, #PB_ScrollBar_Minimum, 0)
SetDMXGadgetRegulatory(0, #DMX_Regulatory_Off)
SetDMXGadgetRegulatory(1, #DMX_Regulatory_Off)
SetDMXGadgetRegulatory(2, #DMX_Regulatory_On)
SetDMXGadgetRegulatory(3, #DMX_Regulatory_On)
SetDMXGadgetRegulatory(4, #DMX_Regulatory_progress)
SetDMXGadgetRegulatory(5, #DMX_Regulatory_progress)
ButtonGadget(0, 500, 5, 80, 40, "Disabled")
TextGadget(1, 10, 5, 44, 12, Str(GetDMXGadgetState(0)), #PB_Text_Center)
TextGadget(2, 58, 5, 44, 12, Str(GetDMXGadgetState(1)), #PB_Text_Center)
TextGadget(3, 106, 5, 44, 12, Str(GetDMXGadgetState(2)), #PB_Text_Center)
TextGadget(4, 154, 5, 44, 12, Str(GetDMXGadgetState(3)), #PB_Text_Center)
TextGadget(5, 250, 5, 44, 12, Str(GetDMXGadgetState(4)), #PB_Text_Center)
TextGadget(6, 298, 5, 44, 12, Str(GetDMXGadgetState(5)), #PB_Text_Center)
TextGadget(7, 346, 5, 44, 12, Str(GetDMXGadgetState(6)), #PB_Text_Center)
TextGadget(8, 394, 5, 44, 12, Str(GetDMXGadgetState(7)), #PB_Text_Center)
ButtonGadget(9, 500, 50, 80, 40, "Hide")
Repeat
event = WaitWindowEvent(20)
evenp = EventType()
eveng = EventGadget()
dmxev = DMXGadget_Event(event, evenp, eveng)
Select dmxev
Case 0
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
Case 1
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
Case 2
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
Case 3
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
Case 4
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
Case 5
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
Case 6
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
Case 7
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
EndSelect
If event = #PB_Event_Gadget
If eveng = 0
If i = 0
i = 1
SetGadgetText(0, "enabled")
Else
i = 0
SetGadgetText(0, "Disabled")
EndIf
DisableDMXGadget(0, i)
DisableDMXGadget(1, i)
DisableDMXGadget(2, i)
DisableDMXGadget(3, i)
DisableDMXGadget(4, i)
DisableDMXGadget(5, i)
DisableDMXGadget(6, i)
DisableDMXGadget(7, i)
EndIf
If eveng = 9
If j = 0
j = 1
SetGadgetText(9, "Show")
Else
j = 0
SetGadgetText(9, "Hide")
EndIf
HideDMXGadget(0, j)
HideDMXGadget(1, j)
HideDMXGadget(2, j)
HideDMXGadget(3, j)
HideDMXGadget(4, j)
HideDMXGadget(5, j)
HideDMXGadget(6, j)
HideDMXGadget(7, j)
EndIf
EndIf
Until event = #PB_Event_CloseWindow
EndIf
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Re: Code du potar Slider, [Resolu] OpenWindow et molette
ça avance bien effectivement. par contre je préfère lorsqu'un gadget est disable que tout le bloque soit grisé. Question d'habitude.
Les couleurs des trackers piquent un peu les yeux ^^ Mais sinon ça prend bien forme.
Les couleurs des trackers piquent un peu les yeux ^^ Mais sinon ça prend bien forme.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Code du potar Slider, [Resolu] OpenWindow et molette
Je penses que le desabled t'ira mieu 
GallyHC

Code : Tout sélectionner
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;- INITIALISATION DES DIRECTIVES COMPILEUR.
DisableASM
EnableExplicit
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;{ - STRUCTURE
Structure DMXSlider
gadget.l
x.l
y.l
w.l
h.l
hb.l
pas.d
min.l
max.l
blockmin.l
blockmax.l
state.l
value.l
WheelZoom.l
forecolor.l
backcolor.l
endbcolor.l
regulatory.l
disable.b
actived.b
lImage_01.l
lImage_02.l
lCanva_01.l
EndStructure
;}
;{ - CONSTANTES GLOBALS
Global lWBackGround.l = 0
Global lEBackGround.l = 0
Global numDMXSlider.l = 0
Global Dim DMXSlider.DMXSlider(numDMXSlider)
Global FontID1 = LoadFont(#PB_Any, "Century Gothic", 9, #PB_Font_HighQuality | #PB_Font_Bold)
;}
;{ - CONSTANTE
#DMXSlider_Color_01 = $8E6235
#DMXSlider_Color_02 = $E9D6C2
#DMXSlider_Color_03 = $D5B08C
#DMXSlider_Color_04 = $F9F3ED
#DMXSlider_Color_05 = $B88957
#DMXSlider_Color_06 = $DCBD9E
#DMXSlider_Color_07 = $E6D0B9
#DMXSlider_Color_08 = $E9D6C2
#DMX_Color_Default = -1
#DMX_Color_White = $FFFFFF
#DMX_Color_Gray = $000000
#DMX_Color_Red = $0000FF
#DMX_Color_Green = $00FF00
#DMX_Color_Blue = $FF0000
#DMX_Color_Cyan = $FFFF00
#DMX_Color_Purple = $FF00FF
#DMX_Color_Yellow = $00FFFF
#DMX_Zoom_x1 = 1
#DMX_Zoom_x2 = 2
#DMX_Zoom_x4 = 4
#DMX_Zoom_x8 = 8
#DMX_Zoom_x16 = 16
#DMX_Zoom_x32 = 32
#DMX_Block_Minimum = 0
#DMX_Block_Maximum = 1
#DMX_Regulatory_Off = 0
#DMX_Regulatory_On = 1
#DMX_Regulatory_progress = 2
;}
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Declare.l SetColorSubstitute(color.l, finalcolor.l)
Declare.l SetFindDMXGadget(gadget.l)
Declare SetDrawSlider_Regulatory(gadget.l)
Declare SetDrawSlider_Button(gadget.l)
Declare DMXSliderGadget_Draw(gadget.l)
Declare DMXSliderGadget(gadget.l, x.l, y.l, w.l, h.l, value.l=0, min.l=0, max.l=100, color.l=#DMX_Color_Default)
Declare.l DMXGadget_Event(event.l, evenp.l, eveng.l)
Declare WheelZoomDMXGadget(gadget.l, zoom.l = 0)
Declare.l GetDMXGadgetState(gadget.l)
Declare SetDMXGadgetState(gadget.l, value.l)
Declare.l GetDMXGadgetColor(gadget.l, colortype.l)
Declare SetDMXGadgetColor(gadget.l, colortype.l, color.l)
Declare DisableDMXGadget(gadget.l, etat.l)
Declare HideDMXGadget(gadget.l, etat.l)
Declare.l GetDMXGadgetAttribute(gadget.l, attribut.l)
Declare SetDMXGadgetAttribute(gadget.l, attribut.l, value.l)
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;- INFORMATION SUR LES FENETRES WINDOWS.
Procedure GetWindowBackgroundColor()
; ROUTINE DE RECHERCHE DE LA COULEUR DE FOND.
ProcedureReturn GetSysColor_(#COLOR_3DFACE)
EndProcedure
Procedure GetElementBackgroundColor()
; ROUTINE DE RECHERCHE DE LA COULEUR DE FOND.
ProcedureReturn GetSysColor_(#COLOR_WINDOW )
EndProcedure
lWBackGround = GetWindowBackgroundColor()
lEBackGround = GetElementBackgroundColor()
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;- ROUTINE DE MOFIFICATION DES COULEURS.
Procedure.l SetColorSubstitute(color.l, finalcolor.l)
; ROUTINE DE CHANGEMENT DES TEINTES DE COULEUR
Protected lTempsA.f
Protected lTempsB.f
Protected lColorR.l
Protected lColorG.l
Protected lColorB.l
Protected lColorA.l
Protected lShadeB.l
Protected lShadeN.l
lColorR = Red(color)
lColorG = Green(color)
lColorB = Blue(color)
lColorA = Alpha(color)
If lColorB >= lColorG And lColorB >= lColorR And lColorB > 0
lTempsA = 255 / lColorB
lShadeN = 255 - lColorB
lColorB = 255
lColorG = lTempsA * lColorG
lColorR = lTempsA * lColorR
ElseIf lColorG >= lColorB And lColorG >= lColorR And lColorG > 0
lTempsA = 255 / lColorG
lShadeN = 255 - lColorG
lColorB = lTempsA * lColorB
lColorG = 255
lColorR = lTempsA * lColorR
ElseIf lColorR >= lColorG And lColorR >= lColorB And lColorR > 0
lTempsA = 255 / lColorR
lShadeN = 255 - lColorR
lColorB = lTempsA * lColorB
lColorG = lTempsA * lColorG
lColorR = 255
Else
lShadeN = 255
lColorB = 255
lColorG = 255
lColorR = 255
EndIf
If lColorB < lColorG And lColorB < lColorR
lShadeB = 255 - lColorB
ElseIf lColorG < lColorB And lColorG < lColorR
lShadeB = 255 - lColorG
ElseIf lColorR < lColorB And lColorR < lColorG
lShadeB = 255 - lColorR
Else
lShadeB = 255
EndIf
lColorR = Red(finalcolor)
lColorG = Green(finalcolor)
lColorB = Blue(finalcolor)
If lColorB >= lColorG And lColorB >= lColorR And lColorB > 0
lTempsA = 255 / lColorB
lColorB = 255
lColorG = lTempsA * lColorG
lColorR = lTempsA * lColorR
ElseIf lColorG >= lColorB And lColorG >= lColorR And lColorG > 0
lTempsA = 255 / lColorG
lColorB = lTempsA * lColorB
lColorG = 255
lColorR = lTempsA * lColorR
ElseIf lColorR >= lColorG And lColorR >= lColorB And lColorR > 0
lTempsA = 255 / lColorR
lColorB = lTempsA * lColorB
lColorG = lTempsA * lColorG
lColorR = 255
EndIf
If lColorB < lColorG And lColorB < lColorR
lTempsA = 1 - lColorB / 255
lColorG = (lColorG - lColorB) / lTempsA
lColorR = (lColorR - lColorB) / lTempsA
lColorB = 0
ElseIf lColorG < lColorB And lColorG < lColorR
lTempsA = 1 - lColorG / 255
lColorB = (lColorB - lColorG) / lTempsA
lColorR = (lColorR - lColorG) / lTempsA
lColorG = 0
ElseIf lColorR < lColorB And lColorR < lColorG
lTempsA = 1 - lColorR / 255
lColorB = (lColorB - lColorR) / lTempsA
lColorG = (lColorG - lColorR) / lTempsA
lColorR = 0
EndIf
lTempsA = 1 - lShadeB / 255
lTempsB = (255 - lShadeN) / 255
lColorR = (lColorR + (255 - lColorR) * lTempsA) * lTempsB
If lColorR < 0
lColorR = 0
ElseIf lColorR > 255
lColorR = 255
EndIf
lColorG = (lColorG + (255 - lColorG) * lTempsA) * lTempsB
If lColorG < 0
lColorG = 0
ElseIf lColorG > 255
lColorG = 255
EndIf
lColorB = (lColorB + (255 - lColorB) * lTempsA) * lTempsB
If lColorB < 0
lColorB = 0
ElseIf lColorB > 255
lColorB = 255
EndIf
ProcedureReturn (lColorR | lColorG << 8 | lColorB << 16 | lColorA << 24)
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;-ROUTINE DE RECHERCHE DU DMX SLIDER.
Procedure.l SetFindDMXGadget(gadget.l)
; ROUTINE DE RECHERCHE DU GADGET DMX SLIDER.
Define i.l
If numDMXSlider > 0
For i=1 To numDMXSlider
If DMXSlider(i)\gadget = gadget
ProcedureReturn i
EndIf
Next i
EndIf
ProcedureReturn -1
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;- ROUTINE D'AFFICHAGE DES DMX SLIDER.
Procedure SetDrawSlider_Regulatory(gadget.l)
; ROUTINE DE TRACAGE DE LA REGLE DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
Protected w.l
Protected h.l
Protected tmpa.l
Protected tmpb.l
Protected tmpc.l
Protected state.l
Protected pasa.f
Protected pasb.f
Protected pasc.f
Protected mula.f
Protected mulb.f
Protected mulc.f
Protected Dim Couleur(7)
If i > -1
If DMXSlider(i)\lImage_01 <> 0
FreeImage(DMXSlider(i)\lImage_01)
EndIf
DMXSlider(i)\lImage_01 = CreateImage(#PB_Any, DMXSlider(i)\w, DMXSlider(i)\h)
If DMXSlider(i)\lImage_01 <> 0
If StartDrawing(ImageOutput(DMXSlider(i)\lImage_01))
If DMXSlider(i)\disable = 1
Couleur(0) = SetColorSubstitute(#DMXSlider_Color_01, #DMX_Color_White)
Couleur(1) = SetColorSubstitute(#DMXSlider_Color_02, #DMX_Color_White)
Couleur(2) = SetColorSubstitute(#DMXSlider_Color_03, #DMX_Color_White)
If DMXSlider(i)\backcolor = -1
Couleur(3) = SetColorSubstitute(#DMXSlider_Color_04, $000000)
Else
Couleur(3) = DMXSlider(i)\backcolor
EndIf
Couleur(4) = SetColorSubstitute(#DMXSlider_Color_05, #DMX_Color_White)
Couleur(5) = SetColorSubstitute(#DMXSlider_Color_06, #DMX_Color_White)
Couleur(6) = SetColorSubstitute(#DMXSlider_Color_07, #DMX_Color_White)
Couleur(7) = SetColorSubstitute(#DMXSlider_Color_08, #DMX_Color_White)
Else
Couleur(0) = SetColorSubstitute(#DMXSlider_Color_01, $000000)
Couleur(1) = SetColorSubstitute(#DMXSlider_Color_02, $000000)
Couleur(2) = SetColorSubstitute(#DMXSlider_Color_03, $000000)
If DMXSlider(i)\backcolor = -1
Couleur(3) = SetColorSubstitute(#DMXSlider_Color_04, $000000)
Else
Couleur(3) = DMXSlider(i)\backcolor
EndIf
Couleur(4) = SetColorSubstitute(#DMXSlider_Color_05, $000000)
Couleur(5) = SetColorSubstitute(#DMXSlider_Color_06, $000000)
Couleur(6) = SetColorSubstitute(#DMXSlider_Color_07, $000000)
Couleur(7) = SetColorSubstitute(#DMXSlider_Color_08, $000000)
EndIf
w = DMXSlider(i)\w
h = DMXSlider(i)\h
tmpa = w / 2
tmpc = ((w + (w / 10)) / 2) - 1
Box(0, 0, w, h, Couleur(3))
Box(tmpa - 2, tmpc, 4, h - (tmpc * 2), Couleur(2))
LineXY(tmpa - 2, tmpc, tmpa - 2, h - tmpc, Couleur(0))
LineXY(tmpa - 2, tmpc, tmpa + 1, tmpc, Couleur(0))
LineXY(tmpa + 2, tmpc, tmpa + 2, h - tmpc, Couleur(1))
LineXY(tmpa - 1, h - tmpc, tmpa+2, h-tmpc, Couleur(1))
Select DMXSlider(i)\regulatory
Case #DMX_Regulatory_On
tmpb = DMXSlider(i)\max - DMXSlider(i)\min
pasa = (h - (tmpc * 2)) / tmpb
For i=0 To h - (tmpc * 2)
LineXY(0, tmpc + i, tmpa - 4, tmpc + i, Couleur(0))
LineXY(0, tmpc + i + 1, tmpa - 4, tmpc + i + 1, Couleur(7))
LineXY(tmpa + 4, tmpc + i, w, tmpc + i, Couleur(0))
LineXY(tmpa + 4, tmpc + i + 1, w, tmpc + i + 1, Couleur(7))
i + (pasa * 10)
Next i
Case #DMX_Regulatory_progress
tmpb = DMXSlider(i)\max - DMXSlider(i)\min
pasa = (h - (tmpc * 2)) / tmpb
For i=0 To h - (tmpc * 2)
LineXY(0, tmpc + i, tmpa - 4, tmpc + i, Couleur(0))
LineXY(0, tmpc + i + 1, tmpa - 4, tmpc + i + 1, Couleur(7))
i + (pasa * 10)
Next i
;LineXY(0, tmpc, tmpa - 4, tmpc, Couleur(7))
;LineXY(tmpa - 4, tmpc, tmpa - 4, tmpc + (h - (tmpc * 2) - 1), Couleur(7))
;LineXY(0, tmpc, tmpa - 4, tmpc + (h - (tmpc * 2) - 1), Couleur(7))
;FillArea(tmpa - 5, tmpc + 1, Couleur(7), Couleur(7))
LineXY(tmpa + 4, tmpc, w, tmpc, Couleur(2))
LineXY(tmpa + 4, tmpc, tmpa + 4, tmpc + (h - (tmpc * 2) - 1), Couleur(2))
LineXY(w - 1, tmpc, tmpa + 4, tmpc + (h - (tmpc * 2) - 1), Couleur(2))
FillArea(tmpa + 5, tmpc + 1, Couleur(2), Couleur(2))
EndSelect
StopDrawing()
EndIf
EndIf
EndIf
EndProcedure
Procedure SetDrawSlider_Button(gadget.l)
; ROUTINE DE TRACAGE DU BOUTON DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
Protected w.l
Protected tmpa.l
Protected tmpb.l
Protected tmpc.l
Protected pasa.f
Protected pasb.f
Protected pasc.f
Protected mula.f
Protected mulb.f
Protected mulc.f
Protected Dim Couleur(7)
If i > -1
If DMXSlider(i)\lImage_02 <> 0
FreeImage(DMXSlider(i)\lImage_02)
EndIf
w = DMXSlider(i)\w
tmpa = w / 10
DMXSlider(i)\hb = w + tmpa
DMXSlider(i)\lImage_02 = CreateImage(#PB_Any, DMXSlider(i)\w, DMXSlider(i)\w + tmpa)
If DMXSlider(i)\lImage_02 <> 0
If StartDrawing(ImageOutput(DMXSlider(i)\lImage_02))
If DMXSlider(i)\disable = 1
Couleur(0) = SetColorSubstitute(#DMXSlider_Color_01, #DMX_Color_White)
Couleur(1) = SetColorSubstitute(#DMXSlider_Color_02, #DMX_Color_White)
Couleur(2) = SetColorSubstitute(#DMXSlider_Color_03, #DMX_Color_White)
Couleur(3) = SetColorSubstitute(#DMXSlider_Color_04, #DMX_Color_White)
Couleur(4) = SetColorSubstitute(#DMXSlider_Color_05, #DMX_Color_White)
Couleur(5) = SetColorSubstitute(#DMXSlider_Color_06, #DMX_Color_White)
Couleur(6) = SetColorSubstitute(#DMXSlider_Color_07, #DMX_Color_White)
Couleur(7) = SetColorSubstitute(#DMXSlider_Color_08, #DMX_Color_White)
Else
If DMXSlider(i)\forecolor = -1
Couleur(0) = #DMXSlider_Color_01
Couleur(1) = #DMXSlider_Color_02
Couleur(2) = #DMXSlider_Color_03
Couleur(3) = #DMXSlider_Color_04
Couleur(4) = #DMXSlider_Color_05
Couleur(5) = #DMXSlider_Color_06
Couleur(6) = #DMXSlider_Color_07
Couleur(7) = #DMXSlider_Color_08
Else
Couleur(0) = SetColorSubstitute(#DMXSlider_Color_01, DMXSlider(i)\forecolor)
Couleur(1) = SetColorSubstitute(#DMXSlider_Color_02, DMXSlider(i)\forecolor)
Couleur(2) = SetColorSubstitute(#DMXSlider_Color_03, DMXSlider(i)\forecolor)
Couleur(3) = SetColorSubstitute(#DMXSlider_Color_04, DMXSlider(i)\forecolor)
Couleur(4) = SetColorSubstitute(#DMXSlider_Color_05, DMXSlider(i)\forecolor)
Couleur(5) = SetColorSubstitute(#DMXSlider_Color_06, DMXSlider(i)\forecolor)
Couleur(6) = SetColorSubstitute(#DMXSlider_Color_07, DMXSlider(i)\forecolor)
Couleur(7) = SetColorSubstitute(#DMXSlider_Color_08, DMXSlider(i)\forecolor)
EndIf
EndIf
Box(0, 0, w, w + tmpa, Couleur(0))
Box(1, 1, w - 2, w + tmpa - 2, Couleur(6))
Box(2, 2, w - 4, w + tmpa - 4, Couleur(2))
tmpb = (DMXSlider(i)\w / 6) - 1
pasa = (Red(Couleur(0)) - Red(Couleur(4))) / tmpb : mula = Red(Couleur(0))
pasb = (Green(Couleur(0)) - Green(Couleur(4))) / tmpb : mulb = Green(Couleur(0))
pasc = (Blue(Couleur(0)) - Blue(Couleur(4))) / tmpb : mulc = Blue(Couleur(0))
For i = 1 To tmpb Step 1
mula = mula - pasa
mulb = mulb - pasb
mulc = mulc - pasc
LineXY(1, i, w - 2, i, RGB(mula, mulb, mulc))
LineXY(1, (w + tmpa - 1) - i, w - 2, (w + tmpa - 1) - i, RGB(mula, mulb, mulc))
Next i
LineXY(1, tmpb + 1, w - 2, tmpb + 1, Couleur(5))
LineXY(1, (w + tmpa) - tmpb - 2, w - 2, (w + tmpa) - tmpb - 2, Couleur(5))
tmpc = ((w+tmpa)/2) - (tmpb * 2)
mula = Red(Couleur(1))
mulb = Green(Couleur(1))
mulc = Blue(Couleur(1))
pasa = (Red(Couleur(2)) - Red(Couleur(1))) / tmpc
pasb = (Green(Couleur(2)) - Green(Couleur(1))) / tmpc
pasc = (Blue(Couleur(2)) - Blue(Couleur(1))) / tmpc
For i = 1 To tmpc Step 1
mula = mula + pasa
mulb = mulb + pasb
mulc = mulc + pasc
LineXY(3, tmpb + 1 + i, w - 4, tmpb + 1 + i, RGB(mula, mulb, mulc))
LineXY(3, (w + tmpa) - tmpb - 2 - i, w - 4, (w + tmpa) - tmpb - 2 - i, RGB(mula, mulb, mulc))
Next i
LineXY(1, ((w + tmpa) / 2), w - 2, ((w + tmpa) / 2), Couleur(1))
LineXY(1, ((w + tmpa) / 2) - 1, w - 2, ((w + tmpa) / 2) - 1, Couleur(0))
StopDrawing()
EndIf
EndIf
EndIf
EndProcedure
Procedure DMXSliderGadget_Draw(gadget.l)
; ROUTINE DE TRACAGE DU DMX SILDER COMPLET.
Protected i.l = SetFindDMXGadget(gadget)
If DMXSlider(i)\actived = #True And DMXSlider(i)\lCanva_01 <> 0
If StartDrawing(CanvasOutput(DMXSlider(i)\lCanva_01))
If DMXSlider(i)\lImage_01 <> 0
DrawAlphaImage(ImageID(DMXSlider(i)\lImage_01), 0, 0)
EndIf
If DMXSlider(i)\lImage_02 <> 0
DrawImage(ImageID(DMXSlider(i)\lImage_02), 0, DMXSlider(i)\state)
EndIf
StopDrawing()
EndIf
EndIf
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Procedure DMXSliderGadget(gadget.l, x.l, y.l, w.l, h.l, value.l=0, min.l=0, max.l=100, color.l=#DMX_Color_Default)
;
; ROUTINE DE GETION DES BOUTONS.
Protected i.l
Protected j.l
Protected tmps.l
Protected gnew.b = #False
;
; ROUTINE DE VERIFICATION DU NUMERO DU GADGET.
;
If gadget = #PB_Any
EndIf
For i=1 To numDMXSlider
If DMXSlider(i)\gadget = gadget
j = i
gnew = #True
EndIf
Next i
If gnew = #False
numDMXSlider + 1
j = numDMXSlider
ReDim DMXSlider.DMXSlider(numDMXSlider)
EndIf
;
; ROUTINE DE VERIFICATION DES VALEURS.
;
If w < 15
w = 15
EndIf
If h < 30
h = 30
EndIf
If value < 0
value = 0
EndIf
If value > max
value = max
EndIf
tmps = w + (w / 10)
;
; ROUTINE D'ENREGISTREMENT DES INFORMATIONS.
;
DMXSlider(j)\gadget = gadget
DMXSlider(j)\x = x
DMXSlider(j)\y = y
DMXSlider(j)\w = w
DMXSlider(j)\h = h
DMXSlider(j)\pas = (max - min) / (h - tmps)
DMXSlider(j)\min = min
DMXSlider(j)\max = max
DMXSlider(j)\WheelZoom = #DMX_Zoom_x1
DMXSlider(j)\state = (-value + (DMXSlider(j)\max - DMXSlider(j)\min)) / DMXSlider(j)\pas
DMXSlider(j)\value = value + min
DMXSlider(j)\forecolor = color
DMXSlider(j)\backcolor = lWBackGround
DMXSlider(j)\disable = 0
DMXSlider(j)\regulatory = #DMX_Regulatory_On
DMXSlider(j)\actived = #True
;
; ROUTINE DE TACAGE DU DMX SLIDER GADGET.
;
If DMXSlider(i)\lCanva_01 <> 0
FreeGadget(DMXSlider(i)\lCanva_01)
EndIf
DMXSlider(i)\lCanva_01 = CanvasGadget(#PB_Any, DMXSlider(i)\x, DMXSlider(i)\y, DMXSlider(i)\w, DMXSlider(i)\h, #PB_Canvas_Keyboard)
SetDrawSlider_Button(DMXSlider(j)\gadget)
SetDrawSlider_Regulatory(DMXSlider(j)\gadget)
DMXSliderGadget_Draw(DMXSlider(j)\gadget)
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;- ROUTINE DES EVENNEMENTS DU DMX SLIDER.
Procedure.l DMXGadget_Event(event.l, evenp.l, eveng.l)
;
Protected i.l
Protected lMosY.l
If event = #PB_Event_Gadget
For i=1 To numDMXSlider
If eveng = DMXSlider(i)\lCanva_01
If DMXSlider(i)\disable = 0 Or DMXSlider(i)\actived = #False
If evenp = #PB_EventType_MouseWheel
DMXSlider(i)\value + (GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_WheelDelta) * DMXSlider(i)\WheelZoom) * DMXSlider(i)\pas
If DMXSlider(i)\value < DMXSlider(i)\min
DMXSlider(i)\value = DMXSlider(i)\min
ElseIf DMXSlider(i)\value > DMXSlider(i)\max
DMXSlider(i)\value = DMXSlider(i)\max
EndIf
If DMXSlider(i)\min = 0
DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas)
Else
DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas) - 2
EndIf
DMXSliderGadget_Draw(DMXSlider(i)\gadget)
ProcedureReturn DMXSlider(i)\gadget
EndIf
If evenp = #PB_EventType_LeftButtonDown Or (evenp = #PB_EventType_MouseMove And GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_Buttons) & #PB_Canvas_LeftButton)
lMosY = GetGadgetAttribute(DMXSlider(i)\lCanva_01, #PB_Canvas_MouseY) - (DMXSlider(i)\hb / 2)
If lMosY < 0
lMosY = 0
EndIf
If lMosY <= DMXSlider(i)\h - DMXSlider(i)\hb
DMXSlider(i)\value = DMXSlider(i)\min + (DMXSlider(i)\max - DMXSlider(i)\min) - (lMosY * DMXSlider(i)\pas)
Else
DMXSlider(i)\value = DMXSlider(i)\min + (DMXSlider(i)\max - DMXSlider(i)\min) - ((DMXSlider(i)\h - DMXSlider(i)\hb) * DMXSlider(i)\pas)
EndIf
If lMosY > (DMXSlider(i)\h - (DMXSlider(i)\hb))
lMosY = DMXSlider(i)\h - DMXSlider(i)\hb
EndIf
DMXSlider(i)\state = lMosY
DMXSliderGadget_Draw(DMXSlider(i)\gadget)
ProcedureReturn DMXSlider(i)\gadget
EndIf
EndIf
EndIf
Next i
EndIf
ProcedureReturn -1
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
;- PROPRIETE DU GAGDET DMX SLIDER.
Procedure WheelZoomDMXGadget(gadget.l, zoom.l = 0)
; ROUTINE DE CHANGEMENT DU PAS DE LA MOLETTE SOURIS.
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
Select zoom
Case 0
DMXSlider(i)\WheelZoom = #DMX_Zoom_x1
Case 1
DMXSlider(i)\WheelZoom = #DMX_Zoom_x2
Case 2
DMXSlider(i)\WheelZoom = #DMX_Zoom_x4
Case 3
DMXSlider(i)\WheelZoom = #DMX_Zoom_x8
Case 4
DMXSlider(i)\WheelZoom = #DMX_Zoom_x16
Case 5
DMXSlider(i)\WheelZoom = #DMX_Zoom_x32
Default
DMXSlider(i)\WheelZoom = #DMX_Zoom_x1
EndSelect
EndIf
EndProcedure
Procedure.l GetDMXGadgetState(gadget.l)
; ROUTINE DE RECUPERATION DU LA VALEUR DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
ProcedureReturn DMXSlider(i)\value
EndIf
EndProcedure
Procedure SetDMXGadgetState(gadget.l, value.l)
; ROUTINE DE CHANGEMENT DE LA VALEUR DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
If value < DMXSlider(i)\min
value = DMXSlider(i)\min
ElseIf value > DMXSlider(i)\max
value = DMXSlider(i)\max
EndIf
DMXSlider(i)\value = value
If DMXSlider(i)\min = 0
DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas)
Else
DMXSlider(i)\state = (DMXSlider(i)\min + (-DMXSlider(i)\value + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas) - 2
EndIf
DMXSliderGadget_Draw(gadget)
EndIf
EndProcedure
Procedure.l GetDMXGadgetColor(gadget.l, colortype.l)
; ROUTINE DE RECUPERATION DES COULEURS DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
Select colortype
Case #PB_Gadget_FrontColor
ProcedureReturn DMXSlider(i)\forecolor
Case #PB_Gadget_BackColor
ProcedureReturn DMXSlider(i)\backcolor
EndSelect
EndIf
EndProcedure
Procedure SetDMXGadgetColor(gadget.l, colortype.l, color.l)
; ROUTINE DE CHANGEMENT DES COULEURS DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
Select colortype
Case #PB_Gadget_FrontColor
DMXSlider(i)\forecolor = color
SetDrawSlider_Button(gadget)
DMXSliderGadget_Draw(gadget)
Case #PB_Gadget_BackColor
DMXSlider(i)\backcolor = color
SetDrawSlider_Regulatory(gadget)
DMXSliderGadget_Draw(gadget)
EndSelect
EndIf
EndProcedure
Procedure DisableDMXGadget(gadget.l, etat.l)
; ROUTINE D'ACTIVATION/DESACTIVATION DU SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
If DMXSlider(i)\disable <> etat
DMXSlider(i)\disable = etat
SetDrawSlider_Button(gadget)
SetDrawSlider_Regulatory(gadget)
DMXSliderGadget_Draw(gadget)
EndIf
EndIf
EndProcedure
Procedure HideDMXGadget(gadget.l, etat.l)
; ROUTINE DE SUPPRESSION DU GADGET SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
Select etat
Case 0
HideGadget(DMXSlider(i)\lCanva_01, 0)
Case 1
HideGadget(DMXSlider(i)\lCanva_01, 1)
EndSelect
EndIf
EndProcedure
Procedure FreeDMXGadget(gadget.l)
; ROUTINE DE SUPPRESSION DU GADGET SLIDER.
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
DMXSlider(i)\actived = #False
If DMXSlider(i)\lImage_01 <> 0
FreeImage(DMXSlider(i)\lImage_01)
EndIf
If DMXSlider(i)\lImage_02 <> 0
FreeImage(DMXSlider(i)\lImage_02)
EndIf
If DMXSlider(i)\lCanva_01 <> 0
FreeGadget(DMXSlider(i)\lCanva_01)
EndIf
EndIf
EndProcedure
Procedure.l GetDMXGadgetAttribute(gadget.l, attribut.l)
;
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
Select attribut
Case #PB_ScrollBar_Minimum
ProcedureReturn DMXSlider(i)\min
Case #PB_ScrollBar_Maximum
ProcedureReturn DMXSlider(i)\max
EndSelect
EndIf
EndProcedure
Procedure SetDMXGadgetAttribute(gadget.l, attribut.l, value.l)
;
Protected i.l = SetFindDMXGadget(gadget)
Protected tmps.l
Protected tmpv.l
If i > -1
Select attribut
Case #PB_ScrollBar_Minimum
If value > DMXSlider(i)\max
value = DMXSlider(i)\max
EndIf
tmpv = DMXSlider(i)\value
If tmpv < value
tmpv = value
EndIf
If tmpv > DMXSlider(i)\max
tmpv = DMXSlider(i)\max
EndIf
tmps = DMXSlider(i)\w + (DMXSlider(i)\w / 10)
DMXSlider(i)\min = value
DMXSlider(i)\pas = (DMXSlider(i)\max - DMXSlider(i)\min) / (DMXSlider(i)\h - tmps)
DMXSlider(i)\state = (-tmpv + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas
DMXSlider(i)\value = tmpv + DMXSlider(i)\min
SetDrawSlider_Regulatory(gadget)
DMXSliderGadget_Draw(gadget)
Case #PB_ScrollBar_Maximum
If value < DMXSlider(i)\min
value = DMXSlider(i)\min
EndIf
tmpv = DMXSlider(i)\value
If tmpv < DMXSlider(i)\min
tmpv = DMXSlider(i)\min
EndIf
If tmpv > value
tmpv = value
EndIf
tmps = DMXSlider(i)\w + (DMXSlider(i)\w / 10)
DMXSlider(i)\max = value
DMXSlider(i)\pas = (DMXSlider(i)\max - DMXSlider(i)\min) / (DMXSlider(i)\h - tmps)
DMXSlider(i)\state = (-tmpv + (DMXSlider(i)\max - DMXSlider(i)\min)) / DMXSlider(i)\pas
DMXSlider(i)\value = tmpv + DMXSlider(i)\min
SetDrawSlider_Regulatory(gadget)
DMXSliderGadget_Draw(gadget)
EndSelect
EndIf
EndProcedure
Procedure.l GetDMXGadgetBlock(gadget.l, attribut.l)
;
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
Select attribut
Case #DMX_Block_Minimum
ProcedureReturn DMXSlider(i)\blockmin
Case #DMX_Block_Maximum
ProcedureReturn DMXSlider(i)\blockmax
EndSelect
EndIf
EndProcedure
Procedure.l SetDMXGadgetBlock(gadget.l, attribut.l, value.l)
;
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
Select attribut
Case #DMX_Block_Minimum
Case #DMX_Block_Maximum
EndSelect
EndIf
EndProcedure
Procedure.l GetDMXGadgetRegulatory(gadget.l, attribut.l)
;
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
Select attribut
Case #DMX_Regulatory_Off
ProcedureReturn #DMX_Regulatory_Off
Case #DMX_Regulatory_On
ProcedureReturn #DMX_Regulatory_On
Case #DMX_Regulatory_progress
ProcedureReturn #DMX_Regulatory_progress
EndSelect
EndIf
EndProcedure
Procedure.l SetDMXGadgetRegulatory(gadget.l, attribut.l)
;
Protected i.l = SetFindDMXGadget(gadget)
If i > -1
Select attribut
Case #DMX_Regulatory_Off
DMXSlider(i)\regulatory = #DMX_Regulatory_Off
SetDrawSlider_Regulatory(gadget)
DMXSliderGadget_Draw(gadget)
Case #DMX_Regulatory_On
DMXSlider(i)\regulatory = #DMX_Regulatory_On
SetDrawSlider_Regulatory(gadget)
DMXSliderGadget_Draw(gadget)
Case #DMX_Regulatory_progress
DMXSlider(i)\regulatory = #DMX_Regulatory_progress
SetDrawSlider_Regulatory(gadget)
DMXSliderGadget_Draw(gadget)
EndSelect
EndIf
EndProcedure
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; +--------------------------------------------------------------------------+
; | |
; +--------------------------------------------------------------------------+
Define i.l
Define j.l
Define event.l
Define evenp.l
Define eveng.l
Define dmxev.l
Define hWnd.l = OpenWindow(0, 0, 0, 800, 600, "", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
If hWnd <> 0
SmartWindowRefresh(0, 1)
DMXSliderGadget(0, 10, 20, 44, 256, 0, 0, 255, #DMX_Color_Gray)
DMXSliderGadget(1, 58, 20, 44, 256, 0, 0, 255, #DMX_Color_Red)
DMXSliderGadget(2, 106, 20, 44, 256, 0, 0, 255, #DMX_Color_Green)
DMXSliderGadget(3, 154, 20, 44, 256, 0, 0, 255, #DMX_Color_Blue)
DMXSliderGadget(4, 250, 20, 44, 256, 0, 0, 255, #DMX_Color_Default)
DMXSliderGadget(5, 298, 20, 44, 256, 0, 0, 255, #DMX_Color_Purple)
DMXSliderGadget(6, 346, 20, 44, 256, 0, 100, 255, #DMX_Color_Yellow)
DMXSliderGadget(7, 394, 20, 44, 256, 127, 0, 255, #DMX_Color_Default)
WheelZoomDMXGadget(0, 5)
WheelZoomDMXGadget(7, 3)
SetDMXGadgetState(1, 300)
SetDMXGadgetState(4, 100)
;SetDMXGadgetColor(4, #PB_Gadget_BackColor, $0000FF)
SetDMXGadgetColor(4, #PB_Gadget_FrontColor, #DMX_Color_Cyan)
;SetDMXGadgetColor(5, #PB_Gadget_BackColor, $00FF00)
;SetDMXGadgetColor(6, #PB_Gadget_BackColor, $FF0000)
;SetDMXGadgetColor(7, #PB_Gadget_BackColor, $FF00FF)
SetDMXGadgetAttribute(6, #PB_ScrollBar_Minimum, 0)
SetDMXGadgetRegulatory(0, #DMX_Regulatory_Off)
SetDMXGadgetRegulatory(1, #DMX_Regulatory_Off)
SetDMXGadgetRegulatory(2, #DMX_Regulatory_On)
SetDMXGadgetRegulatory(3, #DMX_Regulatory_On)
SetDMXGadgetRegulatory(4, #DMX_Regulatory_progress)
SetDMXGadgetRegulatory(5, #DMX_Regulatory_progress)
ButtonGadget(0, 500, 5, 80, 40, "Disabled")
TextGadget(1, 10, 5, 44, 12, Str(GetDMXGadgetState(0)), #PB_Text_Center)
TextGadget(2, 58, 5, 44, 12, Str(GetDMXGadgetState(1)), #PB_Text_Center)
TextGadget(3, 106, 5, 44, 12, Str(GetDMXGadgetState(2)), #PB_Text_Center)
TextGadget(4, 154, 5, 44, 12, Str(GetDMXGadgetState(3)), #PB_Text_Center)
TextGadget(5, 250, 5, 44, 12, Str(GetDMXGadgetState(4)), #PB_Text_Center)
TextGadget(6, 298, 5, 44, 12, Str(GetDMXGadgetState(5)), #PB_Text_Center)
TextGadget(7, 346, 5, 44, 12, Str(GetDMXGadgetState(6)), #PB_Text_Center)
TextGadget(8, 394, 5, 44, 12, Str(GetDMXGadgetState(7)), #PB_Text_Center)
ButtonGadget(9, 500, 50, 80, 40, "Hide")
Repeat
event = WaitWindowEvent(20)
evenp = EventType()
eveng = EventGadget()
dmxev = DMXGadget_Event(event, evenp, eveng)
Select dmxev
Case 0
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
Case 1
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
Case 2
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
Case 3
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
Case 4
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
Case 5
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
Case 6
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
Case 7
SetGadgetText(dmxev + 1, Str(GetDMXGadgetState(dmxev)))
EndSelect
If event = #PB_Event_Gadget
If eveng = 0
If i = 0
i = 1
SetGadgetText(0, "enabled")
Else
i = 0
SetGadgetText(0, "Disabled")
EndIf
DisableDMXGadget(0, i)
DisableDMXGadget(1, i)
DisableDMXGadget(2, i)
DisableDMXGadget(3, i)
DisableDMXGadget(4, i)
DisableDMXGadget(5, i)
DisableDMXGadget(6, i)
DisableDMXGadget(7, i)
EndIf
If eveng = 9
If j = 0
j = 1
SetGadgetText(9, "Show")
Else
j = 0
SetGadgetText(9, "Hide")
EndIf
HideDMXGadget(0, j)
HideDMXGadget(1, j)
HideDMXGadget(2, j)
HideDMXGadget(3, j)
HideDMXGadget(4, j)
HideDMXGadget(5, j)
HideDMXGadget(6, j)
HideDMXGadget(7, j)
EndIf
EndIf
Until event = #PB_Event_CloseWindow
EndIf
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)