diff --git a/.gitignore b/.gitignore index 8d47cace3a5bd898da9fb12bed716d60838191a4..57f16fb67c1b1589981416b323d7a9debc728665 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +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 -.project +*.ipr + +### Eclipse ### +.apt_generated .classpath -**/.DS_Store \ No newline at end of file +.factorypath +.project +.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/pom.xml b/pom.xml index bd41c5749d991632768133db6ca730594474ff73..16bc3e93de0286918d087b4ef9cdefb2764b82ff 100644 --- a/pom.xml +++ b/pom.xml @@ -8,14 +8,12 @@ <parent> <groupId>org.bioimageanalysis.icy</groupId> <artifactId>pom-icy</artifactId> - <version>2.2.0</version> + <version>3.0.0-a.1</version> </parent> <!-- Project Information --> <artifactId>ruler-helper</artifactId> - <version>2.0.0</version> - - <packaging>jar</packaging> + <version>2.0.0-a.1</version> <name>Ruler Helper</name> <description>Widget to measure distances over images considering current image scale.</description> @@ -57,8 +55,7 @@ <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/fab/Ruler/Anchor2DTarget.java b/src/main/java/plugins/fab/Ruler/Anchor2DTarget.java index 2daefb08b2ea75b1ca109c54a9eef1177cfb88d6..68479009dfe2b81af105f855e7a6f9b598d042b4 100644 --- a/src/main/java/plugins/fab/Ruler/Anchor2DTarget.java +++ b/src/main/java/plugins/fab/Ruler/Anchor2DTarget.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2023. Institut Pasteur. + * Copyright (c) 2010-2024. Institut Pasteur. * * This file is part of Icy. * Icy is free software: you can redistribute it and/or modify @@ -18,9 +18,10 @@ package plugins.fab.Ruler; -import icy.canvas.IcyCanvas; -import icy.painter.Anchor2D; -import icy.sequence.Sequence; +import org.bioimageanalysis.icy.gui.canvas.IcyCanvas; +import org.bioimageanalysis.icy.model.overlay.anchor.Anchor2D; +import org.bioimageanalysis.icy.model.sequence.Sequence; +import org.jetbrains.annotations.NotNull; import java.awt.*; import java.awt.geom.Line2D; @@ -29,7 +30,6 @@ import java.awt.geom.Line2D; * @author Fabrice de Chaumont */ public class Anchor2DTarget extends Anchor2D { - Line2D line1 = new Line2D.Double(); Line2D line2 = new Line2D.Double(); @@ -39,7 +39,6 @@ public class Anchor2DTarget extends Anchor2D { @Override public void paint(final Graphics2D g, final Sequence sequence, final IcyCanvas canvas) { - if (!visible) return; @@ -67,17 +66,14 @@ public class Anchor2DTarget extends Anchor2D { } g.draw(line1); g.draw(line2); - } - void updateGeometry(final IcyCanvas canvas) { + void updateGeometry(final @NotNull IcyCanvas canvas) { final double adjRayX = canvas.canvasToImageLogDeltaX(ray); final double adjRayY = canvas.canvasToImageLogDeltaY(ray); line1.setLine(position.x - adjRayX, position.y, position.x + adjRayX, position.y); line2.setLine(position.x, position.y - adjRayY, position.x, position.y + adjRayY); - } - } diff --git a/src/main/java/plugins/fab/Ruler/Ruler.java b/src/main/java/plugins/fab/Ruler/Ruler.java index 88ac6c706560982c8d3f3bfa17f76d9f44faa6b3..d452f3af259fbac35458bb97d0b3d37223b13231 100644 --- a/src/main/java/plugins/fab/Ruler/Ruler.java +++ b/src/main/java/plugins/fab/Ruler/Ruler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2023. Institut Pasteur. + * Copyright (c) 2010-2024. Institut Pasteur. * * This file is part of Icy. * Icy is free software: you can redistribute it and/or modify @@ -18,18 +18,20 @@ package plugins.fab.Ruler; -import icy.gui.dialog.MessageDialog; -import icy.plugin.abstract_.PluginActionable; -import icy.sequence.Sequence; +import org.bioimageanalysis.icy.extension.plugin.abstract_.PluginActionable; +import org.bioimageanalysis.icy.extension.plugin.annotation_.IcyPluginIcon; +import org.bioimageanalysis.icy.extension.plugin.annotation_.IcyPluginName; +import org.bioimageanalysis.icy.gui.dialog.MessageDialog; +import org.bioimageanalysis.icy.model.sequence.Sequence; /** * @author Fabrice de Chaumont */ +@IcyPluginName("Ruler Helper") +@IcyPluginIcon(path = "/ruler-helper.png") public class Ruler extends PluginActionable { - @Override public void run() { - final Sequence sequence = getActiveSequence(); if (sequence != null) { @@ -38,7 +40,5 @@ public class Ruler extends PluginActionable { else { MessageDialog.showDialog("Please open an image first.", MessageDialog.INFORMATION_MESSAGE); } - } - } diff --git a/src/main/java/plugins/fab/Ruler/RulerPainter.java b/src/main/java/plugins/fab/Ruler/RulerPainter.java index e6147f1287bc3a799b375da498ec55937b1ad857..cefa198592a3e9ffd7f0e655f13c8e46035e8311 100644 --- a/src/main/java/plugins/fab/Ruler/RulerPainter.java +++ b/src/main/java/plugins/fab/Ruler/RulerPainter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2023. Institut Pasteur. + * Copyright (c) 2010-2024. Institut Pasteur. * * This file is part of Icy. * Icy is free software: you can redistribute it and/or modify @@ -18,17 +18,17 @@ package plugins.fab.Ruler; -import icy.canvas.Canvas2D; -import icy.canvas.IcyCanvas; -import icy.main.Icy; -import icy.math.UnitUtil; -import icy.math.UnitUtil.UnitPrefix; -import icy.painter.Overlay; -import icy.painter.OverlayEvent; -import icy.painter.OverlayListener; -import icy.sequence.Sequence; -import icy.type.point.Point5D; -import icy.util.GraphicsUtil; +import org.bioimageanalysis.icy.Icy; +import org.bioimageanalysis.icy.common.geom.point.Point5D; +import org.bioimageanalysis.icy.common.math.UnitUtil; +import org.bioimageanalysis.icy.gui.GraphicsUtil; +import org.bioimageanalysis.icy.gui.canvas.Canvas2D; +import org.bioimageanalysis.icy.gui.canvas.IcyCanvas; +import org.bioimageanalysis.icy.model.overlay.Overlay; +import org.bioimageanalysis.icy.model.overlay.OverlayEvent; +import org.bioimageanalysis.icy.model.overlay.OverlayListener; +import org.bioimageanalysis.icy.model.sequence.Sequence; +import org.jetbrains.annotations.NotNull; import java.awt.*; import java.awt.event.KeyEvent; @@ -42,7 +42,6 @@ import java.util.ArrayList; * @author Fabrice de Chaumont */ public class RulerPainter extends Overlay implements OverlayListener { - private Anchor2DTarget a1; private Anchor2DTarget a2; @@ -52,7 +51,6 @@ public class RulerPainter extends Overlay implements OverlayListener { // Listener of Anchor - @Override public void overlayChanged(final OverlayEvent overlayEvent) { for (final Sequence sequence : Icy.getMainInterface().getSequencesContaining(this)) { @@ -171,7 +169,7 @@ public class RulerPainter extends Overlay implements OverlayListener { final Font font = new Font("Arial", Font.PLAIN, fontSize); final String pixelString; final double realDistance = Math.sqrt((Math.pow(vx * distance * sequence.getPixelSizeX(), 2) + Math.pow(vy * distance * sequence.getPixelSizeY(), 2))); - pixelString = " " + (int) distance + " px" + " / " + UnitUtil.getBestUnitInMeters(realDistance, 2, UnitPrefix.MICRO); + pixelString = " " + (int) distance + " px" + " / " + UnitUtil.getBestUnitInMeters(realDistance, 2, UnitUtil.UnitPrefix.MICRO); final Rectangle2D pixelBounds = GraphicsUtil.getStringBounds(g, font, pixelString); g.translate(distance / 2 - pixelBounds.getWidth() / 2, -convertScale(canvas, 20)); g.setFont(font); @@ -190,7 +188,7 @@ public class RulerPainter extends Overlay implements OverlayListener { a2.paint(g, sequence, canvas); } - double convertScale(final IcyCanvas canvas, final int value) { + double convertScale(final @NotNull IcyCanvas canvas, final int value) { return canvas.canvasToImageLogDeltaX(value); } diff --git a/src/main/java/plugins/fab/Ruler/ShapeDefinition.java b/src/main/java/plugins/fab/Ruler/ShapeDefinition.java index 60d12c02e241f74dff30224c3a0f7631cba90d28..cac36cf3e0f1c87879ea9bde8206df6efba78103 100644 --- a/src/main/java/plugins/fab/Ruler/ShapeDefinition.java +++ b/src/main/java/plugins/fab/Ruler/ShapeDefinition.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2023. Institut Pasteur. + * Copyright (c) 2010-2024. Institut Pasteur. * * This file is part of Icy. * Icy is free software: you can redistribute it and/or modify @@ -18,25 +18,27 @@ package plugins.fab.Ruler; +import org.jetbrains.annotations.Contract; + import java.awt.*; /** * @author Fabrice de Chaumont */ public class ShapeDefinition { - public int stroke; public Shape shape; public float alpha = 1; + @Contract(pure = true) public ShapeDefinition(final int stroke, final Shape shape) { this.stroke = stroke; this.shape = shape; } + @Contract(pure = true) public ShapeDefinition(final int stroke, final Shape shape, final float alpha) { this(stroke, shape); this.alpha = alpha; } - } diff --git a/src/main/resources/ruler-helper.png b/src/main/resources/ruler-helper.png new file mode 100644 index 0000000000000000000000000000000000000000..4575143f9b4c365fa6b33670aa1d4ef08c303a46 Binary files /dev/null and b/src/main/resources/ruler-helper.png differ