Procedure ChangerModeCompressionRle(
LireModeCompression : Nul Ou Fonction(ModeCompresse : Booleen Sortie, Modele : Entier Sortie) Retourner Entier=Nul,
EncoderCompresse : Nul Ou Fonction(Modele : Entier, NbRepetitions : Entier) Retourner Binaire=Nul,
EncoderDecompresse : Nul Ou Fonction(NbOccurrences : Entier) Retourner Binaire=Nul,
LireNbOccurrencesMax : Nul Ou Fonction(ModeCompresse : Booleen, Modele : Entier) Retourner Entier=Nul);
L'appel à la méthode Vider est automatique pour vider le résidu d'octets non compressé.
Pour plus de précisions sur cette méthode, merci de se référer à Description de méthode de compression Rle.
Variable
/******/
F : Nul Ou Flux;
/****************************************************************/
Fonction LireModeCompression(ModeCompresse : Booleen Sortie, Modele : Entier Sortie) Retourner Entier
/* Objet : Lit le mode de compression Rle. */
/****************************************************************/
Variable
/******/
B : Binaire;
Octet : Entier;
Debut
F.Lire(B,1);
O=B[0];
Si (Code&0x80)==0 Alors
ModeCompresse=Faux;
Retourner Code&0x7F;
SinonSi (Code&,0xC0)==0x80 Alors
ModeCompresse=Vrai;
F.Lire(B,1);
Modele=B[0];
Retourner Code&0x3F;
Sinon
ModeCompresse=Vrai;
Modele=0;
Retourner Code&0x3F;
Fin Fonction
/****************************************************************/
Fonction EncoderCompresse(Modele : Entier, NbRepetitions : Entier) Retourner Binaire
/* Objet : Encode la compression Rle. */
/****************************************************************/
Debut
Si Modele!=0 Alors
Retourner Binaire(0x80+NbRepetitions)+Binaire(Modele);
Sinon
Retourner Binaire(0xC0+NbRepetitions);
Fin Fonction
/****************************************************************/
Fonction EncoderDecompresse(NbOccurrences : Entier) Retourner Binaire
/* Objet : Encode la non-compression Rle. */
/****************************************************************/
Debut
Retourner Binaire(NbOccurrences);
Fin Fonction
/****************************************************************/
Fonction LireNbOccurrencesMax(ModeCompresse : Booleen, Modele : Entier) Retourner Entier
/* Objet : Lit le nombre maximal d'occurrences. */
/****************************************************************/
Debut
Si ModeCompresse Alors
Retourner 0x3F;
Sinon
Retourner 0x7F;
Fin Fonction
Principal
/*******/
Variable
F1 : FluxCompresse;
Debut
...
F1.ChangerModeCompressionRle(LireModeCompression, EncoderCompresse, EncoderDecompresse, LireNbOccurrencesMax);
...
F1.ChangerModeCompressionAucun();
...
Fin Principal
- | - | - | - | - | - | - | - | - |