|
From: <de...@us...> - 2013-04-03 09:21:41
|
Revision: 8371
http://fudaa.svn.sourceforge.net/fudaa/?rev=8371&view=rev
Author: deniger
Date: 2013-04-03 09:21:33 +0000 (Wed, 03 Apr 2013)
Log Message:
-----------
Ajout d'un iterator sur un tableau d'entier
Added Paths:
-----------
trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/iterator/FixedIntegerIterator.java
Removed Paths:
-------------
trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/iterator/FixedIntegerIterator.java
Deleted: trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/iterator/FixedIntegerIterator.java
===================================================================
--- trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/iterator/FixedIntegerIterator.java 2013-04-03 09:20:14 UTC (rev 8370)
+++ trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/iterator/FixedIntegerIterator.java 2013-04-03 09:21:33 UTC (rev 8371)
@@ -1,262 +0,0 @@
-/*
- * Geotools 2 - OpenSource mapping toolkit
- * (C) 2003, Geotools Project Managment Committee (PMC)
- * (C) 2000, Institut de Recherche pour le D\xE9veloppement
- * (C) 1999, P\xEAches et Oc\xE9ans Canada
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- *
- * Contacts:
- * UNITED KINGDOM: James Macgill
- * mailto:j.m...@ge...
- * FRANCE: Surveillance de l'Environnement Assist\xE9e par Satellite
- * Institut de Recherche pour le D\xE9veloppement / US-Espace
- * mailto:se...@te...
- *
- * CANADA: Observatoire du Saint-Laurent
- * Institut Maurice-Lamontagne
- * mailto:os...@os...
- */
-package org.fudaa.ctulu.iterator;
-
-// Miscellaneous
-import com.memoire.fu.FuEmptyArrays;
-import java.util.Arrays;
-import org.apache.commons.lang.StringUtils;
-import org.fudaa.ctulu.CtuluLibArray;
-
-/**
- * It\xE9rateur balayant les barres et \xE9tiquettes de graduation d'un axe. Cet it\xE9rateur retourne les positions des graduations \xE0 partir de la valeur
- * minimale jusqu'\xE0 la valeur maximale.
- *
- * @version $Id: NumberIterator.java,v 1.1 2007-01-17 10:45:26 deniger Exp $
- * @author Martin Desruisseaux
- */
-public class FixedIntegerIterator implements TickIterator {
-
- private final int[] values;
- /**
- * Pour eviter les loop infinie.
- */
- private static final int MAX_ITERATION = 200;
- int iterationDone_;
- /**
- * Valeur limite des graduations. La derni\xE8re graduation n'aura pas n\xE9cessairement cette valeur. Cette valeur est fix\xE9e par {@link #init}.
- */
- private int maximum_;
- /**
- * Valeur de la premi\xE8re graduation principale. Cette valeur est fix\xE9e par {@link #init}.
- */
- private int minimum_;
- /**
- * Index de la graduation principale en cours de tra\xE7age. Cette valeur commence \xE0 0 et sera modifi\xE9e \xE0 chaque appel \xE0 {@link #next}.
- */
- private int idx;
-
- /**
- * Construit un it\xE9rateur par d\xE9faut. La m\xE9thode {@link #init(double, double, float, float)}<u>doit </u> \xEAtre appel\xE9e avant que cet it\xE9rateur ne
- * soit utilisable.
- */
- public FixedIntegerIterator(int[] values) {
- this.values = values == null ? FuEmptyArrays.INT0 : CtuluLibArray.copy(values);
- Arrays.sort(values);
- }
-
- public FixedIntegerIterator(final FixedIntegerIterator _it) {
- this.values = _it.values;
- initFrom(_it);
- // this.locale = locale;
- }
-
- protected final void initFrom(final FixedIntegerIterator _it) {
- if (_it != null) {
- maximum_ = _it.maximum_;
- minimum_ = _it.minimum_;
- idx = _it.idx;
- }
- }
-
- /**
- * Initialise l'it\xE9rateur.
- *
- * @param _minimum Valeur minimale de la premi\xE8re graduation.
- * @param _maximum Valeur limite des graduations. La derni\xE8re graduation n'aura pas n\xE9cessairement cette valeur.
- * @param _visualLength Longueur visuelle de l'axe sur laquelle tracer la graduation. Cette longueur doit \xEAtre exprim\xE9e en pixels ou en points.
- * @param _visualTickSpacing Espace \xE0 laisser visuellement entre deux marques de graduation. Cet espace doit \xEAtre exprim\xE9 en pixels ou en points
- * (1/72 de pouce).
- */
- protected void init(final double _minimum, final double _maximum, final float _visualLength,
- final float _visualTickSpacing) {
- if (_minimum == this.minimum_ && _maximum == this.maximum_) {
- rewind();
- return;
- }
- AssertValues.ensureFinite("minimum", _minimum);
- AssertValues.ensureFinite("maximum", _maximum);
- minimum_ = (int) Math.min(_minimum, _maximum);
- maximum_ = (int) Math.max(_minimum, _maximum);
-
- initCounters();
- }
-
- @Override
- public void initExact(double _min, double _max, int _nbIteration, int _nbSousIteration) {
- initExactCommon(_min, _max, _nbSousIteration);
- }
-
- private void initExactCommon(double _min, double _max, int _nbSousIteration) {
- minimum_ = (int) Math.min(_min, _max);
- maximum_ = (int) Math.max(_min, _max);
- initCounters();
- }
-
- @Override
- public void initExactFromDist(double _min, double _max, double _increment, int _nbSousIteration) {
- initExactCommon(_min, _max, _nbSousIteration);
-
- }
-
- @Override
- public final Object clone() throws CloneNotSupportedException {
- final FixedIntegerIterator res = (FixedIntegerIterator) super.clone();
- res.initFrom(this);
- return res;
- }
-
- /**
- * Retourne l'\xE9tiquette de la graduation courante. On n'appele g\xE9n\xE9ralement cette m\xE9thode que pour les graduations majeures, mais elle peut aussi
- * \xEAtre appel\xE9e pour les graduations mineures. Cette m\xE9thode retourne
- * <code>null</code> s'il n'y a pas d'\xE9tiquette pour la graduation courante.
- */
- @Override
- public String currentLabel() {
- if (idx >= 0 && idx < values.length) {
- return Integer.toString(values[idx]);
- }
- return StringUtils.EMPTY;
- }
-
- /**
- * Returns the position where to draw the current tick. The position is scaled from the graduation's minimum to maximum. This is usually the same
- * number than {@link #currentValue}. The mean exception is for logarithmic graduation, in which the tick position is not proportional to the tick
- * value.
- */
- @Override
- public double currentPosition() {
- if (idx >= 0 && idx < values.length) {
- return values[idx];
- }
- return Double.NaN;
- }
-
- /**
- * Retourne la valeur de la graduation courante. Cette m\xE9thode peut \xEAtre appel\xE9e pour une graduation majeure ou mineure.
- */
- @Override
- public double currentValue() {
- return currentPosition();
- }
-
- @Override
- public String formatSubValue(final double _v) {
- return Integer.toString((int) _v);
- }
-
- @Override
- public String formatValue(final double _v) {
- return Integer.toString((int) _v);
- }
-
- @Override
- public double getIncrement() {
- return 1;
- }
-
- /**
- * Indique s'il reste des graduations \xE0 retourner. Cette m\xE9thode retourne
- * <code>true</code> tant que {@link #currentValue}ou {@link #currentLabel}peuvent \xEAtre appel\xE9es.
- */
- @Override
- public boolean hasNext() {
- return iterationDone_ < MAX_ITERATION && idx >= 0 && idx < values.length && values[idx] <= maximum_;
- }
-
- /**
- * Initialise l'it\xE9rateur.
- *
- * @param _minimum Valeur minimale de la premi\xE8re graduation.
- * @param _maximum Valeur limite des graduations. La derni\xE8re graduation n'aura pas n\xE9cessairement cette valeur.
- * @param _nbTick le nombre de graduation
- */
- @Override
- public void init(final double _minimum, final double _maximum, final int _nbTick) {
- init(_minimum, _maximum, _nbTick <= 1 ? DEFAULT_STICK_NUMBER : _nbTick, 1);
- }
-
- /**
- * Indique si la graduation courante est une graduation majeure.
- *
- * @return <code>true</code> si la graduation courante est une graduation majeure, ou <code>false</code> si elle est une graduation mineure.
- */
- @Override
- public boolean isMajorTick() {
- return true;
- }
-
- @Override
- public double getValueFromPosition(final double _v) {
- return _v;
- }
-
- @Override
- public double getPositionFromValue(final double _v) {
- return _v;
- }
-
- /**
- * Passe \xE0 la graduation suivante.
- */
- @Override
- public void next() {
- iterationDone_++;
- idx++;
- }
-
- /**
- * Passe directement \xE0 la graduation majeure suivante.
- */
- @Override
- public void nextMajor() {
- next();
- }
-
- /**
- * Replace l'it\xE9rateur sur la premi\xE8re graduation.
- */
- @Override
- public void rewind() {
- initCounters();
- }
-
- public void initCounters() {
- idx = Arrays.binarySearch(values, minimum_);
- if (idx < 0) {
- idx = -idx - 1;
- }
-
- iterationDone_ = 0;
- }
-}
\ No newline at end of file
Copied: trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/iterator/FixedIntegerIterator.java (from rev 8335, trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/iterator/NumberIterator.java)
===================================================================
--- trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/iterator/FixedIntegerIterator.java (rev 0)
+++ trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/iterator/FixedIntegerIterator.java 2013-04-03 09:21:33 UTC (rev 8371)
@@ -0,0 +1,227 @@
+/*
+ */
+package org.fudaa.ctulu.iterator;
+
+// Miscellaneous
+import com.memoire.fu.FuEmptyArrays;
+import java.util.Arrays;
+import org.apache.commons.lang.StringUtils;
+import org.fudaa.ctulu.CtuluLibArray;
+
+/**
+ */
+public class FixedIntegerIterator implements TickIterator {
+
+ private final int[] values;
+ /**
+ * Pour eviter les loop infinie.
+ */
+ private static final int MAX_ITERATION = 200;
+ int iterationDone_;
+ /**
+ * Valeur limite des graduations. La derni\xE8re graduation n'aura pas n\xE9cessairement cette valeur. Cette valeur est fix\xE9e par {@link #init}.
+ */
+ private int maximum_;
+ /**
+ * Valeur de la premi\xE8re graduation principale. Cette valeur est fix\xE9e par {@link #init}.
+ */
+ private int minimum_;
+ /**
+ * Index de la graduation principale en cours de tra\xE7age. Cette valeur commence \xE0 0 et sera modifi\xE9e \xE0 chaque appel \xE0 {@link #next}.
+ */
+ private int idx;
+
+ /**
+ * Construit un it\xE9rateur par d\xE9faut. La m\xE9thode {@link #init(double, double, float, float)}<u>doit </u> \xEAtre appel\xE9e avant que cet it\xE9rateur ne
+ * soit utilisable.
+ */
+ public FixedIntegerIterator(int[] values) {
+ this.values = values == null ? FuEmptyArrays.INT0 : CtuluLibArray.copy(values);
+ Arrays.sort(values);
+ }
+
+ public FixedIntegerIterator(final FixedIntegerIterator _it) {
+ this.values = _it.values;
+ initFrom(_it);
+ // this.locale = locale;
+ }
+
+ protected final void initFrom(final FixedIntegerIterator _it) {
+ if (_it != null) {
+ maximum_ = _it.maximum_;
+ minimum_ = _it.minimum_;
+ idx = _it.idx;
+ }
+ }
+
+ /**
+ * Initialise l'it\xE9rateur.
+ *
+ * @param _minimum Valeur minimale de la premi\xE8re graduation.
+ * @param _maximum Valeur limite des graduations. La derni\xE8re graduation n'aura pas n\xE9cessairement cette valeur.
+ * @param _visualLength Longueur visuelle de l'axe sur laquelle tracer la graduation. Cette longueur doit \xEAtre exprim\xE9e en pixels ou en points.
+ * @param _visualTickSpacing Espace \xE0 laisser visuellement entre deux marques de graduation. Cet espace doit \xEAtre exprim\xE9 en pixels ou en points
+ * (1/72 de pouce).
+ */
+ protected void init(final double _minimum, final double _maximum, final float _visualLength,
+ final float _visualTickSpacing) {
+ if (_minimum == this.minimum_ && _maximum == this.maximum_) {
+ rewind();
+ return;
+ }
+ AssertValues.ensureFinite("minimum", _minimum);
+ AssertValues.ensureFinite("maximum", _maximum);
+ minimum_ = (int) Math.min(_minimum, _maximum);
+ maximum_ = (int) Math.max(_minimum, _maximum);
+
+ initCounters();
+ }
+
+ @Override
+ public void initExact(double _min, double _max, int _nbIteration, int _nbSousIteration) {
+ initExactCommon(_min, _max, _nbSousIteration);
+ }
+
+ private void initExactCommon(double _min, double _max, int _nbSousIteration) {
+ minimum_ = (int) Math.min(_min, _max);
+ maximum_ = (int) Math.max(_min, _max);
+ initCounters();
+ }
+
+ @Override
+ public void initExactFromDist(double _min, double _max, double _increment, int _nbSousIteration) {
+ initExactCommon(_min, _max, _nbSousIteration);
+
+ }
+
+ @Override
+ public final Object clone() throws CloneNotSupportedException {
+ final FixedIntegerIterator res = (FixedIntegerIterator) super.clone();
+ res.initFrom(this);
+ return res;
+ }
+
+ /**
+ * Retourne l'\xE9tiquette de la graduation courante. On n'appele g\xE9n\xE9ralement cette m\xE9thode que pour les graduations majeures, mais elle peut aussi
+ * \xEAtre appel\xE9e pour les graduations mineures. Cette m\xE9thode retourne
+ * <code>null</code> s'il n'y a pas d'\xE9tiquette pour la graduation courante.
+ */
+ @Override
+ public String currentLabel() {
+ if (idx >= 0 && idx < values.length) {
+ return Integer.toString(values[idx]);
+ }
+ return StringUtils.EMPTY;
+ }
+
+ /**
+ * Returns the position where to draw the current tick. The position is scaled from the graduation's minimum to maximum. This is usually the same
+ * number than {@link #currentValue}. The mean exception is for logarithmic graduation, in which the tick position is not proportional to the tick
+ * value.
+ */
+ @Override
+ public double currentPosition() {
+ if (idx >= 0 && idx < values.length) {
+ return values[idx];
+ }
+ return Double.NaN;
+ }
+
+ /**
+ * Retourne la valeur de la graduation courante. Cette m\xE9thode peut \xEAtre appel\xE9e pour une graduation majeure ou mineure.
+ */
+ @Override
+ public double currentValue() {
+ return currentPosition();
+ }
+
+ @Override
+ public String formatSubValue(final double _v) {
+ return Integer.toString((int) _v);
+ }
+
+ @Override
+ public String formatValue(final double _v) {
+ return Integer.toString((int) _v);
+ }
+
+ @Override
+ public double getIncrement() {
+ return 1;
+ }
+
+ /**
+ * Indique s'il reste des graduations \xE0 retourner. Cette m\xE9thode retourne
+ * <code>true</code> tant que {@link #currentValue}ou {@link #currentLabel}peuvent \xEAtre appel\xE9es.
+ */
+ @Override
+ public boolean hasNext() {
+ return iterationDone_ < MAX_ITERATION && idx >= 0 && idx < values.length && values[idx] <= maximum_;
+ }
+
+ /**
+ * Initialise l'it\xE9rateur.
+ *
+ * @param _minimum Valeur minimale de la premi\xE8re graduation.
+ * @param _maximum Valeur limite des graduations. La derni\xE8re graduation n'aura pas n\xE9cessairement cette valeur.
+ * @param _nbTick le nombre de graduation
+ */
+ @Override
+ public void init(final double _minimum, final double _maximum, final int _nbTick) {
+ init(_minimum, _maximum, _nbTick <= 1 ? DEFAULT_STICK_NUMBER : _nbTick, 1);
+ }
+
+ /**
+ * Indique si la graduation courante est une graduation majeure.
+ *
+ * @return <code>true</code> si la graduation courante est une graduation majeure, ou <code>false</code> si elle est une graduation mineure.
+ */
+ @Override
+ public boolean isMajorTick() {
+ return true;
+ }
+
+ @Override
+ public double getValueFromPosition(final double _v) {
+ return _v;
+ }
+
+ @Override
+ public double getPositionFromValue(final double _v) {
+ return _v;
+ }
+
+ /**
+ * Passe \xE0 la graduation suivante.
+ */
+ @Override
+ public void next() {
+ iterationDone_++;
+ idx++;
+ }
+
+ /**
+ * Passe directement \xE0 la graduation majeure suivante.
+ */
+ @Override
+ public void nextMajor() {
+ next();
+ }
+
+ /**
+ * Replace l'it\xE9rateur sur la premi\xE8re graduation.
+ */
+ @Override
+ public void rewind() {
+ initCounters();
+ }
+
+ public void initCounters() {
+ idx = Arrays.binarySearch(values, minimum_);
+ if (idx < 0) {
+ idx = -idx - 1;
+ }
+
+ iterationDone_ = 0;
+ }
+}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <de...@us...> - 2013-04-03 09:22:59
|
Revision: 8372
http://fudaa.svn.sourceforge.net/fudaa/?rev=8372&view=rev
Author: deniger
Date: 2013-04-03 09:22:49 +0000 (Wed, 03 Apr 2013)
Log Message:
-----------
Ajout d'un iterator sur un tableau d'entier
Added Paths:
-----------
trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/iterator/FixedIntegerIterator.java
Removed Paths:
-------------
trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/iterator/FixedIntegerIterator.java
Deleted: trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/iterator/FixedIntegerIterator.java
===================================================================
--- trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/iterator/FixedIntegerIterator.java 2013-04-03 09:21:33 UTC (rev 8371)
+++ trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/iterator/FixedIntegerIterator.java 2013-04-03 09:22:49 UTC (rev 8372)
@@ -1,227 +0,0 @@
-/*
- */
-package org.fudaa.ctulu.iterator;
-
-// Miscellaneous
-import com.memoire.fu.FuEmptyArrays;
-import java.util.Arrays;
-import org.apache.commons.lang.StringUtils;
-import org.fudaa.ctulu.CtuluLibArray;
-
-/**
- */
-public class FixedIntegerIterator implements TickIterator {
-
- private final int[] values;
- /**
- * Pour eviter les loop infinie.
- */
- private static final int MAX_ITERATION = 200;
- int iterationDone_;
- /**
- * Valeur limite des graduations. La derni\xE8re graduation n'aura pas n\xE9cessairement cette valeur. Cette valeur est fix\xE9e par {@link #init}.
- */
- private int maximum_;
- /**
- * Valeur de la premi\xE8re graduation principale. Cette valeur est fix\xE9e par {@link #init}.
- */
- private int minimum_;
- /**
- * Index de la graduation principale en cours de tra\xE7age. Cette valeur commence \xE0 0 et sera modifi\xE9e \xE0 chaque appel \xE0 {@link #next}.
- */
- private int idx;
-
- /**
- * Construit un it\xE9rateur par d\xE9faut. La m\xE9thode {@link #init(double, double, float, float)}<u>doit </u> \xEAtre appel\xE9e avant que cet it\xE9rateur ne
- * soit utilisable.
- */
- public FixedIntegerIterator(int[] values) {
- this.values = values == null ? FuEmptyArrays.INT0 : CtuluLibArray.copy(values);
- Arrays.sort(values);
- }
-
- public FixedIntegerIterator(final FixedIntegerIterator _it) {
- this.values = _it.values;
- initFrom(_it);
- // this.locale = locale;
- }
-
- protected final void initFrom(final FixedIntegerIterator _it) {
- if (_it != null) {
- maximum_ = _it.maximum_;
- minimum_ = _it.minimum_;
- idx = _it.idx;
- }
- }
-
- /**
- * Initialise l'it\xE9rateur.
- *
- * @param _minimum Valeur minimale de la premi\xE8re graduation.
- * @param _maximum Valeur limite des graduations. La derni\xE8re graduation n'aura pas n\xE9cessairement cette valeur.
- * @param _visualLength Longueur visuelle de l'axe sur laquelle tracer la graduation. Cette longueur doit \xEAtre exprim\xE9e en pixels ou en points.
- * @param _visualTickSpacing Espace \xE0 laisser visuellement entre deux marques de graduation. Cet espace doit \xEAtre exprim\xE9 en pixels ou en points
- * (1/72 de pouce).
- */
- protected void init(final double _minimum, final double _maximum, final float _visualLength,
- final float _visualTickSpacing) {
- if (_minimum == this.minimum_ && _maximum == this.maximum_) {
- rewind();
- return;
- }
- AssertValues.ensureFinite("minimum", _minimum);
- AssertValues.ensureFinite("maximum", _maximum);
- minimum_ = (int) Math.min(_minimum, _maximum);
- maximum_ = (int) Math.max(_minimum, _maximum);
-
- initCounters();
- }
-
- @Override
- public void initExact(double _min, double _max, int _nbIteration, int _nbSousIteration) {
- initExactCommon(_min, _max, _nbSousIteration);
- }
-
- private void initExactCommon(double _min, double _max, int _nbSousIteration) {
- minimum_ = (int) Math.min(_min, _max);
- maximum_ = (int) Math.max(_min, _max);
- initCounters();
- }
-
- @Override
- public void initExactFromDist(double _min, double _max, double _increment, int _nbSousIteration) {
- initExactCommon(_min, _max, _nbSousIteration);
-
- }
-
- @Override
- public final Object clone() throws CloneNotSupportedException {
- final FixedIntegerIterator res = (FixedIntegerIterator) super.clone();
- res.initFrom(this);
- return res;
- }
-
- /**
- * Retourne l'\xE9tiquette de la graduation courante. On n'appele g\xE9n\xE9ralement cette m\xE9thode que pour les graduations majeures, mais elle peut aussi
- * \xEAtre appel\xE9e pour les graduations mineures. Cette m\xE9thode retourne
- * <code>null</code> s'il n'y a pas d'\xE9tiquette pour la graduation courante.
- */
- @Override
- public String currentLabel() {
- if (idx >= 0 && idx < values.length) {
- return Integer.toString(values[idx]);
- }
- return StringUtils.EMPTY;
- }
-
- /**
- * Returns the position where to draw the current tick. The position is scaled from the graduation's minimum to maximum. This is usually the same
- * number than {@link #currentValue}. The mean exception is for logarithmic graduation, in which the tick position is not proportional to the tick
- * value.
- */
- @Override
- public double currentPosition() {
- if (idx >= 0 && idx < values.length) {
- return values[idx];
- }
- return Double.NaN;
- }
-
- /**
- * Retourne la valeur de la graduation courante. Cette m\xE9thode peut \xEAtre appel\xE9e pour une graduation majeure ou mineure.
- */
- @Override
- public double currentValue() {
- return currentPosition();
- }
-
- @Override
- public String formatSubValue(final double _v) {
- return Integer.toString((int) _v);
- }
-
- @Override
- public String formatValue(final double _v) {
- return Integer.toString((int) _v);
- }
-
- @Override
- public double getIncrement() {
- return 1;
- }
-
- /**
- * Indique s'il reste des graduations \xE0 retourner. Cette m\xE9thode retourne
- * <code>true</code> tant que {@link #currentValue}ou {@link #currentLabel}peuvent \xEAtre appel\xE9es.
- */
- @Override
- public boolean hasNext() {
- return iterationDone_ < MAX_ITERATION && idx >= 0 && idx < values.length && values[idx] <= maximum_;
- }
-
- /**
- * Initialise l'it\xE9rateur.
- *
- * @param _minimum Valeur minimale de la premi\xE8re graduation.
- * @param _maximum Valeur limite des graduations. La derni\xE8re graduation n'aura pas n\xE9cessairement cette valeur.
- * @param _nbTick le nombre de graduation
- */
- @Override
- public void init(final double _minimum, final double _maximum, final int _nbTick) {
- init(_minimum, _maximum, _nbTick <= 1 ? DEFAULT_STICK_NUMBER : _nbTick, 1);
- }
-
- /**
- * Indique si la graduation courante est une graduation majeure.
- *
- * @return <code>true</code> si la graduation courante est une graduation majeure, ou <code>false</code> si elle est une graduation mineure.
- */
- @Override
- public boolean isMajorTick() {
- return true;
- }
-
- @Override
- public double getValueFromPosition(final double _v) {
- return _v;
- }
-
- @Override
- public double getPositionFromValue(final double _v) {
- return _v;
- }
-
- /**
- * Passe \xE0 la graduation suivante.
- */
- @Override
- public void next() {
- iterationDone_++;
- idx++;
- }
-
- /**
- * Passe directement \xE0 la graduation majeure suivante.
- */
- @Override
- public void nextMajor() {
- next();
- }
-
- /**
- * Replace l'it\xE9rateur sur la premi\xE8re graduation.
- */
- @Override
- public void rewind() {
- initCounters();
- }
-
- public void initCounters() {
- idx = Arrays.binarySearch(values, minimum_);
- if (idx < 0) {
- idx = -idx - 1;
- }
-
- iterationDone_ = 0;
- }
-}
\ No newline at end of file
Copied: trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/iterator/FixedIntegerIterator.java (from rev 8335, trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/iterator/NumberIterator.java)
===================================================================
--- trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/iterator/FixedIntegerIterator.java (rev 0)
+++ trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/iterator/FixedIntegerIterator.java 2013-04-03 09:22:49 UTC (rev 8372)
@@ -0,0 +1,227 @@
+/*
+ */
+package org.fudaa.ctulu.iterator;
+
+// Miscellaneous
+import com.memoire.fu.FuEmptyArrays;
+import java.util.Arrays;
+import org.apache.commons.lang.StringUtils;
+import org.fudaa.ctulu.CtuluLibArray;
+
+/**
+ */
+public class FixedIntegerIterator implements TickIterator {
+
+ private final int[] values;
+ /**
+ * Pour eviter les loop infinie.
+ */
+ private static final int MAX_ITERATION = 200;
+ int iterationDone_;
+ /**
+ * Valeur limite des graduations. La derni\xE8re graduation n'aura pas n\xE9cessairement cette valeur. Cette valeur est fix\xE9e par {@link #init}.
+ */
+ private int maximum_;
+ /**
+ * Valeur de la premi\xE8re graduation principale. Cette valeur est fix\xE9e par {@link #init}.
+ */
+ private int minimum_;
+ /**
+ * Index de la graduation principale en cours de tra\xE7age. Cette valeur commence \xE0 0 et sera modifi\xE9e \xE0 chaque appel \xE0 {@link #next}.
+ */
+ private int idx;
+
+ /**
+ * Construit un it\xE9rateur par d\xE9faut. La m\xE9thode {@link #init(double, double, float, float)}<u>doit </u> \xEAtre appel\xE9e avant que cet it\xE9rateur ne
+ * soit utilisable.
+ */
+ public FixedIntegerIterator(int[] values) {
+ this.values = values == null ? FuEmptyArrays.INT0 : CtuluLibArray.copy(values);
+ Arrays.sort(values);
+ }
+
+ public FixedIntegerIterator(final FixedIntegerIterator _it) {
+ this.values = _it.values;
+ initFrom(_it);
+ // this.locale = locale;
+ }
+
+ protected final void initFrom(final FixedIntegerIterator _it) {
+ if (_it != null) {
+ maximum_ = _it.maximum_;
+ minimum_ = _it.minimum_;
+ idx = _it.idx;
+ }
+ }
+
+ /**
+ * Initialise l'it\xE9rateur.
+ *
+ * @param _minimum Valeur minimale de la premi\xE8re graduation.
+ * @param _maximum Valeur limite des graduations. La derni\xE8re graduation n'aura pas n\xE9cessairement cette valeur.
+ * @param _visualLength Longueur visuelle de l'axe sur laquelle tracer la graduation. Cette longueur doit \xEAtre exprim\xE9e en pixels ou en points.
+ * @param _visualTickSpacing Espace \xE0 laisser visuellement entre deux marques de graduation. Cet espace doit \xEAtre exprim\xE9 en pixels ou en points
+ * (1/72 de pouce).
+ */
+ protected void init(final double _minimum, final double _maximum, final float _visualLength,
+ final float _visualTickSpacing) {
+ if (_minimum == this.minimum_ && _maximum == this.maximum_) {
+ rewind();
+ return;
+ }
+ AssertValues.ensureFinite("minimum", _minimum);
+ AssertValues.ensureFinite("maximum", _maximum);
+ minimum_ = (int) Math.min(_minimum, _maximum);
+ maximum_ = (int) Math.max(_minimum, _maximum);
+
+ initCounters();
+ }
+
+ @Override
+ public void initExact(double _min, double _max, int _nbIteration, int _nbSousIteration) {
+ initExactCommon(_min, _max, _nbSousIteration);
+ }
+
+ private void initExactCommon(double _min, double _max, int _nbSousIteration) {
+ minimum_ = (int) Math.min(_min, _max);
+ maximum_ = (int) Math.max(_min, _max);
+ initCounters();
+ }
+
+ @Override
+ public void initExactFromDist(double _min, double _max, double _increment, int _nbSousIteration) {
+ initExactCommon(_min, _max, _nbSousIteration);
+
+ }
+
+ @Override
+ public final Object clone() throws CloneNotSupportedException {
+ final FixedIntegerIterator res = (FixedIntegerIterator) super.clone();
+ res.initFrom(this);
+ return res;
+ }
+
+ /**
+ * Retourne l'\xE9tiquette de la graduation courante. On n'appele g\xE9n\xE9ralement cette m\xE9thode que pour les graduations majeures, mais elle peut aussi
+ * \xEAtre appel\xE9e pour les graduations mineures. Cette m\xE9thode retourne
+ * <code>null</code> s'il n'y a pas d'\xE9tiquette pour la graduation courante.
+ */
+ @Override
+ public String currentLabel() {
+ if (idx >= 0 && idx < values.length) {
+ return Integer.toString(values[idx]);
+ }
+ return StringUtils.EMPTY;
+ }
+
+ /**
+ * Returns the position where to draw the current tick. The position is scaled from the graduation's minimum to maximum. This is usually the same
+ * number than {@link #currentValue}. The mean exception is for logarithmic graduation, in which the tick position is not proportional to the tick
+ * value.
+ */
+ @Override
+ public double currentPosition() {
+ if (idx >= 0 && idx < values.length) {
+ return values[idx];
+ }
+ return Double.NaN;
+ }
+
+ /**
+ * Retourne la valeur de la graduation courante. Cette m\xE9thode peut \xEAtre appel\xE9e pour une graduation majeure ou mineure.
+ */
+ @Override
+ public double currentValue() {
+ return currentPosition();
+ }
+
+ @Override
+ public String formatSubValue(final double _v) {
+ return Integer.toString((int) _v);
+ }
+
+ @Override
+ public String formatValue(final double _v) {
+ return Integer.toString((int) _v);
+ }
+
+ @Override
+ public double getIncrement() {
+ return 1;
+ }
+
+ /**
+ * Indique s'il reste des graduations \xE0 retourner. Cette m\xE9thode retourne
+ * <code>true</code> tant que {@link #currentValue}ou {@link #currentLabel}peuvent \xEAtre appel\xE9es.
+ */
+ @Override
+ public boolean hasNext() {
+ return iterationDone_ < MAX_ITERATION && idx >= 0 && idx < values.length && values[idx] <= maximum_;
+ }
+
+ /**
+ * Initialise l'it\xE9rateur.
+ *
+ * @param _minimum Valeur minimale de la premi\xE8re graduation.
+ * @param _maximum Valeur limite des graduations. La derni\xE8re graduation n'aura pas n\xE9cessairement cette valeur.
+ * @param _nbTick le nombre de graduation
+ */
+ @Override
+ public void init(final double _minimum, final double _maximum, final int _nbTick) {
+ init(_minimum, _maximum, _nbTick <= 1 ? DEFAULT_STICK_NUMBER : _nbTick, 1);
+ }
+
+ /**
+ * Indique si la graduation courante est une graduation majeure.
+ *
+ * @return <code>true</code> si la graduation courante est une graduation majeure, ou <code>false</code> si elle est une graduation mineure.
+ */
+ @Override
+ public boolean isMajorTick() {
+ return true;
+ }
+
+ @Override
+ public double getValueFromPosition(final double _v) {
+ return _v;
+ }
+
+ @Override
+ public double getPositionFromValue(final double _v) {
+ return _v;
+ }
+
+ /**
+ * Passe \xE0 la graduation suivante.
+ */
+ @Override
+ public void next() {
+ iterationDone_++;
+ idx++;
+ }
+
+ /**
+ * Passe directement \xE0 la graduation majeure suivante.
+ */
+ @Override
+ public void nextMajor() {
+ next();
+ }
+
+ /**
+ * Replace l'it\xE9rateur sur la premi\xE8re graduation.
+ */
+ @Override
+ public void rewind() {
+ initCounters();
+ }
+
+ public void initCounters() {
+ idx = Arrays.binarySearch(values, minimum_);
+ if (idx < 0) {
+ idx = -idx - 1;
+ }
+
+ iterationDone_ = 0;
+ }
+}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|