|
From: <d3...@us...> - 2003-07-20 23:59:13
|
Update of /cvsroot/yacr/analysis/src/exdigsim/guilayer/profiling
In directory sc8-pr-cvs1:/tmp/cvs-serv30678
Modified Files:
ProfilingObjectLookupTable.java
Log Message:
Aktualisiert
Index: ProfilingObjectLookupTable.java
===================================================================
RCS file: /cvsroot/yacr/analysis/src/exdigsim/guilayer/profiling/ProfilingObjectLookupTable.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- ProfilingObjectLookupTable.java 19 Jul 2003 12:09:38 -0000 1.1
+++ ProfilingObjectLookupTable.java 20 Jul 2003 23:59:08 -0000 1.2
@@ -7,7 +7,10 @@
* Grain stellt die `Genauigkeit' der Tabelle dar, was nichts anderes heissen soll als
* die Reduktion der Auflösung. Die Auflösung wird durch `resolutionX'
* `resolutionY' bestimmt. `resolutionX' steht für die Anzahl der Pixel in `X-Richtung'
- * und `resolutionY' für die in `Y-Richtung'.
+ * und `resolutionY' für die in `Y-Richtung'.<br>
+ * Die LookupTabelle ist für das ProfilingDiagramm, damit wenn der Benutzer in
+ * dem Fenster klickt, der passende Analysepunkt aufgesucht und in dem GUI-Fenster
+ * der Analysepunkt `angesprungen' wird.
*/
class ProfilingObjectLookupTable
{
@@ -15,15 +18,15 @@
private int resolutionX;
private int resolutionY;
- private int resolutionGrainX;
- private int resolutionGrainY;
+ private float resolutionGrainX;
+ private float resolutionGrainY;
private int tableXLen;
private int tableYLen;
public ProfilingObjectLookupTable (int resolutionX,
int resolutionY,
- int resolutionGrainX,
- int resolutionGrainY)
+ float resolutionGrainX,
+ float resolutionGrainY)
{
this.resolutionX = resolutionX;
this.resolutionY = resolutionY;
@@ -31,8 +34,8 @@
this.resolutionGrainY = resolutionGrainY;
// Minimum ist `1' der Kantenlänge der Tabelle
- this.tableXLen = resolutionX / resolutionGrainX + 1;
- this.tableYLen = resolutionY / resolutionGrainY + 1;
+ this.tableXLen = (int)Math.min (resolutionX / resolutionGrainX, 1f);
+ this.tableYLen = (int)Math.min (resolutionY / resolutionGrainY, 1f);
this.table = createTable (this.tableXLen, this.tableYLen);
}
@@ -44,12 +47,18 @@
public int getResolutionY()
{ return this.resolutionY; }
- public int getResolutionGrainX()
+ public float getResolutionGrainX()
{ return this.resolutionGrainX; }
- public int getResolutionGrainY()
+ public float getResolutionGrainY()
{ return this.resolutionGrainY; }
+ public int getTableXLen()
+ { return this.tableXLen; }
+
+ public int getTableYLen()
+ { return this.tableYLen; }
+
/**
* Verändert die Größe der Tabelle bei gleicher Körnigkeit
*/
@@ -60,8 +69,8 @@
newY == this.resolutionY)
return;
- newX = resolutionX / this.resolutionGrainX + 1;
- newY = resolutionY / this.resolutionGrainY + 1;
+ newX = Math.min (1, (int)((float)resolutionX / this.resolutionGrainX));
+ newY = Math.min (1, (int)((float)resolutionY / this.resolutionGrainY));
final int minY = newY < this.tableYLen ? newY : this.tableYLen;
final int minX = newX < this.tableXLen ? newX : this.tableXLen;
@@ -96,13 +105,14 @@
* @param x x-Koordinate des Analysepunktes (grain nicht berechnet!)
* @param y y-Koordinate des Analysepunktes (grain nicht berechnet!)
*
- * @return Analysepunkt unter den angegebenen Koordinaten. <b>Achtung</b>: Rückgabe kann null sein, sofern
- * kein Analysepunkt für dieser Stelle eingefügt worden ist, oder die Koordinaten nicht valide sind
+ * @return Analysepunkt unter den angegebenen Koordinaten. <b>Achtung</b>: Rückgabe kann null sein,
+ * sofern kein Analysepunkt für dieser Stelle eingefügt worden ist, oder die
+ * Koordinaten nicht valide sind
*/
public AnalysepunktImpl lookup (int x, int y)
{
- int xReal = x / this.resolutionGrainX;
- int yReal = y / this.resolutionGrainY;
+ int xReal = (int)((float)x / this.resolutionGrainX);
+ int yReal = (int)((float)y / this.resolutionGrainY);
if (xReal > this.tableXLen ||
yReal > this.tableYLen)
@@ -120,8 +130,8 @@
*/
public boolean erase (int x, int y)
{
- int xReal = x / this.resolutionGrainX;
- int yReal = y / this.resolutionGrainY;
+ int xReal = (int)((float)x / this.resolutionGrainX);
+ int yReal = (int)((float)y / this.resolutionGrainY);
if (xReal > this.tableXLen ||
yReal > this.tableYLen)
@@ -139,14 +149,15 @@
*
* @param x x-Koordinate des Analysepunktes (grain nicht berechnet!)
* @param y y-Koordinate des Analysepunktes (grain nicht berechnet!)
- * @return impl ist nicht null, die Koordinaten sind valide und der Analysepunkt wurde in die Tabelle eingefügt
+ * @return impl ist nicht null, die Koordinaten sind valide und der Analysepunkt wurde in die
+ * Tabelle eingefügt
*/
public boolean insert (AnalysepunktImpl impl,
int x,
int y)
{
- int xReal = x / this.resolutionGrainX;
- int yReal = y / this.resolutionGrainY;
+ int xReal = (int)((float)x / this.resolutionGrainX);
+ int yReal = (int)((float)y / this.resolutionGrainY);
if (impl == null ||
@@ -162,6 +173,9 @@
return true;
}
+ /**
+ * Legt 2-dimensionale Tabelle an
+ */
private static AnalysepunktImpl[][] createTable (int x, int y)
{
AnalysepunktImpl[][] table = new AnalysepunktImpl[x][];
|