/** Loads the default settings from Preferences to set up the dialog. */ public void legacyLoadDefaults() { String defaultsString = Preferences.getDialogDefaults(getDialogName()); if ((defaultsString != null) && (newImage != null)) { try { StringTokenizer st = new StringTokenizer(defaultsString, ","); textSearchWindowSide.setText("" + MipavUtil.getInt(st)); textSimilarityWindowSide.setText("" + MipavUtil.getInt(st)); textNoiseStandardDeviation.setText("" + MipavUtil.getFloat(st)); textDegree.setText("" + MipavUtil.getFloat(st)); doRician = MipavUtil.getBoolean(st); doRicianCheckBox.setSelected(doRician); textDegree.setEnabled(doRician); labelDegree.setEnabled(doRician); image25DCheckBox.setSelected(MipavUtil.getBoolean(st)); if (MipavUtil.getBoolean(st)) { newImage.setSelected(true); } else { replaceImage.setSelected(true); } } catch (Exception ex) { // since there was a problem parsing the defaults string, start over with the original // defaults Preferences.debug("Resetting defaults for dialog: " + getDialogName()); Preferences.removeProperty(getDialogName()); } } }
/** * Returns the name of an image output by this algorithm, the image returned depends on the * parameter label given (which can be used to retrieve the image object from the image registry). * * @param imageParamName The output image parameter label for which to get the image name. * @return The image name of the requested output image parameter label. */ public String getOutputImageName(final String imageParamName) { if (imageParamName.equals(AlgorithmParameters.RESULT_IMAGE)) { return getResultImage().getImageName(); } Preferences.debug( "Unrecognized output image parameter: " + imageParamName + "\n", Preferences.DEBUG_SCRIPTING); return null; }
/** * Returns the name of an image output by this algorithm, the image returned depends on the * parameter label given (which can be used to retrieve the image object from the image registry). * * @param imageParamName The output image parameter label for which to get the image name. * @return The image name of the requested output image parameter label. */ public String getOutputImageName(final String imageParamName) { if (imageParamName.equals(AlgorithmParameters.RESULT_IMAGE)) { if (getResultImage() != null) { // algo produced a new result image return getResultImage().getImageName(); } else { // algo was done in place return image.getImageName(); } } Preferences.debug( "Unrecognized output image parameter: " + imageParamName + "\n", Preferences.DEBUG_SCRIPTING); return null; }
/** * The top level rendering call. This function calls beforeResampleAll, resampleAll, and * mapIntermediateToFinal, all virtual functions that are implemented in derived classes. * * @param iDS The number of slices to increment during the resampling phase. The value should be * one or larger. If one, all slices of the volume data are resampled. If two, only every * other slice is resampled. An input larger than one is used to allow fast rendering during * rotation of the volume data. Once the rotation terminates, a composite with input of one * should be called. */ public synchronized void composite(int iDS) { long startTime = 0, now = 0; double elapsedTime = 0d; // compute maximum component of the box direction vector float fMax = 0.0f; int i, iMax = -1; for (i = 0; i < 3; i++) { float fAbs = Math.abs(m_aafBox[2][i]); if (fAbs > fMax) { fMax = fAbs; iMax = i; } } startTime = System.currentTimeMillis(); traceInit(); // composite in the appropriate direction if (iMax == 0) { beforeResampleAll(1, 2, 0); } else if (iMax == 1) { beforeResampleAll(2, 0, 1); } else { beforeResampleAll(0, 1, 2); } resampleAll(iDS); mapIntermediateToFinal(); now = System.currentTimeMillis(); elapsedTime = (double) (now - startTime); if (elapsedTime <= 0) { elapsedTime = (double) 0.0; } Preferences.debug( "Shear elapse time = " + (double) (elapsedTime / 1000.0) + "\n"); // in seconds }
/** Sets up the GUI (panels, buttons, etc) and displays it on the screen. */ private void init() { if (image.getFileInfo(0).getFileFormat() == FileUtility.DICOM) { FileInfoDicom dicomInfo = (FileInfoDicom) image.getFileInfo(0); FileDicomTagTable tagTable = dicomInfo.getTagTable(); if (tagTable.getValue("0018,1310") != null) { // Acquisition matrix FileDicomTag tag = tagTable.get(new FileDicomKey("0018,1310")); Object[] values = tag.getValueList(); int valNumber = values.length; if ((valNumber == 4) && (values instanceof Short[])) { int frequencyRows = ((Short) values[0]).intValue(); Preferences.debug("frequencyRows = " + frequencyRows + "\n"); int frequencyColumns = ((Short) values[1]).intValue(); Preferences.debug("frequencyColumns = " + frequencyColumns + "\n"); int phaseRows = ((Short) values[2]).intValue(); Preferences.debug("phaseRows = " + phaseRows + "\n"); int phaseColumns = ((Short) values[3]).intValue(); Preferences.debug("phaseColumns = " + phaseColumns + "\n"); if ((frequencyRows > 0) && (phaseRows == 0)) { subYDim = frequencyRows; } else if ((frequencyRows == 0) && (phaseRows > 0)) { subYDim = phaseRows; } if ((frequencyColumns > 0) && (phaseColumns == 0)) { subXDim = frequencyColumns; } else if ((frequencyColumns == 0) && (phaseColumns > 0)) { subXDim = phaseColumns; } } } // if (tagTable.getValue("0018,1310") != null) if (tagTable.getValue("0019,100A") != null) { FileDicomTag tag = tagTable.get(new FileDicomKey("0019,100A")); Object value = tag.getValue(false); if (value instanceof Short) { numberOfImagesInMosaic = ((Short) value).intValue(); Preferences.debug("Number of images in mosaic = " + numberOfImagesInMosaic + "\n"); } } // if (tagTable.getValue("0019,100A") != null) } // if (image.getFileInfo(0).getFileFormat() == FileUtility.DICOM)*/ setForeground(Color.black); setTitle("Mosaic To 3D Volume"); JPanel inputPanel = new JPanel(new GridBagLayout()); inputPanel.setForeground(Color.black); inputPanel.setBorder(buildTitledBorder("Image")); JLabel labelUse = new JLabel("Image:"); labelUse.setForeground(Color.black); labelUse.setFont(serif12); JLabel labelImage = new JLabel(image.getImageName()); labelImage.setForeground(Color.black); labelImage.setFont(serif12); GridBagConstraints gbc = new GridBagConstraints(); gbc.gridx = 0; gbc.gridy = 0; gbc.gridheight = 1; gbc.gridwidth = 1; gbc.anchor = GridBagConstraints.WEST; gbc.weightx = 1; gbc.insets = new Insets(5, 5, 5, 5); inputPanel.add(labelUse, gbc); gbc.gridx = 1; gbc.fill = GridBagConstraints.HORIZONTAL; inputPanel.add(labelImage, gbc); JPanel dimensionPanel = new JPanel(new GridBagLayout()); dimensionPanel.setForeground(Color.black); dimensionPanel.setBorder(buildTitledBorder("X and Y Dimensions of Result")); JLabel labelXDim = new JLabel("X dimension of slices"); labelXDim.setForeground(Color.black); labelXDim.setFont(serif12); textXDim = new JTextField(10); if (subXDim != 0) { textXDim.setText(String.valueOf(subXDim)); } textXDim.setFont(serif12); textXDim.setForeground(Color.black); JLabel labelYDim = new JLabel("Y dimension of slices"); labelYDim.setForeground(Color.black); labelYDim.setFont(serif12); textYDim = new JTextField(10); if (subYDim != 0) { textYDim.setText(String.valueOf(subYDim)); } textYDim.setFont(serif12); textYDim.setForeground(Color.black); JLabel labelNumberImages = new JLabel("Number of images in mosaic"); labelNumberImages.setForeground(Color.black); labelNumberImages.setFont(serif12); textNumberImages = new JTextField(10); if (numberOfImagesInMosaic != 0) { textNumberImages.setText(String.valueOf(numberOfImagesInMosaic)); } textNumberImages.setFont(serif12); textNumberImages.setForeground(Color.black); gbc.gridx = 0; gbc.gridy = 0; dimensionPanel.add(labelXDim, gbc); gbc.gridx = 1; dimensionPanel.add(textXDim, gbc); gbc.gridx = 0; gbc.gridy = 1; dimensionPanel.add(labelYDim, gbc); gbc.gridx = 1; dimensionPanel.add(textYDim, gbc); gbc.gridx = 0; gbc.gridy = 2; dimensionPanel.add(labelNumberImages, gbc); gbc.gridx = 1; dimensionPanel.add(textNumberImages, gbc); JPanel mainPanel = new JPanel(new BorderLayout()); mainPanel.add(inputPanel, BorderLayout.NORTH); mainPanel.add(dimensionPanel, BorderLayout.CENTER); mainPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); JPanel buttonPanel = new JPanel(); buttonPanel.add(buildButtons()); getContentPane().add(mainPanel); getContentPane().add(buttonPanel, BorderLayout.SOUTH); pack(); setVisible(true); }