Routine Spectre des couleurs Style Windows
Re: Routine Spectre des couleurs Style Windows
@ Le soldat Inconnu
C'est bon, je l'ajoute...
A+
Guimauve
C'est bon, je l'ajoute...
A+
Guimauve
Re: Routine Spectre des couleurs Style Windows
Bonjour Guimauve,
Quand on fait un simple clique dans le spectre des couleur cela ne change pas la couleur.
Cordialement,
GallyHC
Quand on fait un simple clique dans le spectre des couleur cela ne change pas la couleur.
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Re: Routine Spectre des couleurs Style Windows
@GallyHC
Oui, je viens de m'en rendre compte et je travaille là dessus en même temps j'essaie d'ajouter une couleur RGB par défaut mais ça fonctionne pas bien pour l'instant,
Par exemple, je donne RGB(145, 71, 213) comme couleur et c'est RGB(211, 71, 213) qui s'affiche, je comprend pas ce qui se passe.
Je donne des nouvelles plus tard en soirée, demain matin pour vous en europe.
A+
Guimauve
Oui, je viens de m'en rendre compte et je travaille là dessus en même temps j'essaie d'ajouter une couleur RGB par défaut mais ça fonctionne pas bien pour l'instant,
Par exemple, je donne RGB(145, 71, 213) comme couleur et c'est RGB(211, 71, 213) qui s'affiche, je comprend pas ce qui se passe.
Je donne des nouvelles plus tard en soirée, demain matin pour vous en europe.
A+
Guimauve
Re: Routine Spectre des couleurs Style Windows
Bonjour à tous,
Le bogue indiqué par GallyHC est corrigé. J'ai également corrigé un autre soucis que j'ai trouvé au passage. L'ajout d'une couleur de départ est opérationnel à 100%. (J'ai dû jouer du coude un peu mais je l'ai eu !)
À mon avis, la version 1.0.5 est finale, plus de bogue.
A+
Guimauve
Le bogue indiqué par GallyHC est corrigé. J'ai également corrigé un autre soucis que j'ai trouvé au passage. L'ajout d'une couleur de départ est opérationnel à 100%. (J'ai dû jouer du coude un peu mais je l'ai eu !)
À mon avis, la version 1.0.5 est finale, plus de bogue.
A+
Guimauve
Code : Tout sélectionner
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; CODE GÉNÉRÉ AUTOMATIQUEMENT, NE PAS MODIFIER À
; MOINS D'AVOIR UNE RAISON TRÈS TRÈS VALABLE !!!
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Code généré par : Dev-Type V3.131.634
; Nom du projet : Color Spectrum Requester
; Nom du fichier : Color Spectrum Requester.pb
; Version du fichier : 1.0.5
; Programmation : OK
; Programmé par : GallyHC
; Modifié par : Guimauve, Le Soldat Inconnu
; Date : 18-02-2012
; Mise à jour : 19-02-2012
; Codé pour PureBasic V4.60
; Plateforme : Windows, Linux, MacOS X
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Enumeration
#COLOR_SPECTRUM_TARGET_HUE
#COLOR_SPECTRUM_TARGET_SATURATION
#COLOR_SPECTRUM_TARGET_LIGHTNESS
#COLOR_SPECTRUM_TARGET_RED
#COLOR_SPECTRUM_TARGET_GREEN
#COLOR_SPECTRUM_TARGET_BLUE
#COLOR_SPECTRUM_TARGET_WIN_TITLE
#COLOR_SPECTRUM_TARGET_BTN_REFRESH
#COLOR_SPECTRUM_TARGET_BTN_VALIDATE
#COLOR_SPECTRUM_TARGET_BTN_CANCEL
EndEnumeration
#COLOR_SPECTRUM_SIZE_MAX = 255
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Déclaration des Structures <<<<<
Structure Color
StructureUnion
Red.a
Hue.a
EndStructureUnion
StructureUnion
Green.a
Saturation.a
EndStructureUnion
StructureUnion
Blue.a
Lightness.a
EndStructureUnion
EndStructure
Structure ColorSpectrum
HSLRGB.l[6] ; Hue, Saturation, Lightness, Red, Green, Blue
SafeHSLRGB.l[6] ; SafeHue, SafeSaturation, SafeLightness, SafeRed, SafeGreen, SafeBlue
BackgroundLayer.l
SpectrumCanvas.l
LightnessCanvas.l
WindowHandle.l
Text.s[10]
TextHandle.l[7]
StringHandle.l[6]
ButtonHandle.l[3]
EndStructure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Les observateurs <<<<<
Macro GetColorRed(ColorA)
ColorA\Red
EndMacro
Macro GetColorHue(ColorA)
ColorA\Hue
EndMacro
Macro GetColorGreen(ColorA)
ColorA\Green
EndMacro
Macro GetColorSaturation(ColorA)
ColorA\Saturation
EndMacro
Macro GetColorBlue(ColorA)
ColorA\Blue
EndMacro
Macro GetColorLightness(ColorA)
ColorA\Lightness
EndMacro
Macro GetColorSpectrumHSLRGB(ColorSpectrumA, HSLRGBID)
ColorSpectrumA\HSLRGB[HSLRGBID]
EndMacro
Macro GetColorSpectrumSafeHSLRGB(ColorSpectrumA, SafeHSLRGBID)
ColorSpectrumA\SafeHSLRGB[SafeHSLRGBID]
EndMacro
Macro GetColorSpectrumBackgroundLayer(ColorSpectrumA)
ColorSpectrumA\BackgroundLayer
EndMacro
Macro GetColorSpectrumSpectrumCanvas(ColorSpectrumA)
ColorSpectrumA\SpectrumCanvas
EndMacro
Macro GetColorSpectrumLightnessCanvas(ColorSpectrumA)
ColorSpectrumA\LightnessCanvas
EndMacro
Macro GetColorSpectrumWindowHandle(ColorSpectrumA)
ColorSpectrumA\WindowHandle
EndMacro
Macro GetColorSpectrumText(ColorSpectrumA, TextID)
ColorSpectrumA\Text[TextID]
EndMacro
Macro GetColorSpectrumTextHandle(ColorSpectrumA, TextHandleID)
ColorSpectrumA\TextHandle[TextHandleID]
EndMacro
Macro GetColorSpectrumStringHandle(ColorSpectrumA, StringHandleID)
ColorSpectrumA\StringHandle[StringHandleID]
EndMacro
Macro GetColorSpectrumButtonHandle(ColorSpectrumA, ButtonHandleID)
ColorSpectrumA\ButtonHandle[ButtonHandleID]
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Les mutateurs <<<<<
Macro SetColorRed(ColorA, P_Red)
GetColorRed(ColorA) = P_Red
EndMacro
Macro SetColorHue(ColorA, P_Hue)
GetColorHue(ColorA) = P_Hue
EndMacro
Macro SetColorGreen(ColorA, P_Green)
GetColorGreen(ColorA) = P_Green
EndMacro
Macro SetColorLightness(ColorA, P_Lightness)
GetColorLightness(ColorA) = P_Lightness
EndMacro
Macro SetColorBlue(ColorA, P_Blue)
GetColorBlue(ColorA) = P_Blue
EndMacro
Macro SetColorSaturation(ColorA, P_Saturation)
GetColorSaturation(ColorA) = P_Saturation
EndMacro
Macro SetColorSpectrumHSLRGB(ColorSpectrumA, HSLRGBID, P_HSLRGB)
GetColorSpectrumHSLRGB(ColorSpectrumA, HSLRGBID) = P_HSLRGB
EndMacro
Macro SetColorSpectrumSafeHSLRGB(ColorSpectrumA, SafeHSLRGBID, P_SafeHSLRGB)
GetColorSpectrumSafeHSLRGB(ColorSpectrumA, SafeHSLRGBID) = P_SafeHSLRGB
EndMacro
Macro SetColorSpectrumBackgroundLayer(ColorSpectrumA, P_BackgroundLayer)
GetColorSpectrumBackgroundLayer(ColorSpectrumA) = P_BackgroundLayer
EndMacro
Macro SetColorSpectrumSpectrumCanvas(ColorSpectrumA, P_SpectrumCanvas)
GetColorSpectrumSpectrumCanvas(ColorSpectrumA) = P_SpectrumCanvas
EndMacro
Macro SetColorSpectrumLightnessCanvas(ColorSpectrumA, P_LightnessCanvas)
GetColorSpectrumLightnessCanvas(ColorSpectrumA) = P_LightnessCanvas
EndMacro
Macro SetColorSpectrumWindowHandle(ColorSpectrumA, P_WindowHandle)
GetColorSpectrumWindowHandle(ColorSpectrumA) = P_WindowHandle
EndMacro
Macro SetColorSpectrumText(ColorSpectrumA, TextID, P_Text)
GetColorSpectrumText(ColorSpectrumA, TextID) = P_Text
EndMacro
Macro SetColorSpectrumTextHandle(ColorSpectrumA, TextHandleID, P_TextHandle)
GetColorSpectrumTextHandle(ColorSpectrumA, TextHandleID) = P_TextHandle
EndMacro
Macro SetColorSpectrumStringHandle(ColorSpectrumA, StringHandleID, P_StringHandle)
GetColorSpectrumStringHandle(ColorSpectrumA, StringHandleID) = P_StringHandle
EndMacro
Macro SetColorSpectrumButtonHandle(ColorSpectrumA, ButtonHandleID, P_ButtonHandle)
GetColorSpectrumButtonHandle(ColorSpectrumA, ButtonHandleID) = P_ButtonHandle
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Les opérateurs Reset <<<<<
Macro ResetColor(ColorA)
ClearStructure(ColorA, Color)
EndMacro
Macro ResetColorSpectrum(ColorSpectrumA)
SetColorSpectrumBackgroundLayer(ColorSpectrumA, 0)
SetColorSpectrumSpectrumCanvas(ColorSpectrumA, 0)
SetColorSpectrumLightnessCanvas(ColorSpectrumA, 0)
SetColorSpectrumWindowHandle(ColorSpectrumA, 0)
For TextID = 0 To 9
SetColorSpectrumText(ColorSpectrumA, TextID, "")
Next
For TextHandleID = 0 To 6
SetColorSpectrumTextHandle(ColorSpectrumA, TextHandleID, 0)
Next
For StringHandleID = 0 To 5
SetColorSpectrumStringHandle(ColorSpectrumA, StringHandleID, 0)
SetColorSpectrumHSLRGB(ColorSpectrumA, StringHandleID, 0)
SetColorSpectrumSafeHSLRGB(ColorSpectrumA, StringHandleID, 0)
Next
For ButtonHandleID = 0 To 2
SetColorSpectrumButtonHandle(ColorSpectrumA, ButtonHandleID, 0)
Next
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Les observateurs spéciaux <<<<<
Macro GetColorSpectrumHue(ColorSpectrumA)
GetColorSpectrumHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_HUE)
EndMacro
Macro GetColorSpectrumLightness(ColorSpectrumA)
GetColorSpectrumHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_LIGHTNESS)
EndMacro
Macro GetColorSpectrumSaturation(ColorSpectrumA)
GetColorSpectrumHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_SATURATION)
EndMacro
Macro GetColorSpectrumRed(ColorSpectrumA)
GetColorSpectrumHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_RED)
EndMacro
Macro GetColorSpectrumGreen(ColorSpectrumA)
GetColorSpectrumHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_GREEN)
EndMacro
Macro GetColorSpectrumBlue(ColorSpectrumA)
GetColorSpectrumHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_BLUE)
EndMacro
Macro GetColorSpectrumSafeHue(ColorSpectrumA)
GetColorSpectrumSafeHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_HUE)
EndMacro
Macro GetColorSpectrumSafeLightness(ColorSpectrumA)
GetColorSpectrumSafeHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_LIGHTNESS)
EndMacro
Macro GetColorSpectrumSafeSaturation(ColorSpectrumA)
GetColorSpectrumSafeHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_SATURATION)
EndMacro
Macro GetColorSpectrumSafeRed(ColorSpectrumA)
GetColorSpectrumSafeHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_RED)
EndMacro
Macro GetColorSpectrumSafeGreen(ColorSpectrumA)
GetColorSpectrumSafeHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_GREEN)
EndMacro
Macro GetColorSpectrumSafeBlue(ColorSpectrumA)
GetColorSpectrumSafeHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_BLUE)
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Les mutateurs spéciaux <<<<<
Macro SetColorSpectrumHue(ColorSpectrumA, P_Hue)
GetColorSpectrumHue(ColorSpectrumA) = P_Hue
EndMacro
Macro SetColorSpectrumLightness(ColorSpectrumA, P_Lightness)
GetColorSpectrumLightness(ColorSpectrumA) = P_Lightness
EndMacro
Macro SetColorSpectrumSaturation(ColorSpectrumA, P_Saturation)
GetColorSpectrumSaturation(ColorSpectrumA) = P_Saturation
EndMacro
Macro SetColorSpectrumRed(ColorSpectrumA, P_Red)
GetColorSpectrumRed(ColorSpectrumA) = P_Red
EndMacro
Macro SetColorSpectrumGreen(ColorSpectrumA, P_Green)
GetColorSpectrumGreen(ColorSpectrumA) = P_Green
EndMacro
Macro SetColorSpectrumBlue(ColorSpectrumA, P_Blue)
GetColorSpectrumBlue(ColorSpectrumA) = P_Blue
EndMacro
Macro SetColorSpectrumSafeHue(ColorSpectrumA, P_SafeHue)
GetColorSpectrumSafeHue(ColorSpectrumA) = P_SafeHue
EndMacro
Macro SetColorSpectrumSafeLightness(ColorSpectrumA, P_SafeLightness)
GetColorSpectrumSafeLightness(ColorSpectrumA) = P_SafeLightness
EndMacro
Macro SetColorSpectrumSafeSaturation(ColorSpectrumA, P_SafeSaturation)
GetColorSpectrumSafeSaturation(ColorSpectrumA) = P_SafeSaturation
EndMacro
Macro SetColorSpectrumSafeRed(ColorSpectrumA, P_SafeRed)
GetColorSpectrumSafeRed(ColorSpectrumA) = P_SafeRed
EndMacro
Macro SetColorSpectrumSafeGreen(ColorSpectrumA, P_SafeGreen)
GetColorSpectrumSafeGreen(ColorSpectrumA) = P_SafeGreen
EndMacro
Macro SetColorSpectrumSafeBlue(ColorSpectrumA, P_SafeBlue)
GetColorSpectrumSafeBlue(ColorSpectrumA) = P_SafeBlue
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Les opérateurs Update <<<<<
Macro UpdateColorRGB(ColorA, P_Red, P_Green, P_Blue)
SetColorRed(ColorA, P_Red)
SetColorGreen(ColorA, P_Green)
SetColorBlue(ColorA, P_Blue)
EndMacro
Macro UpdateColorHSL(ColorA, P_Hue, P_Saturation, P_Lightness)
SetColorHue(ColorA, P_Hue)
SetColorSaturation(ColorA, P_Saturation)
SetColorLightness(ColorA, P_Lightness)
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Les opérateurs de Formatage <<<<<
Macro FormatColorSpectrumRGB(ColorSpectrumA)
"RGB(" + Str(GetColorSpectrumRed(ColorSpectrumA)) + ", " + Str(GetColorSpectrumGreen(ColorSpectrumA)) + ", " + Str(GetColorSpectrumBlue(ColorSpectrumA)) + ")"
EndMacro
Macro FormatColorSpectrumHSL(ColorSpectrumA)
"HSL(" + Str(GetColorSpectrumHue(ColorSpectrumA)) + ", " + Str(GetColorSpectrumSaturation(ColorSpectrumA)) + ", " + Str(GetColorSpectrumLightness(ColorSpectrumA)) + ")"
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Conversion vers couleur entier long <<<<<
Macro ColorSpectrum_RGB(ColorSpectrumA)
(GetColorSpectrumBlue(ColorSpectrumA) << 16 + GetColorSpectrumGreen(ColorSpectrumA) << 8 + GetColorSpectrumRed(ColorSpectrumA))
EndMacro
Macro Color_RGB(ColorA)
(GetColorBlue(ColorA) << 16 + GetColorGreen(ColorA) << 8 + GetColorRed(ColorA))
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Min et Max de 3 nombres <<<<<
Macro MinMaxNumber(P_Min, P_Max, P_Number01, P_Number02, P_Number03)
P_Min = P_Number01
If P_Number02 < P_Min
P_Min = P_Number02
EndIf
If P_Number03 < P_Min
P_Min = P_Number03
EndIf
P_Max = P_Number01
If P_Number02 > P_Max
P_Max = P_Number02
EndIf
If P_Number03 > P_Max
P_Max = P_Number03
EndIf
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur Initialize <<<<<
Procedure InitializeColorSpectrum(*ColorSpectrumA.ColorSpectrum)
SetColorSpectrumLightness(*ColorSpectrumA, 127)
SetColorSpectrumText(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_HUE, "Teinte")
SetColorSpectrumText(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_LIGHTNESS, "Luminosité")
SetColorSpectrumText(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_SATURATION, "Saturation")
SetColorSpectrumText(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_RED, "Rouge")
SetColorSpectrumText(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_GREEN, "Vert")
SetColorSpectrumText(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_BLUE, "Bleu")
SetColorSpectrumText(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_WIN_TITLE, "Spectre de couleurs")
SetColorSpectrumText(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_BTN_REFRESH, "Rafraichir")
SetColorSpectrumText(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_BTN_VALIDATE, "Valider")
SetColorSpectrumText(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_BTN_CANCEL, "Annuler")
EndProcedure
Procedure.l Private_ConvertRM(M1.f, M2.f, HueColor.f)
; ROUTINE DE CALCUL DE LA COMPOSANTE DE COULEUR.
If HueColor > 360
HueColor - 360
EndIf
If HueColor < 0
HueColor + 360
EndIf
If HueColor < 60
M1 = M1 + (M2 - M1) * HueColor / 60
Else
If HueColor < 180
M1 = M2
Else
If HueColor < 240
M1 = M1 + (M2 - M1) * (240 - HueColor) / 60
EndIf
EndIf
EndIf
ProcedureReturn M1 * 255
EndProcedure
Procedure Convert_RGB_To_HSL(*RGBColorA.Color, *HSLColorA.Color)
; ROUTINE DE CONSERTION DU RGB EN HLS.
MinMaxNumber(Min.l, Max.l, GetColorRed(*RGBColorA), GetColorGreen(*RGBColorA), GetColorBlue(*RGBColorA))
DeltaMaxMin.l = Max - Min
SumMaxMin.l = Max + Min
LightnessColor.f = SumMaxMin / 510
If Max = Min
HueColor.f = 0
SaturationColor.f = 0
Else
NormalizedRed = (Max - GetColorRed(*RGBColorA)) / DeltaMaxMin
NormalizedGreen = (Max - GetColorGreen(*RGBColorA)) / DeltaMaxMin
NormalizedBlue = (Max - GetColorBlue(*RGBColorA)) / DeltaMaxMin
If LightnessColor <= 0.5
SaturationColor = DeltaMaxMin / SumMaxMin
Else
SaturationColor = DeltaMaxMin / (510 - SumMaxMin)
EndIf
If GetColorRed(*RGBColorA) = Max
HueColor = 60 * (6 + NormalizedBlue - NormalizedGreen)
EndIf
If GetColorGreen(*RGBColorA) = Max
HueColor = 60 * (2 + NormalizedRed - NormalizedBlue)
EndIf
If GetColorBlue(*RGBColorA) = Max
HueColor = 60 * (4 + NormalizedGreen - NormalizedRed)
EndIf
EndIf
If HueColor = 360
HueColor = 0
EndIf
HueColor = HueColor / 360 * #COLOR_SPECTRUM_SIZE_MAX
LightnessColor = LightnessColor * #COLOR_SPECTRUM_SIZE_MAX
SaturationColor = SaturationColor * #COLOR_SPECTRUM_SIZE_MAX
SetColorHue(*HSLColorA, Int(HueColor))
SetColorSaturation(*HSLColorA, Int(SaturationColor))
SetColorLightness(*HSLColorA, Int(LightnessColor))
EndProcedure
Procedure Convert_HSL_To_RGB(HueColor.f, LightnessColor.f, SaturationColor.f, *RGBColorA.Color)
; ROUTINE DE CONSERTION DU HSL EN RGB.
HueColor = HueColor * 360 / #COLOR_SPECTRUM_SIZE_MAX
SaturationColor = SaturationColor / #COLOR_SPECTRUM_SIZE_MAX
LightnessColor = LightnessColor / #COLOR_SPECTRUM_SIZE_MAX
If SaturationColor = 0.0
SetColorRed(*RGBColorA, LightnessColor * #COLOR_SPECTRUM_SIZE_MAX)
SetColorGreen(*RGBColorA, LightnessColor * #COLOR_SPECTRUM_SIZE_MAX)
SetColorBlue(*RGBColorA, LightnessColor * #COLOR_SPECTRUM_SIZE_MAX)
Else
If LightnessColor <= 0.5
M2.f = LightnessColor + LightnessColor * SaturationColor
Else
M2 = LightnessColor + SaturationColor - LightnessColor * SaturationColor
EndIf
M1.f = 2 * LightnessColor - M2
SetColorRed(*RGBColorA, Private_ConvertRm(M1, M2, HueColor + 120))
SetColorGreen(*RGBColorA, Private_ConvertRm(M1, M2, HueColor))
SetColorBlue(*RGBColorA, Private_ConvertRm(M1, M2, HueColor - 120))
EndIf
EndProcedure
Procedure GenerateColorSpectrumBackgroundLayer(*ColorSpectrumA.ColorSpectrum)
; ROUTINE DE PRECALCUL DU SPECTRE DE COULEUR.
SetColorSpectrumBackgroundLayer(*ColorSpectrumA, CreateImage(#PB_Any, #COLOR_SPECTRUM_SIZE_MAX + 2, #COLOR_SPECTRUM_SIZE_MAX + 2))
If GetColorSpectrumBackgroundLayer(*ColorSpectrumA) <> #Null
If StartDrawing(ImageOutput(GetColorSpectrumBackgroundLayer(*ColorSpectrumA)))
Box(0, 0, #COLOR_SPECTRUM_SIZE_MAX + 2, #COLOR_SPECTRUM_SIZE_MAX + 2, $000000)
For SaturationID = 1 To #COLOR_SPECTRUM_SIZE_MAX
For HueID = 1 To #COLOR_SPECTRUM_SIZE_MAX
Convert_HSL_To_RGB(HueID, #COLOR_SPECTRUM_SIZE_MAX / 2, SaturationID, RGBColor.Color)
Plot(HueID, (#COLOR_SPECTRUM_SIZE_MAX - SaturationID) + 1, Color_RGB(RGBColor))
Next
Next
StopDrawing()
EndIf
EndIf
EndProcedure
Procedure ColorSpectrum_DrawCross(*ColorSpectrumA.ColorSpectrum)
; ROUTINE DE TRACAGE DE LA CROIX DU SPECTRE.
PosX = GetColorSpectrumHue(*ColorSpectrumA)
PosY = #COLOR_SPECTRUM_SIZE_MAX - GetColorSpectrumSaturation(*ColorSpectrumA)
If PosX < #COLOR_SPECTRUM_SIZE_MAX
PosX + 1
EndIf
If PosY < #COLOR_SPECTRUM_SIZE_MAX
PosY + 1
EndIf
Box(PosX - 1, PosY - 9, 3, 5, 0)
Box(PosX - 1, PosY + 5, 3, 5, 0)
Box(PosX - 9, PosY - 1, 5, 3, 0)
Box(PosX + 5, PosY - 1, 5, 3, 0)
EndProcedure
Procedure ColorSpectrum_DrawArrow(*ColorSpectrumA.ColorSpectrum)
; ROUTINE DE TRACAGE DE LA BARRE DE LIGHTNESS
PosY = #COLOR_SPECTRUM_SIZE_MAX - GetColorSpectrumLightness(*ColorSpectrumA)
If PosY => #COLOR_SPECTRUM_SIZE_MAX
PosY = #COLOR_SPECTRUM_SIZE_MAX - 1
EndIf
Box(22, PosY, 8, 3, 0)
EndProcedure
Procedure ColorSpectrum_SpectrumRedraw(*ColorSpectrumA.ColorSpectrum)
; ROUTINE D'AFFICHAGE DU SPECTRE ET CROIX.
If StartDrawing(CanvasOutput(GetColorSpectrumSpectrumCanvas(*ColorSpectrumA)))
If GetColorSpectrumBackgroundLayer(*ColorSpectrumA) <> #Null
DrawImage(ImageID(GetColorSpectrumBackgroundLayer(*ColorSpectrumA)), 0, 0)
EndIf
ColorSpectrum_DrawCross(*ColorSpectrumA)
Convert_HSL_To_RGB(GetColorSpectrumHue(*ColorSpectrumA), GetColorSpectrumLightness(*ColorSpectrumA), GetColorSpectrumSaturation(*ColorSpectrumA), RGBColor.Color)
StopDrawing()
SetGadgetColor(GetColorSpectrumTextHandle(*ColorSpectrumA, 06), #PB_Gadget_BackColor, Color_RGB(RGBColor))
EndIf
EndProcedure
Procedure ColorSpectrum_LightnessRedraw(*ColorSpectrumA.ColorSpectrum)
; ROUTINE DE TRACAGE DE LA BARRE LUMIERE.
If StartDrawing(CanvasOutput(GetColorSpectrumLightnessCanvas(*ColorSpectrumA)))
CurrentLightness = GetColorSpectrumLightness(*ColorSpectrumA)
Box(0, 0, #COLOR_SPECTRUM_SIZE_MAX + 2, #COLOR_SPECTRUM_SIZE_MAX + 2, $FFFFFF)
Box(0, 0, 20, #COLOR_SPECTRUM_SIZE_MAX + 2, $000000)
For LightnessID = 1 To #COLOR_SPECTRUM_SIZE_MAX
Convert_HSL_To_RGB(GetColorSpectrumHue(*ColorSpectrumA), LightnessID, GetColorSpectrumSaturation(*ColorSpectrumA), RGBColor.Color)
LineXY(1, (#COLOR_SPECTRUM_SIZE_MAX - LightnessID) + 1, 18, (#COLOR_SPECTRUM_SIZE_MAX - LightnessID) + 1, Color_RGB(RGBColor))
Next
SetColorSpectrumLightness(*ColorSpectrumA, CurrentLightness)
ColorSpectrum_DrawArrow(*ColorSpectrumA.ColorSpectrum)
Convert_HSL_To_RGB(GetColorSpectrumHue(*ColorSpectrumA), GetColorSpectrumLightness(*ColorSpectrumA), GetColorSpectrumSaturation(*ColorSpectrumA), RGBColor.Color)
SetGadgetColor(GetColorSpectrumTextHandle(*ColorSpectrumA, 06), #PB_Gadget_BackColor, Color_RGB(RGBColor))
StopDrawing()
EndIf
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur Free Gadgets <<<<<
Procedure FreeColorSpectrumGadget(*ColorSpectrumA.ColorSpectrum)
SetColorSpectrumHue(*ColorSpectrumA, 0)
SetColorSpectrumSaturation(*ColorSpectrumA, 0)
SetColorSpectrumLightness(*ColorSpectrumA, 127)
SetColorSpectrumRed(*ColorSpectrumA, 0)
SetColorSpectrumGreen(*ColorSpectrumA, 0)
SetColorSpectrumBlue(*ColorSpectrumA, 0)
For Index = 0 To 2
FreeGadget(GetColorSpectrumTextHandle(*ColorSpectrumA, Index))
FreeGadget(GetColorSpectrumTextHandle(*ColorSpectrumA, Index+3))
FreeGadget(GetColorSpectrumStringHandle(*ColorSpectrumA, Index))
FreeGadget(GetColorSpectrumStringHandle(*ColorSpectrumA, Index+3))
FreeGadget(GetColorSpectrumButtonHandle(*ColorSpectrumA, Index))
Next
FreeGadget(GetColorSpectrumSpectrumCanvas(*ColorSpectrumA))
FreeGadget(GetColorSpectrumLightnessCanvas(*ColorSpectrumA))
FreeImage(GetColorSpectrumBackgroundLayer(*ColorSpectrumA))
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur RefeshHSLColorOutput <<<<<
Procedure RefreshHSLColorOutput(*ColorSpectrumA.ColorSpectrum)
For TargetID = #COLOR_SPECTRUM_TARGET_HUE To #COLOR_SPECTRUM_TARGET_LIGHTNESS
SetGadgetText(GetColorSpectrumStringHandle(*ColorSpectrumA, TargetID), Str(GetColorSpectrumHSLRGB(*ColorSpectrumA, TargetID)))
Next
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur RefeshRGBColorOutput <<<<<
Procedure RefreshRGBColorOutput(*ColorSpectrumA.ColorSpectrum)
Convert_HSL_To_RGB(GetColorSpectrumHue(*ColorSpectrumA), GetColorSpectrumLightness(*ColorSpectrumA), GetColorSpectrumSaturation(*ColorSpectrumA), RGBColor.Color)
SetColorSpectrumRed(*ColorSpectrumA, GetColorRed(RGBColor))
SetColorSpectrumGreen(*ColorSpectrumA, GetColorGreen(RGBColor))
SetColorSpectrumBlue(*ColorSpectrumA, GetColorBlue(RGBColor))
For TargetID = #COLOR_SPECTRUM_TARGET_RED To #COLOR_SPECTRUM_TARGET_BLUE
SetGadgetText(GetColorSpectrumStringHandle(*ColorSpectrumA, TargetID), Str(GetColorSpectrumHSLRGB(*ColorSpectrumA, TargetID)))
Next
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur CatchRGBColorInput <<<<<
Procedure CatchRGBColorInput(*ColorSpectrumA.ColorSpectrum)
For TargetID = #COLOR_SPECTRUM_TARGET_RED To #COLOR_SPECTRUM_TARGET_BLUE
SetColorSpectrumHSLRGB(*ColorSpectrumA, TargetID, Val(GetGadgetText(GetColorSpectrumStringHandle(*ColorSpectrumA, TargetID))))
Next
SetColorRed(RGBColor.Color, GetColorSpectrumRed(*ColorSpectrumA))
SetColorGreen(RGBColor, GetColorSpectrumGreen(*ColorSpectrumA))
SetColorBlue(RGBColor, GetColorSpectrumBlue(*ColorSpectrumA))
Convert_RGB_To_HSL(RGBColor, HSLColor.Color)
SetColorSpectrumHue(*ColorSpectrumA, GetColorHue(HSLColor))
SetColorSpectrumSaturation(*ColorSpectrumA, GetColorSaturation(HSLColor))
SetColorSpectrumLightness(*ColorSpectrumA, GetColorLightness(HSLColor))
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur CatchSafeHSLRGB <<<<<
Procedure CatchSafeHSLRGB(*ColorSpectrumA.ColorSpectrum)
For TargetID = #COLOR_SPECTRUM_TARGET_HUE To #COLOR_SPECTRUM_TARGET_BLUE
SetColorSpectrumSafeHSLRGB(*ColorSpectrumA, TargetID, Val(GetGadgetText(GetColorSpectrumStringHandle(*ColorSpectrumA, TargetID))))
Next
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur RefeshSpectrum <<<<<
Procedure RefeshColorSpectrum(*ColorSpectrumA.ColorSpectrum)
SetColorSpectrumHue(*ColorSpectrumA, 0)
SetColorSpectrumSaturation(*ColorSpectrumA, 0)
SetColorSpectrumLightness(*ColorSpectrumA, 127)
SetColorSpectrumRed(*ColorSpectrumA, 0)
SetColorSpectrumGreen(*ColorSpectrumA, 0)
SetColorSpectrumBlue(*ColorSpectrumA, 0)
ColorSpectrum_SpectrumRedraw(*ColorSpectrumA)
ColorSpectrum_LightnessRedraw(*ColorSpectrumA)
RefreshHSLColorOutput(*ColorSpectrumA)
RefreshRGBColorOutput(*ColorSpectrumA)
CatchSafeHSLRGB(*ColorSpectrumA)
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur RefeshSpectrum <<<<<
Procedure ForceColorSpectrumStartColor(*ColorSpectrumA.ColorSpectrum, Color.l)
If Color <> - 1
SetColorSpectrumRed(*ColorSpectrumA, Red(Color))
SetColorSpectrumGreen(*ColorSpectrumA, Green(Color))
SetColorSpectrumBlue(*ColorSpectrumA, Blue(Color))
For Index = #COLOR_SPECTRUM_TARGET_RED To #COLOR_SPECTRUM_TARGET_BLUE
SetGadgetText(GetColorSpectrumStringHandle(*ColorSpectrumA, Index), Str(GetColorSpectrumHSLRGB(*ColorSpectrumA, Index)))
Next
CatchRGBColorInput(*ColorSpectrumA)
RefreshHSLColorOutput(*ColorSpectrumA)
Else
RefreshRGBColorOutput(*ColorSpectrumA)
RefreshHSLColorOutput(*ColorSpectrumA)
EndIf
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur ColorSpectrum_SpectrumCanvas_EventManager <<<<<
Procedure ColorSpectrum_SpectrumCanvas_EventManager(*ColorSpectrumA.ColorSpectrum)
EventType = EventType()
If EventType = #PB_EventType_LeftButtonDown Or ( EventType = #PB_EventType_MouseMove And GetGadgetAttribute(GetColorSpectrumSpectrumCanvas(*ColorSpectrumA), #PB_Canvas_Buttons) & #PB_Canvas_LeftButton)
MouseX.l = GetGadgetAttribute(GetColorSpectrumSpectrumCanvas(*ColorSpectrumA), #PB_Canvas_MouseX)
MouseY.l = GetGadgetAttribute(GetColorSpectrumSpectrumCanvas(*ColorSpectrumA), #PB_Canvas_MouseY)
If MouseX < 0
MouseX = 0
Else
If MouseX > #COLOR_SPECTRUM_SIZE_MAX
MouseX = #COLOR_SPECTRUM_SIZE_MAX
EndIf
EndIf
If MouseY < 0
MouseY = 0
Else
If MouseY > #COLOR_SPECTRUM_SIZE_MAX
MouseY = #COLOR_SPECTRUM_SIZE_MAX
EndIf
EndIf
SetColorSpectrumHue(*ColorSpectrumA, MouseX)
SetColorSpectrumSaturation(*ColorSpectrumA, #COLOR_SPECTRUM_SIZE_MAX - MouseY)
ColorSpectrum_SpectrumRedraw(*ColorSpectrumA)
ColorSpectrum_LightnessRedraw(*ColorSpectrumA)
RefreshHSLColorOutput(*ColorSpectrumA)
RefreshRGBColorOutput(*ColorSpectrumA)
CatchSafeHSLRGB(*ColorSpectrumA)
EndIf
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur ColorSpectrum_LightnessCanvas_EventManager <<<<<
Procedure ColorSpectrum_LightnessCanvas_EventManager(*ColorSpectrumA.ColorSpectrum)
EventType = EventType()
If EventType = #PB_EventType_LeftButtonDown Or (EventType = #PB_EventType_MouseMove And GetGadgetAttribute(GetColorSpectrumLightnessCanvas(*ColorSpectrumA), #PB_Canvas_Buttons) & #PB_Canvas_LeftButton)
MouseY.l = GetGadgetAttribute(GetColorSpectrumLightnessCanvas(*ColorSpectrumA), #PB_Canvas_MouseY)
If MouseY < 0
MouseY = 0
Else
If MouseY > #COLOR_SPECTRUM_SIZE_MAX
MouseY = #COLOR_SPECTRUM_SIZE_MAX
EndIf
EndIf
SetColorSpectrumLightness(*ColorSpectrumA, #COLOR_SPECTRUM_SIZE_MAX - MouseY)
ColorSpectrum_LightnessRedraw(*ColorSpectrumA)
RefreshHSLColorOutput(*ColorSpectrumA)
RefreshRGBColorOutput(*ColorSpectrumA)
CatchSafeHSLRGB(*ColorSpectrumA)
EndIf
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur Hue Input Control <<<<<
Procedure ColorSpectrum_Input_Control(*ColorSpectrumA.ColorSpectrum, Target.b)
EventType = EventType()
If EventType = #PB_EventType_Change
SetColorSpectrumSafeHSLRGB(*ColorSpectrumA, Target, Val(GetGadgetText(GetColorSpectrumStringHandle(*ColorSpectrumA, Target))))
If GetColorSpectrumSafeHSLRGB(*ColorSpectrumA, Target) < 0
SetColorSpectrumSafeHSLRGB(*ColorSpectrumA, Target, 0)
EndIf
If GetColorSpectrumSafeHSLRGB(*ColorSpectrumA, Target) > 255
SetColorSpectrumSafeHSLRGB(*ColorSpectrumA, Target, 255)
EndIf
Select Target
Case #COLOR_SPECTRUM_TARGET_HUE, #COLOR_SPECTRUM_TARGET_LIGHTNESS, #COLOR_SPECTRUM_TARGET_SATURATION
SetColorSpectrumHSLRGB(*ColorSpectrumA, Target, GetColorSpectrumSafeHSLRGB(*ColorSpectrumA, Target))
Case #COLOR_SPECTRUM_TARGET_RED, #COLOR_SPECTRUM_TARGET_GREEN, #COLOR_SPECTRUM_TARGET_BLUE
SetColorSpectrumHSLRGB(*ColorSpectrumA, Target, GetColorSpectrumSafeHSLRGB(*ColorSpectrumA, Target))
SetColorRed(RGBColor.Color, GetColorSpectrumSafeRed(*ColorSpectrumA))
SetColorGreen(RGBColor, GetColorSpectrumSafeGreen(*ColorSpectrumA))
SetColorBlue(RGBColor, GetColorSpectrumSafeBlue(*ColorSpectrumA))
Convert_RGB_To_HSL(RGBColor, HSLColor.Color)
SetColorSpectrumHue(*ColorSpectrumA, GetColorHue(HSLColor))
SetColorSpectrumSaturation(*ColorSpectrumA, GetColorSaturation(HSLColor))
SetColorSpectrumLightness(*ColorSpectrumA, GetColorLightness(HSLColor))
EndSelect
ColorSpectrum_SpectrumRedraw(*ColorSpectrumA)
ColorSpectrum_LightnessRedraw(*ColorSpectrumA)
ElseIf EventType = #PB_EventType_LostFocus
SetGadgetText(GetColorSpectrumStringHandle(*ColorSpectrumA, Target), Str(GetColorSpectrumSafeHSLRGB(*ColorSpectrumA, Target)))
EndIf
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur ColorSpectrumRequester <<<<<
Procedure.l ColorSpectrumRequester(*ColorSpectrumA.ColorSpectrum, Color.l = -1)
SetColorSpectrumWindowHandle(*ColorSpectrumA, OpenWindow(#PB_Any, 0, 0, #COLOR_SPECTRUM_SIZE_MAX + 55, #COLOR_SPECTRUM_SIZE_MAX + 140, GetColorSpectrumText(*ColorSpectrumA, 06), #PB_Window_SystemMenu | #PB_Window_ScreenCentered))
If GetColorSpectrumWindowHandle(*ColorSpectrumA) <> #Null
SetColorSpectrumSpectrumCanvas(*ColorSpectrumA, CanvasGadget(#PB_Any, 5, 5, #COLOR_SPECTRUM_SIZE_MAX + 2, #COLOR_SPECTRUM_SIZE_MAX + 2))
SetColorSpectrumLightnessCanvas(*ColorSpectrumA, CanvasGadget(#PB_Any, 270, 5, 30, #COLOR_SPECTRUM_SIZE_MAX + 2))
SetColorSpectrumTextHandle(*ColorSpectrumA, 6, TextGadget(#PB_Any, 5, 270, 80, 84, "", #PB_Text_Border))
PosX = 10
PosY = 270
For Index = 0 To 2
SetColorSpectrumTextHandle(*ColorSpectrumA, Index, TextGadget(#PB_Any, 102, PosY, 70, 25, GetColorSpectrumText(*ColorSpectrumA, Index), #PB_Text_Right))
SetColorSpectrumStringHandle(*ColorSpectrumA, Index, StringGadget(#PB_Any, 180, PosY, 33, 25, ""))
SetColorSpectrumTextHandle(*ColorSpectrumA, Index + 3, TextGadget(#PB_Any, 220, PosY, 40, 25, GetColorSpectrumText(*ColorSpectrumA, Index + 3), #PB_Text_Right))
SetColorSpectrumStringHandle(*ColorSpectrumA, Index + 3, StringGadget(#PB_Any, 270, PosY, 33, 25, ""))
SetColorSpectrumButtonHandle(*ColorSpectrumA, Index, ButtonGadget(#PB_Any, PosX, 360, 95, 30, GetColorSpectrumText(*ColorSpectrumA, Index + 7)))
PosX + 100
PosY + 30
Next
GenerateColorSpectrumBackgroundLayer(*ColorSpectrumA)
ForceColorSpectrumStartColor(*ColorSpectrumA, Color)
CatchSafeHSLRGB(*ColorSpectrumA)
ColorSpectrum_SpectrumRedraw(*ColorSpectrumA)
ColorSpectrum_LightnessRedraw(*ColorSpectrumA)
ReturnSelectedColor.l = -1
Repeat
EventID = WaitWindowEvent(20)
Select EventID
Case #PB_Event_Gadget
Select EventGadget()
Case GetColorSpectrumSpectrumCanvas(*ColorSpectrumA)
ColorSpectrum_SpectrumCanvas_EventManager(*ColorSpectrumA)
Case GetColorSpectrumLightnessCanvas(*ColorSpectrumA)
ColorSpectrum_LightnessCanvas_EventManager(*ColorSpectrumA)
Case GetColorSpectrumStringHandle(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_HUE)
ColorSpectrum_Input_Control(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_HUE)
Case GetColorSpectrumStringHandle(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_LIGHTNESS)
ColorSpectrum_Input_Control(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_LIGHTNESS)
Case GetColorSpectrumStringHandle(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_SATURATION)
ColorSpectrum_Input_Control(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_SATURATION)
Case GetColorSpectrumStringHandle(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_RED)
ColorSpectrum_Input_Control(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_RED)
Case GetColorSpectrumStringHandle(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_GREEN)
ColorSpectrum_Input_Control(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_GREEN)
Case GetColorSpectrumStringHandle(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_BLUE)
ColorSpectrum_Input_Control(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_BLUE)
Case GetColorSpectrumButtonHandle(*ColorSpectrumA, 0)
RefeshColorSpectrum(*ColorSpectrumA)
Case GetColorSpectrumButtonHandle(*ColorSpectrumA, 1)
ReturnSelectedColor = ColorSpectrum_RGB(*ColorSpectrumA)
EventID = #PB_Event_CloseWindow
Case GetColorSpectrumButtonHandle(*ColorSpectrumA, 2)
EventID = #PB_Event_CloseWindow
EndSelect
EndSelect
Until EventID = #PB_Event_CloseWindow
FreeColorSpectrumGadget(*ColorSpectrumA)
CloseWindow(GetColorSpectrumWindowHandle(*ColorSpectrumA))
EndIf
ProcedureReturn ReturnSelectedColor
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< !!! WARNING - YOU ARE NOW IN A TESTING ZONE - WARNING !!! <<<<<
; <<<<< !!! WARNING - THIS CODE SHOULD BE COMMENTED - WARNING !!! <<<<<
; <<<<< !!! WARNING - BEFORE THE FINAL COMPILATION. - WARNING !!! <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
InitializeColorSpectrum(ColorSpectrum.ColorSpectrum)
Color.l = ColorSpectrumRequester(ColorSpectrum, RGB(31, 196, 243))
If Color <> -1
Debug "RGB(" + Str(Red(Color)) + ", " + Str(Green(Color)) + ", " + Str(Blue(Color)) + ")"
Else
Debug "L'utilisateur à annuler la sélection de la couleur"
EndIf
ResetColorSpectrum(ColorSpectrum)
; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<
Re: Routine Spectre des couleurs Style Windows
Wahou superbe ! 
Vraiment superbe ce code
J'ai une petite idée et soucis a vous faire part si vous le permettez !
D'une part, pourquoi les deux programme ne mette pas la même chose sur les valeurs

Deuxio, je propose de mettre a la place de la barre pour la luminosité de la couleur, une petite flèche
Trio, je propose de faire comme paint, de mettre des petite case de couleur

Vraiment superbe ce code

J'ai une petite idée et soucis a vous faire part si vous le permettez !
D'une part, pourquoi les deux programme ne mette pas la même chose sur les valeurs


Deuxio, je propose de mettre a la place de la barre pour la luminosité de la couleur, une petite flèche
Trio, je propose de faire comme paint, de mettre des petite case de couleur
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !
Mon forum http://purebasic.forumphp3.com/index.php
Mon forum http://purebasic.forumphp3.com/index.php
Re: Routine Spectre des couleurs Style Windows
Primo, la zone de sélection de la couleur n'est pas carrée mais rectangulaire ce qui veut dire que les valeurs ne sont pas uniforme horizontalement.dayvid a écrit :Wahou superbe !
Vraiment superbe ce code![]()
J'ai une petite idée et soucis a vous faire part si vous le permettez !
D'une part, pourquoi les deux programme ne mette pas la même chose sur les valeurs![]()
Deuxio, je propose de mettre a la place de la barre pour la luminosité de la couleur, une petite flèche
Trio, je propose de faire comme paint, de mettre des petite case de couleur
Deusio, mettre une flèche au lien d'une simple barre pour la luminosité, peut-être je vais voir ça aujourd'hui.
Tersio, une zone avec des cases de couleur à la MS Paint moi j'aime pas, je préfère celle de Rhinoceros 3D (le ListviewGadget() avec nom comme on le voit à gauche)

Mais bon il devrait être possible de faire coexister dans le code les deux approches et faire un aiguillage avec un paramètre de contrôle. Je vais voir ce que je peux faire dans ce sens aujourd'hui.
A+
Guimauve
Re: Routine Spectre des couleurs Style Windows
Bonjour,
Le flêche oui pourquoi pas, sinon pour ce que je voulais faire j'avais juste besoin de faire la sélection du spectre et de l'intensite. Sinon quitte a refaire à 100% celui de Windows il est préferable d'utilisé celui de windows.
Cordialement,
GallyHC
Le flêche oui pourquoi pas, sinon pour ce que je voulais faire j'avais juste besoin de faire la sélection du spectre et de l'intensite. Sinon quitte a refaire à 100% celui de Windows il est préferable d'utilisé celui de windows.
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Re: Routine Spectre des couleurs Style Windows
Merci guimauve.
Pour qu'il soit parfait, l'ajout de la valeur hex serait pratique (comme dans photoshop)

Pour qu'il soit parfait, l'ajout de la valeur hex serait pratique (comme dans photoshop)

~~~~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: Routine Spectre des couleurs Style Windows
Juste pour visualiser ou pour entrer une valeur en Hexadécimal ?Ar-S a écrit :Merci guimauve.
Pour qu'il soit parfait, l'ajout de la valeur hex serait pratique (comme dans photoshop)
A+
Guimauve
Re: Routine Spectre des couleurs Style Windows
Bonjour à tous,
Pour ceux qui veulent avoir une flèche au-lieu d'un trait pour sélectionner la luminosité et avoir le fond de la même couleur que le fond de la fenêtre.
A+
Guimauve
Pour ceux qui veulent avoir une flèche au-lieu d'un trait pour sélectionner la luminosité et avoir le fond de la même couleur que le fond de la fenêtre.
A+
Guimauve
Code : Tout sélectionner
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; CODE GÉNÉRÉ AUTOMATIQUEMENT, NE PAS MODIFIER À
; MOINS D'AVOIR UNE RAISON TRÈS TRÈS VALABLE !!!
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Code généré par : Dev-Type V3.131.634
; Nom du projet : Color Spectrum Requester
; Nom du fichier : Color Spectrum Requester.pb
; Version du fichier : 1.0.6
; Programmation : OK
; Programmé par : GallyHC
; Modifié par : Guimauve, Le Soldat Inconnu
; Date : 18-02-2012
; Mise à jour : 19-02-2012
; Codé pour PureBasic V4.60
; Plateforme : Windows, Linux, MacOS X
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Enumeration
#COLOR_SPECTRUM_TARGET_HUE
#COLOR_SPECTRUM_TARGET_SATURATION
#COLOR_SPECTRUM_TARGET_LIGHTNESS
#COLOR_SPECTRUM_TARGET_RED
#COLOR_SPECTRUM_TARGET_GREEN
#COLOR_SPECTRUM_TARGET_BLUE
#COLOR_SPECTRUM_TARGET_WIN_TITLE
#COLOR_SPECTRUM_TARGET_BTN_REFRESH
#COLOR_SPECTRUM_TARGET_BTN_VALIDATE
#COLOR_SPECTRUM_TARGET_BTN_CANCEL
EndEnumeration
#COLOR_SPECTRUM_SIZE_MAX = 255
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Déclaration des Structures <<<<<
Structure Color
StructureUnion
Red.a
Hue.a
EndStructureUnion
StructureUnion
Green.a
Saturation.a
EndStructureUnion
StructureUnion
Blue.a
Lightness.a
EndStructureUnion
EndStructure
Structure ColorSpectrum
HSLRGB.l[6] ; Hue, Saturation, Lightness, Red, Green, Blue
SafeHSLRGB.l[6] ; SafeHue, SafeSaturation, SafeLightness, SafeRed, SafeGreen, SafeBlue
BackgroundLayer.l
SpectrumCanvas.l
LightnessCanvas.l
WindowHandle.l
Text.s[10]
TextHandle.l[7]
StringHandle.l[6]
ButtonHandle.l[3]
EndStructure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Les observateurs <<<<<
Macro GetColorRed(ColorA)
ColorA\Red
EndMacro
Macro GetColorHue(ColorA)
ColorA\Hue
EndMacro
Macro GetColorGreen(ColorA)
ColorA\Green
EndMacro
Macro GetColorSaturation(ColorA)
ColorA\Saturation
EndMacro
Macro GetColorBlue(ColorA)
ColorA\Blue
EndMacro
Macro GetColorLightness(ColorA)
ColorA\Lightness
EndMacro
Macro GetColorSpectrumHSLRGB(ColorSpectrumA, HSLRGBID)
ColorSpectrumA\HSLRGB[HSLRGBID]
EndMacro
Macro GetColorSpectrumSafeHSLRGB(ColorSpectrumA, SafeHSLRGBID)
ColorSpectrumA\SafeHSLRGB[SafeHSLRGBID]
EndMacro
Macro GetColorSpectrumBackgroundLayer(ColorSpectrumA)
ColorSpectrumA\BackgroundLayer
EndMacro
Macro GetColorSpectrumSpectrumCanvas(ColorSpectrumA)
ColorSpectrumA\SpectrumCanvas
EndMacro
Macro GetColorSpectrumLightnessCanvas(ColorSpectrumA)
ColorSpectrumA\LightnessCanvas
EndMacro
Macro GetColorSpectrumWindowHandle(ColorSpectrumA)
ColorSpectrumA\WindowHandle
EndMacro
Macro GetColorSpectrumText(ColorSpectrumA, TextID)
ColorSpectrumA\Text[TextID]
EndMacro
Macro GetColorSpectrumTextHandle(ColorSpectrumA, TextHandleID)
ColorSpectrumA\TextHandle[TextHandleID]
EndMacro
Macro GetColorSpectrumStringHandle(ColorSpectrumA, StringHandleID)
ColorSpectrumA\StringHandle[StringHandleID]
EndMacro
Macro GetColorSpectrumButtonHandle(ColorSpectrumA, ButtonHandleID)
ColorSpectrumA\ButtonHandle[ButtonHandleID]
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Les mutateurs <<<<<
Macro SetColorRed(ColorA, P_Red)
GetColorRed(ColorA) = P_Red
EndMacro
Macro SetColorHue(ColorA, P_Hue)
GetColorHue(ColorA) = P_Hue
EndMacro
Macro SetColorGreen(ColorA, P_Green)
GetColorGreen(ColorA) = P_Green
EndMacro
Macro SetColorLightness(ColorA, P_Lightness)
GetColorLightness(ColorA) = P_Lightness
EndMacro
Macro SetColorBlue(ColorA, P_Blue)
GetColorBlue(ColorA) = P_Blue
EndMacro
Macro SetColorSaturation(ColorA, P_Saturation)
GetColorSaturation(ColorA) = P_Saturation
EndMacro
Macro SetColorSpectrumHSLRGB(ColorSpectrumA, HSLRGBID, P_HSLRGB)
GetColorSpectrumHSLRGB(ColorSpectrumA, HSLRGBID) = P_HSLRGB
EndMacro
Macro SetColorSpectrumSafeHSLRGB(ColorSpectrumA, SafeHSLRGBID, P_SafeHSLRGB)
GetColorSpectrumSafeHSLRGB(ColorSpectrumA, SafeHSLRGBID) = P_SafeHSLRGB
EndMacro
Macro SetColorSpectrumBackgroundLayer(ColorSpectrumA, P_BackgroundLayer)
GetColorSpectrumBackgroundLayer(ColorSpectrumA) = P_BackgroundLayer
EndMacro
Macro SetColorSpectrumSpectrumCanvas(ColorSpectrumA, P_SpectrumCanvas)
GetColorSpectrumSpectrumCanvas(ColorSpectrumA) = P_SpectrumCanvas
EndMacro
Macro SetColorSpectrumLightnessCanvas(ColorSpectrumA, P_LightnessCanvas)
GetColorSpectrumLightnessCanvas(ColorSpectrumA) = P_LightnessCanvas
EndMacro
Macro SetColorSpectrumWindowHandle(ColorSpectrumA, P_WindowHandle)
GetColorSpectrumWindowHandle(ColorSpectrumA) = P_WindowHandle
EndMacro
Macro SetColorSpectrumText(ColorSpectrumA, TextID, P_Text)
GetColorSpectrumText(ColorSpectrumA, TextID) = P_Text
EndMacro
Macro SetColorSpectrumTextHandle(ColorSpectrumA, TextHandleID, P_TextHandle)
GetColorSpectrumTextHandle(ColorSpectrumA, TextHandleID) = P_TextHandle
EndMacro
Macro SetColorSpectrumStringHandle(ColorSpectrumA, StringHandleID, P_StringHandle)
GetColorSpectrumStringHandle(ColorSpectrumA, StringHandleID) = P_StringHandle
EndMacro
Macro SetColorSpectrumButtonHandle(ColorSpectrumA, ButtonHandleID, P_ButtonHandle)
GetColorSpectrumButtonHandle(ColorSpectrumA, ButtonHandleID) = P_ButtonHandle
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Les opérateurs Reset <<<<<
Macro ResetColor(ColorA)
ClearStructure(ColorA, Color)
EndMacro
Macro ResetColorSpectrum(ColorSpectrumA)
SetColorSpectrumBackgroundLayer(ColorSpectrumA, 0)
SetColorSpectrumSpectrumCanvas(ColorSpectrumA, 0)
SetColorSpectrumLightnessCanvas(ColorSpectrumA, 0)
SetColorSpectrumWindowHandle(ColorSpectrumA, 0)
For TextID = 0 To 9
SetColorSpectrumText(ColorSpectrumA, TextID, "")
Next
For TextHandleID = 0 To 6
SetColorSpectrumTextHandle(ColorSpectrumA, TextHandleID, 0)
Next
For StringHandleID = 0 To 5
SetColorSpectrumStringHandle(ColorSpectrumA, StringHandleID, 0)
SetColorSpectrumHSLRGB(ColorSpectrumA, StringHandleID, 0)
SetColorSpectrumSafeHSLRGB(ColorSpectrumA, StringHandleID, 0)
Next
For ButtonHandleID = 0 To 2
SetColorSpectrumButtonHandle(ColorSpectrumA, ButtonHandleID, 0)
Next
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Les observateurs spéciaux <<<<<
Macro GetColorSpectrumHue(ColorSpectrumA)
GetColorSpectrumHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_HUE)
EndMacro
Macro GetColorSpectrumLightness(ColorSpectrumA)
GetColorSpectrumHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_LIGHTNESS)
EndMacro
Macro GetColorSpectrumSaturation(ColorSpectrumA)
GetColorSpectrumHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_SATURATION)
EndMacro
Macro GetColorSpectrumRed(ColorSpectrumA)
GetColorSpectrumHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_RED)
EndMacro
Macro GetColorSpectrumGreen(ColorSpectrumA)
GetColorSpectrumHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_GREEN)
EndMacro
Macro GetColorSpectrumBlue(ColorSpectrumA)
GetColorSpectrumHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_BLUE)
EndMacro
Macro GetColorSpectrumSafeHue(ColorSpectrumA)
GetColorSpectrumSafeHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_HUE)
EndMacro
Macro GetColorSpectrumSafeLightness(ColorSpectrumA)
GetColorSpectrumSafeHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_LIGHTNESS)
EndMacro
Macro GetColorSpectrumSafeSaturation(ColorSpectrumA)
GetColorSpectrumSafeHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_SATURATION)
EndMacro
Macro GetColorSpectrumSafeRed(ColorSpectrumA)
GetColorSpectrumSafeHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_RED)
EndMacro
Macro GetColorSpectrumSafeGreen(ColorSpectrumA)
GetColorSpectrumSafeHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_GREEN)
EndMacro
Macro GetColorSpectrumSafeBlue(ColorSpectrumA)
GetColorSpectrumSafeHSLRGB(ColorSpectrumA, #COLOR_SPECTRUM_TARGET_BLUE)
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Les mutateurs spéciaux <<<<<
Macro SetColorSpectrumHue(ColorSpectrumA, P_Hue)
GetColorSpectrumHue(ColorSpectrumA) = P_Hue
EndMacro
Macro SetColorSpectrumLightness(ColorSpectrumA, P_Lightness)
GetColorSpectrumLightness(ColorSpectrumA) = P_Lightness
EndMacro
Macro SetColorSpectrumSaturation(ColorSpectrumA, P_Saturation)
GetColorSpectrumSaturation(ColorSpectrumA) = P_Saturation
EndMacro
Macro SetColorSpectrumRed(ColorSpectrumA, P_Red)
GetColorSpectrumRed(ColorSpectrumA) = P_Red
EndMacro
Macro SetColorSpectrumGreen(ColorSpectrumA, P_Green)
GetColorSpectrumGreen(ColorSpectrumA) = P_Green
EndMacro
Macro SetColorSpectrumBlue(ColorSpectrumA, P_Blue)
GetColorSpectrumBlue(ColorSpectrumA) = P_Blue
EndMacro
Macro SetColorSpectrumSafeHue(ColorSpectrumA, P_SafeHue)
GetColorSpectrumSafeHue(ColorSpectrumA) = P_SafeHue
EndMacro
Macro SetColorSpectrumSafeLightness(ColorSpectrumA, P_SafeLightness)
GetColorSpectrumSafeLightness(ColorSpectrumA) = P_SafeLightness
EndMacro
Macro SetColorSpectrumSafeSaturation(ColorSpectrumA, P_SafeSaturation)
GetColorSpectrumSafeSaturation(ColorSpectrumA) = P_SafeSaturation
EndMacro
Macro SetColorSpectrumSafeRed(ColorSpectrumA, P_SafeRed)
GetColorSpectrumSafeRed(ColorSpectrumA) = P_SafeRed
EndMacro
Macro SetColorSpectrumSafeGreen(ColorSpectrumA, P_SafeGreen)
GetColorSpectrumSafeGreen(ColorSpectrumA) = P_SafeGreen
EndMacro
Macro SetColorSpectrumSafeBlue(ColorSpectrumA, P_SafeBlue)
GetColorSpectrumSafeBlue(ColorSpectrumA) = P_SafeBlue
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Les opérateurs Update <<<<<
Macro UpdateColorRGB(ColorA, P_Red, P_Green, P_Blue)
SetColorRed(ColorA, P_Red)
SetColorGreen(ColorA, P_Green)
SetColorBlue(ColorA, P_Blue)
EndMacro
Macro UpdateColorHSL(ColorA, P_Hue, P_Saturation, P_Lightness)
SetColorHue(ColorA, P_Hue)
SetColorSaturation(ColorA, P_Saturation)
SetColorLightness(ColorA, P_Lightness)
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Les opérateurs de Formatage <<<<<
Macro FormatColorSpectrumRGB(ColorSpectrumA)
"RGB(" + Str(GetColorSpectrumRed(ColorSpectrumA)) + ", " + Str(GetColorSpectrumGreen(ColorSpectrumA)) + ", " + Str(GetColorSpectrumBlue(ColorSpectrumA)) + ")"
EndMacro
Macro FormatColorSpectrumHSL(ColorSpectrumA)
"HSL(" + Str(GetColorSpectrumHue(ColorSpectrumA)) + ", " + Str(GetColorSpectrumSaturation(ColorSpectrumA)) + ", " + Str(GetColorSpectrumLightness(ColorSpectrumA)) + ")"
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Conversion vers couleur entier long <<<<<
Macro ColorSpectrum_RGB(ColorSpectrumA)
(GetColorSpectrumBlue(ColorSpectrumA) << 16 + GetColorSpectrumGreen(ColorSpectrumA) << 8 + GetColorSpectrumRed(ColorSpectrumA))
EndMacro
Macro Color_RGB(ColorA)
(GetColorBlue(ColorA) << 16 + GetColorGreen(ColorA) << 8 + GetColorRed(ColorA))
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< Min et Max de 3 nombres <<<<<
Macro MinMaxNumber(P_Min, P_Max, P_Number01, P_Number02, P_Number03)
P_Min = P_Number01
If P_Number02 < P_Min
P_Min = P_Number02
EndIf
If P_Number03 < P_Min
P_Min = P_Number03
EndIf
P_Max = P_Number01
If P_Number02 > P_Max
P_Max = P_Number02
EndIf
If P_Number03 > P_Max
P_Max = P_Number03
EndIf
EndMacro
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur Initialize <<<<<
Procedure InitializeColorSpectrum(*ColorSpectrumA.ColorSpectrum)
SetColorSpectrumLightness(*ColorSpectrumA, 127)
SetColorSpectrumText(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_HUE, "Teinte")
SetColorSpectrumText(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_LIGHTNESS, "Luminosité")
SetColorSpectrumText(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_SATURATION, "Saturation")
SetColorSpectrumText(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_RED, "Rouge")
SetColorSpectrumText(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_GREEN, "Vert")
SetColorSpectrumText(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_BLUE, "Bleu")
SetColorSpectrumText(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_WIN_TITLE, "Spectre de couleurs")
SetColorSpectrumText(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_BTN_REFRESH, "Rafraichir")
SetColorSpectrumText(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_BTN_VALIDATE, "Valider")
SetColorSpectrumText(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_BTN_CANCEL, "Annuler")
EndProcedure
Procedure GetWindowBackgroundColor()
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
BackgroundColor.l = GetSysColor_(#COLOR_3DFACE)
CompilerCase #PB_OS_Linux
BackgroundColor.l = RGB(237,235,236)
CompilerCase #PB_OS_MacOS
BackgroundColor.l = RGB(237,235,236)
CompilerEndSelect
ProcedureReturn BackgroundColor
EndProcedure
Procedure.l Private_ConvertRM(M1.f, M2.f, HueColor.f)
; ROUTINE DE CALCUL DE LA COMPOSANTE DE COULEUR.
If HueColor > 360
HueColor - 360
EndIf
If HueColor < 0
HueColor + 360
EndIf
If HueColor < 60
M1 = M1 + (M2 - M1) * HueColor / 60
Else
If HueColor < 180
M1 = M2
Else
If HueColor < 240
M1 = M1 + (M2 - M1) * (240 - HueColor) / 60
EndIf
EndIf
EndIf
ProcedureReturn M1 * 255
EndProcedure
Procedure Convert_RGB_To_HSL(*RGBColorA.Color, *HSLColorA.Color)
; ROUTINE DE CONSERTION DU RGB EN HLS.
MinMaxNumber(Min.l, Max.l, GetColorRed(*RGBColorA), GetColorGreen(*RGBColorA), GetColorBlue(*RGBColorA))
DeltaMaxMin.l = Max - Min
SumMaxMin.l = Max + Min
LightnessColor.f = SumMaxMin / 510
If Max = Min
HueColor.f = 0
SaturationColor.f = 0
Else
NormalizedRed = (Max - GetColorRed(*RGBColorA)) / DeltaMaxMin
NormalizedGreen = (Max - GetColorGreen(*RGBColorA)) / DeltaMaxMin
NormalizedBlue = (Max - GetColorBlue(*RGBColorA)) / DeltaMaxMin
If LightnessColor <= 0.5
SaturationColor = DeltaMaxMin / SumMaxMin
Else
SaturationColor = DeltaMaxMin / (510 - SumMaxMin)
EndIf
If GetColorRed(*RGBColorA) = Max
HueColor = 60 * (6 + NormalizedBlue - NormalizedGreen)
EndIf
If GetColorGreen(*RGBColorA) = Max
HueColor = 60 * (2 + NormalizedRed - NormalizedBlue)
EndIf
If GetColorBlue(*RGBColorA) = Max
HueColor = 60 * (4 + NormalizedGreen - NormalizedRed)
EndIf
EndIf
If HueColor = 360
HueColor = 0
EndIf
HueColor = HueColor / 360 * #COLOR_SPECTRUM_SIZE_MAX
LightnessColor = LightnessColor * #COLOR_SPECTRUM_SIZE_MAX
SaturationColor = SaturationColor * #COLOR_SPECTRUM_SIZE_MAX
SetColorHue(*HSLColorA, Int(HueColor))
SetColorSaturation(*HSLColorA, Int(SaturationColor))
SetColorLightness(*HSLColorA, Int(LightnessColor))
EndProcedure
Procedure Convert_HSL_To_RGB(HueColor.f, LightnessColor.f, SaturationColor.f, *RGBColorA.Color)
; ROUTINE DE CONSERTION DU HSL EN RGB.
HueColor = HueColor * 360 / #COLOR_SPECTRUM_SIZE_MAX
SaturationColor = SaturationColor / #COLOR_SPECTRUM_SIZE_MAX
LightnessColor = LightnessColor / #COLOR_SPECTRUM_SIZE_MAX
If SaturationColor = 0.0
SetColorRed(*RGBColorA, LightnessColor * #COLOR_SPECTRUM_SIZE_MAX)
SetColorGreen(*RGBColorA, LightnessColor * #COLOR_SPECTRUM_SIZE_MAX)
SetColorBlue(*RGBColorA, LightnessColor * #COLOR_SPECTRUM_SIZE_MAX)
Else
If LightnessColor <= 0.5
M2.f = LightnessColor + LightnessColor * SaturationColor
Else
M2 = LightnessColor + SaturationColor - LightnessColor * SaturationColor
EndIf
M1.f = 2 * LightnessColor - M2
SetColorRed(*RGBColorA, Private_ConvertRm(M1, M2, HueColor + 120))
SetColorGreen(*RGBColorA, Private_ConvertRm(M1, M2, HueColor))
SetColorBlue(*RGBColorA, Private_ConvertRm(M1, M2, HueColor - 120))
EndIf
EndProcedure
Procedure GenerateColorSpectrumBackgroundLayer(*ColorSpectrumA.ColorSpectrum)
; ROUTINE DE PRECALCUL DU SPECTRE DE COULEUR.
SetColorSpectrumBackgroundLayer(*ColorSpectrumA, CreateImage(#PB_Any, #COLOR_SPECTRUM_SIZE_MAX + 2, #COLOR_SPECTRUM_SIZE_MAX + 2))
If GetColorSpectrumBackgroundLayer(*ColorSpectrumA) <> #Null
If StartDrawing(ImageOutput(GetColorSpectrumBackgroundLayer(*ColorSpectrumA)))
Box(0, 0, #COLOR_SPECTRUM_SIZE_MAX + 2, #COLOR_SPECTRUM_SIZE_MAX + 2, $000000)
For SaturationID = 1 To #COLOR_SPECTRUM_SIZE_MAX
For HueID = 1 To #COLOR_SPECTRUM_SIZE_MAX
Convert_HSL_To_RGB(HueID, #COLOR_SPECTRUM_SIZE_MAX / 2, SaturationID, RGBColor.Color)
Plot(HueID, (#COLOR_SPECTRUM_SIZE_MAX - SaturationID) + 1, Color_RGB(RGBColor))
Next
Next
StopDrawing()
EndIf
EndIf
EndProcedure
Procedure ColorSpectrum_DrawCross(*ColorSpectrumA.ColorSpectrum)
; ROUTINE DE TRACAGE DE LA CROIX DU SPECTRE.
PosX = GetColorSpectrumHue(*ColorSpectrumA)
PosY = #COLOR_SPECTRUM_SIZE_MAX - GetColorSpectrumSaturation(*ColorSpectrumA)
If PosX < #COLOR_SPECTRUM_SIZE_MAX
PosX + 1
EndIf
If PosY < #COLOR_SPECTRUM_SIZE_MAX
PosY + 1
EndIf
Box(PosX - 1, PosY - 9, 3, 5, 0)
Box(PosX - 1, PosY + 5, 3, 5, 0)
Box(PosX - 9, PosY - 1, 5, 3, 0)
Box(PosX + 5, PosY - 1, 5, 3, 0)
EndProcedure
Procedure ColorSpectrum_DrawArrow(*ColorSpectrumA.ColorSpectrum)
; ROUTINE DE TRACAGE DE LA BARRE DE LIGHTNESS
PosY = #COLOR_SPECTRUM_SIZE_MAX - GetColorSpectrumLightness(*ColorSpectrumA)
If PosY => #COLOR_SPECTRUM_SIZE_MAX
PosY = #COLOR_SPECTRUM_SIZE_MAX - 1
EndIf
; Box(22, PosY, 8, 3, 0)
x1 = 22
x2 = 33
y2 = PosY + 5
y3 = PosY - 5
xm = (x1 + x2) >> 1
LineXY(x1, PosY, x2, y2, 0)
LineXY(x2, y2, x2, y3, 0)
LineXY(x2, y3, x1, PosY, 0)
FillArea(xm, PosY, 0, 0);$FFFFFF)
EndProcedure
Procedure ColorSpectrum_SpectrumRedraw(*ColorSpectrumA.ColorSpectrum)
; ROUTINE D'AFFICHAGE DU SPECTRE ET CROIX.
If StartDrawing(CanvasOutput(GetColorSpectrumSpectrumCanvas(*ColorSpectrumA)))
If GetColorSpectrumBackgroundLayer(*ColorSpectrumA) <> #Null
DrawImage(ImageID(GetColorSpectrumBackgroundLayer(*ColorSpectrumA)), 0, 0)
EndIf
ColorSpectrum_DrawCross(*ColorSpectrumA)
Convert_HSL_To_RGB(GetColorSpectrumHue(*ColorSpectrumA), GetColorSpectrumLightness(*ColorSpectrumA), GetColorSpectrumSaturation(*ColorSpectrumA), RGBColor.Color)
StopDrawing()
SetGadgetColor(GetColorSpectrumTextHandle(*ColorSpectrumA, 06), #PB_Gadget_BackColor, Color_RGB(RGBColor))
EndIf
EndProcedure
Procedure ColorSpectrum_LightnessRedraw(*ColorSpectrumA.ColorSpectrum)
; ROUTINE DE TRACAGE DE LA BARRE LUMIERE.
If StartDrawing(CanvasOutput(GetColorSpectrumLightnessCanvas(*ColorSpectrumA)))
CurrentLightness = GetColorSpectrumLightness(*ColorSpectrumA)
Box(0, 0, #COLOR_SPECTRUM_SIZE_MAX + 2, #COLOR_SPECTRUM_SIZE_MAX + 2, GetWindowBackgroundColor()); $FFFFFF)
Box(0, 0, 20, #COLOR_SPECTRUM_SIZE_MAX + 2, $000000)
For LightnessID = 1 To #COLOR_SPECTRUM_SIZE_MAX
Convert_HSL_To_RGB(GetColorSpectrumHue(*ColorSpectrumA), LightnessID, GetColorSpectrumSaturation(*ColorSpectrumA), RGBColor.Color)
LineXY(1, (#COLOR_SPECTRUM_SIZE_MAX - LightnessID) + 1, 18, (#COLOR_SPECTRUM_SIZE_MAX - LightnessID) + 1, Color_RGB(RGBColor))
Next
SetColorSpectrumLightness(*ColorSpectrumA, CurrentLightness)
ColorSpectrum_DrawArrow(*ColorSpectrumA.ColorSpectrum)
Convert_HSL_To_RGB(GetColorSpectrumHue(*ColorSpectrumA), GetColorSpectrumLightness(*ColorSpectrumA), GetColorSpectrumSaturation(*ColorSpectrumA), RGBColor.Color)
SetGadgetColor(GetColorSpectrumTextHandle(*ColorSpectrumA, 06), #PB_Gadget_BackColor, Color_RGB(RGBColor))
StopDrawing()
EndIf
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur Free Gadgets <<<<<
Procedure FreeColorSpectrumGadget(*ColorSpectrumA.ColorSpectrum)
SetColorSpectrumHue(*ColorSpectrumA, 0)
SetColorSpectrumSaturation(*ColorSpectrumA, 0)
SetColorSpectrumLightness(*ColorSpectrumA, 127)
SetColorSpectrumRed(*ColorSpectrumA, 0)
SetColorSpectrumGreen(*ColorSpectrumA, 0)
SetColorSpectrumBlue(*ColorSpectrumA, 0)
For Index = 0 To 2
FreeGadget(GetColorSpectrumTextHandle(*ColorSpectrumA, Index))
FreeGadget(GetColorSpectrumTextHandle(*ColorSpectrumA, Index+3))
FreeGadget(GetColorSpectrumStringHandle(*ColorSpectrumA, Index))
FreeGadget(GetColorSpectrumStringHandle(*ColorSpectrumA, Index+3))
FreeGadget(GetColorSpectrumButtonHandle(*ColorSpectrumA, Index))
Next
FreeGadget(GetColorSpectrumSpectrumCanvas(*ColorSpectrumA))
FreeGadget(GetColorSpectrumLightnessCanvas(*ColorSpectrumA))
FreeImage(GetColorSpectrumBackgroundLayer(*ColorSpectrumA))
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur RefeshHSLColorOutput <<<<<
Procedure RefreshHSLColorOutput(*ColorSpectrumA.ColorSpectrum)
For TargetID = #COLOR_SPECTRUM_TARGET_HUE To #COLOR_SPECTRUM_TARGET_LIGHTNESS
SetGadgetText(GetColorSpectrumStringHandle(*ColorSpectrumA, TargetID), Str(GetColorSpectrumHSLRGB(*ColorSpectrumA, TargetID)))
Next
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur RefeshRGBColorOutput <<<<<
Procedure RefreshRGBColorOutput(*ColorSpectrumA.ColorSpectrum)
Convert_HSL_To_RGB(GetColorSpectrumHue(*ColorSpectrumA), GetColorSpectrumLightness(*ColorSpectrumA), GetColorSpectrumSaturation(*ColorSpectrumA), RGBColor.Color)
SetColorSpectrumRed(*ColorSpectrumA, GetColorRed(RGBColor))
SetColorSpectrumGreen(*ColorSpectrumA, GetColorGreen(RGBColor))
SetColorSpectrumBlue(*ColorSpectrumA, GetColorBlue(RGBColor))
For TargetID = #COLOR_SPECTRUM_TARGET_RED To #COLOR_SPECTRUM_TARGET_BLUE
SetGadgetText(GetColorSpectrumStringHandle(*ColorSpectrumA, TargetID), Str(GetColorSpectrumHSLRGB(*ColorSpectrumA, TargetID)))
Next
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur CatchRGBColorInput <<<<<
Procedure CatchRGBColorInput(*ColorSpectrumA.ColorSpectrum)
For TargetID = #COLOR_SPECTRUM_TARGET_RED To #COLOR_SPECTRUM_TARGET_BLUE
SetColorSpectrumHSLRGB(*ColorSpectrumA, TargetID, Val(GetGadgetText(GetColorSpectrumStringHandle(*ColorSpectrumA, TargetID))))
Next
SetColorRed(RGBColor.Color, GetColorSpectrumRed(*ColorSpectrumA))
SetColorGreen(RGBColor, GetColorSpectrumGreen(*ColorSpectrumA))
SetColorBlue(RGBColor, GetColorSpectrumBlue(*ColorSpectrumA))
Convert_RGB_To_HSL(RGBColor, HSLColor.Color)
SetColorSpectrumHue(*ColorSpectrumA, GetColorHue(HSLColor))
SetColorSpectrumSaturation(*ColorSpectrumA, GetColorSaturation(HSLColor))
SetColorSpectrumLightness(*ColorSpectrumA, GetColorLightness(HSLColor))
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur CatchSafeHSLRGB <<<<<
Procedure CatchSafeHSLRGB(*ColorSpectrumA.ColorSpectrum)
For TargetID = #COLOR_SPECTRUM_TARGET_HUE To #COLOR_SPECTRUM_TARGET_BLUE
SetColorSpectrumSafeHSLRGB(*ColorSpectrumA, TargetID, Val(GetGadgetText(GetColorSpectrumStringHandle(*ColorSpectrumA, TargetID))))
Next
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur RefeshSpectrum <<<<<
Procedure RefeshColorSpectrum(*ColorSpectrumA.ColorSpectrum)
SetColorSpectrumHue(*ColorSpectrumA, 0)
SetColorSpectrumSaturation(*ColorSpectrumA, 0)
SetColorSpectrumLightness(*ColorSpectrumA, 127)
SetColorSpectrumRed(*ColorSpectrumA, 0)
SetColorSpectrumGreen(*ColorSpectrumA, 0)
SetColorSpectrumBlue(*ColorSpectrumA, 0)
ColorSpectrum_SpectrumRedraw(*ColorSpectrumA)
ColorSpectrum_LightnessRedraw(*ColorSpectrumA)
RefreshHSLColorOutput(*ColorSpectrumA)
RefreshRGBColorOutput(*ColorSpectrumA)
CatchSafeHSLRGB(*ColorSpectrumA)
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur RefeshSpectrum <<<<<
Procedure ForceColorSpectrumStartColor(*ColorSpectrumA.ColorSpectrum, Color.l)
If Color <> - 1
SetColorSpectrumRed(*ColorSpectrumA, Red(Color))
SetColorSpectrumGreen(*ColorSpectrumA, Green(Color))
SetColorSpectrumBlue(*ColorSpectrumA, Blue(Color))
For Index = #COLOR_SPECTRUM_TARGET_RED To #COLOR_SPECTRUM_TARGET_BLUE
SetGadgetText(GetColorSpectrumStringHandle(*ColorSpectrumA, Index), Str(GetColorSpectrumHSLRGB(*ColorSpectrumA, Index)))
Next
CatchRGBColorInput(*ColorSpectrumA)
RefreshHSLColorOutput(*ColorSpectrumA)
Else
RefreshRGBColorOutput(*ColorSpectrumA)
RefreshHSLColorOutput(*ColorSpectrumA)
EndIf
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur ColorSpectrum_SpectrumCanvas_EventManager <<<<<
Procedure ColorSpectrum_SpectrumCanvas_EventManager(*ColorSpectrumA.ColorSpectrum)
EventType = EventType()
If EventType = #PB_EventType_LeftButtonDown Or ( EventType = #PB_EventType_MouseMove And GetGadgetAttribute(GetColorSpectrumSpectrumCanvas(*ColorSpectrumA), #PB_Canvas_Buttons) & #PB_Canvas_LeftButton)
MouseX.l = GetGadgetAttribute(GetColorSpectrumSpectrumCanvas(*ColorSpectrumA), #PB_Canvas_MouseX)
MouseY.l = GetGadgetAttribute(GetColorSpectrumSpectrumCanvas(*ColorSpectrumA), #PB_Canvas_MouseY)
If MouseX < 0
MouseX = 0
Else
If MouseX > #COLOR_SPECTRUM_SIZE_MAX
MouseX = #COLOR_SPECTRUM_SIZE_MAX
EndIf
EndIf
If MouseY < 0
MouseY = 0
Else
If MouseY > #COLOR_SPECTRUM_SIZE_MAX
MouseY = #COLOR_SPECTRUM_SIZE_MAX
EndIf
EndIf
SetColorSpectrumHue(*ColorSpectrumA, MouseX)
SetColorSpectrumSaturation(*ColorSpectrumA, #COLOR_SPECTRUM_SIZE_MAX - MouseY)
ColorSpectrum_SpectrumRedraw(*ColorSpectrumA)
ColorSpectrum_LightnessRedraw(*ColorSpectrumA)
RefreshHSLColorOutput(*ColorSpectrumA)
RefreshRGBColorOutput(*ColorSpectrumA)
CatchSafeHSLRGB(*ColorSpectrumA)
EndIf
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur ColorSpectrum_LightnessCanvas_EventManager <<<<<
Procedure ColorSpectrum_LightnessCanvas_EventManager(*ColorSpectrumA.ColorSpectrum)
EventType = EventType()
If EventType = #PB_EventType_LeftButtonDown Or (EventType = #PB_EventType_MouseMove And GetGadgetAttribute(GetColorSpectrumLightnessCanvas(*ColorSpectrumA), #PB_Canvas_Buttons) & #PB_Canvas_LeftButton)
MouseY.l = GetGadgetAttribute(GetColorSpectrumLightnessCanvas(*ColorSpectrumA), #PB_Canvas_MouseY)
If MouseY < 0
MouseY = 0
Else
If MouseY > #COLOR_SPECTRUM_SIZE_MAX
MouseY = #COLOR_SPECTRUM_SIZE_MAX
EndIf
EndIf
SetColorSpectrumLightness(*ColorSpectrumA, #COLOR_SPECTRUM_SIZE_MAX - MouseY)
ColorSpectrum_LightnessRedraw(*ColorSpectrumA)
RefreshHSLColorOutput(*ColorSpectrumA)
RefreshRGBColorOutput(*ColorSpectrumA)
CatchSafeHSLRGB(*ColorSpectrumA)
EndIf
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur Hue Input Control <<<<<
Procedure ColorSpectrum_Input_Control(*ColorSpectrumA.ColorSpectrum, Target.b)
EventType = EventType()
If EventType = #PB_EventType_Change
SetColorSpectrumSafeHSLRGB(*ColorSpectrumA, Target, Val(GetGadgetText(GetColorSpectrumStringHandle(*ColorSpectrumA, Target))))
If GetColorSpectrumSafeHSLRGB(*ColorSpectrumA, Target) < 0
SetColorSpectrumSafeHSLRGB(*ColorSpectrumA, Target, 0)
EndIf
If GetColorSpectrumSafeHSLRGB(*ColorSpectrumA, Target) > 255
SetColorSpectrumSafeHSLRGB(*ColorSpectrumA, Target, 255)
EndIf
Select Target
Case #COLOR_SPECTRUM_TARGET_HUE, #COLOR_SPECTRUM_TARGET_LIGHTNESS, #COLOR_SPECTRUM_TARGET_SATURATION
SetColorSpectrumHSLRGB(*ColorSpectrumA, Target, GetColorSpectrumSafeHSLRGB(*ColorSpectrumA, Target))
Case #COLOR_SPECTRUM_TARGET_RED, #COLOR_SPECTRUM_TARGET_GREEN, #COLOR_SPECTRUM_TARGET_BLUE
SetColorSpectrumHSLRGB(*ColorSpectrumA, Target, GetColorSpectrumSafeHSLRGB(*ColorSpectrumA, Target))
SetColorRed(RGBColor.Color, GetColorSpectrumSafeRed(*ColorSpectrumA))
SetColorGreen(RGBColor, GetColorSpectrumSafeGreen(*ColorSpectrumA))
SetColorBlue(RGBColor, GetColorSpectrumSafeBlue(*ColorSpectrumA))
Convert_RGB_To_HSL(RGBColor, HSLColor.Color)
SetColorSpectrumHue(*ColorSpectrumA, GetColorHue(HSLColor))
SetColorSpectrumSaturation(*ColorSpectrumA, GetColorSaturation(HSLColor))
SetColorSpectrumLightness(*ColorSpectrumA, GetColorLightness(HSLColor))
EndSelect
ColorSpectrum_SpectrumRedraw(*ColorSpectrumA)
ColorSpectrum_LightnessRedraw(*ColorSpectrumA)
ElseIf EventType = #PB_EventType_LostFocus
SetGadgetText(GetColorSpectrumStringHandle(*ColorSpectrumA, Target), Str(GetColorSpectrumSafeHSLRGB(*ColorSpectrumA, Target)))
EndIf
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< L'opérateur ColorSpectrumRequester <<<<<
Procedure.l ColorSpectrumRequester(*ColorSpectrumA.ColorSpectrum, Color.l = -1)
SetColorSpectrumWindowHandle(*ColorSpectrumA, OpenWindow(#PB_Any, 0, 0, #COLOR_SPECTRUM_SIZE_MAX + 60, #COLOR_SPECTRUM_SIZE_MAX + 140, GetColorSpectrumText(*ColorSpectrumA, 06), #PB_Window_SystemMenu | #PB_Window_ScreenCentered))
If GetColorSpectrumWindowHandle(*ColorSpectrumA) <> #Null
SetColorSpectrumSpectrumCanvas(*ColorSpectrumA, CanvasGadget(#PB_Any, 5, 5, #COLOR_SPECTRUM_SIZE_MAX + 2, #COLOR_SPECTRUM_SIZE_MAX + 2))
SetColorSpectrumLightnessCanvas(*ColorSpectrumA, CanvasGadget(#PB_Any, 270, 5, 35, #COLOR_SPECTRUM_SIZE_MAX + 2))
SetColorSpectrumTextHandle(*ColorSpectrumA, 6, TextGadget(#PB_Any, 5, 270, 80, 84, "", #PB_Text_Border))
PosX = 5
PosY = 270
For Index = 0 To 2
SetColorSpectrumTextHandle(*ColorSpectrumA, Index, TextGadget(#PB_Any, 110, PosY, 70, 25, GetColorSpectrumText(*ColorSpectrumA, Index), #PB_Text_Right))
SetColorSpectrumStringHandle(*ColorSpectrumA, Index, StringGadget(#PB_Any, 185, PosY, 33, 25, ""))
SetColorSpectrumTextHandle(*ColorSpectrumA, Index + 3, TextGadget(#PB_Any, 225, PosY, 40, 25, GetColorSpectrumText(*ColorSpectrumA, Index + 3), #PB_Text_Right))
SetColorSpectrumStringHandle(*ColorSpectrumA, Index + 3, StringGadget(#PB_Any, 275, PosY, 33, 25, ""))
SetColorSpectrumButtonHandle(*ColorSpectrumA, Index, ButtonGadget(#PB_Any, PosX, 360, 98, 30, GetColorSpectrumText(*ColorSpectrumA, Index + 7)))
PosX + 103
PosY + 30
Next
GenerateColorSpectrumBackgroundLayer(*ColorSpectrumA)
ForceColorSpectrumStartColor(*ColorSpectrumA, Color)
CatchSafeHSLRGB(*ColorSpectrumA)
ColorSpectrum_SpectrumRedraw(*ColorSpectrumA)
ColorSpectrum_LightnessRedraw(*ColorSpectrumA)
ReturnSelectedColor.l = -1
Repeat
EventID = WaitWindowEvent(20)
Select EventID
Case #PB_Event_Gadget
Select EventGadget()
Case GetColorSpectrumSpectrumCanvas(*ColorSpectrumA)
ColorSpectrum_SpectrumCanvas_EventManager(*ColorSpectrumA)
Case GetColorSpectrumLightnessCanvas(*ColorSpectrumA)
ColorSpectrum_LightnessCanvas_EventManager(*ColorSpectrumA)
Case GetColorSpectrumStringHandle(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_HUE)
ColorSpectrum_Input_Control(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_HUE)
Case GetColorSpectrumStringHandle(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_LIGHTNESS)
ColorSpectrum_Input_Control(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_LIGHTNESS)
Case GetColorSpectrumStringHandle(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_SATURATION)
ColorSpectrum_Input_Control(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_SATURATION)
Case GetColorSpectrumStringHandle(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_RED)
ColorSpectrum_Input_Control(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_RED)
Case GetColorSpectrumStringHandle(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_GREEN)
ColorSpectrum_Input_Control(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_GREEN)
Case GetColorSpectrumStringHandle(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_BLUE)
ColorSpectrum_Input_Control(*ColorSpectrumA, #COLOR_SPECTRUM_TARGET_BLUE)
Case GetColorSpectrumButtonHandle(*ColorSpectrumA, 0)
RefeshColorSpectrum(*ColorSpectrumA)
Case GetColorSpectrumButtonHandle(*ColorSpectrumA, 1)
ReturnSelectedColor = ColorSpectrum_RGB(*ColorSpectrumA)
EventID = #PB_Event_CloseWindow
Case GetColorSpectrumButtonHandle(*ColorSpectrumA, 2)
EventID = #PB_Event_CloseWindow
EndSelect
EndSelect
Until EventID = #PB_Event_CloseWindow
FreeColorSpectrumGadget(*ColorSpectrumA)
CloseWindow(GetColorSpectrumWindowHandle(*ColorSpectrumA))
EndIf
ProcedureReturn ReturnSelectedColor
EndProcedure
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< !!! WARNING - YOU ARE NOW IN A TESTING ZONE - WARNING !!! <<<<<
; <<<<< !!! WARNING - THIS CODE SHOULD BE COMMENTED - WARNING !!! <<<<<
; <<<<< !!! WARNING - BEFORE THE FINAL COMPILATION. - WARNING !!! <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
InitializeColorSpectrum(ColorSpectrum.ColorSpectrum)
Color.l = ColorSpectrumRequester(ColorSpectrum, RGB(31, 196, 243))
If Color <> -1
Debug "RGB(" + Str(Red(Color)) + ", " + Str(Green(Color)) + ", " + Str(Blue(Color)) + ")"
Else
Debug "L'utilisateur à annuler la sélection de la couleur"
EndIf
ResetColorSpectrum(ColorSpectrum)
; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<
Re: Routine Spectre des couleurs Style Windows
Bonjour,
J'ai aussi mis a jour mon code et la capture au premier message du topic
. j'ai aussi mis une fleche pour que tout le monde soit content 
Cordialement,
GallyHC
J'ai aussi mis a jour mon code et la capture au premier message du topic


Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
Re: Routine Spectre des couleurs Style Windows
Après le style, c'est une question de gout, mais le sélecteur de couleur de Windows me sort par les yeux dans tous les cas
En parlant de ça, il faudrait que je mette des canvasgadget dans le mien, cela me retirerait de l'API windows.
J'ai jamais utilisé le canvasgadget encore, faut que j'essaie la bête.
mon sélecteur de couleur, moi, c'est une sorte de plagia de celui de photoshop

Édition :
Pfiou, quel bourrin, je ne peut pas utiliser de canvasgadget, j'avais fait un truc tellement barbare que ce serait plus compliqué de mettre des canvasgadgets
sérieux, des fois, je me demande comment j'ai réussi à pondre un truc pareil.
J'utilise le dessin direct sur la fenêtre et je dessine l'ensemble de l'affichage d'un coup, bref, si j'utilise le canvasgadget, je vais être obligé d'éclater mon dessin monobloc en plusieurs parties et j'ai pas envie

En parlant de ça, il faudrait que je mette des canvasgadget dans le mien, cela me retirerait de l'API windows.
J'ai jamais utilisé le canvasgadget encore, faut que j'essaie la bête.
mon sélecteur de couleur, moi, c'est une sorte de plagia de celui de photoshop

Édition :
Pfiou, quel bourrin, je ne peut pas utiliser de canvasgadget, j'avais fait un truc tellement barbare que ce serait plus compliqué de mettre des canvasgadgets

J'utilise le dessin direct sur la fenêtre et je dessine l'ensemble de l'affichage d'un coup, bref, si j'utilise le canvasgadget, je vais être obligé d'éclater mon dessin monobloc en plusieurs parties et j'ai pas envie

Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Re: Routine Spectre des couleurs Style Windows
que j'utilise dans EPBLe Soldat Inconnu a écrit : mon sélecteur de couleur,
/

Re: Routine Spectre des couleurs Style Windows
C'est vraiment dommage que tu utilise l'API windows uniquement, ça empêche la portabilité. Mais une chose est sûr, ton sélecteur de couleur est vraiment "Eyes Candy".Le Soldat Inconnu a écrit :Pfiou, quel bourrin, je ne peut pas utiliser de canvasgadget, j'avais fait un truc tellement barbare que ce serait plus compliqué de mettre des canvasgadgetssérieux, des fois, je me demande comment j'ai réussi à pondre un truc pareil. J'utilise le dessin direct sur la fenêtre et je dessine l'ensemble de l'affichage d'un coup, bref, si j'utilise le canvasgadget, je vais être obligé d'éclater mon dessin monobloc en plusieurs parties et j'ai pas envie
L'avantage d'utiliser les CanvasGadget() est que le code compile pour Windows et pour Linux. Bien entendu l'aspect des gadgets change en fonction de l'OS mais ça reste portable.
Voici ce que ça donne sous LinuxMint 12 x64 + Gnome-Shell :

Et sous Windows (Image de GallyHC, version différente sans les boutons de contrôle)

A+
Guimauve
Re: Routine Spectre des couleurs Style Windows
Juste pour visualiser ça sera suffisantGuimauve a écrit :Juste pour visualiser ou pour entrer une valeur en Hexadécimal ?Ar-S a écrit :Merci guimauve.
Pour qu'il soit parfait, l'ajout de la valeur hex serait pratique (comme dans photoshop)
A+
Guimauve

Entrer une valeur en Hexadécimal est un plus mais pour ma part non obligatoire.
~~~~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