Skip to content
Snippets Groups Projects
Commit cffcc2ea authored by Thomas  MUSSET's avatar Thomas MUSSET
Browse files

updated pom, optimized code for java 11

parent fcb7a508
No related branches found
No related tags found
No related merge requests found
......@@ -13,7 +13,7 @@
<!-- Project Information -->
<artifactId>3d-spheres-vtk</artifactId>
<version>1.0.1</version>
<version>2.0.0</version>
<packaging>jar</packaging>
......
package plugins.lagache.spherevtk;
/*
* Copyright (c) 2010-2023. Institut Pasteur.
*
* This file is part of Icy.
* Icy is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Icy 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Icy. If not, see <https://www.gnu.org/licenses/>.
*/
import java.awt.Color;
import java.awt.geom.Point2D;
import java.util.ArrayList;
package plugins.lagache.spherevtk;
import icy.plugin.abstract_.Plugin;
import icy.roi.BooleanMask2D;
import icy.roi.ROI;
import icy.roi.ROI2D;
import plugins.adufour.blocks.lang.Block;
import plugins.adufour.blocks.util.VarList;
import plugins.adufour.vars.lang.VarColor;
import plugins.adufour.vars.lang.VarDouble;
import plugins.adufour.vars.lang.VarDoubleArrayNative;
import plugins.adufour.vars.lang.VarROIArray;
import plugins.adufour.vars.lang.VarSequence;
import plugins.adufour.vars.lang.VarString;
import plugins.kernel.roi.roi2d.ROI2DPoint;
import plugins.adufour.vars.lang.*;
// Colocalisation with Ripley function K
// Significant
import java.awt.*;
/**
* Colocalisation with Ripley function K Significant
*/
public class DrawSpheresVTK extends Plugin implements Block {
VarSequence input_sequence = new VarSequence("Input sequence", null);
VarDoubleArrayNative x= new VarDoubleArrayNative("x", null);
VarDoubleArrayNative y= new VarDoubleArrayNative("y", null);
VarDoubleArrayNative z= new VarDoubleArrayNative("z", null);
VarString name = new VarString("Name of the overlay", "detections");
VarColor color = new VarColor("Color", Color.blue);
VarDouble size = new VarDouble("Size", 1.0);
@Override
public void declareInput(VarList inputMap) {
inputMap.add("Input Sequence", input_sequence);
inputMap.add("x",x);
inputMap.add("y",y);
inputMap.add("z",z);
inputMap.add("Size",size);
inputMap.add("Color",color);
inputMap.add("Name of the overlay",name);
}
@Override
public void declareOutput(VarList outputMap) {
}
@Override
public void run() {
// Add the cross overlay, it becomes active after being added.
input_sequence.getValue().addOverlay(new SphereVTK(x.getValue(),y.getValue(),z.getValue(),size.getValue(),color.getValue(),name.getValue()));
}
}
VarSequence input_sequence = new VarSequence("Input sequence", null);
VarDoubleArrayNative x = new VarDoubleArrayNative("x", null);
VarDoubleArrayNative y = new VarDoubleArrayNative("y", null);
VarDoubleArrayNative z = new VarDoubleArrayNative("z", null);
VarString name = new VarString("Name of the overlay", "detections");
VarColor color = new VarColor("Color", Color.blue);
VarDouble size = new VarDouble("Size", 1.0);
@Override
public void declareInput(final VarList inputMap) {
inputMap.add("Input Sequence", input_sequence);
inputMap.add("x", x);
inputMap.add("y", y);
inputMap.add("z", z);
inputMap.add("Size", size);
inputMap.add("Color", color);
inputMap.add("Name of the overlay", name);
}
@Override
public void declareOutput(final VarList outputMap) {
}
@Override
public void run() {
// Add the cross overlay, it becomes active after being added.
input_sequence.getValue().addOverlay(new SphereVTK(x.getValue(), y.getValue(), z.getValue(), size.getValue(), color.getValue(), name.getValue()));
}
}
/*
* Copyright 2010, 2011 Institut Pasteur.
*
* This file is part of ICY.
*
* ICY is free software: you can redistribute it and/or modify
* Copyright (c) 2010-2023. Institut Pasteur.
*
* This file is part of Icy.
* Icy is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* ICY is distributed in the hope that it will be useful,
*
* Icy 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 General Public License for more details.
*
*
* You should have received a copy of the GNU General Public License
* along with ICY. If not, see <http://www.gnu.org/licenses/>.
* along with Icy. If not, see <https://www.gnu.org/licenses/>.
*/
package plugins.lagache.spherevtk;
import icy.canvas.IcyCanvas;
import icy.painter.Overlay;
import icy.painter.VtkPainter;
import icy.sequence.Sequence;
import icy.vtk.VtkUtil;
import java.awt.Color;
import java.awt.Graphics2D;
import plugins.kernel.canvas.VtkCanvas;
import vtk.vtkActor;
import vtk.vtkFloatArray;
import vtk.vtkGlyph3D;
import vtk.vtkLookupTable;
import vtk.vtkMolecule;
import vtk.vtkMoleculeMapper;
import vtk.vtkPoints;
import vtk.vtkPolyDataMapper;
import vtk.vtkProp;
import vtk.vtkSphereSource;
import vtk.vtkUnsignedShortArray;
import vtk.vtkUnstructuredGrid;
import vtk.*;
import java.awt.*;
/**
* @author stephane
*/
public class SphereVTK extends Overlay implements VtkPainter
{
public class SphereVTK extends Overlay implements VtkPainter {
double[] x, y, z;
double size;
Color color;
private vtkActor[] sphere_ens;
public SphereVTK(double[] x, double[] y, double[] z, double size, Color color, String name)
{
public SphereVTK(final double[] x, final double[] y, final double[] z, final double size, final Color color, final String name) {
super(name);
this.x = x;
......@@ -65,8 +49,7 @@ public class SphereVTK extends Overlay implements VtkPainter
init();
}
private void init()
{
private void init() {
// create points
final vtkPoints points = new vtkPoints();
// setup scales
......@@ -82,8 +65,7 @@ public class SphereVTK extends Overlay implements VtkPainter
// index, R, G, B, A
colors.SetTableValue(0, color.getRed() / 255f, color.getGreen() / 255f, color.getBlue() / 255f, 1.0);
for (int i = 0; i < x.length; i++)
{
for (int i = 0; i < x.length; i++) {
points.InsertNextPoint(x[i], y[i], z[i]);
scales.InsertNextValue(1);
col.InsertNextValue(0); // first color
......@@ -91,12 +73,12 @@ public class SphereVTK extends Overlay implements VtkPainter
// grid structured to append center, radius and color label
final vtkUnstructuredGrid grid = new vtkUnstructuredGrid();
grid.SetPoints(points);
grid.GetPointData().AddArray(scales);
grid.GetPointData().SetActiveScalars("scales"); // !!!to set radius first
grid.GetPointData().AddArray(col);
points.Delete();
scales.Delete();
col.Delete();
......@@ -109,8 +91,8 @@ public class SphereVTK extends Overlay implements VtkPainter
sphere.SetPhiResolution(6);
// object to group sphere and grid and keep smooth interaction
final vtkGlyph3D glyph3D = new vtkGlyph3D();
final vtkGlyph3D glyph3D = new vtkGlyph3D();
glyph3D.SetInputData(grid);
glyph3D.SetSourceConnection(sphere.GetOutputPort());
......@@ -130,95 +112,18 @@ public class SphereVTK extends Overlay implements VtkPainter
sphere_ens[0] = actor;
}
// init vtk objects
private void init_2()
{
final double[] pts = new double[x.length * 3];
// convert to single array
for (int i = 0; i < x.length; i++)
{
pts[(i * 3) + 0] = x[i];
pts[(i * 3) + 1] = y[i];
pts[(i * 3) + 2] = z[i];
}
final vtkPoints vtkPts = VtkUtil.getPoints(pts);
sphere_ens = new vtkActor[1];
final vtkMolecule mol = new vtkMolecule();
mol.SetPoints(vtkPts);
vtkPts.Delete();
final vtkUnsignedShortArray atomicNums = (vtkUnsignedShortArray) mol.GetVertexData().GetScalars();
// set atomic num
for (int i = 0; i < x.length; i++)
atomicNums.InsertValue(i, 0);
// mapper
final vtkMoleculeMapper molMapper = new vtkMoleculeMapper();
molMapper.SetInputData(mol);
molMapper.UseFastSettings();
// molMapper.SetRenderAtoms(true);
// molMapper.SetRenderBonds(false);
// actor
final vtkActor molActor = new vtkActor();
molActor.SetMapper(molMapper);
sphere_ens[0] = molActor;
}
// init vtk objects
private void init_old()
{
sphere_ens = new vtkActor[x.length];
for (int i = 0; i < x.length; i++)
{
// source
final vtkSphereSource sphere = new vtkSphereSource();
sphere.SetRadius(size);
sphere.SetThetaResolution(6);
sphere.SetPhiResolution(6);
sphere.SetCenter(x[i], y[i], z[i]);
// mapper
final vtkPolyDataMapper map = new vtkPolyDataMapper();
map.SetInputConnection(sphere.GetOutputPort());
// actor
vtkActor aSphere = new vtkActor();
aSphere.SetMapper(map);
// double total = color.getRed()+ color.getGreen()+ color.getBlue();
double red = color.getRed() / 255.;
double green = color.getGreen() / 255.;
double blue = color.getBlue() / 255.;
aSphere.GetProperty().SetColor(red, green, blue);
sphere_ens[i] = aSphere;
}
}
@Override
public void paint(Graphics2D g, Sequence sequence, IcyCanvas canvas)
{
public void paint(final Graphics2D g, final Sequence sequence, final IcyCanvas canvas) {
super.paint(g, sequence, canvas);
if (canvas instanceof VtkCanvas)
{
if (canvas instanceof VtkCanvas) {
// disable picking by using this property
((VtkCanvas) canvas).getPicker().PickFromListOn();
}
}
@Override
public vtkProp[] getProps()
{
public vtkProp[] getProps() {
return sphere_ens;
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment