@@ -0,0 +1,1128 @@
+package net.imagej.ops.view;%0A%0Aimport net.imagej.ops.InputOp;%0Aimport net.imagej.ops.Op;%0Aimport net.imagej.ops.ViewOps.View;%0Aimport net.imglib2.type.Type;%0Aimport net.imglib2.view.IntervalView;%0Aimport net.imglib2.view.Views;%0A%0Aimport org.scijava.ItemIO;%0Aimport org.scijava.plugin.Parameter;%0Aimport org.scijava.plugin.Plugin;%0A%0A@Plugin(type = Op.class, name = View.NAME)%0Apublic class Rotate%3CI extends Type%3CI%3E%3E implements InputOp%3CIntervalView%3CI%3E%3E, DefaultView%3CIntervalView%3CI%3E%3E %7B%0A%0A%0A%09@Parameter(type = ItemIO.OUTPUT)%0A%09private IntervalView%3CI%3E output;%0A%09%0A%09@Parameter(type = ItemIO.INPUT)%0A%09private int fromAxis;%0A%09%0A%09@Parameter(type = ItemIO.INPUT)%0A%09private int toAxis;%0A%09%0A%0A%09@Parameter(type = ItemIO.INPUT)%0A%09private IntervalView%3CI%3E input;%0A%0A%0A%09@Override%0A%09public IntervalView%3CI%3E getOutput() %7B%0A%09%09return output;%0A%09%7D%0A%0A%0A%09@Override%0A%09public void setOutput(IntervalView%3CI%3E output) %7B%0A%09%09this.output = output;%0A%09%7D%0A%0A%0A%09@Override%0A%09public void run() %7B%0A%09%09output = Views.rotate(input, fromAxis, toAxis);%0A%09%7D%0A%0A%0A%09@Override%0A%09public IntervalView%3CI%3E getInput() %7B%0A%09%09return input;%0A%09%7D%0A%0A%0A%09@Override%0A%09public void setInput(IntervalView%3CI%3E input) %7B%0A%09%09this.input = input;%0A%09%7D%0A%0A%0A%7D%0A

Add Rotate op.