From c4e9281264f0ef1067e6bda5cc132f5e8f1b5171 Mon Sep 17 00:00:00 2001
From: Thomas <thomas.musset@pasteur.fr>
Date: Sun, 7 Jul 2024 00:48:58 +0200
Subject: [PATCH] updated pom to v2.0.0-a.1, fix classes accordingly to new
 architecture, added icon, updated .gitignore

---
 .gitignore                                    |  41 +++-
 StackRotation.jar                             | Bin 4275 -> 0 bytes
 export.jardesc                                |  16 --
 pom.xml                                       |  52 +----
 .../spop/rotation3D/StackRotation.class       | Bin 4632 -> 0 bytes
 .../spop/rotation3D/StackRotation.java        | 209 +++++++++---------
 src/main/resources/stack-rotation.png         | Bin 0 -> 5004 bytes
 7 files changed, 148 insertions(+), 170 deletions(-)
 delete mode 100644 StackRotation.jar
 delete mode 100644 export.jardesc
 delete mode 100644 src/main/java/plugins/spop/rotation3D/StackRotation.class
 create mode 100644 src/main/resources/stack-rotation.png

diff --git a/.gitignore b/.gitignore
index 3d47f98..57f16fb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,41 @@
-.idea/
+/build*
+/workspace
+setting.xml
+release/
 target/
-.settings/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+icy.log
+
+### IntelliJ IDEA ###
+.idea/
+*.iws
 *.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
 .project
-.classpath
\ No newline at end of file
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+**/.DS_Store
+Icon?
\ No newline at end of file
diff --git a/StackRotation.jar b/StackRotation.jar
deleted file mode 100644
index a18d426e7d854c66773851fa79c5c553782d1ead..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4275
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

diff --git a/export.jardesc b/export.jardesc
deleted file mode 100644
index 7f140a2..0000000
--- a/export.jardesc
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="WINDOWS-1252" standalone="no"?>
-<jardesc>
-    <jar path="Stack Rotation/StackRotation.jar"/>
-    <options buildIfNeeded="true" compress="true" descriptionLocation="/Stack Rotation/export.jardesc" exportErrors="false" exportWarnings="true" includeDirectoryEntries="true" overwrite="true" saveDescription="true" storeRefactorings="false" useSourceFolders="false"/>
-    <storedRefactorings deprecationInfo="true" structuralOnly="false"/>
-    <selectedProjects/>
-    <manifest generateManifest="true" manifestLocation="/Icy-Updater/META-INF/MANIFEST.MF" manifestVersion="1.0" reuseManifest="false" saveManifest="false" usesManifest="true">
-        <sealing sealJar="false">
-            <packagesToSeal/>
-            <packagesToUnSeal/>
-        </sealing>
-    </manifest>
-    <selectedElements exportClassFiles="true" exportJavaFiles="true" exportOutputFolder="false">
-        <javaElement handleIdentifier="=Stack Rotation/src"/>
-    </selectedElements>
-</jardesc>
diff --git a/pom.xml b/pom.xml
index 0f93d48..b3da942 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,20 +6,17 @@
 
     <!-- Inherited Icy Parent POM -->
     <parent>
-		<artifactId>pom-icy</artifactId>
+        <artifactId>pom-icy</artifactId>
         <groupId>org.bioimageanalysis.icy</groupId>
-        <version>2.0.0</version>
-	</parent>
+        <version>3.0.0-a.1</version>
+    </parent>
 
     <!-- Project Information -->
     <artifactId>stack-rotation</artifactId>
-    <version>1.2.1</version>
-
-    <packaging>jar</packaging>
+    <version>2.0.0-a.1</version>
 
     <name>Stack Rotation</name>
-    <description>Rotate the 3D stack from Front view to Right view or from Front view to Top view. </description>
-    <url></url>
+    <description>Rotate the 3D stack from Front view to Right view or from Front view to Top view.</description>
     <inceptionYear>2020</inceptionYear>
 
     <organization>
@@ -53,55 +50,22 @@
         </developer>
     </developers>
 
-    <!-- Project properties -->
-    <properties>
-
-    </properties>
-
-    <profiles>
-        <profile>
-            <id>icy-plugin</id>
-            <activation>
-                <activeByDefault>true</activeByDefault>
-            </activation>
-        </profile>
-    </profiles>
-
-    <!-- List of project's dependencies -->
     <dependencies>
-        <!-- The core of Icy -->
         <dependency>
             <groupId>org.bioimageanalysis.icy</groupId>
-            <artifactId>icy-kernel</artifactId>
-			<version>${icy-kernel.version}</version>
-        </dependency>
-		
-		<dependency>
-            <groupId>org.bioimageanalysis.icy</groupId>
-            <artifactId>blockvars</artifactId>
-			<version>${blockvars.version}</version>
+            <artifactId>ezplug</artifactId>
         </dependency>
-
-        <!-- The EzPlug library, simplifies writing UI for Icy plugins. -->
         <dependency>
             <groupId>org.bioimageanalysis.icy</groupId>
-            <artifactId>ezplug</artifactId>
-			<version>${ezplug.version}</version>
+            <artifactId>protocols</artifactId>
         </dependency>
-		
-		<dependency>
-                <groupId>org.bioimageanalysis.icy</groupId>
-                <artifactId>icy-bioformats</artifactId>
-                <version>${icy-bioformats.version}</version>
-            </dependency>
     </dependencies>
 
     <!-- Icy Maven repository (to find parent POM) -->
     <repositories>
         <repository>
             <id>icy</id>
-            <name>Icy's Nexus</name>
-            <url>https://icy-nexus.pasteur.fr/repository/Icy/</url>
+            <url>https://nexus-icy.pasteur.cloud/repository/icy/</url>
         </repository>
     </repositories>
 </project>
\ No newline at end of file
diff --git a/src/main/java/plugins/spop/rotation3D/StackRotation.class b/src/main/java/plugins/spop/rotation3D/StackRotation.class
deleted file mode 100644
index 68074344ee33ae06c785a18f06198858479a547b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4632
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

diff --git a/src/main/java/plugins/spop/rotation3D/StackRotation.java b/src/main/java/plugins/spop/rotation3D/StackRotation.java
index 95aa806..2bf56eb 100644
--- a/src/main/java/plugins/spop/rotation3D/StackRotation.java
+++ b/src/main/java/plugins/spop/rotation3D/StackRotation.java
@@ -1,168 +1,163 @@
+/*
+ * Copyright (c) 2010-2024. 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/>.
+ */
+
 package plugins.spop.rotation3D;
 
-import icy.image.IcyBufferedImage;
-import icy.sequence.Sequence;
-import icy.type.collection.array.Array1DUtil;
-import icy.util.OMEUtil;
+import org.bioimageanalysis.icy.common.collection.array.Array1DUtil;
+import org.bioimageanalysis.icy.extension.plugin.annotation_.IcyPluginIcon;
+import org.bioimageanalysis.icy.extension.plugin.annotation_.IcyPluginName;
+import org.bioimageanalysis.icy.model.OMEUtil;
+import org.bioimageanalysis.icy.model.image.IcyBufferedImage;
+import org.bioimageanalysis.icy.model.sequence.Sequence;
+import org.jetbrains.annotations.NotNull;
 import plugins.adufour.blocks.lang.Block;
 import plugins.adufour.blocks.util.VarList;
 import plugins.adufour.ezplug.EzPlug;
 import plugins.adufour.ezplug.EzVarSequence;
 import plugins.adufour.ezplug.EzVarText;
 
-public class StackRotation extends EzPlug implements Block
-{
-    
-    EzVarSequence input  = new EzVarSequence("Input");
-    EzVarText     type   = new EzVarText("Type", new String[] { "FrontToRight", "FrontToTop" }, false);
+@IcyPluginName("Stack Rotation")
+@IcyPluginIcon(path = "/stack-rotation.png")
+public class StackRotation extends EzPlug implements Block {
+    EzVarSequence input = new EzVarSequence("Input");
+    EzVarText type = new EzVarText("Type", new String[]{"FrontToRight", "FrontToTop"}, false);
     // VarSequence output = new VarSequence("Output", false);
-    
+
     EzVarSequence output = new EzVarSequence("Output");
-    
+
     @Override
-    public void initialize()
-    {
-        // TODO Auto-generated method stub
+    public void initialize() {
         super.addEzComponent(input);
         super.addEzComponent(type);
         // super.addOutput(output);
         super.setTimeDisplay(true);
-        
+
     }
-    
+
     @Override
-    public void execute()
-    {
-        
-        Sequence sequence = input.getValue(true);
+    public void execute() {
+        final Sequence sequence = input.getValue(true);
         Sequence seq_out = new Sequence(OMEUtil.createOMEXMLMetadata(sequence.getOMEXMLMetadata()));
-        if (type.getValue().equalsIgnoreCase("FrontToRight"))
-        {
+        if (type.getValue().equalsIgnoreCase("FrontToRight")) {
             seq_out = FrontToRight(sequence);
             seq_out.setName("FrontToRight");
         }
-        if (type.getValue().equalsIgnoreCase("FrontToTop"))
-        {
+        if (type.getValue().equalsIgnoreCase("FrontToTop")) {
             seq_out = FrontToTop(sequence);
             seq_out.setName("FrontToTop");
-            
+
         }
-        
+
         if (getUI() != null) addSequence(seq_out);
         output.setValue(seq_out);
-        
     }
-    
-    public static Sequence FrontToRight(Sequence sequence)
-    {
-        
-        int z = 0;
-        
-        Sequence seq = new Sequence();
-        
-        int dim_x = sequence.getSizeX();
-        int dim_y = sequence.getSizeY();
-        int dim_z = sequence.getSizeZ();
-        int dim_t = sequence.getSizeT();
-        int dim_c = sequence.getSizeC();
-        double[][] tab = new double[dim_z][dim_x * dim_y];
-        double[][][] tab_r = new double[dim_c][dim_x][dim_y * dim_z];
-        
-        for (int t = 0; t < dim_t; t++)
-        {
-            for (int c = 0; c < dim_c; c++)
-            {
-                for (z = 0; z < dim_z; z++)
-                {
+
+    public static @NotNull Sequence FrontToRight(final @NotNull Sequence sequence) {
+        int z; // = 0;
+
+        final Sequence seq = new Sequence();
+
+        final int dim_x = sequence.getSizeX();
+        final int dim_y = sequence.getSizeY();
+        final int dim_z = sequence.getSizeZ();
+        final int dim_t = sequence.getSizeT();
+        final int dim_c = sequence.getSizeC();
+        final double[][] tab = new double[dim_z][dim_x * dim_y];
+        final double[][][] tab_r = new double[dim_c][dim_x][dim_y * dim_z];
+
+        for (int t = 0; t < dim_t; t++) {
+            for (int c = 0; c < dim_c; c++) {
+                for (z = 0; z < dim_z; z++) {
                     tab[z] = Array1DUtil.arrayToDoubleArray(sequence.getDataXY(t, z, c), false);
                 }
                 for (z = 0; z < dim_z; z++)
                     for (int y = 0; y < dim_y; y++)
-                        for (int x = 0; x < dim_x; x++)
-                        {
+                        for (int x = 0; x < dim_x; x++) {
                             tab_r[c][x][y * dim_z + z] = tab[z][y * dim_x + x];
                         }
             }
-            
-            for (z = 0; z < dim_x; z++)
-            {
-                IcyBufferedImage Icy = new IcyBufferedImage(dim_z, dim_y, dim_c, sequence.getDataType());
+
+            for (z = 0; z < dim_x; z++) {
+                final IcyBufferedImage Icy = new IcyBufferedImage(dim_z, dim_y, dim_c, sequence.getDataType());
                 for (int c = 0; c < dim_c; c++)
                     Icy.setDataXY(c, tab_r[c][z]);
                 seq.setImage(t, z, Icy);
             }
         }
-        
+
         System.gc();
         return seq;
-        
     }
-    
-    public static Sequence FrontToTop(Sequence sequence)
-    {
-        
-        int z = 0;
-        
-        Sequence seq = new Sequence();
-        
-        int dim_x = sequence.getSizeX();
-        int dim_y = sequence.getSizeY();
-        int dim_z = sequence.getSizeZ();
-        int dim_t = sequence.getSizeT();
-        int dim_c = sequence.getSizeC();
-        double[][] tab = new double[dim_z][dim_x * dim_y];
-        double[][][] tab_r = new double[dim_c][dim_y][dim_x * dim_z];
-        
-        for (int t = 0; t < dim_t; t++)
-        {
-            for (int c = 0; c < dim_c; c++)
-            {
-                for (z = 0; z < dim_z; z++)
-                {
+
+    public static @NotNull Sequence FrontToTop(final @NotNull Sequence sequence) {
+        int z; // = 0;
+
+        final Sequence seq = new Sequence();
+
+        final int dim_x = sequence.getSizeX();
+        final int dim_y = sequence.getSizeY();
+        final int dim_z = sequence.getSizeZ();
+        final int dim_t = sequence.getSizeT();
+        final int dim_c = sequence.getSizeC();
+        final double[][] tab = new double[dim_z][dim_x * dim_y];
+        final double[][][] tab_r = new double[dim_c][dim_y][dim_x * dim_z];
+
+        for (int t = 0; t < dim_t; t++) {
+            for (int c = 0; c < dim_c; c++) {
+                for (z = 0; z < dim_z; z++) {
                     tab[z] = Array1DUtil.arrayToDoubleArray(sequence.getDataXY(t, z, c), false);
                 }
                 for (z = 0; z < dim_z; z++)
                     for (int y = 0; y < dim_y; y++)
-                        for (int x = 0; x < dim_x; x++)
-                        {
-                            tab_r[c][y][z * dim_x + x] = tab[z][y * dim_x + x];
-                        }
+                        if (dim_x >= 0) System.arraycopy(
+                                tab[z],
+                                y * dim_x, // + 0,
+                                tab_r[c][y],
+                                z * dim_x, // + 0,
+                                dim_x);
             }
-            
-            for (z = 0; z < dim_y; z++)
-            {
-                IcyBufferedImage Icy = new IcyBufferedImage(dim_x, dim_z, dim_c, sequence.getDataType());
+
+            for (z = 0; z < dim_y; z++) {
+                final IcyBufferedImage Icy = new IcyBufferedImage(dim_x, dim_z, dim_c, sequence.getDataType());
                 for (int c = 0; c < dim_c; c++)
                     Icy.setDataXY(c, tab_r[c][z]);
                 seq.setImage(t, z, Icy);
             }
         }
-        
+
         System.gc();
-        
+
         return seq;
-        
+
     }
-    
-    public void clean()
-    {
+
+    @Override
+    public void clean() {
     }
-    
+
     @Override
-    public void declareInput(VarList inputMap)
-    {
-        // TODO Auto-generated method stub
-        inputMap.add(input.getVariable());
-        inputMap.add(type.getVariable());
-        
+    public void declareInput(final @NotNull VarList inputMap) {
+        inputMap.add("input", input.getVariable());
+        inputMap.add("type", type.getVariable());
     }
-    
+
     @Override
-    public void declareOutput(VarList outputMap)
-    {
-        // TODO Auto-generated method stub
-        outputMap.add(output.getVariable());
-        
+    public void declareOutput(final @NotNull VarList outputMap) {
+        outputMap.add("output", output.getVariable());
     }
-    
 }
diff --git a/src/main/resources/stack-rotation.png b/src/main/resources/stack-rotation.png
new file mode 100644
index 0000000000000000000000000000000000000000..b8cc1e6b51e3d791f92dbed0c81e0e91cde0085f
GIT binary patch
literal 5004
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
WUG7~4Va%ie0000<MNUMnLSTXstEPYe

literal 0
HcmV?d00001

-- 
GitLab