sliders de gally
Page 1 sur 1
sliders de gally
- Code:
; +======================================================+
; | |
; +------------------------------------------------------+
; | COPYRIGHT(C)2016-2018, ALL RIGHT RESERVED KOAKDESIGN |
; +--------------+---------------------------------------+
; | Program type | PUREBASIC 5.62 (MODULE) |
; +--------------+---------------------------------------+
; | VER & REV | 0.0.1 |
; +--------------+---------------------------------------+
; | Program name | |
; +======================================================+
; +======================================================+
; | Original Version: 0.0.1 |
; +--------------+---------------------------------------+
; | Created by | GallyHomeCorp |
; | Graphix by | GallyHomeCorp |
; +--------------+---------------------------------------+
; | Comments: | |
; +--------------+ |
; | |
; | |
; | |
; +======================================================+
; +======================================================+
; | Système d'Exploitation |
; +--------------+---------------------------------------+
; | Window | Oui |
; | Linux | Oui |
; | MacOS | Oui |
; +======================================================+
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
;- INITIALISATION DES DIRECTIVES DU COMPILEUR.
DisableASM
EnableExplicit
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
#PB_Event_CustumGadget_Slider = #PB_Event_FirstCustomValue + 100
;
#PB_Gadget_BackStyle = 3
#PB_Gadget_BackRegular = 4
;
#CustumGadget_Color_Default = -1
#CustumGadget_Color_Blue = -2
#CustumGadget_Color_White = $FFFFFF
#CustumGadget_Color_Gray = $000000
#CustumGadget_Color_Red = $0000FF
#CustumGadget_Color_Green = $00FF00
#CustumGadget_Color_Mallow = $FF0000
#CustumGadget_Color_Cyan = $FFFF00
#CustumGadget_Color_Purple = $FF00FF
#CustumGadget_Color_Yellow = $00FFFF
;
#CustumGadget_Zoom_x1 = 1
#CustumGadget_Zoom_x2 = 2
#CustumGadget_Zoom_x4 = 4
#CustumGadget_Zoom_x8 = 8
#CustumGadget_Zoom_x16 = 16
#CustumGadget_Zoom_x32 = 32
;
#CustumGadget_Range_Default = 8
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
DeclareModule CustumSlider
;
;- DECLARATION PUBLIQUES DU MODULE.
;
CompilerIf Defined(MinusOne, #PB_Constant) = #False
#MinusOne = -1
CompilerEndIf
CompilerIf Defined(PB_Event_CustumGadget_Slider, #PB_Constant) = #False
#PB_Event_CustumGadget_Slider = #PB_Event_FirstCustomValue + 100
CompilerEndIf
;
CompilerIf Defined(PB_Gadget_BackStyle, #PB_Constant) = #False
#PB_Gadget_BackStyle = 3
CompilerEndIf
CompilerIf Defined(PB_Gadget_BackRegular, #PB_Constant) = #False
#PB_Gadget_BackRegular = 4
CompilerEndIf
;
CompilerIf Defined(CustumGadget_Color_Default, #PB_Constant) = #False
#CustumGadget_Color_Default = -1
CompilerEndIf
CompilerIf Defined(CustumGadget_Color_Blue, #PB_Constant) = #False
#CustumGadget_Color_Blue = -2
CompilerEndIf
CompilerIf Defined(CustumGadget_Color_White, #PB_Constant) = #False
#CustumGadget_Color_White = $FFFFFF
CompilerEndIf
CompilerIf Defined(CustumGadget_Color_Gray, #PB_Constant) = #False
#CustumGadget_Color_Gray = $000000
CompilerEndIf
CompilerIf Defined(CustumGadget_Color_Red, #PB_Constant) = #False
#CustumGadget_Color_Red = $0000FF
CompilerEndIf
CompilerIf Defined(CustumGadget_Color_Green, #PB_Constant) = #False
#CustumGadget_Color_Green = $00FF00
CompilerEndIf
CompilerIf Defined(CustumGadget_Color_Mallow, #PB_Constant) = #False
#CustumGadget_Color_Mallow = $FF0000
CompilerEndIf
CompilerIf Defined(CustumGadget_Color_Cyan, #PB_Constant) = #False
#CustumGadget_Color_Cyan = $FFFF00
CompilerEndIf
CompilerIf Defined(CustumGadget_Color_Purple, #PB_Constant) = #False
#CustumGadget_Color_Purple = $FF00FF
CompilerEndIf
CompilerIf Defined(CustumGadget_Color_Yellow, #PB_Constant) = #False
#CustumGadget_Color_Yellow = $00FFFF
CompilerEndIf
;
CompilerIf Defined(CustumGadget_Zoom_x1, #PB_Constant) = #False
#CustumGadget_Zoom_x1 = 1
CompilerEndIf
CompilerIf Defined(CustumGadget_Zoom_x2, #PB_Constant) = #False
#CustumGadget_Zoom_x2 = 2
CompilerEndIf
CompilerIf Defined(CustumGadget_Zoom_x4, #PB_Constant) = #False
#CustumGadget_Zoom_x4 = 4
CompilerEndIf
CompilerIf Defined(CustumGadget_Zoom_x8, #PB_Constant) = #False
#CustumGadget_Zoom_x8 = 8
CompilerEndIf
CompilerIf Defined(CustumGadget_Zoom_x16, #PB_Constant) = #False
#CustumGadget_Zoom_x16 = 16
CompilerEndIf
CompilerIf Defined(CustumGadget_Zoom_x32, #PB_Constant) = #False
#CustumGadget_Zoom_x32 = 32
CompilerEndIf
;
CompilerIf Defined(CustumGadget_Range_Default, #PB_Constant) = #False
#CustumGadget_Range_Default = 8
CompilerEndIf
;
Declare _CreateGadget (gadget.i, x.l, y.l, w.l, h.l, value.l=0, min.l=0, max.l=100)
Declare _GetGadgetState (gadget.i)
Declare _SetGadgetState (gadget.i, color.i)
Declare _GetGadgetRange (gadget.i)
Declare _SetGadgetRange (gadget.i, range.i)
Declare _GetGadgetColor (gadget.l, colortype.l)
Declare _SetGadgetColor (gadget.l, colortype.l, color.i)
Declare _GetGadgetSelect (gadget.i)
Declare _SetGadgetSelect (gadget.i, value.b = #MinusOne)
Declare _GetGadgetData (gadget.i)
Declare _SetGadgetData (gadget.i, value.l)
Declare _DisableGadget (gadget.i, value.b)
Declare _HideGadget (gadget.i, value.b)
Declare _FreeGadget (gadget.i)
EndDeclareModule
;
;
;
Module CustumSlider
EnableExplicit
;
;- DECLARATION PRIVES DU MODULE.
;
Procedure GetWindowBackgroundColor(hwnd.i = 0)
;
; http://www.purebasic.fr/english/viewtopic.php?p=472982#p472982
;
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
;
Protected color = GetSysColor_(#COLOR_WINDOW)
If color = $FFFFFF Or color=0
color = GetSysColor_(#COLOR_BTNFACE)
EndIf
ProcedureReturn color
;
CompilerCase #PB_OS_Linux
;
Protected *style.GtkStyle, *color.GdkColor
*style = gtk_widget_get_style_(hwnd)
*color = *style\bg[0]
ProcedureReturn RGB(*color\red >> 8, *color\green >> 8, *color\blue >> 8)
;
CompilerCase #PB_OS_MacOS
;
Protected.i color, Rect.NSRect, Image
Protected.i NSColor = CocoaMessage(#Null, #Null, "NSColor windowBackgroundColor")
If NSColor
Rect\size\width = 1
Rect\size\height = 1
Image = CreateImage(#PB_Any, 1, 1)
StartDrawing(ImageOutput(Image))
CocoaMessage(#Null, NSColor, "drawSwatchInRect:@", @Rect)
color = Point(0, 0)
StopDrawing()
FreeImage(Image)
ProcedureReturn color
Else
ProcedureReturn -1
EndIf
;
CompilerEndSelect
EndProcedure
Structure _STRUTURE_CUSTUMSLIDER
window.i
gadget.i
gadgetid.i
x.l
y.l
w.l
h.l
hb.i
pas.d
min.l
max.l
index.i
state.i
value.i
range.i
wheelzoom.i
forecolor.i
backcolor.i
backstyle.i
ibacksave.i
hide.b
disable.b
actived.b
reverse.b
selected.b
multiselect.b
firstchange.b
iChannel.i
iimage_regular.i
iimage_button.i
EndStructure
Global NewMap _CREATE_CUSTUMSLIDER._STRUTURE_CUSTUMSLIDER()
;
#CustumGadget_Slider_C01 = $684828
#CustumGadget_Slider_C02 = $E9D6C2
#CustumGadget_Slider_C03 = $D5B08C
#CustumGadget_Slider_C04 = $F9F3ED
#CustumGadget_Slider_C05 = $B88957
#CustumGadget_Slider_C06 = $DCBD9E
#CustumGadget_Slider_C07 = $E6D0B9
#CustumGadget_Slider_C08 = $E9D6C2
#CustumGadget_Slider_C09 = $FFFFFF
#CustumGadget_Slider_C10 = $F4E6D6
#CustumGadget_Slider_C11 = $DBAB77
;
#CustumGadget_Zoom_x1 = 1
#CustumGadget_Zoom_x2 = 2
#CustumGadget_Zoom_x4 = 4
#CustumGadget_Zoom_x8 = 8
#CustumGadget_Zoom_x16 = 16
#CustumGadget_Zoom_x32 = 32
;
#PB_Gadget_BackDegrad = 3
;
;-
;
Procedure.i ColorSubstitute(color.i, finalcolor.i)
;
; ROUTINE DE CHANGEMENT DES TEINTES DE COULEUR
;
Protected.f lTempsA, lTempsB
Protected.w lColorR, lColorG, lColorB, lShadeB, lShadeN
lColorR = Red (color)
lColorG = Green (color)
lColorB = Blue (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
EndProcedure
Procedure.l ColorBlending(Color1.l, Color2.l, Blend.f)
;
;
;
Protected.i iRed, iGreen, iBlue, iTmpR, iTmpG, iTmpB
;
iRed = Color1 & $FF
iGreen = Color1 >> 8 & $FF
iBlue = Color1 >> 16
iTmpR = Color2 & $FF
iTmpG = Color2 >> 8 & $FF
iTmpB = Color2 >> 16
iRed = iRed * Blend + iTmpR * (1 - Blend)
iGreen = iGreen * Blend + iTmpG * (1 - Blend)
iBlue = iBlue * Blend + iTmpB * (1 - Blend)
;
ProcedureReturn (iRed | iGreen <<8 | iBlue << 16)
EndProcedure
;
;-
;
Procedure CUSTUMGadget_DrawRegulatory(gadget.i)
;
; ROUTINE DE TRACAGE DE LA REGLE DU SLIDER.
;
Protected.i j, w, h, tmpa, tmpb, tmpc, dist, state, decal
Protected.f pasa, pasb, pasc, mula, mulb, mulc
Protected Dim Couleur(3)
;
Define.i iMap = FindMapElement(_CREATE_CUSTUMSLIDER(), Str(gadget))
If iMap > #Null
If IsImage(_CREATE_CUSTUMSLIDER()\iimage_regular)
FreeImage(_CREATE_CUSTUMSLIDER()\iimage_regular)
EndIf
_CREATE_CUSTUMSLIDER()\iimage_regular = CreateImage(#PB_Any, _CREATE_CUSTUMSLIDER()\w, _CREATE_CUSTUMSLIDER()\h)
If IsImage(_CREATE_CUSTUMSLIDER()\iimage_regular)
If StartDrawing(ImageOutput(_CREATE_CUSTUMSLIDER()\iimage_regular))
If _CREATE_CUSTUMSLIDER()\backstyle = #CustumGadget_Color_Blue
Couleur(0) = #CustumGadget_Slider_C01
Couleur(1) = #CustumGadget_Slider_C02
Couleur(2) = #CustumGadget_Slider_C03
If _CREATE_CUSTUMSLIDER()\backcolor = #CustumGadget_Color_Blue
Couleur(3) = ColorSubstitute(#CustumGadget_Slider_C04, _CREATE_CUSTUMSLIDER()\backstyle)
Else
Couleur(3) = _CREATE_CUSTUMSLIDER()\backcolor
EndIf
Else
Couleur(0) = ColorSubstitute(#CustumGadget_Slider_C01, _CREATE_CUSTUMSLIDER()\backstyle)
Couleur(1) = ColorSubstitute(#CustumGadget_Slider_C02, _CREATE_CUSTUMSLIDER()\backstyle)
Couleur(2) = ColorSubstitute(#CustumGadget_Slider_C03, _CREATE_CUSTUMSLIDER()\backstyle)
If _CREATE_CUSTUMSLIDER()\backcolor = #CustumGadget_Color_Blue
Couleur(3) = ColorSubstitute(#CustumGadget_Slider_C04, _CREATE_CUSTUMSLIDER()\backstyle)
Else
Couleur(3) = _CREATE_CUSTUMSLIDER()\backcolor
EndIf
EndIf
w = _CREATE_CUSTUMSLIDER()\w
h = _CREATE_CUSTUMSLIDER()\h
tmpa = w / 2
tmpc = ((w + (w / 10)) / 2) - 1
If _CREATE_CUSTUMSLIDER()\selected
decal = 1
Box(0, 0, w, h, $20088)
EndIf
Box(0 + decal, 0 + decal, w - (decal * 2), h - (decal * 2), Couleur(3))
Box(tmpa - 2, tmpc, 4, h - (tmpc * 2), Couleur(0))
LineXY(tmpa - 2, tmpc, tmpa - 2, h - tmpc, Couleur(2))
LineXY(tmpa - 2, tmpc, tmpa + 1, tmpc, Couleur(2))
LineXY(tmpa + 2, tmpc, tmpa + 2, h - tmpc, Couleur(1))
LineXY(tmpa - 1, h - tmpc, tmpa+2, h-tmpc, Couleur(1))
;
tmpb = _CREATE_CUSTUMSLIDER()\max - _CREATE_CUSTUMSLIDER()\min
If tmpb > 0
pasa = (h - (tmpc * 2)) / tmpb
Couleur(3) = ColorBlending(Couleur(2), Couleur(0), 0.6)
For j=0 To h - (tmpc * 2)
LineXY(decal, tmpc + j + 1, tmpa - 4, tmpc + j + 1, Couleur(3))
LineXY(tmpa + 4, tmpc + j + 1, w - (decal + 1), tmpc + j + 1, Couleur(3))
LineXY(decal, tmpc + j + 2, tmpa - 4, tmpc + j + 2, Couleur(1))
LineXY(tmpa + 4, tmpc + j + 2, w - (decal + 1), tmpc + j + 2, Couleur(1))
j + (pasa * 10)
Next j
EndIf
StopDrawing()
EndIf
EndIf
EndIf
;
FreeArray(Couleur())
EndProcedure
Procedure CUSTUMGadget_DrawButton(gadget.i)
;
; ROUTINE DE TRACAGE DU BOUTON DU SLIDER.
;
;
Protected.i j, w, tmpa, tmpb, tmpc
Protected.f pasa, pasb, pasc, mula, mulb, mulc
Protected Dim Couleur(7)
;
Define.i iMap = FindMapElement(_CREATE_CUSTUMSLIDER(), Str(gadget))
If iMap > #Null
If IsImage(_CREATE_CUSTUMSLIDER()\iimage_button)
FreeImage(_CREATE_CUSTUMSLIDER()\iimage_button)
EndIf
w = _CREATE_CUSTUMSLIDER()\w
tmpa = w / 10
_CREATE_CUSTUMSLIDER()\hb = w + tmpa
_CREATE_CUSTUMSLIDER()\iimage_button = CreateImage(#PB_Any, _CREATE_CUSTUMSLIDER()\w, _CREATE_CUSTUMSLIDER()\w + tmpa)
If IsImage(_CREATE_CUSTUMSLIDER()\iimage_button)
If StartDrawing(ImageOutput(_CREATE_CUSTUMSLIDER()\iimage_button))
If _CREATE_CUSTUMSLIDER()\forecolor = #CustumGadget_Color_Blue
Couleur(0) = #CustumGadget_Slider_C01
Couleur(1) = #CustumGadget_Slider_C02
Couleur(2) = #CustumGadget_Slider_C03
;Couleur(3) = #CustumGadget_Slider_C04
Couleur(4) = #CustumGadget_Slider_C05
Couleur(5) = #CustumGadget_Slider_C06
Couleur(6) = #CustumGadget_Slider_C07
Couleur(7) = #CustumGadget_Slider_C08
Else
Couleur(0) = ColorSubstitute(#CustumGadget_Slider_C01, _CREATE_CUSTUMSLIDER()\forecolor)
Couleur(1) = ColorSubstitute(#CustumGadget_Slider_C02, _CREATE_CUSTUMSLIDER()\forecolor)
Couleur(2) = ColorSubstitute(#CustumGadget_Slider_C03, _CREATE_CUSTUMSLIDER()\forecolor)
;Couleur(3) = ColorSubstitute(#CustumGadget_Slider_C04, _CREATE_CUSTUMSLIDER()\forecolor)
Couleur(4) = ColorSubstitute(#CustumGadget_Slider_C05, _CREATE_CUSTUMSLIDER()\forecolor)
Couleur(5) = ColorSubstitute(#CustumGadget_Slider_C06, _CREATE_CUSTUMSLIDER()\forecolor)
Couleur(6) = ColorSubstitute(#CustumGadget_Slider_C07, _CREATE_CUSTUMSLIDER()\forecolor)
Couleur(7) = ColorSubstitute(#CustumGadget_Slider_C08, _CREATE_CUSTUMSLIDER()\forecolor)
EndIf
DrawingMode(#PB_2DDrawing_Outlined)
Box(0, 0, w, w + tmpa, Couleur(0))
Box(1, 1, w - 2, w + tmpa - 2, Couleur(6))
DrawingMode(#PB_2DDrawing_Transparent)
Box(2, 2, w - 4, w + tmpa - 4, Couleur(2))
DrawingMode(#PB_2DDrawing_Outlined)
tmpb = (_CREATE_CUSTUMSLIDER()\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 j = 1 To tmpb Step 1
mula = mula - pasa
mulb = mulb - pasb
mulc = mulc - pasc
LineXY(1, j, w - 2, j, RGB(mula, mulb, mulc))
LineXY(1, (w + tmpa - 1) - j, w - 2, (w + tmpa - 1) - j, RGB(mula, mulb, mulc))
Next j
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 j = 1 To tmpc Step 1
mula = mula + pasa
mulb = mulb + pasb
mulc = mulc + pasc
LineXY(3, tmpb + 1 + j, w - 4, tmpb + 1 + j, RGB(mula, mulb, mulc))
LineXY(3, (w + tmpa) - tmpb - 2 - j, w - 4, (w + tmpa) - tmpb - 2 - j, RGB(mula, mulb, mulc))
Next j
LineXY(1, ((w + tmpa) / 2) + 1, w - 2, ((w + tmpa) / 2) + 1, Couleur(1))
LineXY(1, ((w + tmpa) / 2) - 0, w - 2, ((w + tmpa) / 2) - 0, Couleur(0))
LineXY(1, ((w + tmpa) / 2) - 1, w - 2, ((w + tmpa) / 2) - 1, Couleur(1))
StopDrawing()
EndIf
EndIf
EndIf
;
FreeArray(Couleur())
EndProcedure
Procedure CUSTUMGadget_DrawSlider(gadget.i)
;
; ROUTINE DE TRACAGE DU DMX SILDER COMPLET.
;
Define.i x, y, j, w, h, col1, col2, tmpa, tmpb
;
Define.i iMap = FindMapElement(_CREATE_CUSTUMSLIDER(), Str(gadget))
If iMap > #Null
If _CREATE_CUSTUMSLIDER()\actived = #True And IsGadget(_CREATE_CUSTUMSLIDER()\gadget)
If StartDrawing(CanvasOutput(_CREATE_CUSTUMSLIDER()\gadget))
DrawingMode(#PB_2DDrawing_Default)
w = _CREATE_CUSTUMSLIDER()\w
h = _CREATE_CUSTUMSLIDER()\h
If IsImage(_CREATE_CUSTUMSLIDER()\iimage_regular)
DrawImage(ImageID(_CREATE_CUSTUMSLIDER()\iimage_regular), 0, 0)
tmpa = w / 2
tmpb = ((w + (w / 10)) / 2) - 1
If h - (tmpb * 2) - _CREATE_CUSTUMSLIDER()\state - 3 > tmpb And _CREATE_CUSTUMSLIDER()\disable = 0
Box(tmpa - 1, _CREATE_CUSTUMSLIDER()\state + tmpb, 3, h - (tmpb * 2) - _CREATE_CUSTUMSLIDER()\state, $0000a8)
EndIf
EndIf
If IsImage(_CREATE_CUSTUMSLIDER()\iimage_button)
DrawImage(ImageID(_CREATE_CUSTUMSLIDER()\iimage_button), 0, _CREATE_CUSTUMSLIDER()\state)
EndIf
If _CREATE_CUSTUMSLIDER()\disable = #True
DrawingMode(#PB_2DDrawing_AlphaBlend)
Box(0, 0, w, h, RGBA(Red(_CREATE_CUSTUMSLIDER()\backcolor), Green(_CREATE_CUSTUMSLIDER()\backcolor), Blue(_CREATE_CUSTUMSLIDER()\backcolor), 180))
EndIf
StopDrawing()
EndIf
EndIf
EndIf
EndProcedure
;
;-
;
Procedure _OnEvent_SCANBORDERS(lvalue.l, lmin.l, lmax.l)
;
;
;
If lvalue < lmin
lvalue = lmin
Else
If lvalue > lmax
lvalue = lmax
EndIf
EndIf
;
ProcedureReturn lvalue
EndProcedure
;
Procedure _OnEvent_CUSTUMSLIDERS()
;
;
;
Protected.i event = EventType ()
Protected.i gadget = EventGadget()
Protected.i iMap, _SAV_MOUSE_Y, _SAV_VALUE_S
Static.b _SAV_MOUSE_CLIC
;
;
If GetGadgetAttribute(gadget, #PB_Canvas_Modifiers) = #PB_Canvas_Alt
;
iMap = FindMapElement(_CREATE_CUSTUMSLIDER(), Str(gadget))
If iMap <> #Null
If _CREATE_CUSTUMSLIDER()\disable = #False
If event = #PB_EventType_LeftButtonDown And _CREATE_CUSTUMSLIDER()\multiselect = #True
If _CREATE_CUSTUMSLIDER()\disable = #False
_SetGadgetSelect(_CREATE_CUSTUMSLIDER()\gadget)
EndIf
EndIf
EndIf
;
ProcedureReturn
EndIf
;
Else
;
If GetGadgetAttribute(gadget, #PB_Canvas_WheelDelta)
iMap = FindMapElement(_CREATE_CUSTUMSLIDER(), Str(gadget))
If iMap <> #Null
If _CREATE_CUSTUMSLIDER()\disable = #False
_SAV_VALUE_S = _CREATE_CUSTUMSLIDER()\value + (GetGadgetAttribute(gadget, #PB_Canvas_WheelDelta) * _CREATE_CUSTUMSLIDER()\WheelZoom)
_SAV_VALUE_S = _OnEvent_SCANBORDERS(_SAV_VALUE_S, _CREATE_CUSTUMSLIDER()\min, _CREATE_CUSTUMSLIDER()\max)
If _CREATE_CUSTUMSLIDER()\value <> _SAV_VALUE_S Or _CREATE_CUSTUMSLIDER()\firstchange = #False
_CREATE_CUSTUMSLIDER()\value = _SAV_VALUE_S
_CREATE_CUSTUMSLIDER()\state = (_CREATE_CUSTUMSLIDER()\min - _CREATE_CUSTUMSLIDER()\value + (_CREATE_CUSTUMSLIDER()\max - _CREATE_CUSTUMSLIDER()\min)) / _CREATE_CUSTUMSLIDER()\pas
_CREATE_CUSTUMSLIDER()\firstchange = #True
;
PostEvent(#PB_Event_CustumGadget_Slider, _CREATE_CUSTUMSLIDER()\window, _CREATE_CUSTUMSLIDER()\gadget, #PB_EventType_LeftButtonDown)
CUSTUMGadget_DrawSlider(gadget)
EndIf
EndIf
;
ProcedureReturn
EndIf
EndIf
;
If event = #PB_EventType_LeftButtonDown Or (event = #PB_EventType_MouseMove And GetGadgetAttribute(gadget, #PB_Canvas_Buttons) & #PB_Canvas_LeftButton)
If _SAV_MOUSE_CLIC = #False
_SAV_MOUSE_Y = GetGadgetAttribute(gadget, #PB_Canvas_MouseY)
iMap = FindMapElement(_CREATE_CUSTUMSLIDER(), Str(gadget))
If _CREATE_CUSTUMSLIDER()\disable = #False
If iMap <> #Null
If _SAV_MOUSE_Y >= _CREATE_CUSTUMSLIDER()\state And _SAV_MOUSE_Y <= _CREATE_CUSTUMSLIDER()\state + _CREATE_CUSTUMSLIDER()\hb
_SAV_MOUSE_CLIC = 1
Else
_SAV_MOUSE_CLIC = 2
EndIf
EndIf
EndIf
EndIf
;
iMap = FindMapElement(_CREATE_CUSTUMSLIDER(), Str(gadget))
If iMap <> #Null
If _SAV_MOUSE_CLIC = 1
_SAV_MOUSE_Y = GetGadgetAttribute(gadget, #PB_Canvas_MouseY) - (_CREATE_CUSTUMSLIDER()\hb / 2)
_SAV_MOUSE_Y = _OnEvent_SCANBORDERS(_SAV_MOUSE_Y, 0, _CREATE_CUSTUMSLIDER()\h - _CREATE_CUSTUMSLIDER()\hb)
_SAV_VALUE_S = _CREATE_CUSTUMSLIDER()\min + (_CREATE_CUSTUMSLIDER()\max - _CREATE_CUSTUMSLIDER()\min) - (_SAV_MOUSE_Y * _CREATE_CUSTUMSLIDER()\pas)
If _CREATE_CUSTUMSLIDER()\value <> _SAV_VALUE_S Or _CREATE_CUSTUMSLIDER()\firstchange = #False
_CREATE_CUSTUMSLIDER()\value = _SAV_VALUE_S
_CREATE_CUSTUMSLIDER()\state = _SAV_MOUSE_Y
_CREATE_CUSTUMSLIDER()\firstchange = #True
;
PostEvent(#PB_Event_CustumGadget_Slider, _CREATE_CUSTUMSLIDER()\window, _CREATE_CUSTUMSLIDER()\gadget, #PB_EventType_LeftButtonDown)
CUSTUMGadget_DrawSlider(gadget)
EndIf
;
ProcedureReturn
EndIf
If _SAV_MOUSE_CLIC = 2
_SAV_MOUSE_Y = GetGadgetAttribute(gadget, #PB_Canvas_MouseY)
iMap = FindMapElement(_CREATE_CUSTUMSLIDER(), Str(gadget))
If iMap <> #Null
If _SAV_MOUSE_Y < _CREATE_CUSTUMSLIDER()\state
_SAV_VALUE_S = _CREATE_CUSTUMSLIDER()\value + _CREATE_CUSTUMSLIDER()\range
EndIf
If _SAV_MOUSE_Y > _CREATE_CUSTUMSLIDER()\state + _CREATE_CUSTUMSLIDER()\hb
_SAV_VALUE_S = _CREATE_CUSTUMSLIDER()\value - _CREATE_CUSTUMSLIDER()\range
EndIf
_SAV_VALUE_S = _OnEvent_SCANBORDERS(_SAV_VALUE_S, _CREATE_CUSTUMSLIDER()\min, _CREATE_CUSTUMSLIDER()\max)
If _CREATE_CUSTUMSLIDER()\value <> _SAV_VALUE_S Or _CREATE_CUSTUMSLIDER()\firstchange = #False
_CREATE_CUSTUMSLIDER()\value = _SAV_VALUE_S
_CREATE_CUSTUMSLIDER()\state = (_CREATE_CUSTUMSLIDER()\min - _CREATE_CUSTUMSLIDER()\value + (_CREATE_CUSTUMSLIDER()\max - _CREATE_CUSTUMSLIDER()\min)) / _CREATE_CUSTUMSLIDER()\pas
_CREATE_CUSTUMSLIDER()\firstchange = #True
;
PostEvent(#PB_Event_CustumGadget_Slider, _CREATE_CUSTUMSLIDER()\window, _CREATE_CUSTUMSLIDER()\gadget, #PB_EventType_LeftButtonDown)
CUSTUMGadget_DrawSlider(gadget)
EndIf
;
_SAV_MOUSE_CLIC = 3
EndIf
EndIf
EndIf
Else
If _SAV_MOUSE_CLIC <> #False
_SAV_MOUSE_CLIC = #False
EndIf
EndIf
If event = #PB_EventType_RightButtonDown
PostEvent(#PB_Event_CustumGadget_Slider, _CREATE_CUSTUMSLIDER()\window, _CREATE_CUSTUMSLIDER()\gadget, #PB_EventType_RightButtonDown)
EndIf
;
EndIf
;
EndProcedure
;
;-
;
Procedure _CreateGadget(gadget.i, x.l, y.l, w.l, h.l, value.l=0, min.l=0, max.l=100)
;
;
;
Protected.i ivalue
Protected.l ltemps
;
;
;
If gadget = #PB_Any
gadget = CanvasGadget(#PB_Any, x, y, w, h, #PB_Container_BorderLess | #PB_Canvas_Keyboard)
ivalue = gadget
Else
ivalue = CanvasGadget(gadget, x, y, w, h, #PB_Container_BorderLess | #PB_Canvas_Keyboard)
EndIf
AddMapElement(_CREATE_CUSTUMSLIDER(), Str(gadget), #PB_Map_ElementCheck)
;
;
;
If w < 15 : w = 15 : EndIf
If h < 30 : h = 30 : EndIf
;
ltemps = w + (w / 10)
;
_CREATE_CUSTUMSLIDER()\window = GetActiveWindow()
_CREATE_CUSTUMSLIDER()\gadget = gadget
_CREATE_CUSTUMSLIDER()\gadgetid = ivalue
_CREATE_CUSTUMSLIDER()\actived = #True
_CREATE_CUSTUMSLIDER()\x = x
_CREATE_CUSTUMSLIDER()\y = y
_CREATE_CUSTUMSLIDER()\w = w
_CREATE_CUSTUMSLIDER()\h = h
_CREATE_CUSTUMSLIDER()\pas = (max - min) / (h - ltemps)
_CREATE_CUSTUMSLIDER()\min = min
_CREATE_CUSTUMSLIDER()\max = max
_CREATE_CUSTUMSLIDER()\range = #CustumGadget_Range_Default
_CREATE_CUSTUMSLIDER()\state = (-value + (_CREATE_CUSTUMSLIDER()\max - _CREATE_CUSTUMSLIDER()\min)) / _CREATE_CUSTUMSLIDER()\pas
_CREATE_CUSTUMSLIDER()\wheelzoom = #CustumGadget_Zoom_x1
_CREATE_CUSTUMSLIDER()\backstyle = #CustumGadget_Color_White
_CREATE_CUSTUMSLIDER()\forecolor = #CustumGadget_Color_White
_CREATE_CUSTUMSLIDER()\backcolor = GetWindowBackgroundColor(WindowID(_CREATE_CUSTUMSLIDER()\window))
_CREATE_CUSTUMSLIDER()\multiselect = #True
_CREATE_CUSTUMSLIDER()\firstchange = #False
;
CUSTUMGadget_DrawRegulatory (_CREATE_CUSTUMSLIDER()\gadget)
CUSTUMGadget_DrawButton (_CREATE_CUSTUMSLIDER()\gadget)
CUSTUMGadget_DrawSlider (_CREATE_CUSTUMSLIDER()\gadget)
;
BindGadgetEvent (_CREATE_CUSTUMSLIDER()\gadget, @_OnEvent_CUSTUMSLIDERS())
;
ProcedureReturn ivalue
EndProcedure
Procedure _GetGadgetState(gadget.i)
;
;
;
Protected.i iMap = FindMapElement(_CREATE_CUSTUMSLIDER(), Str(gadget))
;
If iMap <> #Null
If _CREATE_CUSTUMSLIDER()\reverse = #False
ProcedureReturn _CREATE_CUSTUMSLIDER()\value
Else
ProcedureReturn _CREATE_CUSTUMSLIDER()\max - _CREATE_CUSTUMSLIDER()\value
EndIf
EndIf
EndProcedure
Procedure _SetGadgetState(gadget.i, value.i)
;
;
;
Protected.i iMap = FindMapElement(_CREATE_CUSTUMSLIDER(), Str(gadget))
;
If iMap <> #Null
value = _OnEvent_SCANBORDERS(value, _CREATE_CUSTUMSLIDER()\min, _CREATE_CUSTUMSLIDER()\max)
If value <> _CREATE_CUSTUMSLIDER()\value
_CREATE_CUSTUMSLIDER()\value = value
If _CREATE_CUSTUMSLIDER()\min = 0
_CREATE_CUSTUMSLIDER()\state = (_CREATE_CUSTUMSLIDER()\min + (-_CREATE_CUSTUMSLIDER()\value + (_CREATE_CUSTUMSLIDER()\max - _CREATE_CUSTUMSLIDER()\min)) / _CREATE_CUSTUMSLIDER()\pas)
Else
_CREATE_CUSTUMSLIDER()\state = (_CREATE_CUSTUMSLIDER()\min + (-_CREATE_CUSTUMSLIDER()\value + (_CREATE_CUSTUMSLIDER()\max - _CREATE_CUSTUMSLIDER()\min)) / _CREATE_CUSTUMSLIDER()\pas) - 2
EndIf
CUSTUMGadget_DrawSlider(gadget)
EndIf
EndIf
EndProcedure
Procedure _GetGadgetRange(gadget.i)
;
;
;
Protected.i iMap = FindMapElement(_CREATE_CUSTUMSLIDER(), Str(gadget))
;
If iMap <> #Null
ProcedureReturn _CREATE_CUSTUMSLIDER()\range
EndIf
EndProcedure
Procedure _SetGadgetRange(gadget.i, range.i)
;
;
;
Protected.i iMap = FindMapElement(_CREATE_CUSTUMSLIDER(), Str(gadget))
;
If iMap <> #Null
_CREATE_CUSTUMSLIDER()\range = _OnEvent_SCANBORDERS(range, _CREATE_CUSTUMSLIDER()\min, _CREATE_CUSTUMSLIDER()\max)
EndIf
EndProcedure
Procedure _GetGadgetColor(gadget.l, colortype.l)
;
;
;
Protected.i iMap = FindMapElement(_CREATE_CUSTUMSLIDER(), Str(gadget))
;
If iMap <> #Null
Select colortype
Case #PB_Gadget_FrontColor
ProcedureReturn _CREATE_CUSTUMSLIDER()\forecolor
Case #PB_Gadget_BackColor, #PB_Gadget_BackStyle
ProcedureReturn _CREATE_CUSTUMSLIDER()\backcolor
Case #PB_Gadget_BackRegular
ProcedureReturn _CREATE_CUSTUMSLIDER()\backstyle
EndSelect
EndIf
EndProcedure
Procedure _SetGadgetColor(gadget.l, colortype.l, color.i)
;
;
;
Protected.i icol1, icol2, icolor
Protected.i iMap = FindMapElement(_CREATE_CUSTUMSLIDER(), Str(gadget))
;
If iMap <> #Null
Select colortype
Case #PB_Gadget_FrontColor
If _CREATE_CUSTUMSLIDER()\forecolor <> color
_CREATE_CUSTUMSLIDER()\forecolor = color
CUSTUMGadget_DrawButton (gadget)
CUSTUMGadget_DrawSlider (gadget)
EndIf
Case #PB_Gadget_BackColor
If _CREATE_CUSTUMSLIDER()\backcolor <> color
_CREATE_CUSTUMSLIDER()\backcolor = color
CUSTUMGadget_DrawRegulatory (gadget)
CUSTUMGadget_DrawSlider (gadget)
EndIf
Case #PB_Gadget_BackStyle
If color = #CustumGadget_Color_Default
color = GetWindowBackgroundColor(WindowID(_CREATE_CUSTUMSLIDER()\window))
Else
If color = #CustumGadget_Color_Blue
icol1 = #CustumGadget_Slider_C10
icol2 = #CustumGadget_Slider_C11
Else
icol1 = ColorSubstitute(#CustumGadget_Slider_C10, color)
icol2 = ColorSubstitute(#CustumGadget_Slider_C11, color)
EndIf
icolor = ColorBlending(icol1, icol2, 0.5)
EndIf
;
If _CREATE_CUSTUMSLIDER()\backcolor <> icolor
_CREATE_CUSTUMSLIDER()\backcolor = icolor
_CREATE_CUSTUMSLIDER()\backstyle = color
CUSTUMGadget_DrawRegulatory (gadget)
CUSTUMGadget_DrawSlider (gadget)
EndIf
Case #PB_Gadget_BackRegular
If _CREATE_CUSTUMSLIDER()\backstyle <> color
_CREATE_CUSTUMSLIDER()\backstyle = color
CUSTUMGadget_DrawRegulatory (gadget)
CUSTUMGadget_DrawSlider (gadget)
EndIf
EndSelect
EndIf
EndProcedure
Procedure _GetGadgetSelect(gadget.i)
;
; ROUTINE DE RECUPERATION DU LA VALEUR DU SLIDER.
;
EndProcedure
Procedure _SetGadgetSelect(gadget.i, value.b = #MinusOne)
;
;
;
Protected.i iMap = FindMapElement(_CREATE_CUSTUMSLIDER(), Str(gadget))
;
If iMap <> #Null
If value = -1
_CREATE_CUSTUMSLIDER()\selected ! 1
Else
_CREATE_CUSTUMSLIDER()\selected = value
EndIf
;
CUSTUMGadget_DrawRegulatory (_CREATE_CUSTUMSLIDER()\gadget)
CUSTUMGadget_DrawSlider (_CREATE_CUSTUMSLIDER()\gadget)
EndIf
EndProcedure
Procedure _GetGadgetData(gadget.i)
;
; ROUTINE DE RECUPERATION DU LA VALEUR DU SLIDER.
;
EndProcedure
Procedure _SetGadgetData(gadget.i, value.l)
;
; ROUTINE DE CHANGEMENT DE LA VALEUR DU SLIDER.
;
EndProcedure
Procedure _DisableGadget(gadget.i, value.b)
;
;
;
Protected.i iMap = FindMapElement(_CREATE_CUSTUMSLIDER(), Str(gadget))
;
If iMap <> #Null
_CREATE_CUSTUMSLIDER()\disable = value
;
CUSTUMGadget_DrawSlider(_CREATE_CUSTUMSLIDER()\gadget)
EndIf
EndProcedure
Procedure _HideGadget(gadget.i, value.b)
;
;
;
Protected.i iMap = FindMapElement(_CREATE_CUSTUMSLIDER(), Str(gadget))
;
If iMap <> #Null
_CREATE_CUSTUMSLIDER()\hide = value
HideGadget(gadget, value)
EndIf
EndProcedure
Procedure _FreeGadget(gadget.i)
;
;
;
Protected.i iMap = FindMapElement(_CREATE_CUSTUMSLIDER(), Str(gadget))
;
If iMap <> #Null
UnbindGadgetEvent(_CREATE_CUSTUMSLIDER()\gadget, @_OnEvent_CUSTUMSLIDERS())
;
FreeGadget(_CREATE_CUSTUMSLIDER()\gadget)
DeleteMapElement(_CREATE_CUSTUMSLIDER(), Str(gadget))
EndIf
EndProcedure
EndModule
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
;-
;- ROUTINE DE TEST DES FONCTIONS (USERLIB).
CompilerIf #PB_Compiler_Debugger = 1
Define.i event, i, j
Define.i aa, ba, ab, bb
OpenWindow (0, 0, 0, 800, 600, "Custum Gadget", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
Define slider = 20
Define Dim ihandle(slider)
Define Dim ibtexte(slider)
For i=0 To slider
ihandle(i) = CustumSlider::_CreateGadget (#PB_Any, 10 + (i * 32), 28, 30, 200, 0, 0, 255)
ibtexte(i) = TextGadget(#PB_Any, 10 + (i * 32), 10, 30, 18, "000", #PB_Text_Center)
Next i
CustumSlider::_CreateGadget (10, 10 + (i * 32), 28, 30, 200, 0, 0, 255)
CustumSlider::_SetGadgetColor(10, #PB_Gadget_FrontColor, #CustumGadget_Color_Gray)
CustumSlider::_SetGadgetColor(10, #PB_Gadget_BackStyle, #CustumGadget_Color_Cyan)
;
CustumSlider::_SetGadgetColor(ihandle(0), #PB_Gadget_FrontColor, #CustumGadget_Color_White)
CustumSlider::_SetGadgetColor(ihandle(0), #PB_Gadget_BackStyle, #CustumGadget_Color_White)
CustumSlider::_SetGadgetColor(ihandle(1), #PB_Gadget_FrontColor, #CustumGadget_Color_Gray)
CustumSlider::_SetGadgetColor(ihandle(1), #PB_Gadget_BackStyle, #CustumGadget_Color_Gray)
CustumSlider::_SetGadgetColor(ihandle(2), #PB_Gadget_FrontColor, #CustumGadget_Color_Red)
CustumSlider::_SetGadgetColor(ihandle(2), #PB_Gadget_BackStyle, #CustumGadget_Color_Red)
CustumSlider::_SetGadgetColor(ihandle(3), #PB_Gadget_FrontColor, #CustumGadget_Color_Green)
CustumSlider::_SetGadgetColor(ihandle(3), #PB_Gadget_BackStyle, #CustumGadget_Color_Green)
CustumSlider::_SetGadgetColor(ihandle(4), #PB_Gadget_FrontColor, #CustumGadget_Color_Blue)
CustumSlider::_SetGadgetColor(ihandle(4), #PB_Gadget_BackStyle, #CustumGadget_Color_Blue)
CustumSlider::_SetGadgetColor(ihandle(5), #PB_Gadget_FrontColor, #CustumGadget_Color_Mallow)
CustumSlider::_SetGadgetColor(ihandle(5), #PB_Gadget_BackStyle, #CustumGadget_Color_Mallow)
CustumSlider::_SetGadgetColor(ihandle(6), #PB_Gadget_FrontColor, #CustumGadget_Color_Cyan)
CustumSlider::_SetGadgetColor(ihandle(6), #PB_Gadget_BackStyle, #CustumGadget_Color_Cyan)
CustumSlider::_SetGadgetColor(ihandle(7), #PB_Gadget_FrontColor, #CustumGadget_Color_Purple)
CustumSlider::_SetGadgetColor(ihandle(7), #PB_Gadget_BackStyle, #CustumGadget_Color_Purple)
CustumSlider::_DisableGadget (ihandle(7), #True)
CustumSlider::_SetGadgetColor(ihandle(8), #PB_Gadget_FrontColor, #CustumGadget_Color_Yellow)
CustumSlider::_SetGadgetColor(ihandle(8), #PB_Gadget_BackStyle, #CustumGadget_Color_Yellow)
Repeat
event = WaitWindowEvent(10)
If event = #PB_Event_Gadget
EndIf
If event = #PB_Event_CustumGadget_Slider
j = EventGadget()
For i=0 To slider
If ihandle(i) = j
SetGadgetText(ibtexte(i), RSet(Str(CustumSlider::_GetGadgetState(ihandle(i))), 3, "0"))
EndIf
Next i
EndIf
Until event = #PB_Event_CloseWindow
CompilerEndIf
; IDE Options = PureBasic 5.62 (Windows - x86)
; CursorPosition = 865
; FirstLine = 20
; Folding = --------
; EnableXP
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|