/***************************************************************/
Type ImageUpsPct Implemente IImage Defaut TailleSegment 2 ConserverObjets
/* Objet : Definition d'une image Up ! Piture. 					  */
/***************************************************************/
/*-------------------------------------------------------------*/
/* Heritage des proprietes d'Objet.  */
/*-------------------------------------------------------------*/
Prive :
	
	EstInstanceDe : Type Lecture Public;
/*-------------------------------------------------------------*/
/* Heritage des proprietes d'IImage.  */
/*-------------------------------------------------------------*/
Prive :
	
   NomFichierImage : Nul Ou Caractere Virtuel Lecture Public;
	
   Contexte : Nul Ou ContexteGraphique Virtuel Lecture Public;
	
   FormatImage : FormatsImageSupportes Virtuel Lecture Public;
	
   Resolution : Entier Virtuel Lecture Public;
	
   Largeur : Reel Virtuel Lecture Public;
	
   Hauteur : Reel Virtuel Lecture Public;
	
   LargeurPixels : Entier Virtuel Lecture Public;
	
   HauteurPixels : Entier Virtuel Lecture Public;
	
   NbBitsParPixel : Entier Virtuel Lecture Public;
	
   NbImagesPhysiques : Entier Virtuel Lecture Public;
	
   Taille : Entier Virtuel Lecture Public;
Public :
	
   Frequence : Entier Virtuel;
	
   Entrelacer : Booleen Virtuel;
	
   Commentaire : Nul Ou Caractere Virtuel;
	
   NomArtiste : Nul Ou Caractere Virtuel;
	
   Copyright : Nul Ou Caractere Virtuel;
	
   NomApplication : Nul Ou Caractere Virtuel;
	
   VersionApplication : Nul Ou Caractere Virtuel;
	
   CouleurFond : Nul Ou Couleur Virtuel;
	
   CouleurTransparente : Nul Ou Couleur Virtuel;
	
   FinSequence : FinSequenceImage Virtuel;
/*-------------------------------------------------------------*/
/* Heritage des methodes d'Objet.    					      */
/*-------------------------------------------------------------*/
Public :
	
	Fonction Optimiser(Invariant) Identique(O : Nul Ou Objet) Retourner Nul Ou Booleen;
	
	Procedure Convertir(O : Nul Ou Objet);
	
	Fonction Optimiser(Invariant) CreeParLeServeur() Retourner Entier;
	
	Fonction Optimiser(Invariant) CreeParLeProcessus() Retourner Entier;
	
	Fonction Optimiser(Invariant) CreeDansLEntrepot() Retourner Entrepot;
	
	Fonction Cloner(EntrepotCible : Nul Ou Entrepot=Nul, Profondeur : ModeClonage = ClonageObjetSeul) Retourner Nul Ou Objet;
	
	Fonction LirePropriete(NomPropriete : Caractere) Retourner Nul Ou Objet;
	
	Procedure EcrirePropriete(NomPropriete : Caractere, Valeur : Nul Ou Objet);
	
	Fonction IncrementerDecrementerPropriete(NomPropriete : Nul Ou Caractere, Incrementer : Booleen, Prefixe : Booleen) Retourner Nul Ou Objet;
	
	Procedure SupprimerPropriete(NomPropriete : Caractere);
	
	Fonction Optimiser(Invariant) EnumererProprietes(NumeroPropriete : Entier, TypePropriete : Nul Ou Type=? Sortie, PeutEtreNul : Booleen=? Sortie, Aide : Nul Ou Caractere=? Sortie, NomEnumere : Nul Ou Caractere=? Sortie) Retourner Nul Ou Caractere;
	
	Fonction Optimiser(Invariant) Adresse() Retourner Nul Ou Caractere;
Prive :
	
	Fonction Exporter(E : Nul Ou IEchangeElementaire) Retourner Boolean;
	
	Fonction Importer(E : Nul Ou IEchangeElementaire, EntrepotCible : Nul Ou Entrepot=Nul, EstFiltre : Booleen=Faux, V : Entier=0, R : Entier=0, C : Entier=0) Retourner Nul Ou Objet;
/*-------------------------------------------------------------*/
/* Heritage des methodes d'IImage.    					      */
/*-------------------------------------------------------------*/
Public :
	
   Procedure Enregistrer();
	
   Procedure Enregistrer(Flux : Nul Ou IFlux);
	
   Procedure Enregistrer(NomFichier : Nul Ou Caractere);
	
   Procedure AjouterImagePhysique();
	
   Procedure SelectionnerImagePhysique(Numero : Entier);
	
   Procedure SupprimerImagePhysique();
	
   Fonction Optimiser(NulAbsorbant) RemplacerCouleur(AncienneCouleur : Nul Ou Couleur, NouvelleCouleur : Nul Ou Couleur, C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage; 
	
   Fonction EquilibrerCouleursRGB(DeltaRouge : Entier, DeltaVert : Entier, DeltaBleu : Entier, BalanceDemandee : BalanceCouleurs, 
      C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
	
   Fonction EquilibrerCouleursYCbCr(DeltaCb : Entier, DeltaCr : Entier, BalanceDemandee : BalanceCouleurs, 
      C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
	
   Fonction EquilibrerCouleursCMJ(DeltaCyan : Entier, DeltaMagenta : Entier, DeltaJaune : Entier, BalanceDemandee : BalanceCouleurs, 
      C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
	
   Fonction EquilibrerCouleursCMJN(DeltaCyan : Entier, DeltaMagenta : Entier, DeltaJaune : Entier, BalanceDemandee : BalanceCouleurs, 
      C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
	
   Fonction EquilibrerCouleursTSL(DeltaTeinte : Entier, DeltaSaturation : Entier, BalanceDemandee : BalanceCouleurs, 
      C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
		
   Fonction TronquerCouleursRGB(RougeMin : Entier, RougeMax : Entier, VertMin : Entier, VertMax : Entier, BleuMin : Entier, BleuMax : Entier, 
      C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
		
   Fonction TronquerCouleursYCbCr(CbMin : Entier, CbMax : Entier, CrMin : Entier, CrMax : Entier, 
      C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
		
   Fonction TronquerCouleursCMJ(CyanMin : Entier, CyanMax : Entier, MagentaMin : Entier, MagentaMax : Entier, JauneMin : Entier, JauneMax : Entier, 
      C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
		
   Fonction TronquerCouleursCMJN(CyanMin : Entier, CyanMax : Entier, MagentaMin : Entier, MagentaMax : Entier, JauneMin : Entier, JauneMax : Entier, 
      C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
		
   Fonction TronquerCouleursTSL(SaturationMin : Entier, SaturationMax : Entier, LuminositeMin : Entier, LuminositeMax : Entier, 
      C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
		
   Fonction EquilibrerSaturationEtLuminosite(DeltaSaturation : Entier, DeltaLuminosite : Entier, BalanceDemandee : BalanceCouleurs, 
      C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
	
   Fonction TronquerSaturationEtLuminosite(SaturationMin : Entier, SaturationMax : Entier, LuminositeMin : Entier, LuminositeMax : Entier,
      C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
	
   Fonction FiltrerCouleursRGB(FiltrerRouge : Booleen, FiltrerVert : Booleen, FiltrerBleu : Booleen, C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) 
      Retourner Nul Ou IImage;
	
   Fonction FiltrerCouleursYCbCr(FiltrerCb : Booleen, FiltrerCr : Booleen, C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) 
      Retourner Nul Ou IImage;
	
   Fonction FiltrerCouleursCMJ(FiltrerCyan : Booleen, FiltrerMagenta : Booleen, FiltrerJaune : Booleen, C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) 
      Retourner Nul Ou IImage;
	
   Fonction FiltrerCouleursCMJN(FiltrerCyan : Booleen, FiltrerMagenta : Booleen, FiltrerJaune : Booleen, C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) 
      Retourner Nul Ou IImage;
	
   Fonction FiltrerCouleursTSL(FiltrerTeinte : Booleen, FiltrerSaturation : Booleen, C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) 
      Retourner Nul Ou IImage;
		
   Fonction InverserCouleursRGB(InverserRouge : Booleen, InverserVert : Booleen, InverserBleu : Booleen, C : Booleen=Faux, 
      M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
		
   Fonction InverserCouleursYCbCr(InverserCb : Booleen, InverserCr : Booleen, C : Booleen=Faux, 
      M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
		
   Fonction InverserCouleursCMJ(InverserCyan : Booleen, InverserMagenta : Booleen, InverserJaune : Booleen, C : Booleen=Faux, 
      M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
		
   Fonction InverserCouleursCMJN(InverserCyan : Booleen, InverserMagenta : Booleen, InverserJaune : Booleen, C : Booleen=Faux, 
      M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
		
   Fonction InverserCouleursTSL(InverserTeinte : Booleen, InverserSaturation : Booleen, C : Booleen=Faux, 
      M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
		
   Fonction InverserSaturationEtLuminosite(InverserSaturation : Booleen, InverserLuminosite : Booleen, C : Booleen=Faux, 
      R : Nul Ou Rectangle=Nul) Retourner Nul Ou IImage;
		
		Fonction Optimiser(NulAbsorbant) Effacer(C : Nul Ou Couleur, C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
	
   Fonction ChangerCouleurPaletteRGB(IndexCouleur : Entier, Rouge : Entier, Vert : Entier, Bleu : Entier, C : Booleen=Faux) 
      Retourner Nul Ou IImage;
	
   Fonction ChangerCouleurPaletteYCbCr(IndexCouleur : Entier, Y : Entier, Cb : Entier, Cr : Entier, C : Booleen=Faux) 
      Retourner Nul Ou IImage;
	
   Fonction ChangerCouleurPaletteCMJ(IndexCouleur : Entier, Cyan : Entier, Magenta : Entier, Jaune : Entier, C : Booleen=Faux) 
      Retourner Nul Ou IImage;
	
   Fonction ChangerCouleurPaletteCMJN(IndexCouleur : Entier, Cyan : Entier, Magenta : Entier, Jaune : Entier, C : Booleen=Faux) 
      Retourner Nul Ou IImage;
	
   Fonction ChangerCouleurPaletteTSL(IndexCouleur : Entier, Teinte : Entier, Saturation : Entier, Luminosite : Entier, C : Booleen=Faux) 
      Retourner Nul Ou IImage;
		
   Fonction Optimiser(NulAbsorbant) ChangerPalette(TableCouleurs : Nul Ou TableauDe Nul Ou Couleur, EffacerResiduPalette : Booleen, C : Booleen=Faux) 
      Retourner Nul Ou IImage;
	
   Fonction ChangerSortePalette(NouvelleSorte : SortePalette) Retourner Nul Ou IImage;
	
   Fonction AgrandirOuRetrecir(L : Entier, H : Entier, C : Booleen=Faux) Retourner Nul Ou IImage; 
	
   Fonction Optimiser(NulAbsorbant) Retailler(L : Entier, H : Entier, P : Nul Ou Point, CouleurTrou : Nul Ou Couleur, C : Booleen=Faux) Retourner Nul Ou IImage;
	
   Fonction ChangerResolution(NouvelleResolution : Entier, ConserverTailleImage : Booleen) Retourner Nul Ou IImage;
	
   Procedure Optimiser(NulAbsorbant) Copier(MSource : Nul Ou MasqueDessin, Destination : Nul Ou IImage, Mode : ModeCopie=CopieSansTransparent, PourcentMixage : Entier=0);
	
   Procedure Optimiser(NulAbsorbant) Copier(MSource : Nul Ou MasqueDessin, Destination : Nul Ou ContexteGraphique);
	
   Procedure Optimiser(NulAbsorbant) Coller(Destination : Nul Ou IImage, MDestination : Nul Ou MasqueDessin, Mode : ModeCopie=CopieSansTransparent, PourcentMixage : Entier=0);
	
   Procedure Optimiser(NulAbsorbant) Coller(Destination : Nul Ou ContexteGraphique, MDestination : Nul Ou MasqueDessin);
	
   Fonction RendreFloue(C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
	
   Fonction RendreNette(C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
	
   Fonction AppliquerSymetrieHorizontale(C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
	
   Fonction AppliquerSymetrieVerticale(C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
	
   Fonction Optimiser(NulAbsorbant) AppliquerRotation(Centre : Nul Ou Point, Angle : Reel, CouleurTrou : Nul Ou Couleur, C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) 
      Retourner Nul Ou IImage;
	
   Fonction Optimiser(NulAbsorbant) AppliquerTranslation(VecteurX : Entier, VecteurY : Entier, CouleurTrou : Nul Ou Couleur, C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) 
      Retourner Nul Ou IImage;
	
   Fonction Optimiser(NulAbsorbant) AppliquerHomothetie(Centre : Nul Ou Point, CoefficientX : Reel, CoefficientY : Reel, CouleurTrou : Nul Ou Couleur, 
      C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
	
   Fonction Optimiser(NulAbsorbant) Projeter(TablePoints : Nul Ou TableauDe Nul Ou Point, CouleurTrou : Nul Ou Couleur, C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) 
      Retourner Nul Ou IImage;
	
   Operateur Optimiser(Invariant) [](X : Nul Ou Entier, Y : Nul Ou Entier) Retourner Nul Ou Couleur;
	
   Operateur [](X : Nul Ou Entier, Y : Nul Ou Entier, C : Nul Ou Couleur, MethodeAComposer : Nul Ou Fonction(C1 : Nul Ou Couleur, C2 : Nul Ou Couleur) Retourner Nul Ou Couleur);
	
   Procedure Appliquer(Traitement : Nul Ou Procedure (X : Entier, Y : Entier, C : Nul Ou Couleur), M : Nul Ou MasqueDessin=Nul);
	
   Procedure Appliquer(Traitement : Nul Ou Procedure (X : Entier, Y : Entier, C1 : Nul Ou Couleur, C2 : Nul Ou Couleur), I : Nul Ou IImage, 
      M : Nul Ou MasqueDessin=Nul);
	
   Fonction Optimiser(NulAbsorbant) Appliquer(Traitement : Nul Ou Fonction (X : Entier, Y : Entier, C : Nul Ou Couleur) Retourner Nul Ou Couleur, 
      C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
	
   Fonction Optimiser(NulAbsorbant) Appliquer(Traitement : Nul Ou Fonction (X : Entier, Y : Entier, C1 : Nul Ou Couleur, C2 : Nul Ou Couleur) 
      Retourner Nul Ou Couleur, I : Nul Ou IImage, C : Booleen=Faux, M : Nul Ou MasqueDessin=Nul) Retourner Nul Ou IImage;
	
   Fonction VersImage(F : FormatsImageSupportes,  C : Booleen=Faux) Retourner Nul Ou IImage;
/*-------------------------------------------------------------*/
/* Methodes propres.                                           */
/*-------------------------------------------------------------*/
Public :
	
   Constructeur Optimiser(NulAbsorbant) (NomFichier : Nul Ou Caractere);
	
   Constructeur Optimiser(NulAbsorbant) (Flux : Nul Ou IFlux);
	
   Constructeur Optimiser(NulAbsorbant) (L : Nul Ou Reel, UL : SousMetriquesSupportees, H : Nul Ou Entier, UH : SousMetriquesSupportees, SP : SortePalette=PaletteCouleursVraies, R : Nul Ou Entier=72);
	
   Operateur Optimiser(Invariant, NulAbsorbant) ==(I : Nul Ou ImageUpsPct) Retourner Nul Ou Booleen;
	
   Operateur Optimiser(Invariant, NulAbsorbant) !=(I : Nul Ou ImageUpsPct) Retourner Nul Ou Booleen;
Prive :
	
   Destructeur(MettreEnAnteMemoire : Booleen) Retourner Booleen;
Fin Type
Le type ImageUpsPct modélise une image vectorielle format Up ! 5GL for Up ! Picture.
Ce type d'image est utilisé pour définir les pinceaux et les motifs personnalisés.
Le type ImageUpsPct possède trois constructeurs explicites :
Principal
/*******/
Variable
/******/
	I1 : Nul Ou ImageUpsPct;
	I2 : Nul Ou ImageUpsPct;
Debut
...
I1.Contexte.SelectionnerPinceau(C1.PinceauNoir);
/* Selection du pinceau noir et continu. */
I1.Contexte.SelectionnerMotif(C1.MotifAucun);
/* Pas de selection de motif. */
I1.Contexte.DessinerRectangle(0, 0, 100, 50);
/* Dessine un rectangle évidé, bordé d'un trait noir et continu. */
...
I2=I1.AppliquerSymetrieHorizontale();
...
Si I1==I2 Alors
/* Egalité entre deux images. */
	...
Fin Si
Si I1!=I2 Alors
/* Inégalité entre deux images. */
	...
Fin Si
...
Fin Principal
| - | - | - | - | - | - | - | - | - |