Fixes the missing color remapping of windows background (and status bar) when palette remapping occurs.

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@257 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Yves Rizoud 2008-10-14 22:46:51 +00:00
parent 584c4696c1
commit 9fb162e748
4 changed files with 33 additions and 5 deletions

View File

@ -364,7 +364,9 @@ void Remapper_ecran_apres_changement_couleurs_menu(void)
Mais ça va être chiant parce qu'ils peuvent être affichés en mode Loupe. Mais ça va être chiant parce qu'ils peuvent être affichés en mode Loupe.
Mais de toutes façons, c'est franchement facultatif... Mais de toutes façons, c'est franchement facultatif...
*/ */
Remappe_fond_fenetres(Table_de_conversion);
} }
} }

View File

@ -1947,8 +1947,31 @@ short Fenetre_Bouton_clicke(void)
return 0; return 0;
} }
//int Moteur_Dernier_bouton_clicke; //int Moteur_Dernier_bouton_clicke;
//int Moteur_Type_dernier_bouton_clicke; //int Moteur_Type_dernier_bouton_clicke;
// Fonction qui sert à remapper les parties sauvegardées derriere les
// fenetres ouvertes. C'est utilisé par exemple par la fenetre de palette
// Qui remappe des couleurs, afin de propager les changements.
void Remappe_fond_fenetres(byte * Table_de_conversion)
{
int Indice_fenetre;
byte* EDI;
int dx,cx;
for (Indice_fenetre=0; Indice_fenetre<Fenetre; Indice_fenetre++)
{
EDI = Fond_fenetre[Indice_fenetre];
// Pour chaque ligne
for(dx=Pile_Fenetre_Hauteur[Indice_fenetre];dx>0;dx--)
{
// Pour chaque pixel
for(cx=Pile_Fenetre_Largeur[Indice_fenetre];cx>0;cx--)
{
*EDI = Table_de_conversion[*EDI];
EDI ++;
}
}
}
}

View File

@ -65,3 +65,4 @@ void Recuperer_couleur_derriere_fenetre(byte * Couleur, byte * Click);
short Fenetre_Bouton_clicke(void); short Fenetre_Bouton_clicke(void);
int Numero_bouton_sous_souris(void); int Numero_bouton_sous_souris(void);
short Fenetre_Numero_bouton_clicke(void); short Fenetre_Numero_bouton_clicke(void);
void Remappe_fond_fenetres(byte * Table_de_conversion);

View File

@ -199,10 +199,11 @@ void Remap_image_HIGH(byte * Table_de_conversion)
(Principal_Split+(LARGEUR_BARRE_SPLIT*Menu_Facteur_X)), (Principal_Split+(LARGEUR_BARRE_SPLIT*Menu_Facteur_X)),
Menu_Ordonnee_avant_fenetre,Table_de_conversion); Menu_Ordonnee_avant_fenetre,Table_de_conversion);
} }
// Remappe tous les fonds de fenetre (qui doivent contenir un bout d'écran)
Remappe_fond_fenetres(Table_de_conversion);
} }
void Swap(int X_Swap,short Debut_Bloc_1,short Debut_Bloc_2,short Taille_du_bloc,T_Palette Palette, dword * Utilisation_couleur) void Swap(int X_Swap,short Debut_Bloc_1,short Debut_Bloc_2,short Taille_du_bloc,T_Palette Palette, dword * Utilisation_couleur)
{ {
short Pos_1; short Pos_1;
@ -314,7 +315,9 @@ void Swap(int X_Swap,short Debut_Bloc_1,short Debut_Bloc_2,short Taille_du_bloc,
Set_palette(Palette); Set_palette(Palette);
if (X_Swap) if (X_Swap)
{
Remap_image_HIGH(Table_de_conversion); Remap_image_HIGH(Table_de_conversion);
}
} }
@ -381,7 +384,6 @@ void Remettre_proprement_les_couleurs_du_menu(dword * Utilisation_couleur)
// On fait un changement des couleurs visibles à l'écran et dans l'image // On fait un changement des couleurs visibles à l'écran et dans l'image
Remap_image_HIGH(Table_de_remplacement); Remap_image_HIGH(Table_de_remplacement);
Afficher_curseur(); Afficher_curseur();
} }