Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Outils couleurs | |
|
+3Jean Claude silverman Yannick 7 participants | |
Auteur | Message |
---|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Outils couleurs Sam 20 Mai 2017 - 18:16 | |
| | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Outils couleurs Sam 20 Mai 2017 - 19:01 | |
| Toujours aussi impitoyable ! Notre Papydall Mais bon, on doit faire avec notre nouvel œil de lynx. ATTENTION: Maintenant il a deux yeux. On va devoir être vigilants. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 20 Mai 2017 - 19:59 | |
| Bon, pour en revenir à nos moutons ( oui chez moi c' est la ferme ). Voilà l' outils intégré dans mon futur éditeur "Tout Panoramic" que j' ai nommé Basic Editor. Ouais, je sais mais je commence à être à cours de nom (PPE, PANEDIT, Simple Editor,....). Bref, en cliquant sur le bouton avec le petit crayon, la couleur sera insérée dans le code du source actif à l' emplacement du caret dans le format choisi (RGB,HTML,KGF). Le résultat est, en attendant que Jack nous permette d' insérer du texte par programme dans objet SYNEDIT, dans la fenêtre de message. D' où mes suggestions il y a quelques jours... Voilà, ce sera tout pour le moment... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Outils couleurs Sam 20 Mai 2017 - 20:56 | |
| - Citation :
- en attendant que Jack nous permette d' insérer du texte par programme dans objet SYNEDIT,
c'est indispensable ! Pour les noms d'éditeur: SimpleEditor, c’était bien ! j'espère que tu restes sur la même optique (la simplicité). A+ | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 20 Mai 2017 - 21:03 | |
| @ Jean Claude, PPE étaient au départ basé sur une orientation Projet et à ses tout début sur un RichEdit avec un algorithme maison pour la reconnaissance syntaxique. PANEDIT un embryon de...il n' a pas survécu... SimpleEditor Est avec une énorme partie de KGF.dll La Basic Editor est prévu pour être en tout Panoramic. J' espère seulement que son évolution ne sera pas trop lente. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Outils couleurs Sam 20 Mai 2017 - 21:56 | |
| Bien bien bien Yannick ! Je vois que tout cela se met en place progressivement... PS : Content de te retrouver parmi nous Papydall. C'est vrai qu'on commençait à s’inquiéter. Bonne lecture sur le forum avec tes 'nouveaux yeux'. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Outils couleurs Dim 21 Mai 2017 - 1:01 | |
| | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 21 Mai 2017 - 3:29 | |
| J' ai voulu ajouté une barre de luminosité mais je crois que j' ai un souci dans les conversions... Voilà le source : - Code source:
- Code:
-
dim no%,i% dim r%,g%,b% dim EtatStandByPalette% dim ColPerso%(16) dim FenPaletteCouleur% : no%=no%+1 : FenPaletteCouleur%=no% dim ContPalette% : no%=no%+1 : ContPalette%=no% dim PictPalWindows%(48): for i%=1 to 48 : no%=no%+1 : PictPalWindows%(i%)=no% : next i% dim AlphPalette%(2) : for i%=1 to 2 : no%=no%+1 : AlphPalette%(i%)=no% : next i% dim PictPalPerso%(16) : for i%=1 to 16 : no%=no%+1 : PictPalPerso%(i%)=no% : next i% dim PictPalette% : no%=no%+1 : PictPalette%=no% dim PictChxPalette% : no%=no%+1 : PictChxPalette%=no% dim SpnPalette%(3) : for i%=1 to 3 : no%=no%+1 : SpnPalette%(i%)=no% : next i% dim AlphPalConvert%(3) : for i%=1 to 3 : no%=no%+1 : AlphPalConvert%(i%)=no% : next i% dim PictTSVpalette% : no%=no%+1 : PictTSVpalette%=no%
label MouseMoveCadre label MouseMovePalette label ClicBtn label ClicPalWindows label ClicPalPerso label DClicPictChxPalette label DClicPalPerso label Change button 9999 top 9999,10 left 9999,10 caption 9999,"Outils couleurs" on_click 9999,ClicBtn end
sub FormPalette() dim_local i%,l%,t%,x%,y%,V$ if object_exists(FenPaletteCouleur%)=1 show FenPaletteCouleur% else create_hide form FenPaletteCouleur% border_small FenPaletteCouleur% height FenPaletteCouleur%,305 width FenPaletteCouleur%,450 top FenPaletteCouleur%,(screen_y-height(FenPaletteCouleur%))/2 left FenPaletteCouleur%,(screen_x-width(FenPaletteCouleur%))/2 caption FenPaletteCouleur%,"Outils couleurs" font_name FenPaletteCouleur%,"Arial" font_size FenPaletteCouleur%,8 font_color FenPaletteCouleur%,85,85,127 container ContPalette% parent ContPalette%,FenPaletteCouleur% height ContPalette%,height_client(FenPaletteCouleur%)-5 width ContPalette%,width_client(FenPaletteCouleur%)-10 top ContPalette%,0 left ContPalette%,5 on_mouse_move ContPalette%,MouseMoveCadre alpha AlphPalette%(1) parent AlphPalette%(1),ContPalette% top AlphPalette%(1),15 left AlphPalette%(1),5 caption AlphPalette%(1),"Couleurs Windows :" l%=5 for x%=1 to 8 t%=top(AlphPalette%(1))+height(AlphPalette%(1))+5 for y%=1 to 6 i%=i%+1 picture PictPalWindows%(i%) parent PictPalWindows%(i%),ContPalette% height PictPalWindows%(i%),20 width PictPalWindows%(i%),20 top PictPalWindows%(i%),t% left PictPalWindows%(i%),l% read V$ color PictPalWindows%(i%),hex(mid$(v$,1,2)),hex(mid$(v$,3,2)),hex(mid$(v$,5,2)) cursor_point PictPalWindows%(i%) on_click PictPalWindows%(i%),ClicPalWindows t%=t%+25 next y% l%=l%+25 next x% alpha AlphPalette%(2) parent AlphPalette%(2),ContPalette% top AlphPalette%(2),top(PictpalWindows%(48))+height(PictpalWindows%(48))+10 left AlphPalette%(2),5 caption AlphPalette%(2),"Couleurs Personnalisées :"
l%=5 i%=0 for x%=1 to 8 t%=top(AlphPalette%(2))+height(AlphPalette%(2))+5 for y%=1 to 2 i%=i%+1 picture PictPalPerso%(i%) parent PictPalPerso%(i%),ContPalette% height PictPalPerso%(i%),20 width PictPalPerso%(i%),20 top PictPalPerso%(i%),t% left PictPalPerso%(i%),l% color PictPalPerso%(i%),0,0,0 cursor_point PictPalPerso%(i%) hint PictPalPerso%(i%),"Clic pour sélectionner"+chr$(13)+"Double clic pour effacer" on_click PictPalPerso%(i%),ClicPalPerso on_double_click PictPalPerso%(i%),DClicPalPerso t%=t%+25 next y% l%=l%+25 next x%
picture PictPalette% parent PictPalette%,ContPalette% height PictPalette%,128 width PictPalette%,158 top PictPalette%,top(AlphPalette%(1))+height(AlphPalette%(1))+5 left PictPalette%,left(PictPalWindows%(48))+width(PictPalWindows%(48))+30 file_load PictPalette%,"palette.bmp" cursor_cross PictPalette% on_mouse_move PictPalette%,MouseMovePalette on_click PictPalette%,ClicBtn picture PictTSVpalette% parent PictTSVpalette%,ContPalette% height PictTSVpalette%,128 width PictTSVpalette%,15 top PictTSVpalette%,top(PictPalette%) left PictTSVpalette%,left(PictPalette%)+width(PictPalette%)+5 ColorPictTSVpalette(0,0,0) picture PictChxPalette% parent PictChxPalette%,ContPalette% height PictChxPalette%,22 width PictChxPalette%,22 top PictChxPalette%,top(PictPalette%)+height(PictPalette%)+5 left PictChxPalette%,left(PictPalette%) color PictChxPalette%,0,0,0 cursor_point PictChxPalette% hint PictChxPalette%,"Cliquer pour convertir"+chr$(13)+"Double clic pour sauvegarder dans les couleurs personnalisées" on_click PictChxPalette%,ClicBtn on_double_click PictChxPalette%,DClicPictChxPalette t%=top(PictChxPalette%) l%=left(PictChxPalette%)+width(PictChxPalette%)+5 for i%=1 to 3 spin SpnPalette%(i%) parent SpnPalette%(i%),ContPalette% width SpnPalette%(i%),45 top SpnPalette%(i%),t% left SpnPalette%(i%),l% l%=l%+width(SpnPalette%(i%))+5 font_color SpnPalette%(i%),255,255,255 min SpnPalette%(i%),0 max SpnPalette%(i%),255 next i% color SpnPalette%(1),255,0,0 color SpnPalette%(2),0,180,0 color SpnPalette%(3),0,0,255 alpha AlphPalConvert%(1) parent AlphPalConvert%(1),ContPalette% caption AlphPalConvert%(1),"RGB => " top AlphPalConvert%(1),top(SpnPalette%(1))+height(SpnPalette%(1))+10 left AlphPalConvert%(1),left(PictChxPalette%) alpha AlphPalConvert%(2) parent AlphPalConvert%(2),ContPalette% caption AlphPalConvert%(2),"HTML => " top AlphPalConvert%(2),top(AlphPalConvert%(1))+height(AlphPalConvert%(1))+5 left AlphPalConvert%(2),left(PictChxPalette%) alpha AlphPalConvert%(3) parent AlphPalConvert%(3),ContPalette% caption AlphPalConvert%(3),"KGF => " top AlphPalConvert%(3),top(AlphPalConvert%(2))+height(AlphPalConvert%(2))+5 left AlphPalConvert%(3),left(PictChxPalette%) create_show top FenPaletteCouleur%,(screen_y-height(FenPaletteCouleur%))/2 left FenPaletteCouleur%,(screen_x-width(FenPaletteCouleur%))/2 show_all end_if for i%=1 to 16 if ColPerso%(i%)<>0 r%= bin_and(ColPerso%(i%),255) g%= bin_and(int(ColPerso%(i%)/256),255) b%= bin_and(int(ColPerso%(i%)/(256*256)),255) color PictPalPerso%(i%),r%,g%,b% end_if next i% end_sub
Change: if number_change>(SpnPalette%(1)-1) and number_change<(SpnPalette%(3)+1) if position(number_change)>255 or position(number_change)<0 message "Valeur incorrect !"+chr$(13)+"Valeur de 0 et 255" position number_change,255 return end_if color PictChxPalette%,position(SpnPalette%(1)),position(SpnPalette%(2)),position(SpnPalette%(3)) return end_if return
MouseMovePalette: off_mouse_move PictPalette% if mouse_x_position(PictPalette%)<0 or mouse_y_position(PictPalette%)<0 return end_if if object_exists(SpnPalette%(1))=1 : off_change SpnPalette%(1) : end_if if object_exists(SpnPalette%(2))=1 : off_change SpnPalette%(2) : end_if if object_exists(SpnPalette%(3))=1 : off_change SpnPalette%(3) : end_if r%=color_pixel_red(PictPalette%,mouse_x_position(PictPalette%),mouse_y_position(PictPalette%)) g%=color_pixel_green(PictPalette%,mouse_x_position(PictPalette%),mouse_y_position(PictPalette%)) b%=color_pixel_blue(PictPalette%,mouse_x_position(PictPalette%),mouse_y_position(PictPalette%)) ColorPictTSVpalette(R%,G%,B%) color PictChxPalette%,r%,g%,b% position SpnPalette%(1),r% position SpnPalette%(2),g% position SpnPalette%(3),b% on_mouse_move PictPalette%,MouseMovePalette return
MouseMoveCadre: if object_exists(SpnPalette%(1))=1 : on_change SpnPalette%(1),Change : end_if if object_exists(SpnPalette%(2))=1 : on_change SpnPalette%(2),Change : end_if if object_exists(SpnPalette%(3))=1 : on_change SpnPalette%(3),Change : end_if return
ClicBtn: if number_click = 9999 FormPalette() return end_if if number_click = PictPalette% if EtatStandByPalette%=0 EtatStandByPalette%=1 off_mouse_move PictPalette% cursor_default PictPalette% else EtatStandByPalette%=0 on_mouse_move PictPalette%,MouseMovePalette cursor_cross PictPalette% end_if return end_if if number_click = PictChxPalette% r%=color_pixel_red(PictChxPalette%,mouse_x_position(PictChxPalette%),mouse_y_position(PictChxPalette%)) g%=color_pixel_green(PictChxPalette%,mouse_x_position(PictChxPalette%),mouse_y_position(PictChxPalette%)) b%=color_pixel_blue(PictChxPalette%,mouse_x_position(PictChxPalette%),mouse_y_position(PictChxPalette%)) ConvertChxPalette(r%,g%,b%) return end_if return
DClicPictChxPalette: r%=color_pixel_red(PictChxPalette%,mouse_x_position(PictChxPalette%),mouse_y_position(PictChxPalette%)) g%=color_pixel_green(PictChxPalette%,mouse_x_position(PictChxPalette%),mouse_y_position(PictChxPalette%)) b%=color_pixel_blue(PictChxPalette%,mouse_x_position(PictChxPalette%),mouse_y_position(PictChxPalette%)) SaveColorPerso(r%,g%,b%) return
sub SaveColorPerso(r1%,g1%,b1%) dim_local i% for i%=1 to 16 if ColPerso%(i%)=0 ColPerso%(i%)=(b1%*256+g1%)*256+r1% color PictPalPerso%(i%),r1%,g1%,b1% exit_for end_if next i% end_sub
ClicPalWindows: off_change SpnPalette%(1) off_change SpnPalette%(2) off_change SpnPalette%(3) r%=color_pixel_red(number_click,mouse_x_position(number_click),mouse_y_position(number_click)) g%=color_pixel_green(number_click,mouse_x_position(number_click),mouse_y_position(number_click)) b%=color_pixel_blue(number_click,mouse_x_position(number_click),mouse_y_position(number_click)) ColorPictTSVpalette(R%,G%,B%) color PictChxPalette%,r%,g%,b% position SpnPalette%(1),r% position SpnPalette%(2),g% position SpnPalette%(3),b% return
ClicPalPerso: if mouse_left_down(number_click)=1 off_change SpnPalette%(1) off_change SpnPalette%(2) off_change SpnPalette%(3) r%=color_pixel_red(number_click,mouse_x_position(number_click),mouse_y_position(number_click)) g%=color_pixel_green(number_click,mouse_x_position(number_click),mouse_y_position(number_click)) b%=color_pixel_blue(number_click,mouse_x_position(number_click),mouse_y_position(number_click)) ColorPictTSVpalette(R%,G%,B%) color PictChxPalette%,r%,g%,b% position SpnPalette%(1),r% position SpnPalette%(2),g% position SpnPalette%(3),b% else message "Raté !!" end_if return
DClicPalPerso: color number_double_click,0,0,0 InitColPerso() return
sub InitColPerso() dim_local i% for i%=1 to 16 if number_double_click = PictPalPerso%(i%) ColPerso%(i%)=0 end_if next i% end_sub
sub ConvertChxPalette(R1%,G1%,B1%) dim_local RH$,GH$,BH$,KGFc$ RH$ = Hex$(R1%) : if R1% < 16 then RH$ = "0" + RH$ GH$ = Hex$(G1%) : if G1% < 16 then GH$ = "0" + GH$ BH$ = Hex$(B1%) : if B1% < 16 then BH$ = "0" + BH$ KGFc$ = str$((B1%*256+G1%)*256+R1%) caption AlphPalConvert%(1),"RGB => "+str$(R1%)+","+str$(G1%)+","+str$(B1%) caption AlphPalConvert%(2),"HTML => "+RH$+GH$+BH$ caption AlphPalConvert%(3),"KGF => "+KGFc$ end_sub
sub ColorPictTSVpalette(R1%,V1%,B1%) dim_local i%,T,S,L,R%,V%,B%,x%
R%=R1% : V%=V1% : B%=B1% RGBtoTSL(R%,V%,B%) T=TSL_T : S=TSL_S for i%=1 to 127 TSLtoRGB(T,S,i%) 2d_target_is PictTSVpalette% if RGB_R%>-1 and RGB_G%>-1 and RGB_B%>-1 if RGB_R%<256 and RGB_G%<256 and RGB_B%<256 2d_pen_color RGB_R%,RGB_G%,RGB_B% 2d_line 1,i%,15,i% end_if end_if next i%
end_sub
sub RGBtoTSL(R%,V%,B%) dim_local i%,Mx%,Mx1%,Mn%,Mn1%,C% if variable("TSL_T")=0 then dim TSL_T if variable("TSL_S")=0 then dim TSL_S if variable("TSL_L")=0 then dim TSL_L Mx1% = Max(R%,V%) if Mx1% = R% : Mx% = Max(R%,B%) : else : Mx% = Max(V%,B%) : end_if Mn1% = Min(R%,V%) if Mn1% = R% : Mn% = Max(R%,B%) : else : Mn% = Max(V%,B%) : end_if C% = Mx%-Mn% if Mx% = R% if C%>0 : TSL_T = 60*mod(((V%-B%)/C%),6) : else : TSL_T = 60*mod((V%-B%),6) : end_if else if Mx% = V% if C%>0 : TSL_T = 60*(((B%-R%)/C%)+2) : else : TSL_T = 60*((B%-R%)+2) : end_if else if C%>0 : TSL_T = 60*(((R%-V%)/C%)+4) : else : TSL_T = 60*((R%-V%)+4) : end_if end_if end_if if C%>0 : TSL_S = 100*(C%/Mx%) : else : TSL_S = 0 : end_if if Mx%>0 : TSL_L = 100*(Mx%/255): else : TSL_L = 0 : end_if end_sub
sub TSLtoRGB(T,S,L) dim_local i,Mx,Mm,C,X
if variable("RGB_R%")=0 then dim RGB_R% if variable("RGB_G%")=0 then dim RGB_G% if variable("RGB_B%")=0 then dim RGB_B% Mx = L*255/100 Mm = (100-S)*L*(255/10000) C = Mx-Mm i = T/60 X = C*mod(i%,2) if i<1 RGB_R% = int(C+Mm) RGB_G% = int(X+Mm) RGB_B% = int(Mm) else if i>0.99 and i<2 RGB_R% = int(X+Mm) RGB_G% = int(C+Mm) RGB_B% = int(Mm) else if i>1.99 and i<3 RGB_R% = int(Mm) RGB_G% = int(C+Mm) RGB_B% = int(X+Mm) else if i>2.99 and i<4 RGB_R% = int(Mm) RGB_G% = int(X+Mm) RGB_B% = int(C+Mm) else if i>3.99 and i<5 RGB_R% = int(X+Mm) RGB_G% = int(Mm) RGB_B% = int(C+Mm) else RGB_R% = int(C+Mm) RGB_G% = int(Mm) RGB_B% = int(X+Mm) end_if end_if end_if end_if end_if end_sub
DATA "FF8080","FFFF80","80FF80","00FF80","80FFFF","0080FF","FF80C0","FF80FF" DATA "FF0000","FFFF00","80FF00","00FF40","00FFFF","0080C0","8080C0","FF00FF" DATA "804040","FF8040","00FF00","008080","004080","8080FF","800040","FF0080" DATA "800000","FF8000","008000","008040","0000FF","0000A0","800080","8000FF" DATA "400000","804000","004000","004040","000080","000040","400040","400080" DATA "000000","808000","808040","808080","408080","C0C0C0","400040","FFFFFF"
Si un pro des couleurs veut y jeter un oeil... | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Outils couleurs Dim 21 Mai 2017 - 11:28 | |
| Pour ma palette, j'ai utilisé un convertisseur pour déboguer mon algorithme, je rentrais des valeurs et je regardais si mon calcul donnait la même chose. Mon pb venait des mod(), il fallait que je mette un int() devant! C'est peut être pareil pour toi... Je n'utilise pas la même palette que toi, je ne peux donc pas vraiment t'aider, mais j'ai trouvé ton algorithme ici: LIENIl y a un convertisseur tout en bas, sert t'en pour déboguer | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 21 Mai 2017 - 14:38 | |
| @ Silverman, C' est de cette page que je suis parti pour mes conversions. Le truc, c' est que je ne suis pas allé jusqu' en bas de la page et je n' avais pas vu le convertisseur. Quand tu dis mettre un in() devant les mod() est ce que tu entends ceci : int(mod()) ? | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Outils couleurs Dim 21 Mai 2017 - 15:00 | |
| Bonjour à tous ! @Yanninck : Je viens de tester ton programme. Merci de ton partage. Avant d’aller plus loin, je voulais te dire que j’ai un problème de rafraîchissement de la couleur lors du survol de la palette avec la souris : le temps de calcul est trop long pour le PC que j’utilise actuellement : Parfois, la couleur affichée ne correspond pas à celle sous la souris Si je mets en REM la ligne 218 : ColorPictTSVpalette(R%,G%,B%), plus de problème, tout va bien, mais, plus de barre de luminosité ! Pardonne-moi de ces remarques, je ne souhaite pas te décourager dans ton entreprise. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Outils couleurs Dim 21 Mai 2017 - 15:36 | |
| Bonjour Marc37 - Citation :
- le temps de calcul est trop long pour le PC que j’utilise actuellement
Oui, moi aussi j'ai remarqué le problème et effectivement c'est apparu depuis la dernière version avec la barre de luminosité. | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Outils couleurs Dim 21 Mai 2017 - 15:50 | |
| Salut Laurent ! @yannick : Aie ! Lorsque tu as R=242, V=251, B=4, on obtient : T = -1466,66 au lieu de 60 S = 3,58 au lieu de 97 Bref, une erreur dans la sub RGBtoTSL. Je vais voir ça un peu plus tard. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: RE Dim 21 Mai 2017 - 16:14 | |
| Mouep, visiblement y a un truc que j' ai pas pigé. Est ce que mod() est le même que le Mod() de panoramic Est ce que |1,2| veut bien dire entre 1 et 2 Je ne suis pas trop sûr, le résultat est approchant mais pas exact donc faux. Ils sont beau ces scientifiques avec leurs hiéroglyphes... J' aurai du mettre ce morceau dans la rubrique "SOS" mais bon je voulais que cela reste sur ce sujet pour ne pas trop me disperser sur le forum. Désolé... | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Outils couleurs Dim 21 Mai 2017 - 16:23 | |
| @Yannick :
ligne 366 : if Mn1% = R% : Mn% = Max(R%,B%) : else : Mn% = Max(V%,B%) : end_if
Ne serait-ce pas plutôt :
ligne 366 : if Mn1% = R% : Mn% = Min(R%,B%) : else : Mn% = Min(V%,B%) : end_if
? ? | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Outils couleurs Dim 21 Mai 2017 - 16:34 | |
| Je viens de faire l'essais :
Suite à ma correction ci-dessus, ligne 366, la valeur Mn% est maintenant correcte. Elle reprend bien la valeur minimum de R,V et B.
Du coup la variable locale c% est bonne.
A suivre... il reste un bug plus loin...
Dernière édition par Marc37 le Dim 21 Mai 2017 - 16:36, édité 1 fois | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 21 Mai 2017 - 16:35 | |
| @ Marc 37, SI JE LE POUVAIS, JE T EMBRASSERAI !!!! Je crois que tu viens de mettre le doigt dessus. Le copier/coller, encore lui. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 21 Mai 2017 - 16:45 | |
| Avec ce code là, c' est pas parfait mais cela va mieux : - Code:
-
dim no%,i% dim r%,g%,b% dim EtatStandByPalette% dim ColPerso%(16) dim FenPaletteCouleur% : no%=no%+1 : FenPaletteCouleur%=no% dim ContPalette% : no%=no%+1 : ContPalette%=no% dim PictPalWindows%(48): for i%=1 to 48 : no%=no%+1 : PictPalWindows%(i%)=no% : next i% dim AlphPalette%(2) : for i%=1 to 2 : no%=no%+1 : AlphPalette%(i%)=no% : next i% dim PictPalPerso%(16) : for i%=1 to 16 : no%=no%+1 : PictPalPerso%(i%)=no% : next i% dim PictPalette% : no%=no%+1 : PictPalette%=no% dim PictChxPalette% : no%=no%+1 : PictChxPalette%=no% dim SpnPalette%(3) : for i%=1 to 3 : no%=no%+1 : SpnPalette%(i%)=no% : next i% dim AlphPalConvert%(3) : for i%=1 to 3 : no%=no%+1 : AlphPalConvert%(i%)=no% : next i% dim PictTSVpalette% : no%=no%+1 : PictTSVpalette%=no%
label MouseMoveCadre label MouseMovePalette label ClicBtn label ClicPalWindows label ClicPalPerso label DClicPictChxPalette label DClicPalPerso label Change button 9999 top 9999,10 left 9999,10 caption 9999,"Outils couleurs" on_click 9999,ClicBtn end
sub FormPalette() dim_local i%,l%,t%,x%,y%,V$ if object_exists(FenPaletteCouleur%)=1 show FenPaletteCouleur% else create_hide form FenPaletteCouleur% border_small FenPaletteCouleur% height FenPaletteCouleur%,305 width FenPaletteCouleur%,450 top FenPaletteCouleur%,(screen_y-height(FenPaletteCouleur%))/2 left FenPaletteCouleur%,(screen_x-width(FenPaletteCouleur%))/2 caption FenPaletteCouleur%,"Outils couleurs" font_name FenPaletteCouleur%,"Arial" font_size FenPaletteCouleur%,8 font_color FenPaletteCouleur%,85,85,127 container ContPalette% parent ContPalette%,FenPaletteCouleur% height ContPalette%,height_client(FenPaletteCouleur%)-5 width ContPalette%,width_client(FenPaletteCouleur%)-10 top ContPalette%,0 left ContPalette%,5 on_mouse_move ContPalette%,MouseMoveCadre alpha AlphPalette%(1) parent AlphPalette%(1),ContPalette% top AlphPalette%(1),15 left AlphPalette%(1),5 caption AlphPalette%(1),"Couleurs Windows :" l%=5 for x%=1 to 8 t%=top(AlphPalette%(1))+height(AlphPalette%(1))+5 for y%=1 to 6 i%=i%+1 picture PictPalWindows%(i%) parent PictPalWindows%(i%),ContPalette% height PictPalWindows%(i%),20 width PictPalWindows%(i%),20 top PictPalWindows%(i%),t% left PictPalWindows%(i%),l% read V$ color PictPalWindows%(i%),hex(mid$(v$,1,2)),hex(mid$(v$,3,2)),hex(mid$(v$,5,2)) cursor_point PictPalWindows%(i%) on_click PictPalWindows%(i%),ClicPalWindows t%=t%+25 next y% l%=l%+25 next x% alpha AlphPalette%(2) parent AlphPalette%(2),ContPalette% top AlphPalette%(2),top(PictpalWindows%(48))+height(PictpalWindows%(48))+10 left AlphPalette%(2),5 caption AlphPalette%(2),"Couleurs Personnalisées :"
l%=5 i%=0 for x%=1 to 8 t%=top(AlphPalette%(2))+height(AlphPalette%(2))+5 for y%=1 to 2 i%=i%+1 picture PictPalPerso%(i%) parent PictPalPerso%(i%),ContPalette% height PictPalPerso%(i%),20 width PictPalPerso%(i%),20 top PictPalPerso%(i%),t% left PictPalPerso%(i%),l% color PictPalPerso%(i%),0,0,0 cursor_point PictPalPerso%(i%) hint PictPalPerso%(i%),"Clic pour sélectionner"+chr$(13)+"Double clic pour effacer" on_click PictPalPerso%(i%),ClicPalPerso on_double_click PictPalPerso%(i%),DClicPalPerso t%=t%+25 next y% l%=l%+25 next x%
picture PictPalette% parent PictPalette%,ContPalette% height PictPalette%,128 width PictPalette%,158 top PictPalette%,top(AlphPalette%(1))+height(AlphPalette%(1))+5 left PictPalette%,left(PictPalWindows%(48))+width(PictPalWindows%(48))+30 file_load PictPalette%,"palette.bmp" cursor_cross PictPalette% on_mouse_move PictPalette%,MouseMovePalette on_click PictPalette%,ClicBtn picture PictTSVpalette% parent PictTSVpalette%,ContPalette% height PictTSVpalette%,128 width PictTSVpalette%,15 top PictTSVpalette%,top(PictPalette%) left PictTSVpalette%,left(PictPalette%)+width(PictPalette%)+5 ColorPictTSVpalette(0,0,0) picture PictChxPalette% parent PictChxPalette%,ContPalette% height PictChxPalette%,22 width PictChxPalette%,22 top PictChxPalette%,top(PictPalette%)+height(PictPalette%)+5 left PictChxPalette%,left(PictPalette%) color PictChxPalette%,0,0,0 cursor_point PictChxPalette% hint PictChxPalette%,"Cliquer pour convertir"+chr$(13)+"Double clic pour sauvegarder dans les couleurs personnalisées" on_click PictChxPalette%,ClicBtn on_double_click PictChxPalette%,DClicPictChxPalette t%=top(PictChxPalette%) l%=left(PictChxPalette%)+width(PictChxPalette%)+5 for i%=1 to 3 spin SpnPalette%(i%) parent SpnPalette%(i%),ContPalette% width SpnPalette%(i%),45 top SpnPalette%(i%),t% left SpnPalette%(i%),l% l%=l%+width(SpnPalette%(i%))+5 font_color SpnPalette%(i%),255,255,255 min SpnPalette%(i%),0 max SpnPalette%(i%),255 next i% color SpnPalette%(1),255,0,0 color SpnPalette%(2),0,180,0 color SpnPalette%(3),0,0,255 alpha AlphPalConvert%(1) parent AlphPalConvert%(1),ContPalette% caption AlphPalConvert%(1),"RGB => " top AlphPalConvert%(1),top(SpnPalette%(1))+height(SpnPalette%(1))+10 left AlphPalConvert%(1),left(PictChxPalette%) alpha AlphPalConvert%(2) parent AlphPalConvert%(2),ContPalette% caption AlphPalConvert%(2),"HTML => " top AlphPalConvert%(2),top(AlphPalConvert%(1))+height(AlphPalConvert%(1))+5 left AlphPalConvert%(2),left(PictChxPalette%) alpha AlphPalConvert%(3) parent AlphPalConvert%(3),ContPalette% caption AlphPalConvert%(3),"KGF => " top AlphPalConvert%(3),top(AlphPalConvert%(2))+height(AlphPalConvert%(2))+5 left AlphPalConvert%(3),left(PictChxPalette%) create_show top FenPaletteCouleur%,(screen_y-height(FenPaletteCouleur%))/2 left FenPaletteCouleur%,(screen_x-width(FenPaletteCouleur%))/2 show_all end_if for i%=1 to 16 if ColPerso%(i%)<>0 r%= bin_and(ColPerso%(i%),255) g%= bin_and(int(ColPerso%(i%)/256),255) b%= bin_and(int(ColPerso%(i%)/(256*256)),255) color PictPalPerso%(i%),r%,g%,b% end_if next i% end_sub
Change: if number_change>(SpnPalette%(1)-1) and number_change<(SpnPalette%(3)+1) if position(number_change)>255 or position(number_change)<0 message "Valeur incorrecte !"+chr$(13)+"Valeur de 0 et 255" position number_change,255 return end_if color PictChxPalette%,position(SpnPalette%(1)),position(SpnPalette%(2)),position(SpnPalette%(3)) return end_if return
MouseMovePalette: off_mouse_move PictPalette% if mouse_x_position(PictPalette%)<0 or mouse_y_position(PictPalette%)<0 return end_if if object_exists(SpnPalette%(1))=1 : off_change SpnPalette%(1) : end_if if object_exists(SpnPalette%(2))=1 : off_change SpnPalette%(2) : end_if if object_exists(SpnPalette%(3))=1 : off_change SpnPalette%(3) : end_if r%=color_pixel_red(PictPalette%,mouse_x_position(PictPalette%),mouse_y_position(PictPalette%)) g%=color_pixel_green(PictPalette%,mouse_x_position(PictPalette%),mouse_y_position(PictPalette%)) b%=color_pixel_blue(PictPalette%,mouse_x_position(PictPalette%),mouse_y_position(PictPalette%)) ColorPictTSVpalette(R%,G%,B%) color PictChxPalette%,r%,g%,b% position SpnPalette%(1),r% position SpnPalette%(2),g% position SpnPalette%(3),b% on_mouse_move PictPalette%,MouseMovePalette return
MouseMoveCadre: if object_exists(SpnPalette%(1))=1 : on_change SpnPalette%(1),Change : end_if if object_exists(SpnPalette%(2))=1 : on_change SpnPalette%(2),Change : end_if if object_exists(SpnPalette%(3))=1 : on_change SpnPalette%(3),Change : end_if return
ClicBtn: if number_click = 9999 FormPalette() return end_if if number_click = PictPalette% if EtatStandByPalette%=0 EtatStandByPalette%=1 off_mouse_move PictPalette% cursor_default PictPalette% else EtatStandByPalette%=0 on_mouse_move PictPalette%,MouseMovePalette cursor_cross PictPalette% end_if return end_if if number_click = PictChxPalette% r%=color_pixel_red(PictChxPalette%,mouse_x_position(PictChxPalette%),mouse_y_position(PictChxPalette%)) g%=color_pixel_green(PictChxPalette%,mouse_x_position(PictChxPalette%),mouse_y_position(PictChxPalette%)) b%=color_pixel_blue(PictChxPalette%,mouse_x_position(PictChxPalette%),mouse_y_position(PictChxPalette%)) ConvertChxPalette(r%,g%,b%) return end_if return
DClicPictChxPalette: r%=color_pixel_red(PictChxPalette%,mouse_x_position(PictChxPalette%),mouse_y_position(PictChxPalette%)) g%=color_pixel_green(PictChxPalette%,mouse_x_position(PictChxPalette%),mouse_y_position(PictChxPalette%)) b%=color_pixel_blue(PictChxPalette%,mouse_x_position(PictChxPalette%),mouse_y_position(PictChxPalette%)) SaveColorPerso(r%,g%,b%) return
sub SaveColorPerso(r1%,g1%,b1%) dim_local i% for i%=1 to 16 if ColPerso%(i%)=0 ColPerso%(i%)=(b1%*256+g1%)*256+r1% color PictPalPerso%(i%),r1%,g1%,b1% exit_for end_if next i% end_sub
ClicPalWindows: off_change SpnPalette%(1) off_change SpnPalette%(2) off_change SpnPalette%(3) r%=color_pixel_red(number_click,mouse_x_position(number_click),mouse_y_position(number_click)) g%=color_pixel_green(number_click,mouse_x_position(number_click),mouse_y_position(number_click)) b%=color_pixel_blue(number_click,mouse_x_position(number_click),mouse_y_position(number_click)) ColorPictTSVpalette(R%,G%,B%) color PictChxPalette%,r%,g%,b% position SpnPalette%(1),r% position SpnPalette%(2),g% position SpnPalette%(3),b% return
ClicPalPerso: if mouse_left_down(number_click)=1 off_change SpnPalette%(1) off_change SpnPalette%(2) off_change SpnPalette%(3) r%=color_pixel_red(number_click,mouse_x_position(number_click),mouse_y_position(number_click)) g%=color_pixel_green(number_click,mouse_x_position(number_click),mouse_y_position(number_click)) b%=color_pixel_blue(number_click,mouse_x_position(number_click),mouse_y_position(number_click)) ColorPictTSVpalette(R%,G%,B%) color PictChxPalette%,r%,g%,b% position SpnPalette%(1),r% position SpnPalette%(2),g% position SpnPalette%(3),b% else message "Raté !!" end_if return
DClicPalPerso: color number_double_click,0,0,0 InitColPerso() return
sub InitColPerso() dim_local i% for i%=1 to 16 if number_double_click = PictPalPerso%(i%) ColPerso%(i%)=0 end_if next i% end_sub
sub ConvertChxPalette(R1%,G1%,B1%) dim_local RH$,GH$,BH$,KGFc$ RH$ = Hex$(R1%) : if R1% < 16 then RH$ = "0" + RH$ GH$ = Hex$(G1%) : if G1% < 16 then GH$ = "0" + GH$ BH$ = Hex$(B1%) : if B1% < 16 then BH$ = "0" + BH$ KGFc$ = str$((B1%*256+G1%)*256+R1%) caption AlphPalConvert%(1),"RGB => "+str$(R1%)+","+str$(G1%)+","+str$(B1%) caption AlphPalConvert%(2),"HTML => "+RH$+GH$+BH$ caption AlphPalConvert%(3),"KGF => "+KGFc$ end_sub
sub ColorPictTSVpalette(R1%,V1%,B1%) dim_local i%,T,S,L,R%,V%,B%,x%
R%=R1% : V%=V1% : B%=B1% RGBtoTSL(R%,V%,B%) T=TSL_T : S=TSL_S cls 2d_target_is PictTSVpalette% for i%=1 to 127 TSLtoRGB(T,S,i%) if RGB_R%>-1 and RGB_G%>-1 and RGB_B%>-1 if RGB_R%<256 and RGB_G%<256 and RGB_B%<256 2d_pen_color RGB_R%,RGB_G%,RGB_B% 2d_line 1,i%,15,i% end_if end_if next i%
end_sub
sub RGBtoTSL(R%,V%,B%) dim_local i%,Mx%,Mx1%,Mn%,Mn1%,C% if variable("TSL_T")=0 then dim TSL_T if variable("TSL_S")=0 then dim TSL_S if variable("TSL_L")=0 then dim TSL_L Mx1% = Max(R%,V%) if Mx1% = R% : Mx% = Max(R%,B%) : else : Mx% = Max(V%,B%) : end_if Mn1% = Min(R%,V%) if Mn1% = R% : Mn% = Min(R%,B%) : else : Mn% = Min(V%,B%) : end_if C% = Mx%-Mn% if Mx% = R% if C%>0 : TSL_T = 60*mod(int(((V%-B%)/C%)),6) : else : TSL_T = 60*mod((V%-B%),6) : end_if else if Mx% = V% if C%>0 : TSL_T = 60*(((B%-R%)/C%)+2) : else : TSL_T = 60*((B%-R%)+2) : end_if else if C%>0 : TSL_T = 60*(((R%-V%)/C%)+4) : else : TSL_T = 60*((R%-V%)+4) : end_if end_if end_if if C%>0 : TSL_S = 100*(C%/Mx%) : else : TSL_S = 0 : end_if if Mx%>0 : TSL_L = 100*(Mx%/255): else : TSL_L = 0 : end_if end_sub
sub TSLtoRGB(T,S,L) dim_local i,Mx,Mm,C,X
if variable("RGB_R%")=0 then dim RGB_R% if variable("RGB_G%")=0 then dim RGB_G% if variable("RGB_B%")=0 then dim RGB_B% Mx = L*255/100 Mm = (100-S)*L*(255/10000) C = Mx-Mm i = T/60 X = C*mod(i,2) if i<1 RGB_R% = int(C+Mm) RGB_G% = int(X+Mm) RGB_B% = int(Mm) else if i>0.99 and i<2 RGB_R% = int(X+Mm) RGB_G% = int(C+Mm) RGB_B% = int(Mm) else if i>1.99 and i<3 RGB_R% = int(Mm) RGB_G% = int(C+Mm) RGB_B% = int(X+Mm) else if i>2.99 and i<4 RGB_R% = int(Mm) RGB_G% = int(X+Mm) RGB_B% = int(C+Mm) else if i>3.99 and i<5 RGB_R% = int(X+Mm) RGB_G% = int(Mm) RGB_B% = int(C+Mm) else RGB_R% = int(C+Mm) RGB_G% = int(Mm) RGB_B% = int(X+Mm) end_if end_if end_if end_if end_if end_sub
DATA "FF8080","FFFF80","80FF80","00FF80","80FFFF","0080FF","FF80C0","FF80FF" DATA "FF0000","FFFF00","80FF00","00FF40","00FFFF","0080C0","8080C0","FF00FF" DATA "804040","FF8040","00FF00","008080","004080","8080FF","800040","FF0080" DATA "800000","FF8000","008000","008040","0000FF","0000A0","800080","8000FF" DATA "400000","804000","004000","004040","000080","000040","400040","400080" DATA "000000","808000","808040","808080","408080","C0C0C0","400040","FFFFFF"
Dernière édition par Yannick le Dim 21 Mai 2017 - 17:34, édité 1 fois | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Outils couleurs Dim 21 Mai 2017 - 16:58 | |
| @Yannick La TSVpalette fait 128 de haut. Or, les valeurs à afficher vont de 0 à 100 => L = 0 à 100% de luminosité. Je lis aussi que tu fais une boucle d'affichage (ligne 345) de 1 à 127... Il y a donc 27 pas en trop. 100 est le maxi. Je ne sais pas si je suis bien clair dans mon explication... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 21 Mai 2017 - 17:02 | |
| Si Si tu es très clair L est en % donc 0 à 100 et la boucle va de 1 à 127.
Je suis en train de corriger. la bande de luminosité sera seulement sur les clics de sélection cela diminuera les pbs de mise à jour de cette barre dus à la vitesse.
Merci Marc 37 | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Outils couleurs Dim 21 Mai 2017 - 17:28 | |
| Avant que Oeil_de_Lynx ne le voit ( Bonjour Papydall ! ) Ligne 198 message "Valeur incorrect e !"+chr$(13)+"Valeur de 0 à 255" | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| | | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Outils couleurs Dim 21 Mai 2017 - 17:44 | |
| Euh.... Sabotage ! ? Ligne 370 if C%>0 : TSL_T = 60*mod( int(((V%-B%)/C%)),6) : else : TSL_T = 60*mod((V%-B%),6) : end_if Ne pas mettre de INT ! Correction : if C%>0 : TSL_T = 60*mod(((V%-B%)/C%),6) : else : TSL_T = 60*mod((V%-B%),6) : end_if | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 21 Mai 2017 - 17:51 | |
| Bien vu Marc 37 ! Un résidu d' essai... Voilà le code modifié L' affichage de la barre se fait sur les clics ( Couleurs windows, Couleurs personnalisées et palette ) certaines couleurs n' affichent rien, d' autres des résultats bizarres voilà le source : - Code:
-
dim no%,i% dim r%,g%,b% dim EtatStandByPalette% dim ColPerso%(16) dim FenPaletteCouleur% : no%=no%+1 : FenPaletteCouleur%=no% dim ContPalette% : no%=no%+1 : ContPalette%=no% dim PictPalWindows%(48): for i%=1 to 48 : no%=no%+1 : PictPalWindows%(i%)=no% : next i% dim AlphPalette%(2) : for i%=1 to 2 : no%=no%+1 : AlphPalette%(i%)=no% : next i% dim PictPalPerso%(16) : for i%=1 to 16 : no%=no%+1 : PictPalPerso%(i%)=no% : next i% dim PictPalette% : no%=no%+1 : PictPalette%=no% dim PictChxPalette% : no%=no%+1 : PictChxPalette%=no% dim SpnPalette%(3) : for i%=1 to 3 : no%=no%+1 : SpnPalette%(i%)=no% : next i% dim AlphPalConvert%(3) : for i%=1 to 3 : no%=no%+1 : AlphPalConvert%(i%)=no% : next i% dim PictTSVpalette% : no%=no%+1 : PictTSVpalette%=no%
label MouseMoveCadre label MouseMovePalette label ClicBtn label ClicPalWindows label ClicPalPerso label DClicPictChxPalette label DClicPalPerso label Change button 9999 top 9999,10 left 9999,10 caption 9999,"Outils couleurs" on_click 9999,ClicBtn end
sub FormPalette() dim_local i%,l%,t%,x%,y%,V$ if object_exists(FenPaletteCouleur%)=1 show FenPaletteCouleur% else create_hide form FenPaletteCouleur% border_small FenPaletteCouleur% height FenPaletteCouleur%,305 width FenPaletteCouleur%,450 top FenPaletteCouleur%,(screen_y-height(FenPaletteCouleur%))/2 left FenPaletteCouleur%,(screen_x-width(FenPaletteCouleur%))/2 caption FenPaletteCouleur%,"Outils couleurs" font_name FenPaletteCouleur%,"Arial" font_size FenPaletteCouleur%,8 font_color FenPaletteCouleur%,85,85,127 container ContPalette% parent ContPalette%,FenPaletteCouleur% height ContPalette%,height_client(FenPaletteCouleur%)-5 width ContPalette%,width_client(FenPaletteCouleur%)-10 top ContPalette%,0 left ContPalette%,5 on_mouse_move ContPalette%,MouseMoveCadre alpha AlphPalette%(1) parent AlphPalette%(1),ContPalette% top AlphPalette%(1),15 left AlphPalette%(1),5 caption AlphPalette%(1),"Couleurs Windows :" l%=5 for x%=1 to 8 t%=top(AlphPalette%(1))+height(AlphPalette%(1))+5 for y%=1 to 6 i%=i%+1 picture PictPalWindows%(i%) parent PictPalWindows%(i%),ContPalette% height PictPalWindows%(i%),20 width PictPalWindows%(i%),20 top PictPalWindows%(i%),t% left PictPalWindows%(i%),l% read V$ color PictPalWindows%(i%),hex(mid$(v$,1,2)),hex(mid$(v$,3,2)),hex(mid$(v$,5,2)) cursor_point PictPalWindows%(i%) on_click PictPalWindows%(i%),ClicPalWindows t%=t%+25 next y% l%=l%+25 next x% alpha AlphPalette%(2) parent AlphPalette%(2),ContPalette% top AlphPalette%(2),top(PictpalWindows%(48))+height(PictpalWindows%(48))+10 left AlphPalette%(2),5 caption AlphPalette%(2),"Couleurs Personnalisées :"
l%=5 i%=0 for x%=1 to 8 t%=top(AlphPalette%(2))+height(AlphPalette%(2))+5 for y%=1 to 2 i%=i%+1 picture PictPalPerso%(i%) parent PictPalPerso%(i%),ContPalette% height PictPalPerso%(i%),20 width PictPalPerso%(i%),20 top PictPalPerso%(i%),t% left PictPalPerso%(i%),l% color PictPalPerso%(i%),0,0,0 cursor_point PictPalPerso%(i%) hint PictPalPerso%(i%),"Clic pour sélectionner"+chr$(13)+"Double clic pour effacer" on_click PictPalPerso%(i%),ClicPalPerso on_double_click PictPalPerso%(i%),DClicPalPerso t%=t%+25 next y% l%=l%+25 next x%
picture PictPalette% parent PictPalette%,ContPalette% height PictPalette%,128 width PictPalette%,158 top PictPalette%,top(AlphPalette%(1))+height(AlphPalette%(1))+5 left PictPalette%,left(PictPalWindows%(48))+width(PictPalWindows%(48))+30 file_load PictPalette%,"palette.bmp" cursor_cross PictPalette% on_mouse_move PictPalette%,MouseMovePalette on_click PictPalette%,ClicBtn picture PictTSVpalette% parent PictTSVpalette%,ContPalette% height PictTSVpalette%,128 width PictTSVpalette%,15 top PictTSVpalette%,top(PictPalette%) left PictTSVpalette%,left(PictPalette%)+width(PictPalette%)+5 ColorPictTSVpalette(0,0,0) picture PictChxPalette% parent PictChxPalette%,ContPalette% height PictChxPalette%,22 width PictChxPalette%,22 top PictChxPalette%,top(PictPalette%)+height(PictPalette%)+5 left PictChxPalette%,left(PictPalette%) color PictChxPalette%,0,0,0 cursor_point PictChxPalette% hint PictChxPalette%,"Cliquer pour convertir"+chr$(13)+"Double clic pour sauvegarder dans les couleurs personnalisées" on_click PictChxPalette%,ClicBtn on_double_click PictChxPalette%,DClicPictChxPalette t%=top(PictChxPalette%) l%=left(PictChxPalette%)+width(PictChxPalette%)+5 for i%=1 to 3 spin SpnPalette%(i%) parent SpnPalette%(i%),ContPalette% width SpnPalette%(i%),45 top SpnPalette%(i%),t% left SpnPalette%(i%),l% l%=l%+width(SpnPalette%(i%))+5 font_color SpnPalette%(i%),255,255,255 min SpnPalette%(i%),0 max SpnPalette%(i%),255 next i% color SpnPalette%(1),255,0,0 color SpnPalette%(2),0,180,0 color SpnPalette%(3),0,0,255 alpha AlphPalConvert%(1) parent AlphPalConvert%(1),ContPalette% caption AlphPalConvert%(1),"RGB => " top AlphPalConvert%(1),top(SpnPalette%(1))+height(SpnPalette%(1))+10 left AlphPalConvert%(1),left(PictChxPalette%) alpha AlphPalConvert%(2) parent AlphPalConvert%(2),ContPalette% caption AlphPalConvert%(2),"HTML => " top AlphPalConvert%(2),top(AlphPalConvert%(1))+height(AlphPalConvert%(1))+5 left AlphPalConvert%(2),left(PictChxPalette%) alpha AlphPalConvert%(3) parent AlphPalConvert%(3),ContPalette% caption AlphPalConvert%(3),"KGF => " top AlphPalConvert%(3),top(AlphPalConvert%(2))+height(AlphPalConvert%(2))+5 left AlphPalConvert%(3),left(PictChxPalette%) create_show top FenPaletteCouleur%,(screen_y-height(FenPaletteCouleur%))/2 left FenPaletteCouleur%,(screen_x-width(FenPaletteCouleur%))/2 show_all end_if for i%=1 to 16 if ColPerso%(i%)<>0 r%= bin_and(ColPerso%(i%),255) g%= bin_and(int(ColPerso%(i%)/256),255) b%= bin_and(int(ColPerso%(i%)/(256*256)),255) color PictPalPerso%(i%),r%,g%,b% end_if next i% end_sub
Change: if number_change>(SpnPalette%(1)-1) and number_change<(SpnPalette%(3)+1) if position(number_change)>255 or position(number_change)<0 message "Valeur incorrecte !"+chr$(13)+"Valeur de 0 et 255" position number_change,255 return end_if color PictChxPalette%,position(SpnPalette%(1)),position(SpnPalette%(2)),position(SpnPalette%(3)) return end_if return
MouseMovePalette: off_mouse_move PictPalette% if mouse_x_position(PictPalette%)<0 or mouse_y_position(PictPalette%)<0 return end_if if object_exists(SpnPalette%(1))=1 : off_change SpnPalette%(1) : end_if if object_exists(SpnPalette%(2))=1 : off_change SpnPalette%(2) : end_if if object_exists(SpnPalette%(3))=1 : off_change SpnPalette%(3) : end_if r%=color_pixel_red(PictPalette%,mouse_x_position(PictPalette%),mouse_y_position(PictPalette%)) g%=color_pixel_green(PictPalette%,mouse_x_position(PictPalette%),mouse_y_position(PictPalette%)) b%=color_pixel_blue(PictPalette%,mouse_x_position(PictPalette%),mouse_y_position(PictPalette%)) color PictChxPalette%,r%,g%,b% position SpnPalette%(1),r% position SpnPalette%(2),g% position SpnPalette%(3),b% on_mouse_move PictPalette%,MouseMovePalette return
MouseMoveCadre: if object_exists(SpnPalette%(1))=1 : on_change SpnPalette%(1),Change : end_if if object_exists(SpnPalette%(2))=1 : on_change SpnPalette%(2),Change : end_if if object_exists(SpnPalette%(3))=1 : on_change SpnPalette%(3),Change : end_if return
ClicBtn: if number_click = 9999 FormPalette() return end_if if number_click = PictPalette% if EtatStandByPalette%=0 EtatStandByPalette%=1 off_mouse_move PictPalette% ColorPictTSVpalette(R%,G%,B%) cursor_default PictPalette% else EtatStandByPalette%=0 on_mouse_move PictPalette%,MouseMovePalette cursor_cross PictPalette% end_if return end_if if number_click = PictChxPalette% r%=color_pixel_red(PictChxPalette%,mouse_x_position(PictChxPalette%),mouse_y_position(PictChxPalette%)) g%=color_pixel_green(PictChxPalette%,mouse_x_position(PictChxPalette%),mouse_y_position(PictChxPalette%)) b%=color_pixel_blue(PictChxPalette%,mouse_x_position(PictChxPalette%),mouse_y_position(PictChxPalette%)) ConvertChxPalette(r%,g%,b%) return end_if return
DClicPictChxPalette: r%=color_pixel_red(PictChxPalette%,mouse_x_position(PictChxPalette%),mouse_y_position(PictChxPalette%)) g%=color_pixel_green(PictChxPalette%,mouse_x_position(PictChxPalette%),mouse_y_position(PictChxPalette%)) b%=color_pixel_blue(PictChxPalette%,mouse_x_position(PictChxPalette%),mouse_y_position(PictChxPalette%)) SaveColorPerso(r%,g%,b%) return
sub SaveColorPerso(r1%,g1%,b1%) dim_local i% for i%=1 to 16 if ColPerso%(i%)=0 ColPerso%(i%)=(b1%*256+g1%)*256+r1% color PictPalPerso%(i%),r1%,g1%,b1% exit_for end_if next i% end_sub
ClicPalWindows: off_change SpnPalette%(1) off_change SpnPalette%(2) off_change SpnPalette%(3) r%=color_pixel_red(number_click,mouse_x_position(number_click),mouse_y_position(number_click)) g%=color_pixel_green(number_click,mouse_x_position(number_click),mouse_y_position(number_click)) b%=color_pixel_blue(number_click,mouse_x_position(number_click),mouse_y_position(number_click)) ColorPictTSVpalette(R%,G%,B%) color PictChxPalette%,r%,g%,b% position SpnPalette%(1),r% position SpnPalette%(2),g% position SpnPalette%(3),b% return
ClicPalPerso: if mouse_left_down(number_click)=1 off_change SpnPalette%(1) off_change SpnPalette%(2) off_change SpnPalette%(3) r%=color_pixel_red(number_click,mouse_x_position(number_click),mouse_y_position(number_click)) g%=color_pixel_green(number_click,mouse_x_position(number_click),mouse_y_position(number_click)) b%=color_pixel_blue(number_click,mouse_x_position(number_click),mouse_y_position(number_click)) ColorPictTSVpalette(R%,G%,B%) color PictChxPalette%,r%,g%,b% position SpnPalette%(1),r% position SpnPalette%(2),g% position SpnPalette%(3),b% else message "Raté !!" end_if return
DClicPalPerso: color number_double_click,0,0,0 InitColPerso() return
sub InitColPerso() dim_local i% for i%=1 to 16 if number_double_click = PictPalPerso%(i%) ColPerso%(i%)=0 end_if next i% end_sub
sub ConvertChxPalette(R1%,G1%,B1%) dim_local RH$,GH$,BH$,KGFc$ RH$ = Hex$(R1%) : if R1% < 16 then RH$ = "0" + RH$ GH$ = Hex$(G1%) : if G1% < 16 then GH$ = "0" + GH$ BH$ = Hex$(B1%) : if B1% < 16 then BH$ = "0" + BH$ KGFc$ = str$((B1%*256+G1%)*256+R1%) caption AlphPalConvert%(1),"RGB => "+str$(R1%)+","+str$(G1%)+","+str$(B1%) caption AlphPalConvert%(2),"HTML => "+RH$+GH$+BH$ caption AlphPalConvert%(3),"KGF => "+KGFc$ end_sub
sub ColorPictTSVpalette(R1%,V1%,B1%) dim_local i%,T,S,L,R%,V%,B%,x%
R%=R1% : V%=V1% : B%=B1% RGBtoTSL(R%,V%,B%) T=TSL_T : S=TSL_S cls 2d_target_is PictTSVpalette% for i%=1 to 127 if i%>100 L=100 else L=i% end_if TSLtoRGB(T,S,L) if RGB_R%>-1 and RGB_G%>-1 and RGB_B%>-1 if RGB_R%<256 and RGB_G%<256 and RGB_B%<256 2d_pen_color RGB_R%,RGB_G%,RGB_B% 2d_line 1,i%,15,i% end_if end_if next i%
end_sub
sub RGBtoTSL(R%,V%,B%) dim_local i%,Mx%,Mx1%,Mn%,Mn1%,C%,t$,x% if variable("TSL_T")=0 then dim TSL_T if variable("TSL_S")=0 then dim TSL_S if variable("TSL_L")=0 then dim TSL_L Mx1% = Max(R%,V%) if Mx1% = R% : Mx% = Max(R%,B%) : else : Mx% = Max(V%,B%) : end_if Mn1% = Min(R%,V%) if Mn1% = R% : Mn% = Min(R%,B%) : else : Mn% = Min(V%,B%) : end_if C% = Mx%-Mn% if Mx% = R% if C%>0 : TSL_T = 60*mod(((V%-B%)/C%),6) : else : TSL_T = 60*mod((V%-B%),6) : end_if else if Mx% = V% if C%>0 : TSL_T = 60*(((B%-R%)/C%)+2) : else : TSL_T = 60*((B%-R%)+2) : end_if else if C%>0 : TSL_T = 60*(((R%-V%)/C%)+4) : else : TSL_T = 60*((R%-V%)+4) : end_if end_if end_if if C%>0 : TSL_S = 100*(C%/Mx%) : else : TSL_S = 0 : end_if t$=str$(frac(TSL_S))+"00" t$=left$(t$,2) if val(t$)>50 TSL_S=int(TSL_S)+1 : else : TSL_S=int(TSL_S) end_if if Mx%>0 : TSL_L = 100*(Mx%/255): else : TSL_L = 0 : end_if t$=str$(frac(TSL_L))+"00" t$=left$(t$,2) if val(t$)>50 TSL_L=int(TSL_L)+1 : else : TSL_L=int(TSL_L) end_if end_sub
sub TSLtoRGB(T,S,L) dim_local i,Mx,Mm,C,X
if variable("RGB_R%")=0 then dim RGB_R% if variable("RGB_G%")=0 then dim RGB_G% if variable("RGB_B%")=0 then dim RGB_B% Mx = L*255/100 Mm = (100-S)*L*(255/10000) C = Mx-Mm i = T/60 X = C*mod(i,2) if i<1 RGB_R% = int(C+Mm) RGB_G% = int(X+Mm) RGB_B% = int(Mm) else if i>0.99 and i<2 RGB_R% = int(X+Mm) RGB_G% = int(C+Mm) RGB_B% = int(Mm) else if i>1.99 and i<3 RGB_R% = int(Mm) RGB_G% = int(C+Mm) RGB_B% = int(X+Mm) else if i>2.99 and i<4 RGB_R% = int(Mm) RGB_G% = int(X+Mm) RGB_B% = int(C+Mm) else if i>3.99 and i<5 RGB_R% = int(X+Mm) RGB_G% = int(Mm) RGB_B% = int(C+Mm) else RGB_R% = int(C+Mm) RGB_G% = int(Mm) RGB_B% = int(X+Mm) end_if end_if end_if end_if end_if end_sub
DATA "FF8080","FFFF80","80FF80","00FF80","80FFFF","0080FF","FF80C0","FF80FF" DATA "FF0000","FFFF00","80FF00","00FF40","00FFFF","0080C0","8080C0","FF00FF" DATA "804040","FF8040","00FF00","008080","004080","8080FF","800040","FF0080" DATA "800000","FF8000","008000","008040","0000FF","0000A0","800080","8000FF" DATA "400000","804000","004000","004040","000080","000040","400040","400080" DATA "000000","808000","808040","808080","408080","C0C0C0","400040","FFFFFF" exemple de bizarrerie : | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Outils couleurs Dim 21 Mai 2017 - 18:01 | |
| As-tu le fichier palette.bmp STP ? Je ne l'ai pas trouvé sur ton Webdav.
Je n'ai qu'une version JPG que j'ai converti en BMP, d'où un manque de précision et l’impossibilité d'obtenir les valeurs extrêmes.
En attendant, je teste ta dernière version. | |
| | | Contenu sponsorisé
| Sujet: Re: Outils couleurs | |
| |
| | | | Outils couleurs | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |