|
From: <nr...@us...> - 2011-07-22 13:30:38
|
Revision: 15701
http://dcm4che.svn.sourceforge.net/dcm4che/?rev=15701&view=rev
Author: nroduit
Date: 2011-07-22 13:30:30 +0000 (Fri, 22 Jul 2011)
Log Message:
-----------
fix graphics selection issue, SUV calculation issue
Modified Paths:
--------------
weasis/weasis_framework/trunk/weasis-core/weasis-core-api/src/main/java/org/weasis/core/api/gui/util/DecFormater.java
weasis/weasis_framework/trunk/weasis-core/weasis-core-api/src/main/java/org/weasis/core/api/media/data/TagW.java
weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/AbstractDragGraphic.java
weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/AbstractDragGraphicArea.java
weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/DragLayer.java
weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/model/AbstractLayer.java
weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/model/AbstractLayerModel.java
weasis/weasis_framework/trunk/weasis-dicom/weasis-dicom-codec/src/main/java/org/weasis/dicom/codec/DicomMediaIO.java
weasis/weasis_framework/trunk/weasis-dicom/weasis-dicom-viewer2d/src/main/java/org/weasis/dicom/viewer2d/EventManager.java
weasis/weasis_framework/trunk/weasis-distributions/etc/config/config.properties
weasis/weasis_framework/trunk/weasis-launcher/conf/config.properties
Modified: weasis/weasis_framework/trunk/weasis-core/weasis-core-api/src/main/java/org/weasis/core/api/gui/util/DecFormater.java
===================================================================
--- weasis/weasis_framework/trunk/weasis-core/weasis-core-api/src/main/java/org/weasis/core/api/gui/util/DecFormater.java 2011-07-22 11:05:51 UTC (rev 15700)
+++ weasis/weasis_framework/trunk/weasis-core/weasis-core-api/src/main/java/org/weasis/core/api/gui/util/DecFormater.java 2011-07-22 13:30:30 UTC (rev 15701)
@@ -27,7 +27,7 @@
private static DecimalFormat df3 = new DecimalFormat("#,###"); // non decimal //$NON-NLS-1$
private static DecimalFormat df4 = new DecimalFormat("0.####E0"); // Sientific format with 4 decimals //$NON-NLS-1$
- private static DecimalFormat df5 = new DecimalFormat("###0.#"); //$NON-NLS-1$
+ private static DecimalFormat df5 = new DecimalFormat("###0.0"); //$NON-NLS-1$
private static DecimalFormat df6 = new DecimalFormat("#,##0.########"); //8 decimals//$NON-NLS-1$
private static DecimalFormat df7 = new DecimalFormat("###0.##"); //$NON-NLS-1$
Modified: weasis/weasis_framework/trunk/weasis-core/weasis-core-api/src/main/java/org/weasis/core/api/media/data/TagW.java
===================================================================
--- weasis/weasis_framework/trunk/weasis-core/weasis-core-api/src/main/java/org/weasis/core/api/media/data/TagW.java 2011-07-22 11:05:51 UTC (rev 15700)
+++ weasis/weasis_framework/trunk/weasis-core/weasis-core-api/src/main/java/org/weasis/core/api/media/data/TagW.java 2011-07-22 13:30:30 UTC (rev 15701)
@@ -32,6 +32,7 @@
public final static AtomicInteger AppID = new AtomicInteger(1);
private final static AtomicInteger idCounter = new AtomicInteger(Integer.MAX_VALUE);
// TODO date format in general settings
+ public static final long MILLIS_PER_DAY = 24 * 60 * 60 * 1000;
public static final SimpleDateFormat formatDate = new SimpleDateFormat("dd-MM-yyyy"); //$NON-NLS-1$
public static final SimpleDateFormat formatTime = new SimpleDateFormat("HH:mm:ss.SSSSSS"); //$NON-NLS-1$
public static final SimpleDateFormat formatDateTime = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); //$NON-NLS-1$
Modified: weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/AbstractDragGraphic.java
===================================================================
--- weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/AbstractDragGraphic.java 2011-07-22 11:05:51 UTC (rev 15700)
+++ weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/AbstractDragGraphic.java 2011-07-22 13:30:30 UTC (rev 15701)
@@ -612,7 +612,7 @@
g2d.setStroke(oldStroke);
- // // Graphics DEBUG
+ // // Graphics DEBUG
// if (transform != null) {
// g2d.setPaint(Color.CYAN);
// g2d.draw(transform.createTransformedShape(getBounds(transform)));
Modified: weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/AbstractDragGraphicArea.java
===================================================================
--- weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/AbstractDragGraphicArea.java 2011-07-22 11:05:51 UTC (rev 15700)
+++ weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/AbstractDragGraphicArea.java 2011-07-22 13:30:30 UTC (rev 15701)
@@ -167,17 +167,17 @@
Double suv = (Double) imageElement.getTagValue(TagW.SuvFactor);
if (suv != null) {
unit = "SUV (bw)";
- if (ImageMin.isComputed() && (releaseEvent || ImageMin.isGraphicLabel())) {
+ if (ImageMin.isComputed()) {
Double val =
releaseEvent || ImageMin.isQuickComputing() ? min == null ? null : min * suv : null;
measVal.add(new MeasureItem(ImageMin, val, unit));
}
- if (ImageMax.isComputed() && (releaseEvent || ImageMax.isGraphicLabel())) {
+ if (ImageMax.isComputed()) {
Double val =
releaseEvent || ImageMax.isQuickComputing() ? max == null ? null : max * suv : null;
measVal.add(new MeasureItem(ImageMax, val, unit));
}
- if (ImageMean.isComputed() && (releaseEvent || ImageMean.isGraphicLabel())) {
+ if (ImageMean.isComputed()) {
Double val =
releaseEvent || ImageMean.isQuickComputing() ? mean == null ? null : mean * suv : null;
measVal.add(new MeasureItem(ImageMean, val, unit));
Modified: weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/DragLayer.java
===================================================================
--- weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/DragLayer.java 2011-07-22 11:05:51 UTC (rev 15700)
+++ weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/DragLayer.java 2011-07-22 13:30:30 UTC (rev 15701)
@@ -192,7 +192,8 @@
// Improve speed by checking if mousePoint is inside repaintBound before checking if inside Area
Rectangle2D repaintBound = dragGraph.getRepaintBounds(mouseEvt);
if (repaintBound != null && repaintBound.contains(mousePt)) {
- if (dragGraph.getArea(mouseEvt).contains(mousePt))
+ if ((dragGraph.getHandlePointIndex(mouseEvt) >= 0)
+ || (dragGraph.getArea(mouseEvt).contains(mousePt)))
return dragGraph;
}
}
@@ -201,4 +202,39 @@
return null;
}
+ @Override
+ public List<Graphic> getGraphicListContainPoint(MouseEventDouble mouseEvt) {
+
+ ArrayList<Graphic> selectedGraphicList = null;
+
+ final Point2D mousePt = mouseEvt.getImageCoordinates();
+
+ if (graphics != null && mousePt != null) {
+
+ selectedGraphicList = new ArrayList<Graphic>();
+
+ for (int j = graphics.size() - 1; j >= 0; j--) {
+ if (graphics.get(j) instanceof AbstractDragGraphic) {
+
+ AbstractDragGraphic dragGraph = (AbstractDragGraphic) graphics.get(j);
+
+ if (dragGraph.isOnGraphicLabel(mouseEvt)) {
+ selectedGraphicList.add(dragGraph);
+ continue;
+ }
+
+ // Improve speed by checking if mousePoint is inside repaintBound before checking if inside Area
+ Rectangle2D repaintBound = dragGraph.getRepaintBounds(mouseEvt);
+ if (repaintBound != null && repaintBound.contains(mousePt)) {
+ if ((dragGraph.getHandlePointIndex(mouseEvt) >= 0)
+ || (dragGraph.getArea(mouseEvt).contains(mousePt))) {
+ selectedGraphicList.add(dragGraph);
+ }
+ }
+ }
+ }
+ }
+ return selectedGraphicList;
+ }
+
}
Modified: weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/model/AbstractLayer.java
===================================================================
--- weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/model/AbstractLayer.java 2011-07-22 11:05:51 UTC (rev 15700)
+++ weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/model/AbstractLayer.java 2011-07-22 13:30:30 UTC (rev 15701)
@@ -19,6 +19,7 @@
import java.beans.PropertyChangeListener;
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.List;
import org.weasis.core.api.gui.util.GeomUtil;
import org.weasis.core.ui.graphic.Graphic;
@@ -71,10 +72,9 @@
toBack(graph);
}
}
-
+
}
-
private static final long serialVersionUID = -9094820911680205527L;
private PropertyChangeHandler() {
@@ -212,15 +212,17 @@
return graphics;
}
- public abstract java.util.List<Graphic> getGraphicsSurfaceInArea(Rectangle rect, AffineTransform transform);
+ public abstract List<Graphic> getGraphicsSurfaceInArea(Rectangle rect, AffineTransform transform);
- public abstract java.util.List<Graphic> getGraphicsSurfaceInArea(Rectangle rect, AffineTransform transform,
+ public abstract List<Graphic> getGraphicsSurfaceInArea(Rectangle rect, AffineTransform transform,
boolean onlyFrontGraphic);
- public abstract java.util.List<Graphic> getGraphicsBoundsInArea(Rectangle rect);
+ public abstract List<Graphic> getGraphicsBoundsInArea(Rectangle rect);
public abstract Graphic getGraphicContainPoint(MouseEventDouble mouseevent);
+ public abstract List<Graphic> getGraphicListContainPoint(MouseEventDouble mouseevent);
+
public abstract void paint(Graphics2D g2, AffineTransform transform, AffineTransform inverseTransform,
Rectangle2D bound);
Modified: weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/model/AbstractLayerModel.java
===================================================================
--- weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/model/AbstractLayerModel.java 2011-07-22 11:05:51 UTC (rev 15700)
+++ weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/model/AbstractLayerModel.java 2011-07-22 13:30:30 UTC (rev 15701)
@@ -302,16 +302,31 @@
return arraylist;
}
+ /**
+ * @param mouseevent
+ * @return first selected graphic intersecting if exist, otherwise simply first graphic intersecting, or null
+ */
public Graphic getFirstGraphicIntersecting(MouseEventDouble mouseevent) {
+
+ Graphic firstSelectedGraph = null;
+
for (int i = layers.size() - 1; i >= 0; i--) {
AbstractLayer layer = layers.get(i);
if (layer.isVisible()) {
- Graphic graph = layer.getGraphicContainPoint(mouseevent);
- if (graph != null)
- return graph;
+ // Graphic graph = layer.getGraphicContainPoint(mouseevent);
+ List<Graphic> graphList = layer.getGraphicListContainPoint(mouseevent);
+ if (graphList != null) {
+ for (Graphic graph : graphList) {
+ if (graph.isSelected())
+ return graph;
+ else if (firstSelectedGraph == null) {
+ firstSelectedGraph = graph;
+ }
+ }
+ }
}
}
- return null;
+ return firstSelectedGraph;
}
public void deleteAllGraphics() {
Modified: weasis/weasis_framework/trunk/weasis-dicom/weasis-dicom-codec/src/main/java/org/weasis/dicom/codec/DicomMediaIO.java
===================================================================
--- weasis/weasis_framework/trunk/weasis-dicom/weasis-dicom-codec/src/main/java/org/weasis/dicom/codec/DicomMediaIO.java 2011-07-22 11:05:51 UTC (rev 15700)
+++ weasis/weasis_framework/trunk/weasis-dicom/weasis-dicom-codec/src/main/java/org/weasis/dicom/codec/DicomMediaIO.java 2011-07-22 13:30:30 UTC (rev 15701)
@@ -550,8 +550,14 @@
if (weight != null && totalDose != null && halfLife != null && injectTime != null
&& acqTime != null) {
// Difference is seconds divided by halfLife
- double time = (acqTime.getTime() - injectTime.getTime()) / (1000.0 * halfLife);
- double correctedDose = totalDose * Math.exp(-Math.log(2) * time);
+ double time =
+ (acqTime.getTime() % TagW.MILLIS_PER_DAY) - (injectTime.getTime() % TagW.MILLIS_PER_DAY);
+ // Handle case over midnight
+ // TODO NEED to be validated, time more than one day ?
+ if (time < 0) {
+ time += TagW.MILLIS_PER_DAY;
+ }
+ double correctedDose = totalDose * Math.exp(-Math.log(2) * time / (1000.0 * halfLife));
// Weight convert in kg to g
setTag(tagList, TagW.SuvFactor, weight * 1000.0f / correctedDose);
}
Modified: weasis/weasis_framework/trunk/weasis-dicom/weasis-dicom-viewer2d/src/main/java/org/weasis/dicom/viewer2d/EventManager.java
===================================================================
--- weasis/weasis_framework/trunk/weasis-dicom/weasis-dicom-viewer2d/src/main/java/org/weasis/dicom/viewer2d/EventManager.java 2011-07-22 11:05:51 UTC (rev 15700)
+++ weasis/weasis_framework/trunk/weasis-dicom/weasis-dicom-viewer2d/src/main/java/org/weasis/dicom/viewer2d/EventManager.java 2011-07-22 13:30:30 UTC (rev 15701)
@@ -78,6 +78,7 @@
private static ActionW[] keyEventActions = { ActionW.ZOOM, ActionW.SCROLL_SERIES, ActionW.ROTATION,
ActionW.WINLEVEL, ActionW.PAN, ActionW.MEASURE, ActionW.CONTEXTMENU };
+
/** The single instance of this singleton class. */
private static EventManager instance;
Modified: weasis/weasis_framework/trunk/weasis-distributions/etc/config/config.properties
===================================================================
--- weasis/weasis_framework/trunk/weasis-distributions/etc/config/config.properties 2011-07-22 11:05:51 UTC (rev 15700)
+++ weasis/weasis_framework/trunk/weasis-distributions/etc/config/config.properties 2011-07-22 13:30:30 UTC (rev 15701)
@@ -493,7 +493,7 @@
obr.repository.url=http://felix.apache.org/obr/releases.xml ${dollar}{weasis.codebase.url}/bundle/repository.xml
# Weasis version, do not remove this property
-weasis.version=${project.version}-beta9
+weasis.version=${project.version}-beta-11
# If true and the weasis version is different of the installed version, allows to force to override all the modules
weasis.clean.previous.version=true
# Define the Look an Feel for the first launch related to the platform (macosx,linux,windows,...)
Modified: weasis/weasis_framework/trunk/weasis-launcher/conf/config.properties
===================================================================
--- weasis/weasis_framework/trunk/weasis-launcher/conf/config.properties 2011-07-22 11:05:51 UTC (rev 15700)
+++ weasis/weasis_framework/trunk/weasis-launcher/conf/config.properties 2011-07-22 13:30:30 UTC (rev 15701)
@@ -496,14 +496,12 @@
# Set the logging levels for OSGI framework 0=None / 1(default)=Error / 2=Warning / 3=Information / 4=Debug
felix.log.level=4
+
# This may be any of the defined logging levels DEBUG, INFO, WARN, ERROR and FATAL.
org.apache.sling.commons.log.level=DEBUG
-# org.apache.sling.commons.log.file=${felix.cache.rootdir}/.weasis/log/log
-# org.apache.sling.commons.log.file.size=10MB
+#org.apache.sling.commons.log.file=${felix.cache.rootdir}/.weasis/log/log-dev.txt
+#org.apache.sling.commons.log.file.size=10MB
-# Logging configuration for the SCR (if installed)
-ds.loglevel = DEBUG
-
# Sets the initial start level of the framework upon startup.
org.osgi.framework.startlevel.beginning=90
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|