/* * Copyright (C) 2010-2014 Andreas Maier * CONRAD is developed as an Open Source project under the GNU General Public License (GPL). */ package edu.stanford.rsl.conrad.phantom.renderer; import edu.stanford.rsl.conrad.geometry.splines.SurfaceBSplineVolumePhantom; import edu.stanford.rsl.conrad.phantom.workers.AnalyticPhantom3DVolumeRenderer; import edu.stanford.rsl.conrad.phantom.workers.SliceWorker; import edu.stanford.rsl.conrad.utils.Configuration; import edu.stanford.rsl.conrad.utils.ImageGridBuffer; import edu.stanford.rsl.conrad.utils.UserUtil; public class MetricPhantomRenderer extends SliceParallelVolumePhantomRenderer { protected double voxelSizeX = 0.5; protected double voxelSizeY = 0.5; protected double voxelSizeZ = 0.5; @Override public void configure() throws Exception { Configuration config = Configuration.getGlobalConfiguration(); projectionNumber = -1; buffer = new ImageGridBuffer(); readDimensionsFromGlobalConfig(); voxelSizeX = config.getGeometry().getVoxelSpacingX(); voxelSizeY = config.getGeometry().getVoxelSpacingY(); voxelSizeZ = config.getGeometry().getVoxelSpacingZ(); modelWorker = (SliceWorker) UserUtil.queryObject("Select slice worker", "Worker Selection", SliceWorker.class); configureWorkers(); configured = true; } /** * Reports a list of all known subclasses of SliceWorker for physical phantoms * @return the worker list. */ public static SliceWorker [] getAvailableSliceWorkers(){ return new SliceWorker [] { new SurfaceBSplineVolumePhantom(), new AnalyticPhantom3DVolumeRenderer() //new AnalyticPhantomProjectorWorker() }; } /** * Gives a list of the available Workers as String [] * @return the worker names; */ public static String [] getAvailableWorkersAsString(){ SliceWorker [] workers = getAvailableSliceWorkers(); String [] strings = new String [workers.length]; for (int i = 0; i < workers.length; i++){ strings[i] = workers[i].toString(); } return strings; } /** * Method to select a worker given it's String representation * @param name the String * @return the Worker */ public static SliceWorker getWorkerFromString(String name){ SliceWorker worker = null; SliceWorker [] workers = getAvailableSliceWorkers(); for (SliceWorker w: workers){ if (w.toString().equals(name)) worker = w; } return worker; } @Override public String toString(){ if (modelWorker != null) { return modelWorker.toString(); } else { return "Metric Volume Phantom"; } } }