Added palette constraint modes: Run the program with command-line option "/rgb <N>" to force RGB components have N levels instead of 256. Ex: /rgb 16 enforces a classic Amiga 4096 color palette, 64 is PC VGA, /rgb 3 is Amstrad CPC...)

Added missing messages for /wide and /tall command-line arguments.


git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@477 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Yves Rizoud
2009-01-13 23:48:33 +00:00
parent 0c245896c5
commit dc4abe6245
5 changed files with 87 additions and 32 deletions

View File

@@ -45,19 +45,31 @@ char * Libelle_reduction_palette[7]=
};
// Nombre de graduations pour une composante RGB
const int Graduations_RGB =256; // 24bit
//const int Graduations_RGB = 64; // VGA
//const int Graduations_RGB = 16; // Amiga
//const int Graduations_RGB = 3; // Amstrad CPC
int Graduations_RGB = 256; // 24bit
//int Graduations_RGB = 64; // VGA
//int Graduations_RGB = 16; // Amiga
//int Graduations_RGB = 4; // MSX2
//int Graduations_RGB = 3; // Amstrad CPC
// Nombre de graduations pour une composante dans le mode actuel
int Color_Count;
int Color_Count=256;
// Les composantes vont de 0 à (Color_Count-1)
int Color_Max;
int Color_Max=255;
// Le demi-pas est une quantité que l'on ajoute à une composante
// avant de faire un arrondi par division.
int Color_DemiPas;
int Color_DemiPas=0;
void Set_Palette_RGB_Scale(int Grad)
{
if (Grad>= 2 && Grad <= 256)
Graduations_RGB = Grad;
}
byte Palette_Scale_Component(byte Comp)
{
return ((Comp+128/Graduations_RGB)*(Graduations_RGB-1)/255*255+(Graduations_RGB&1?1:0))/(Graduations_RGB-1);
}
// Définir les unités pour les graduationss R G B ou H S V
void Unite_Composantes(int Count)
@@ -93,7 +105,7 @@ void Modifier_Rouge(byte Couleur, short Nouvelle_teinte, T_Palette Palette)
if (Nouvelle_teinte>255)
Nouvelle_teinte=255;
// Arrondi
Nouvelle_teinte=255*((Nouvelle_teinte+Color_DemiPas)*Color_Max/255)/Color_Max;
Nouvelle_teinte=Palette_Scale_Component(Nouvelle_teinte);
Palette[Couleur].R=Nouvelle_teinte;
Set_color(Couleur,Palette[Couleur].R,Palette[Couleur].V,Palette[Couleur].B);
@@ -107,7 +119,7 @@ void Modifier_Vert(byte Couleur, short Nouvelle_teinte, T_Palette Palette)
if (Nouvelle_teinte>255)
Nouvelle_teinte=255;
// Arrondi
Nouvelle_teinte=255*((Nouvelle_teinte+Color_DemiPas)*Color_Max/255)/Color_Max;
Nouvelle_teinte=Palette_Scale_Component(Nouvelle_teinte);
Palette[Couleur].V=Nouvelle_teinte;
Set_color(Couleur,Palette[Couleur].R,Palette[Couleur].V,Palette[Couleur].B);
@@ -121,7 +133,7 @@ void Modifier_Bleu(byte Couleur, short Nouvelle_teinte, T_Palette Palette)
if (Nouvelle_teinte>255)
Nouvelle_teinte=255;
// Arrondi
Nouvelle_teinte=255*((Nouvelle_teinte+Color_DemiPas)*Color_Max/255)/Color_Max;
Nouvelle_teinte=Palette_Scale_Component(Nouvelle_teinte);
Palette[Couleur].B=Nouvelle_teinte;
Set_color(Couleur,Palette[Couleur].R,Palette[Couleur].V,Palette[Couleur].B);