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