From b0d678e4b1ee6507f3d1b7716fdf7ee29465f651 Mon Sep 17 00:00:00 2001
From: Stephan Saalfeld <saalfelds@janelia.hhmi.org>
Date: Tue, 4 Mar 2014 11:33:12 -0500
Subject: [PATCH] added VolatileUnsignedByteType... more to come I guess...
---
.../volatiles/VolatileByteAccess.java | 11 ++
.../volatiles/array/VolatileByteArray.java | 52 +++++++++
.../volatiles/array/VolatileShortArray.java | 2 +
.../volatiles/VolatileUnsignedByteType.java | 106 ++++++++++++++++++
4 files changed, 171 insertions(+)
create mode 100644 src/main/java/net/imglib2/img/basictypeaccess/volatiles/VolatileByteAccess.java
create mode 100644 src/main/java/net/imglib2/img/basictypeaccess/volatiles/array/VolatileByteArray.java
create mode 100644 src/main/java/net/imglib2/type/volatiles/VolatileUnsignedByteType.java
diff --git a/src/main/java/net/imglib2/img/basictypeaccess/volatiles/VolatileByteAccess.java b/src/main/java/net/imglib2/img/basictypeaccess/volatiles/VolatileByteAccess.java
new file mode 100644
index 00000000..9a79fbdb
--- /dev/null
+++ b/src/main/java/net/imglib2/img/basictypeaccess/volatiles/VolatileByteAccess.java
@@ -0,0 +1,11 @@
+package net.imglib2.img.basictypeaccess.volatiles;
+
+import net.imglib2.img.basictypeaccess.ByteAccess;
+
+
+/**
+ * @author Stephan Saalfeld <saalfelds@janelia.hhmi.org>
+ * @author Tobias Pietzsch <tobias.pietzsch@gmail.com>
+ */
+public interface VolatileByteAccess extends ByteAccess, VolatileAccess
+{}
diff --git a/src/main/java/net/imglib2/img/basictypeaccess/volatiles/array/VolatileByteArray.java b/src/main/java/net/imglib2/img/basictypeaccess/volatiles/array/VolatileByteArray.java
new file mode 100644
index 00000000..ebec4451
--- /dev/null
+++ b/src/main/java/net/imglib2/img/basictypeaccess/volatiles/array/VolatileByteArray.java
@@ -0,0 +1,52 @@
+package net.imglib2.img.basictypeaccess.volatiles.array;
+
+import net.imglib2.img.basictypeaccess.volatiles.VolatileByteAccess;
+
+/**
+ * A {@link ByteArray} with an {@link #isValid()} flag.
+ *
+ * @author Stephan Saalfeld <saalfelds@janelia.hhmi.org>
+ * @author Tobias Pietzsch <tobias.pietzsch@gmail.com>
+ */
+public class VolatileByteArray extends AbstractVolatileArray< VolatileByteArray > implements VolatileByteAccess
+{
+ private static final long serialVersionUID = -2609245209721069962L;
+
+ protected byte[] data;
+
+ public VolatileByteArray( final int numEntities, final boolean isValid )
+ {
+ super( isValid );
+ this.data = new byte[ numEntities ];
+ }
+
+ public VolatileByteArray( final byte[] data, final boolean isValid )
+ {
+ super( isValid );
+ this.data = data;
+ }
+
+ @Override
+ public byte getValue( final int index )
+ {
+ return data[ index ];
+ }
+
+ @Override
+ public void setValue( final int index, final byte value )
+ {
+ data[ index ] = value;
+ }
+
+ @Override
+ public VolatileByteArray createArray( final int numEntities )
+ {
+ return new VolatileByteArray( numEntities, true );
+ }
+
+ @Override
+ public byte[] getCurrentStorageArray()
+ {
+ return data;
+ }
+}
diff --git a/src/main/java/net/imglib2/img/basictypeaccess/volatiles/array/VolatileShortArray.java b/src/main/java/net/imglib2/img/basictypeaccess/volatiles/array/VolatileShortArray.java
index 869d891b..5f754222 100644
--- a/src/main/java/net/imglib2/img/basictypeaccess/volatiles/array/VolatileShortArray.java
+++ b/src/main/java/net/imglib2/img/basictypeaccess/volatiles/array/VolatileShortArray.java
@@ -10,6 +10,8 @@ import net.imglib2.img.basictypeaccess.volatiles.VolatileShortAccess;
*/
public class VolatileShortArray extends AbstractVolatileArray< VolatileShortArray > implements VolatileShortAccess
{
+ private static final long serialVersionUID = -8460450507170281183L;
+
protected short data[];
public VolatileShortArray( final int numEntities, final boolean isValid )
diff --git a/src/main/java/net/imglib2/type/volatiles/VolatileUnsignedByteType.java b/src/main/java/net/imglib2/type/volatiles/VolatileUnsignedByteType.java
new file mode 100644
index 00000000..a2a5a43a
--- /dev/null
+++ b/src/main/java/net/imglib2/type/volatiles/VolatileUnsignedByteType.java
@@ -0,0 +1,106 @@
+package net.imglib2.type.volatiles;
+
+import net.imglib2.Volatile;
+import net.imglib2.img.NativeImg;
+import net.imglib2.img.NativeImgFactory;
+import net.imglib2.img.basictypeaccess.ByteAccess;
+import net.imglib2.img.basictypeaccess.volatiles.VolatileByteAccess;
+import net.imglib2.img.basictypeaccess.volatiles.array.VolatileByteArray;
+import net.imglib2.type.numeric.integer.UnsignedByteType;
+
+/**
+ * A {@link Volatile} variant of {@link UnsignedByteType}. It uses an
+ * underlying {@link UnsignedByteType} that maps into a
+ * {@link VolatileByteAccess}.
+ *
+ * @author Stephan Saalfeld <saalfelds@janelia.hhmi.org>
+ * @author Tobias Pietzsch <tobias.pietzsch@gmail.com>
+ */
+public class VolatileUnsignedByteType extends AbstractVolatileNativeRealType< UnsignedByteType, VolatileUnsignedByteType >
+{
+ final protected NativeImg< ?, ? extends VolatileByteAccess > img;
+
+ private static class WrappedUnsignedByteType extends UnsignedByteType
+ {
+ public WrappedUnsignedByteType( final NativeImg<?, ? extends ByteAccess> img )
+ {
+ super( img );
+ }
+
+ public WrappedUnsignedByteType( final ByteAccess access )
+ {
+ super( access );
+ }
+
+ public void setAccess( final ByteAccess access )
+ {
+ dataAccess = access;
+ }
+ }
+
+ // this is the constructor if you want it to read from an array
+ public VolatileUnsignedByteType( final NativeImg< ?, ? extends VolatileByteAccess > img )
+ {
+ super( new WrappedUnsignedByteType( img ), false );
+ this.img = img;
+ }
+
+ // this is the constructor if you want to specify the dataAccess
+ public VolatileUnsignedByteType( final VolatileByteAccess access )
+ {
+ super( new WrappedUnsignedByteType( access ), access.isValid() );
+ this.img = null;
+ }
+
+ // this is the constructor if you want it to be a variable
+ public VolatileUnsignedByteType( final int value )
+ {
+ this( new VolatileByteArray( 1, true ) );
+ set( value );
+ }
+
+ // this is the constructor if you want it to be a variable
+ public VolatileUnsignedByteType()
+ {
+ this( 0 );
+ }
+
+ public void set( final int value )
+ {
+ get().set( value );
+ }
+
+ @Override
+ public void updateContainer( final Object c )
+ {
+ final VolatileByteAccess a = img.update( c );
+ ( ( WrappedUnsignedByteType )t ).setAccess( a );
+ setValid( a.isValid() );
+ }
+
+ @Override
+ public NativeImg< VolatileUnsignedByteType, ? extends VolatileByteAccess > createSuitableNativeImg( final NativeImgFactory< VolatileUnsignedByteType > storageFactory, final long[] dim )
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public VolatileUnsignedByteType duplicateTypeOnSameNativeImg()
+ {
+ return new VolatileUnsignedByteType( img );
+ }
+
+ @Override
+ public VolatileUnsignedByteType createVariable()
+ {
+ return new VolatileUnsignedByteType();
+ }
+
+ @Override
+ public VolatileUnsignedByteType copy()
+ {
+ final VolatileUnsignedByteType v = createVariable();
+ v.set( this );
+ return v;
+ }
+}
--
GitLab