Class ARGBType

All Implemented Interfaces:
NativeType<ARGBType>, NumericType<ARGBType>, Add<ARGBType>, Div<ARGBType>, Mul<ARGBType>, MulFloatingPoint, SetOne, SetZero, Sub<ARGBType>, ValueEquals<ARGBType>, Type<ARGBType>

public class ARGBType extends AbstractNativeType<ARGBType> implements NumericType<ARGBType>
A native NumericType that encodes four channels at unsigned byte precision into one 32bit signed integer which is the format used in most display oriented image processing libraries such as AWT or ImageJ. ARGBType implements NumericType as element-wise vector algebra.
Author:
Stephan Preibisch, Stephan Saalfeld
  • Field Details

  • Constructor Details

    • ARGBType

      public ARGBType(NativeImg<?,? extends IntAccess> intStorage)
    • ARGBType

      public ARGBType(int value)
    • ARGBType

      public ARGBType(IntAccess access)
    • ARGBType

      public ARGBType()
  • Method Details

    • createSuitableNativeImg

      public NativeImg<ARGBType,? extends IntAccess> createSuitableNativeImg(NativeImgFactory<ARGBType> storageFactory, long[] dim)
      Description copied from interface: NativeType
      The NativeType creates the NativeImg used for storing image data; based on the given storage strategy and its size. It basically only decides here which BasicType it uses (float, int, byte, bit, ...) and how many entities per pixel it needs (e.g. 2 floats per pixel for a complex number). This enables the separation of containers and the basic types.
      Specified by:
      createSuitableNativeImg in interface NativeType<ARGBType>
      Parameters:
      storageFactory - which storage strategy is used
      dim - the dimensions
      Returns:
      the instantiated NativeImg where only the Type knows the BasicType it contains.
    • updateContainer

      public void updateContainer(Object c)
      Description copied from interface: NativeType
      This method is used by an accessor (e.g., a Cursor) to request an update of the current data array.

      As an example consider a CellCursor moving on a CellImg. The cursor maintains a NativeType which provides access to the image data. When the cursor moves from one cell to the next, the underlying data array of the NativeType must be switched to the data array of the new cell.

      To achieve this, the CellCursor calls updateContainer() with itself as the argument. updateContainer() in turn will call NativeImg.update(Object) on it's container, passing along the reference to the cursor. In this example, the container would be a CellImg. While the NativeType does not know about the type of the cursor, the container does. CellImg knows that it is passed a CellCursor instance, which can be used to figure out the current cell and the underlying data array, which is then returned to the NativeType.

      The idea behind this concept is maybe not obvious. The NativeType knows which basic type is used (float, int, byte, ...). However, it does not know how the data is stored (ArrayImg, CellImg, ...). This prevents the need for multiple implementations of NativeType .

      Specified by:
      updateContainer in interface NativeType<ARGBType>
      Parameters:
      c - reference to an accessor which can be passed on to the container (which will know what to do with it).
    • duplicateTypeOnSameNativeImg

      public ARGBType duplicateTypeOnSameNativeImg()
      Description copied from interface: NativeType
      Creates a new NativeType which stores in the same physical array. This is only used internally.
      Specified by:
      duplicateTypeOnSameNativeImg in interface NativeType<ARGBType>
      Returns:
      a new NativeType instance working on the same NativeImg
    • rgba

      public static final int rgba(int r, int g, int b, int a)
    • rgba

      public static final int rgba(float r, float g, float b, float a)
    • rgba

      public static final int rgba(double r, double g, double b, double a)
    • red

      public static final int red(int value)
    • green

      public static final int green(int value)
    • blue

      public static final int blue(int value)
    • alpha

      public static final int alpha(int value)
    • get

      public int get()
    • set

      public void set(int f)
    • mul

      public void mul(float c)
      Specified by:
      mul in interface MulFloatingPoint
    • mul

      public void mul(double c)
      Specified by:
      mul in interface MulFloatingPoint
    • add

      public void add(ARGBType c)
      Specified by:
      add in interface Add<ARGBType>
    • div

      public void div(ARGBType c)
      Specified by:
      div in interface Div<ARGBType>
    • mul

      public void mul(ARGBType c)
      Specified by:
      mul in interface Mul<ARGBType>
    • sub

      public void sub(ARGBType c)
      Specified by:
      sub in interface Sub<ARGBType>
    • set

      public void set(ARGBType c)
      Description copied from interface: Type
      Sets the value of another Type.
      Specified by:
      set in interface Type<ARGBType>
      Parameters:
      c - the new value
    • setOne

      public void setOne()
      Specified by:
      setOne in interface SetOne
    • setZero

      public void setZero()
      Specified by:
      setZero in interface SetZero
    • createVariable

      public ARGBType createVariable()
      Description copied from interface: Type
      Creates a new Type variable which can only store one value.
      Specified by:
      createVariable in interface Type<ARGBType>
      Returns:
      a new Type variable
    • copy

      public ARGBType copy()
      Description copied from interface: Type
      Creates a new Type variable that has the value of this Type
      Specified by:
      copy in interface Type<ARGBType>
      Returns:
      a new Type variable
    • toString

      public String toString()
      Specified by:
      toString in class AbstractNativeType<ARGBType>
    • getEntitiesPerPixel

      public Fraction getEntitiesPerPixel()
      Description copied from interface: NativeType
      Get the number of entities in the storage array required to store one pixel value. A pixel value may be spread over several or less than one entity. For example, a complex number may require 2 entries of a float[] array to store one pixel. Or a 12-bit type might need 12/64th entries of a long[] array.
      Specified by:
      getEntitiesPerPixel in interface NativeType<ARGBType>
      Returns:
      the number of storage type entities required to store one pixel value.
    • valueEquals

      public boolean valueEquals(ARGBType t)
      Specified by:
      valueEquals in interface ValueEquals<ARGBType>