On all screens that display a palette, the grey columns are no longer "dead", you can

click them to pick the color to its right.
Added help text for HSL mode in Palette, and Grad rectangle
Fixed display of colored rectangles in Palette screen (issue 64)
Fixed more missing refreshes in the Palette screen
Fixed wrong shortcuts in Palette screen
Removed an obsolete message ("Sensibilite Souris") and dead code


git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@370 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Yves Rizoud 2008-12-04 21:44:59 +00:00
parent 7c658a6855
commit 09ba984aa6
10 changed files with 93 additions and 54 deletions

View File

@ -578,7 +578,7 @@ void Menu_Tag_couleurs(char * En_tete, byte * Table, byte * Mode, byte Cancel, c
if ( (Mouse_X!=Ancien_Mouse_X) || (Mouse_Y!=Ancien_Mouse_Y) || (Mouse_K!=Ancien_Mouse_K) )
{
Effacer_curseur();
Couleur_taggee=Lit_pixel(Mouse_X,Mouse_Y);
Couleur_taggee=(Bouton_clicke==1) ? Fenetre_Attribut2 : Lit_pixel(Mouse_X,Mouse_Y);
Table[Couleur_taggee]=(Mouse_K==A_GAUCHE);
Stencil_Tagger_couleur(Couleur_taggee,(Mouse_K==A_GAUCHE)?CM_Noir:CM_Clair);
Afficher_curseur();
@ -1901,7 +1901,7 @@ void Bouton_Degrades(void)
if ( (Mouse_X!=Ancien_Mouse_X) || (Mouse_Y!=Ancien_Mouse_Y) || (Mouse_K!=Ancien_Mouse_K) )
{
Effacer_curseur();
Couleur_temporaire=Lit_pixel(Mouse_X,Mouse_Y);
Couleur_temporaire=(Bouton_clicke==1) ? Fenetre_Attribut2 : Lit_pixel(Mouse_X,Mouse_Y);
if (!Ancien_Mouse_K)
{
@ -4777,7 +4777,7 @@ void Bouton_Spray_Menu(void)
Stencil_Tagger_couleur(Couleur_selectionnee,(Spray_Multi_flow[Couleur_selectionnee])?CM_Noir:CM_Clair);
// Mettre la couleur sélectionnée à jour suivant le click
Couleur_selectionnee=Lit_pixel(Mouse_X,Mouse_Y);
Couleur_selectionnee=(Bouton_clicke==1) ? Fenetre_Attribut2 : Lit_pixel(Mouse_X,Mouse_Y);
if (Mouse_K==2)
Spray_Multi_flow[Couleur_selectionnee]=0;
else

View File

@ -34,13 +34,6 @@
#include "clavier.h"
#include "sdlscreen.h"
// Gestion du mode texte de départ (pour pouvoir y retourner en cas de problème
byte Recuperer_nb_lignes(void)
{
puts("Recuperer_nb_lignes non implémenté!\n");
return 0;
}
word Palette_Compter_nb_couleurs_utilisees(dword* Tableau)
{
int Nombre_De_Pixels=0;
@ -147,7 +140,7 @@ void Effacer_image_courante(byte Couleur)
void Sensibilite_souris(__attribute__((unused)) word X,__attribute__((unused)) word Y)
{
puts("Sensibilite_souris non implémenté!");
}
void Get_input(void)

View File

@ -24,7 +24,6 @@ void Copier_image_dans_brosse(short Debut_X,short Debut_Y,short Brosse_Largeur,s
void Permuter_dans_l_image_les_couleurs(byte Couleur_1,byte Couleur_2);
void Remap_general_LOWLEVEL(byte * Table_conv,byte * Buffer,short Largeur,short Hauteur,short Largeur_buffer);
void Scroll_picture(short Decalage_X,short Decalage_Y);
byte Recuperer_nb_lignes(void);
void Set_mouse_video_mode_number(void);
void Get_input(void);
void Set_mouse_position(void);

View File

@ -357,6 +357,9 @@ GLOBAL struct Fenetre_Bouton_special * Pile_Fenetre_Liste_boutons_special[8];
GLOBAL int Pile_Fenetre_Attribut1[8];
#define Fenetre_Attribut1 Pile_Fenetre_Attribut1[Fenetre-1]
// Cette variable sert à stocker 2 informations:
// - Sur le click d'un scroller, la position active (0-n)
// - Sur le click d'une palette, le numero de couleur (0-255).
GLOBAL int Pile_Fenetre_Attribut2[8];
#define Fenetre_Attribut2 Pile_Fenetre_Attribut2[Fenetre-1]

38
graph.c
View File

@ -313,8 +313,8 @@ void Afficher_palette_du_menu_en_evitant_la_fenetre(byte * Table)
word Fin_X,Fin_Y;
word Largeur;
word Hauteur;
word Coin_X=Fenetre_Pos_X+Fenetre_Largeur; // |_ Coin bas-droit
word Coin_Y=Fenetre_Pos_Y+Fenetre_Hauteur; // | de la fenêtre +1
word Coin_X=Fenetre_Pos_X+Fenetre_Largeur*Menu_Facteur_X; // |_ Coin bas-droit
word Coin_Y=Fenetre_Pos_Y+Fenetre_Hauteur*Menu_Facteur_Y; // | de la fenêtre +1
if (Config.Couleurs_separees)
@ -390,10 +390,25 @@ void Afficher_palette_du_menu_en_evitant_la_fenetre(byte * Table)
}
}
}
{
// Affichage du bloc directement dans le "buffer de fond" de la fenetre.
// Cela permet au bloc de couleur d'apparaitre si on déplace la fenetre.
short Pos_X;
short Pos_Y;
short Deb_X; // besoin d'une variable signée
short Deb_Y; // besoin d'une variable signée
// Attention aux unités
Deb_X = ((short)Debut_X - (short)Fenetre_Pos_X);
Deb_Y = ((short)Debut_Y - (short)Fenetre_Pos_Y);
for (Pos_Y=Deb_Y;Pos_Y<(Deb_Y+Hauteur)&&Pos_Y<Fenetre_Hauteur*Menu_Facteur_Y;Pos_Y++)
for (Pos_X=Deb_X;Pos_X<(Deb_X+Largeur)&&Pos_X<Fenetre_Largeur*Menu_Facteur_X;Pos_X++)
if (Pos_X>=0&&Pos_Y>=0)
Pixel_fond(Pos_X,Pos_Y,Vraie_couleur);
}
}
}
UpdateRect((LARGEUR_MENU+1)*Menu_Facteur_X,Menu_Ordonnee,Largeur,Hauteur);
// UpdateRect(LARGEUR_MENU*Menu_Facteur_X,Menu_Ordonnee,Largeur_ecran-(LARGEUR_MENU*Menu_Facteur_X),(HAUTEUR_MENU-9)*Menu_Facteur_Y);
UpdateRect(LARGEUR_MENU*Menu_Facteur_X,Menu_Ordonnee_avant_fenetre,Largeur_ecran-(LARGEUR_MENU*Menu_Facteur_X),(HAUTEUR_MENU-9)*Menu_Facteur_Y);
}
@ -429,17 +444,16 @@ void Remapper_ecran_apres_changement_couleurs_menu(void)
Remap_screen(0, Menu_Ordonnee_avant_fenetre,
Largeur_ecran, Hauteur_ecran-Menu_Ordonnee_avant_fenetre,
Table_de_conversion);
// Remappage de la partie du fond de la fenetre qui cacherait le menu...
Remappe_fond_fenetres(Table_de_conversion, Menu_Ordonnee_avant_fenetre, Hauteur_ecran);
/*
Il faudrait peut-être remapper les pointillés délimitant l'image.
Mais ça va être chiant parce qu'ils peuvent être affichés en mode Loupe.
Mais de toutes façons, c'est franchement facultatif...
*/
// On passe la table juste pour ne rafficher que les couleurs modifiées
Afficher_palette_du_menu_en_evitant_la_fenetre(Table_de_conversion);
}
/*
Il faudrait peut-être remapper les pointillés délimitant l'image.
Mais ça va être chiant parce qu'ils peuvent être affichés en mode Loupe.
Mais de toutes façons, c'est franchement facultatif...
*/
// Remappage de la partie du fond de la fenetre qui cacherait le menu...
if (Menu_visible_avant_fenetre)
Remappe_fond_fenetres(Table_de_conversion, Menu_Ordonnee_avant_fenetre, Hauteur_ecran);
}
}

View File

@ -151,6 +151,11 @@ void Restaure_fond(byte *Buffer, int Pos_X, int Pos_Y, int Largeur, int Hauteur)
Afficher_ligne(Pos_X,Pos_Y+Indice,Largeur*Menu_Facteur_X,Buffer+((int)Indice*Largeur*Menu_Facteur_Y));
free(Buffer);
}
// Ecrit un pixel dans un fond de fenêtre
void Pixel_fond(int Pos_X, int Pos_Y, byte Couleur)
{
(Fond_fenetre[0][Pos_X+Pos_Y*Fenetre_Largeur*Menu_Facteur_X])=Couleur;
}
@ -1477,29 +1482,33 @@ short Attendre_click_dans_palette(struct Fenetre_Bouton_palette * Enreg)
{
Get_input();
if ( (Mouse_K==A_GAUCHE) &&
(
(
(Fenetre_click_dans_zone(Debut_X,Debut_Y,Fin_X,Fin_Y)) &&
( ( ((Mouse_X-Fenetre_Pos_X)/Menu_Facteur_X)-Enreg->Pos_X-1) % 10 >= 5 )
)
||
(
(Mouse_X<Fenetre_Pos_X) || (Mouse_Y<Fenetre_Pos_Y) ||
(Mouse_X>=Fenetre_Pos_X+(Fenetre_Largeur*Menu_Facteur_X)) ||
(Mouse_Y>=Fenetre_Pos_Y+(Fenetre_Hauteur*Menu_Facteur_Y))
)
)
)
if (Mouse_K==A_GAUCHE)
{
Attendre_fin_de_click();
Effacer_curseur();
Couleur_choisie=Lit_pixel(Mouse_X,Mouse_Y);
Forme_curseur=FORME_CURSEUR_FLECHE;
Cacher_curseur=Ancien_Cacher_curseur;
Loupe_Mode=Ancien_Loupe_Mode;
Afficher_curseur();
return Couleur_choisie;
if (Fenetre_click_dans_zone(Debut_X,Debut_Y,Fin_X,Fin_Y))
{
Attendre_fin_de_click();
Effacer_curseur();
Couleur_choisie=(((Mouse_X-Fenetre_Pos_X)/Menu_Facteur_X)-(Enreg->Pos_X+2)) / 10 * 16 +
(((Mouse_Y-Fenetre_Pos_Y)/Menu_Facteur_Y)-(Enreg->Pos_Y+3)) / 5;
Forme_curseur=FORME_CURSEUR_FLECHE;
Cacher_curseur=Ancien_Cacher_curseur;
Loupe_Mode=Ancien_Loupe_Mode;
Afficher_curseur();
return Couleur_choisie;
}
if ((Mouse_X<Fenetre_Pos_X) || (Mouse_Y<Fenetre_Pos_Y) ||
(Mouse_X>=Fenetre_Pos_X+(Fenetre_Largeur*Menu_Facteur_X)) ||
(Mouse_Y>=Fenetre_Pos_Y+(Fenetre_Hauteur*Menu_Facteur_Y)) )
{
Attendre_fin_de_click();
Effacer_curseur();
Couleur_choisie=Lit_pixel(Mouse_X,Mouse_Y);
Forme_curseur=FORME_CURSEUR_FLECHE;
Cacher_curseur=Ancien_Cacher_curseur;
Loupe_Mode=Ancien_Loupe_Mode;
Afficher_curseur();
return Couleur_choisie;
}
}
if ((Mouse_K==A_DROITE) || (Touche==SDLK_ESCAPE))
@ -1774,7 +1783,9 @@ short Fenetre_Numero_bouton_clicke(void)
{
if (Fenetre_click_dans_zone(Temp2->Pos_X+5,Temp2->Pos_Y+3,Temp2->Pos_X+160,Temp2->Pos_Y+82))
{
if ( (((Mouse_X-Fenetre_Pos_X)/Menu_Facteur_X)-(Temp2->Pos_X+1)) % 10 >= 5 )
// On stocke dans Attribut2 le numero de couleur cliqué
Fenetre_Attribut2 = (((Mouse_X-Fenetre_Pos_X)/Menu_Facteur_X)-(Temp2->Pos_X+2)) / 10 * 16 +
(((Mouse_Y-Fenetre_Pos_Y)/Menu_Facteur_Y)-(Temp2->Pos_Y+3)) / 5;
return Temp2->Numero;
}
}

View File

@ -67,3 +67,4 @@ short Fenetre_Bouton_clicke(void);
int Numero_bouton_sous_souris(void);
short Fenetre_Numero_bouton_clicke(void);
void Remappe_fond_fenetres(byte * Table_de_conversion, int Min_Y, int Max_Y);
void Pixel_fond(int Pos_X, int Pos_Y, byte Couleur);

View File

@ -794,6 +794,7 @@ void Bouton_Palette(void)
Block(Fenetre_Pos_X+(Menu_Facteur_X*206),Fenetre_Pos_Y+(Menu_Facteur_Y*141),Menu_Facteur_X*17,Menu_Facteur_Y,CM_Fonce);
Block(Fenetre_Pos_X+(Menu_Facteur_X*233),Fenetre_Pos_Y+(Menu_Facteur_Y*141),Menu_Facteur_X*17,Menu_Facteur_Y,CM_Fonce);
// Jauges de couleur
Palette_mode_RGB=1;
Fenetre_Definir_bouton_scroller(182, 81, 88,Color_Count,1,Color_Max-Palette_de_travail[Fore_color].R*Color_Max/255);// 2
Jauge_rouge=Fenetre_Liste_boutons_scroller;
Fenetre_Definir_bouton_scroller(209, 81, 88,Color_Count,1,Color_Max-Palette_de_travail[Fore_color].V*Color_Max/255);// 3
@ -855,8 +856,8 @@ void Bouton_Palette(void)
Fenetre_Definir_bouton_saisie(263,39,3); // 23
Fenetre_Definir_bouton_normal(96,32,29,14,"HSL" ,1,1,SDLK_n); // 24
Fenetre_Definir_bouton_normal(96,47,29,14,"Srt" ,1,1,SDLK_o); // 25
Fenetre_Definir_bouton_normal(96,32,29,14,"HSL" ,1,1,SDLK_h); // 24
Fenetre_Definir_bouton_normal(96,47,29,14,"Srt" ,1,1,SDLK_s); // 25
// Affichage du facteur de réduction de la palette
Num2str(Reduce_Nb_couleurs,Chaine,3);
Print_dans_fenetre(265,41,Chaine,CM_Noir,CM_Clair);
@ -890,7 +891,7 @@ void Bouton_Palette(void)
if ( (Mouse_X!=Ancien_Mouse_X) || (Mouse_Y!=Ancien_Mouse_Y) || (Mouse_K!=Ancien_Mouse_K) )
{
Effacer_curseur();
Couleur_temporaire=Lit_pixel(Mouse_X,Mouse_Y);
Couleur_temporaire=(Bouton_clicke==1) ? Fenetre_Attribut2 : Lit_pixel(Mouse_X,Mouse_Y);
if (Mouse_K==A_DROITE)
{
if (Back_color!=Couleur_temporaire)

View File

@ -544,7 +544,7 @@ int Menu_Shade(void)
if ( (Mouse_X!=Ancien_Mouse_X) || (Mouse_Y!=Ancien_Mouse_Y) || (Mouse_K!=Ancien_Mouse_K) )
{
Effacer_curseur();
Couleur_temporaire=Lit_pixel(Mouse_X,Mouse_Y);
Couleur_temporaire=(Bouton_clicke==1) ? Fenetre_Attribut2 : Lit_pixel(Mouse_X,Mouse_Y);
if (!Ancien_Mouse_K)
{ // On vient de clicker

View File

@ -991,7 +991,18 @@ static const T_TABLEAIDE TableAideGradRect[] =
AIDE_TITRE("GRAD RECTANGLE")
AIDE_TEXTE("")
AIDE_LIEN ("(Key:%s)",0x100+BOUTON_GRADRECT)
AIDE_TEXTE(" *** Not implemented yet ***")
AIDE_TEXTE("")
AIDE_TEXTE("Selects the rectangle with gradations as")
AIDE_TEXTE("the active drawing tool.")
AIDE_TEXTE("")
AIDE_TEXTE("Set a corner of a rectangle. Maintain the")
AIDE_TEXTE("click to move the opposite corner and")
AIDE_TEXTE("release the mouse button to set it")
AIDE_TEXTE("definitively.")
AIDE_TEXTE("Then click and hold the mouse in a point you")
AIDE_TEXTE("want to have the starting color, drag to a")
AIDE_TEXTE("point where you want the ending color, and")
AIDE_TEXTE("release the button.")
};
static const T_TABLEAIDE TableAideGradMenu[] =
{
@ -2126,6 +2137,12 @@ static const T_TABLEAIDE TableAidePalette[] =
AIDE_TEXTE("copies of the current selection. (The")
AIDE_TEXTE("keyboard shortcut for this button is <Del>).")
AIDE_TEXTE("")
AIDE_TEXTE("- HSL: Switches between RGB and HSL color")
AIDE_TEXTE("spaces. In HSL mode, the three sliders")
AIDE_TEXTE("allow you to set the Hue (tint), Saturation")
AIDE_TEXTE("(from grayscale to pure color) and")
AIDE_TEXTE("Lightness (from black to white).")
AIDE_TEXTE("")
AIDE_TEXTE("- Reduce: Allows you to reduce the palette")
AIDE_TEXTE("to the number of colors you want (and")
AIDE_TEXTE("modifies the picture).")