IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Valeurs Min/Max dans un DataBuffer


Sujet :

AWT/Swing Java

  1. #1
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut Valeurs Min/Max dans un DataBuffer
    Bonjour,

    j'ai construit des BufferedImage de type TYPE_CUSTOM avec des DataBuffer de type TYPE_INT, TYPE_DOUBLE, etc.

    Est il possible :
    -1- de spécifier au DataBuffer que les valeurs possibles sont dans [min, max] ?
    -2- si non précédemment, est il au moins possible de mettre l'information quelque part, même si le DataBuffer ne la gère pas. Comme une petite note consultable que l'on laisserait dans un coin.

    Le fait d'utiliser des DataBuffer personnalisés a résolu beaucoup de soucis, mais je m'aperçois que je travaille sur des intervalles plus grands que [0, 65535], mais qui ne sont pas pour autant étalés sur tout les Int, donc je voudrais pouvoir spécifier le nouvel intervalle.

    Merci par avance
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Pour faire tout cela, je pense que le mieux est de créer sa propre classe DataBuffer (par composition) pour intercepter les appels.

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    class MyDataBuffer extends DataBuffer {
     
    	DataBuffer db;
     
    	protected MyDataBuffer(DataBuffer db) {
    		super(db.getDataType(), db.getSize());
    		this.db = db;
    	}
     
    	// TYPE_INT
     
    	@Override public int getElem(int bank, int i) {
    		return db.getElem(bank, i);
    	}
     
    	@Override public void setElem(int bank, int i, int val) {
    		// if (val<MIN || val>MAX) { ... }
    		db.setElem(bank, i, val);
    	}
     
    	// TYPE_FLOAT
     
    	@Override public void setElemFloat(int bank, int i, float val) {
    		// if (val<MIN || val>MAX) { ... }
    		db.setElemFloat(bank, i, val);
    	}
     
    	@Override public void setElemFloat(int i, float val) {
    		// if (val<MIN || val>MAX) { ... }
    		db.setElemFloat(i, val);
    	}
     
    	@Override public float getElemFloat(int bank, int i) {
    		return db.getElemFloat(bank, i);
    	}
     
    	@Override public float getElemFloat(int i) {
    		return db.getElemFloat(i);
    	}
     
    	// TYPE_DOUBLE
     
    	@Override public void setElemDouble(int bank, int i, double val) {
    		// if (val<MIN || val>MAX) { ... }
    		db.setElemDouble(bank, i, val);
    	}
     
    	@Override public void setElemDouble(int i, double val) {
    		// if (val<MIN || val>MAX) { ... }
    		db.setElemDouble(i, val);
    	}
     
    	@Override public double getElemDouble(int bank, int i) {
    		return db.getElemDouble(bank, i);
    	}
     
    	@Override public double getElemDouble(int i) {
    		return db.getElemDouble(i);
    	}
    }

    Et ensuite de créer manuellement l'instance du WritableRaster en créant soi-même le databuffer.

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Create a default raster
    // WritableRaster raster = myColorModel.createCompatibleWritableRaster(w, h);
     
    // Create our own raster
    SampleModel     sm     = myColorModel.createCompatibleSampleModel(w, h);
    DataBufferFloat db     = new DataBufferFloat(w*h*myColorModel.getNumComponents());
    DataBuffer      mydb   = new MyDataBuffer(db);
    WritableRaster  raster = Raster.createWritableRaster(sm,mydb,null);
     
    // create the BufferedImage from the raster
    BufferedImage image    = new BufferedImage( myColorModel, raster, false, null);
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Merci bien !
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Recherche Valeurs Min / Max conditionnelle
    Par Viper7 dans le forum Excel
    Réponses: 6
    Dernier message: 26/11/2013, 15h48
  2. Valeur min/max d'un tableau d'objet
    Par Mides dans le forum Langage
    Réponses: 2
    Dernier message: 20/10/2013, 20h23
  3. [Lazarus] TChart valeur min, max moyenne
    Par showza dans le forum Lazarus
    Réponses: 0
    Dernier message: 01/04/2009, 14h47
  4. Recherche Min/Max dans un tableau
    Par kuroro20 dans le forum C
    Réponses: 4
    Dernier message: 26/10/2007, 16h54
  5. [C++.NET] Valeurs min/max dans une TextBox
    Par raboin dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 06/04/2006, 17h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo