Code : Tout sélectionner
;- TOP
;.-------------------------------------------------------------------------------------------------
;|
;| Titre : Outil de dégradé de couleurs pour PureBasic
;| Version : v1.0
;| Auteur : Mesa
;| Copyright :
;|
;| PureBasic : 5.70+ 6.00+
;|
;| OS : Windows (XP to W11+), Linux?, MacOS?
;| Processeur : x86, x64
;|
;| API : Pas d'api
;|
;|-------------------------------------------------------------------------------------------------
;|
;| Description : Un petit outil pour créer et comprendre le fonctionnement des dégradés de couleurs dans PureBasic.
;|
;| Forum : https://www.purebasic.fr/french/viewtopic.php?t=
;| https://www.purebasic.fr/english/viewtopic.php?t=
;| Website :
;|
;| Documentation :
;|
;| Date : 03/2023
;|
;| Divers : Les dégradés personnalisés (Custom gradients) ne sont pas implémentés
;|
;| Dialog par Design0R
;|
;.-------------------------------------------------------------------------------------------------
;.-------------------------------------------------------------------------------------------------
;|
;| Comment : 1) Choisir la couleur de fond, ce qui peut changer le résultat en fonction de l'opacité des couleurs du dégradé
;| : 2) Définir les frontières du dégradé à l'aide des trackbars
;| : 3) Choisir le type de dégradé à l'aide des options
;| : 4) Ajouter les couleurs du gradient à l'aide du clic gauche sur les cases colorées
;| : Le clic droit permet d'enlever une couleur
;| : 5) Ajuster l'opacité avec le trackbar sous les cases alpha
;| : Le clic gauche sélectionne la bonne case alpha
;| : Le clic droit réinitialise le canal alpha
;| : 6) Vous pouvez copier dans le presse-papiers, enregistrer l'extrait de code sur le disque et quitter
;|
;.-------------------------------------------------------------------------------------------------
;.-------------------------------------------------------------------------------------------------
;|
;| License Mesa.
;| La licence Mesa est, faites ce que vous aimez mais rendez le monde meilleur, plus facile et plus agréable.
;|
;|
;|
;| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
;| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
;| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
;| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
;| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
;| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
;| SOFTWARE.
;|
;.-------------------------------------------------------------------------------------------------
EnableExplicit
;Dialog
#DD_WindowCount = 1
Dim DD_WindowNames.s(#DD_WindowCount)
DD_WindowNames(1) = "gradient"
;- Constantes
#Dialog = 1
#DD_GADGET_image_0 = "image_0"
#DD_GADGET_image_1 = "image_1"
#DD_GADGET_cimage_0 = "cimage_0"
#DD_GADGET_cimage_1 = "cimage_1"
#DD_GADGET_cimage_2 = "cimage_2"
#DD_GADGET_cimage_3 = "cimage_3"
#DD_GADGET_cimage_4 = "cimage_4"
#DD_GADGET_cimage_5 = "cimage_5"
#DD_GADGET_cimage_6 = "cimage_6"
#DD_GADGET_cimage_7 = "cimage_7"
#DD_GADGET_cimage_8 = "cimage_8"
#DD_GADGET_cimage_9 = "cimage_9"
#DD_GADGET_cimage_10 = "cimage_10"
#DD_GADGET_aimage_0 = "aimage_0"
#DD_GADGET_aimage_1 = "aimage_1"
#DD_GADGET_aimage_2 = "aimage_2"
#DD_GADGET_aimage_3 = "aimage_3"
#DD_GADGET_aimage_4 = "aimage_4"
#DD_GADGET_aimage_5 = "aimage_5"
#DD_GADGET_aimage_6 = "aimage_6"
#DD_GADGET_aimage_7 = "aimage_7"
#DD_GADGET_aimage_8 = "aimage_8"
#DD_GADGET_aimage_9 = "aimage_9"
#DD_GADGET_aimage_10 = "aimage_10"
#DD_GADGET_trackbar_a = "trackbar_a"
#DD_GADGET_button_Copy = "button_Copy"
#DD_GADGET_button_Save = "button_Save"
#DD_GADGET_button_Quit = "button_Quit"
#DD_GADGET_frame_1 = "frame_1"
#DD_GADGET_Txt_backgrd = "Txt_backgrd"
#DD_GADGET_buttonimage_backgrd = "buttonimage_backgrd"
#DD_GADGET_frame_2 = "frame_2"
#DD_GADGET_trackbar_1 = "trackbar_1"
#DD_GADGET_trackbar_2 = "trackbar_2"
#DD_GADGET_trackbar_3 = "trackbar_3"
#DD_GADGET_trackbar_4 = "trackbar_4"
#DD_GADGET_frame_4 = "frame_4"
#DD_GADGET_option_1 = "option_1"
#DD_GADGET_option_2 = "option_2"
#DD_GADGET_option_3 = "option_3"
#DD_GADGET_option_4 = "option_4"
#DD_GADGET_option_5 = "option_5"
#DD_GADGET_frame_3 = "frame_3"
#DD_GADGET_editor_snippet = "editor_snippet"
;- Globals
Global w, h,w2, w4, h2, x1, y1, x2, y2
Global color00
Global color10
Global Dim imggdt(10)
Global Dim btngdt(10)
Structure grd
used.i
colour.i
alpha.i
EndStructure
Global Dim clgrad.grd(10)
Global current_alpha_gdt
Global colorBckgrd
Global imgbt_size
Global CountSnippets
Global CurrentSnippetgdt
;- Macro: Obtenir l'identifiant d'un gadget dans un Dialog
Macro id(gadget)
DialogGadget(#Dialog, gadget)
EndMacro
;- Procedures
;Créer l'extrait de code
Procedure GetSnippet()
Protected i
Protected level.f
Protected GradientColor$, cl$, type$
ClearGadgetItems(id(#DD_GADGET_editor_snippet))
AddGadgetItem(CurrentSnippetgdt, -1,"StartDrawing(...)")
AddGadgetItem(CurrentSnippetgdt, -1,"DrawingMode(#PB_2DDrawing_AllChannels)")
AddGadgetItem(CurrentSnippetgdt, -1,"Box(0, 0, ..., ..., "+"$"+Hex(colorBckgrd,#PB_Long)+")" )
AddGadgetItem(CurrentSnippetgdt, -1,"DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Gradient)")
AddGadgetItem(CurrentSnippetgdt, -1,"ResetGradientColors()")
For i=0 To 10
level=i/10
If clgrad(i)\used=1
GradientColor$="GradientColor("+StrF(level,1)+", "
cl$="$"+Hex(clgrad(i)\colour,#PB_Long)
AddGadgetItem(CurrentSnippetgdt, -1,GradientColor$+cl$+")")
EndIf
Next i
If GetGadgetState(id(#DD_GADGET_option_5))
type$="LinearGradient("+Str(x1)+","+Str(y1)+","+Str(x2)+","+Str(y2)+")"
ElseIf GetGadgetState(id(#DD_GADGET_option_1))
type$="BoxedGradient("+Str(x1)+","+Str(y1)+","+Str(x2)+","+Str(y2)+")"
ElseIf GetGadgetState(id(#DD_GADGET_option_2))
type$="CircularGradient("+Str(x1)+","+Str(y1)+","+Str(x2)+")"
ElseIf GetGadgetState(id(#DD_GADGET_option_3))
type$="ConicalGradient("+Str(x1)+","+Str(y1)+","+Str(x2)+")"
ElseIf GetGadgetState(id(#DD_GADGET_option_4))
type$="EllipticalGradient("+Str(x1)+","+Str(y1)+","+Str(x2)+","+Str(y2)+")"
EndIf
AddGadgetItem(CurrentSnippetgdt, -1,type$)
AddGadgetItem(CurrentSnippetgdt, -1,"Box(...)")
AddGadgetItem(CurrentSnippetgdt, -1,"StopDrawing()")
EndProcedure
;Dessine le dégradé et affiche l'extrait de code
Procedure DrawMe()
Protected i
Protected level.f
SetWindowTitle(DialogWindow(#Dialog)," ("+Str(x1)+","+Str(y1)+")"+" ("+Str(x2)+","+Str(y2)+")")
StartDrawing(ImageOutput(10))
DrawingMode(#PB_2DDrawing_AllChannels)
Box(0, 0, w, h, colorBckgrd)
DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Gradient)
ResetGradientColors()
For i=0 To 10
level=i/10
If clgrad(i)\used=1
GradientColor(level, clgrad(i)\colour)
EndIf
Next i
BackColor(clgrad(10)\colour)
FrontColor(clgrad(0)\colour)
If GetGadgetState(id(#DD_GADGET_option_5))
LinearGradient(x1, y1, x2, y2)
ElseIf GetGadgetState(id(#DD_GADGET_option_1))
BoxedGradient(x1, y1, x2, y2)
ElseIf GetGadgetState(id(#DD_GADGET_option_2))
CircularGradient(x1, y1, x2)
ElseIf GetGadgetState(id(#DD_GADGET_option_3))
ConicalGradient(x1, y1, x2)
ElseIf GetGadgetState(id(#DD_GADGET_option_4))
EllipticalGradient(x1, y1, x2, y2)
EndIf
Circle(w4, h2, w4)
Box(w2, 0, w2,h)
DrawingMode(#PB_2DDrawing_Default)
Circle(x1,y1,3,#Red)
Circle(x2,y2,3,#Green)
StopDrawing()
SetGadgetState(id(#DD_GADGET_image_0), ImageID(10))
;Second
StartDrawing(ImageOutput(11))
DrawingMode(#PB_2DDrawing_AllChannels)
Box(0, 0, w, h, colorBckgrd)
DrawingMode(#PB_2DDrawing_AlphaBlend|#PB_2DDrawing_Gradient)
ResetGradientColors()
For i=0 To 10
level=i/10
If clgrad(i)\used=1
GradientColor(level, clgrad(i)\colour)
EndIf
Next i
BackColor(clgrad(10)\colour)
FrontColor(clgrad(0)\colour)
If GetGadgetState(id(#DD_GADGET_option_5))
LinearGradient(x1, y1, x2, y2)
ElseIf GetGadgetState(id(#DD_GADGET_option_1))
BoxedGradient(x1, y1, x2, y2)
ElseIf GetGadgetState(id(#DD_GADGET_option_2))
CircularGradient(x1, y1, x2)
ElseIf GetGadgetState(id(#DD_GADGET_option_3))
ConicalGradient(x1, y1, x2)
ElseIf GetGadgetState(id(#DD_GADGET_option_4))
EllipticalGradient(x1, y1, x2, y2)
EndIf
Box(0, 0, w2,h)
Box(w2, 0, w2,h)
DrawingMode(#PB_2DDrawing_Default)
Circle(x1,y1,3,#Red)
Circle(x2,y2,3,#Green)
StopDrawing()
SetGadgetState(id(#DD_GADGET_image_1), ImageID(11))
GetSnippet()
EndProcedure
;Dessine les boîtes de couleur et alpha
Procedure DrawButton(gadget,alpha=0)
Protected colour, z, img, clbkg
Protected txt$
Select alpha
Case 0
colour=clgrad(gadget)\colour
z=CreateImage(#PB_Any,imgbt_size,imgbt_size)
StartDrawing(ImageOutput(z))
DrawingMode(#PB_2DDrawing_Default)
Select gadget
Case 0
txt$="0.0"
Case 10
txt$="1.0"
Default
txt$="0."+Str(gadget)
EndSelect
Box(0,0,imgbt_size,imgbt_size,Colour)
DrawText(16-TextWidth("0.0")/2,16-TextHeight("0")/2,txt$,#Black,Colour)
StopDrawing()
SetGadgetState(imggdt(gadget), ImageID(z))
SetGadgetState(id(#DD_GADGET_trackbar_a),clgrad(gadget)\alpha)
Case 1
img=CreateImage(#PB_Any,imgbt_size,imgbt_size)
StartDrawing(ImageOutput(img))
txt$=Str(clgrad(gadget)\alpha)
If clgrad(gadget)\used=1
clbkg=#White
Else
clbkg=#Gray
EndIf
Box(0,0,imgbt_size,imgbt_size,clbkg)
DrawText(16-TextWidth("255")/2,16-TextHeight("255")/2,txt$,#Black,clbkg)
StopDrawing()
SetGadgetState(btngdt(gadget),ImageID(img))
SetGadgetState(id(#DD_GADGET_trackbar_a),clgrad(gadget)\alpha)
EndSelect
EndProcedure
;Créer un dégradé avec alpha
Procedure MakeGradient(gadget, alpha=0)
Protected Colour.q
Protected level.f
level=gadget/10
If alpha =1
Colour = clgrad(gadget)\colour
Else
Colour = ColorRequester()
If Colour > -1
clgrad(gadget)\used=1
Else
Colour=clgrad(gadget)\colour
EndIf
EndIf
Colour=RGBA(Red(colour),Green(colour),Blue(colour),clgrad(gadget)\alpha)
clgrad(gadget)\colour=colour
DrawButton(gadget)
DrawButton(gadget,1)
EndProcedure
;Réinitialise le dégradé et l'alpha
Procedure Reset(gadget)
Protected z, clbkg
Protected txt$
z=CreateImage(#PB_Any,imgbt_size,imgbt_size)
StartDrawing(ImageOutput(z))
DrawingMode(#PB_2DDrawing_Default)
Select gadget
Case 0
clbkg=color00
clgrad(gadget)\used=1
clgrad(gadget)\colour=color00
txt$="0.0"
Box(0,0,imgbt_size,imgbt_size,clbkg)
Case 10
clbkg=color10
clgrad(gadget)\used=1
clgrad(gadget)\colour=color10
Box(0,0,imgbt_size,imgbt_size,clbkg)
txt$="1.0"
Default
clgrad(gadget)\used=0
clgrad(gadget)\colour=#Gray
clbkg=#Gray
Box(0,0,imgbt_size,imgbt_size,clbkg)
txt$="0."+Str(gadget)
EndSelect
DrawText(16-TextWidth("0.0")/2,16-TextHeight("0")/2,txt$,#Black,clbkg)
StopDrawing()
clgrad(gadget)\alpha=255
SetGadgetState(imggdt(gadget), ImageID(z))
DrawButton(gadget,1)
current_alpha_gdt=0
SetGadgetState(id(#DD_GADGET_trackbar_a),clgrad(0)\alpha)
EndProcedure
;Dialog XML
Procedure.s GetXMLString()
Protected XML$
XML$ + "<?xml version='1.0' encoding='UTF-16'?>"
XML$ + ""
XML$ + "<dialogs><!--Created by Dialog Design0R V1.83 => get it from: https://hex0rs.coderbu.de/en/sdm_downloads/dialogdesign0r/-->"
XML$ + " <window flags='#PB_Window_SystemMenu | #PB_Window_ScreenCentered' text='Dégradé de couleur' width='800' height='600' name='gradient' xpos='0' ypos='0'>"
XML$ + " <hbox expand='item:2'>"
XML$ + " <vbox text='left' width='400' expand='item:4'>"
XML$ + " <vbox expand='no' align='' width='400'>"
XML$ + " <image width='400' height='200' name='image_0'/>"
XML$ + " <image width='400' height='200' name='image_1'/>"
XML$ + " </vbox>"
XML$ + " <frame text='Couleurs'>"
XML$ + " <hbox align='' expand='no'>"
XML$ + " <image width='32' height='32' flags='#PB_Image_Border' name='cimage_0'/>"
XML$ + " <image flags='#PB_Image_Border' width='32' height='32' name='cimage_1'/>"
XML$ + " <image flags='#PB_Image_Border' width='32' height='32' name='cimage_2'/>"
XML$ + " <image flags='#PB_Image_Border' width='32' height='32' name='cimage_3'/>"
XML$ + " <image flags='#PB_Image_Border' width='32' height='32' name='cimage_4'/>"
XML$ + " <image flags='#PB_Image_Border' width='32' height='32' name='cimage_5'/>"
XML$ + " <image flags='#PB_Image_Border' width='32' height='32' name='cimage_6'/>"
XML$ + " <image flags='#PB_Image_Border' width='32' height='32' name='cimage_7'/>"
XML$ + " <image flags='#PB_Image_Border' width='32' height='32' name='cimage_8'/>"
XML$ + " <image flags='#PB_Image_Border' width='32' height='32' name='cimage_9'/>"
XML$ + " <image flags='#PB_Image_Border' width='32' height='32' name='cimage_10'/> "
XML$ + " </hbox> "
XML$ + " </frame>"
XML$ + " <frame text='Alpha'>"
XML$ + " <vbox>"
XML$ + " <hbox>"
XML$ + " <image width='32' height='32' flags='#PB_Image_Border' name='aimage_0'/>"
XML$ + " <image flags='#PB_Image_Border' width='32' height='32' name='aimage_1'/>"
XML$ + " <image flags='#PB_Image_Border' width='32' height='32' name='aimage_2'/>"
XML$ + " <image flags='#PB_Image_Border' width='32' height='32' name='aimage_3'/>"
XML$ + " <image flags='#PB_Image_Border' width='32' height='32' name='aimage_4'/>"
XML$ + " <image flags='#PB_Image_Border' width='32' height='32' name='aimage_5'/>"
XML$ + " <image flags='#PB_Image_Border' width='32' height='32' name='aimage_6'/>"
XML$ + " <image flags='#PB_Image_Border' width='32' height='32' name='aimage_7'/>"
XML$ + " <image flags='#PB_Image_Border' width='32' height='32' name='aimage_8'/>"
XML$ + " <image flags='#PB_Image_Border' width='32' height='32' name='aimage_9'/>"
XML$ + " <image flags='#PB_Image_Border' width='32' height='32' name='aimage_10'/>"
XML$ + " </hbox>"
XML$ + " <trackbar height='30' flags='#PB_TrackBar_Ticks' min='0' max='255' value='255' name='trackbar_a'/> "
XML$ + " </vbox> "
XML$ + " </frame>"
XML$ + " <hbox>"
XML$ + " <button text='Copier' name='button_Copy'/>"
XML$ + " <button text='Sauvegarder' name='button_Save'/>"
XML$ + " <button text='Quitter' name='button_Quit'/>"
XML$ + " </hbox> "
XML$ + " </vbox>"
XML$ + " <vbox text='right' expand='item:3'>"
XML$ + " <frame text='Couleur de fond' name='frame_1'>"
XML$ + " <hbox expand='item:1'>"
XML$ + " <text text='Changer la couleur de fond :' name='Txt_backgrd'/>"
XML$ + " <buttonimage name='buttonimage_backgrd'/>"
XML$ + " </hbox> "
XML$ + " </frame>"
XML$ + " <frame text='Frontière du dégradé' name='frame_2'>"
XML$ + " <vbox align='' expand='no'>"
XML$ + " <trackbar flags='#PB_TrackBar_Ticks' height='30' min='0' max='800' value='0' name='trackbar_1'/>"
XML$ + " <trackbar height='30' flags='#PB_TrackBar_Ticks' min='0' max='800' value='0' name='trackbar_2'/>"
XML$ + " <trackbar height='30' flags='#PB_TrackBar_Ticks' min='0' max='800' value='200' name='trackbar_3'/>"
XML$ + " <trackbar height='30' flags='#PB_TrackBar_Ticks' min='0' max='800' value='200' name='trackbar_4'/>"
XML$ + " </vbox> "
XML$ + " </frame>"
XML$ + " <frame text='Types' name='frame_4'>"
XML$ + " <vbox>"
XML$ + " <option text='Dégradé Carré (x1, y1, x2, y2)' name='option_1'/>"
XML$ + " <option text='Dégradé Circulaire (x1, y1, x2=Radius, y2=null)' name='option_2'/>"
XML$ + " <option text='Dégradé Conique (x1, y1, x2=Angle, y2=null)' name='option_3'/>"
XML$ + " <option text='Dégradé Elliptique (x1, y1, x2=Rx, y2=Ry)' name='option_4'/>"
XML$ + " <option text='Dégradé Linéaire (x1, y1, x2, y2)' name='option_5'/> "
XML$ + " </vbox> "
XML$ + " </frame>"
XML$ + " <frame text='Extrait de code' name='frame_3'>"
XML$ + " <vbox expand='item:2'>"
XML$ + " <editor height='200' name='editor_snippet'/> "
XML$ + " </vbox> "
XML$ + " </frame> "
XML$ + " </vbox> "
XML$ + " </hbox> "
XML$ + " </window>"
XML$ + "</dialogs><!--DDesign0R Definition: PureBasic|1|1|1|____|example_with_declares|0-->"
ProcedureReturn XML$
EndProcedure
;Initialise les gadgets et divers
Procedure Init()
Protected i, img, clbkg
Protected txt$
;Image 1 et 2
w=400
h=200
w2=w/2
w4=w/4
h2=h/2
x1=0
y1=0
x2=200
y2=200
color00=$FF00FFFF
color10=$FFFF0000
clgrad(10)\used=1
clgrad(10)\colour=color10
clgrad(0)\used=1
clgrad(0)\colour=color00
colorBckgrd = $FFFFFFFF
imgbt_size = 32
If CreateImage(10, 400, 200) And StartDrawing(ImageOutput(10))
Box(0, 0, 400, 200, $FFFFFF)
DrawingMode(#PB_2DDrawing_Gradient)
BackColor(color00)
FrontColor(color10)
LinearGradient(0, 0, 200, 200)
Circle(100, 100, 100)
LinearGradient(350, 100, 250, 100)
; Circle(300, 100, 100)
Box(200, 0, 200,200)
StopDrawing()
SetGadgetState(id(#DD_GADGET_image_0), ImageID(10))
EndIf
If CreateImage(11, 400, 200) And StartDrawing(ImageOutput(11))
Box(0, 0, 400, 200, $FFFFFF)
DrawingMode(#PB_2DDrawing_Gradient)
BackColor(color00)
FrontColor(color10)
LinearGradient(0, 0, 200, 200)
Box(0, 0, 200,200)
LinearGradient(x1, y1, x2, y2)
Box(200, 0, 200,200)
StopDrawing()
SetGadgetState(id(#DD_GADGET_image_1),ImageID(11))
EndIf
;Bouton couleur de fond
If CreateImage(0, 32, 32) And StartDrawing(ImageOutput(0))
DrawingMode(#PB_2DDrawing_Default)
Box(0, 0, 32, 32, colorBckgrd)
StopDrawing()
SetGadgetAttribute(id(#DD_GADGET_buttonimage_backgrd), #PB_Button_Image, ImageID(0))
EndIf
;Options
SetGadgetState(id(#DD_GADGET_option_5), 1)
;Couleurs et alpha
imggdt(0) = id(#DD_GADGET_cimage_0)
imggdt(1) = id(#DD_GADGET_cimage_1)
imggdt(2) = id(#DD_GADGET_cimage_2)
imggdt(3) = id(#DD_GADGET_cimage_3)
imggdt(4) = id(#DD_GADGET_cimage_4)
imggdt(5) = id(#DD_GADGET_cimage_5)
imggdt(6) = id(#DD_GADGET_cimage_6)
imggdt(7) = id(#DD_GADGET_cimage_7)
imggdt(8) = id(#DD_GADGET_cimage_8)
imggdt(9) = id(#DD_GADGET_cimage_9)
imggdt(10) = id(#DD_GADGET_cimage_10)
For i= 0 To 10
img=CreateImage(#PB_Any,imgbt_size,imgbt_size)
StartDrawing(ImageOutput(img))
Select i
Case 0
clbkg=color00
clgrad(00)\colour=color00
clgrad(00)\alpha=255
txt$="0.0"
Box(0,0,imgbt_size,imgbt_size,clbkg)
Case 10
clbkg=color10
clgrad(10)\colour=color10
clgrad(10)\alpha=255
txt$="1.0"
Box(0,0,imgbt_size,imgbt_size,clbkg)
Default
clbkg=#Gray
clgrad(i)\colour=#Gray
clgrad(i)\alpha=255
txt$="0."+Str(i)
Box(0,0,imgbt_size,imgbt_size,clbkg)
EndSelect
DrawText(16-TextWidth("0.0")/2,16-TextHeight("0")/2,txt$,#Black,clbkg)
StopDrawing()
SetGadgetState(imggdt(i),ImageID(img))
SetGadgetData(imggdt(i),i)
Next i
btngdt(0) = id(#DD_GADGET_aimage_0)
btngdt(1) = id(#DD_GADGET_aimage_1)
btngdt(2) = id(#DD_GADGET_aimage_2)
btngdt(3) = id(#DD_GADGET_aimage_3)
btngdt(4) = id(#DD_GADGET_aimage_4)
btngdt(5) = id(#DD_GADGET_aimage_5)
btngdt(6) = id(#DD_GADGET_aimage_6)
btngdt(7) = id(#DD_GADGET_aimage_7)
btngdt(8) = id(#DD_GADGET_aimage_8)
btngdt(9) = id(#DD_GADGET_aimage_9)
btngdt(10) = id(#DD_GADGET_aimage_10)
For i= 0 To 10
img=CreateImage(#PB_Any,imgbt_size,imgbt_size)
StartDrawing(ImageOutput(img))
Select i
Case 0
clbkg=#White
txt$="255"
Box(0,0,imgbt_size,imgbt_size,clbkg)
Case 10
clbkg=#White
txt$="255"
Box(0,0,imgbt_size,imgbt_size,clbkg)
Default
clbkg=#Gray
Box(0,0,imgbt_size,imgbt_size,clbkg)
txt$="255"
EndSelect
DrawText(16-TextWidth("255")/2,16-TextHeight("255")/2,txt$,#Black,clbkg)
StopDrawing()
SetGadgetState(btngdt(i),ImageID(img))
SetGadgetData(btngdt(i),i)
Next i
;Extrait de code
CurrentSnippetgdt=id(#DD_GADGET_editor_snippet)
GetSnippet()
EndProcedure
;- Entré
CompilerIf #PB_Compiler_IsMainFile
Define i, R, ok, Event, Gadget, z, a1, img, clbkg, number, copy, Result
Define txt$, File$
Define a$ = GetXMLString()
If ParseXML(0, a$) And XMLStatus(0) = #PB_XML_Success
For i = 1 To #DD_WindowCount
CreateDialog(i)
R = OpenXMLDialog(i, 0, DD_WindowNames(i))
If R
ok = #True
Else
Debug DialogError(i)
EndIf
Next i
If ok
;Initialise les gadgets et divers
Init()
;- Boucle
Repeat
Event = WaitWindowEvent()
Gadget = EventGadget()
Select Event
Case #PB_Event_Gadget
Select Gadget
;Bouton couleur de fond
Case id(#DD_GADGET_buttonimage_backgrd)
colorBckgrd = ColorRequester()
If colorBckgrd > -1
z=CreateImage(#PB_Any,imgbt_size,imgbt_size)
StartDrawing(ImageOutput(z))
DrawingMode(#PB_2DDrawing_Default)
Box(0,0,imgbt_size,imgbt_size,colorBckgrd)
StopDrawing()
SetGadgetAttribute(id(#DD_GADGET_buttonimage_backgrd), #PB_Button_Image, ImageID(z))
colorBckgrd=RGBA(Red(colorBckgrd),Green(colorBckgrd),Blue(colorBckgrd),$FF)
DrawMe()
EndIf
;Trackbars
Case id(#DD_GADGET_trackbar_1)
x1= GetGadgetState(id(#DD_GADGET_trackbar_1) )
DrawMe()
Case id(#DD_GADGET_trackbar_2)
y1= GetGadgetState(id(#DD_GADGET_trackbar_2))
DrawMe()
Case id(#DD_GADGET_trackbar_3)
x2= GetGadgetState(id(#DD_GADGET_trackbar_3))
DrawMe()
Case id(#DD_GADGET_trackbar_4)
y2= GetGadgetState(id(#DD_GADGET_trackbar_4))
DrawMe()
;Trackbars alpha
Case id(#DD_GADGET_trackbar_a)
a1= GetGadgetState(id(#DD_GADGET_trackbar_a))
img=CreateImage(#PB_Any,imgbt_size,imgbt_size)
StartDrawing(ImageOutput(img))
clbkg=#White
txt$=Str(a1)
Box(0,0,imgbt_size,imgbt_size,clbkg)
DrawText(16-TextWidth("255")/2,16-TextHeight("255")/2,txt$,#Black,clbkg)
StopDrawing()
SetGadgetState(btngdt(current_alpha_gdt),ImageID(img))
clgrad(current_alpha_gdt)\alpha=a1
MakeGradient(current_alpha_gdt,1)
DrawMe()
;Options
Case id(#DD_GADGET_option_1), id(#DD_GADGET_option_2), id(#DD_GADGET_option_3), id(#DD_GADGET_option_4), id(#DD_GADGET_option_5)
DrawMe()
;Gradient images 0.0->1.0
Case imggdt(0),imggdt(1),imggdt(2),imggdt(3),imggdt(4),imggdt(5),
imggdt(6),imggdt(7),imggdt(8),imggdt(9),imggdt(10)
number=GetGadgetData(Gadget)
Select EventType()
Case #PB_EventType_LeftClick
current_alpha_gdt=number
MakeGradient(number)
DrawMe()
Case #PB_EventType_RightClick
Reset(number)
DrawMe()
EndSelect
;Alpha 0->255
Case btngdt(0), btngdt(1), btngdt(2), btngdt(3), btngdt(4), btngdt(5),
btngdt(6), btngdt(7), btngdt(8), btngdt(9), btngdt(10)
number=GetGadgetData(Gadget)
current_alpha_gdt=number
Select EventType()
Case #PB_EventType_LeftClick
DrawButton(number,1)
Case #PB_EventType_RightClick
Reset(number)
EndSelect
;Copier l'extrait dans le presse-papiers
Case id(#DD_GADGET_button_Copy)
ClearClipboard()
SetClipboardText(GetGadgetText(id(#DD_GADGET_editor_snippet)))
;Enregistrer l'extrait sur le disque
Case id(#DD_GADGET_button_Save)
copy=#False
File$ = SaveFileRequester("Save", "gradient.txt", "*.*", 0)
Debug File$
If File$
If FileSize(File$)>0
Debug File$
Debug FileSize(File$)
Result = MessageRequester("Attention","Overwrite ?",#PB_MessageRequester_YesNo |#PB_MessageRequester_Warning)
If Result = #PB_MessageRequester_Yes
copy=#True
Else
copy=#False
EndIf
Else
copy=#True
EndIf
Else
copy=#False
EndIf
If copy=#True
If CreateFile(0, File$)
WriteStringFormat(0, #PB_Unicode)
WriteStringN(0, GetGadgetText(id(#DD_GADGET_editor_snippet)),#PB_Unicode)
CloseFile(0)
EndIf
EndIf
;Quitter
Case id(#DD_GADGET_button_Quit)
End
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
Else
Debug XMLStatus(0)
Debug XMLError(0)
EndIf
CompilerEndIf