Module java.desktop
Package java.awt.image

Class DataBuffer

java.lang.Object
java.awt.image.DataBuffer
直接已知的子类:
DataBufferByte, DataBufferDouble, DataBufferFloat, DataBufferInt, DataBufferShort, DataBufferUShort

public abstract class DataBuffer extends Object
此类用于包装一个或多个数据数组。DataBuffer 中的每个数据数组称为一个 bank。存在用于获取和设置 DataBuffer 的 bank 中元素的访问器方法,有的带有 bank 指定符,有的不带。不带 bank 指定符的方法使用默认的第 0 个 bank。DataBuffer 可以选择每个 bank 的偏移量,以便即使感兴趣的数据不从数组位置零开始,也可以使用现有数组中的数据。获取或设置 bank 的第 0 个元素,使用数组的 (0+offset) 个元素。size 字段指定数据数组中有多少可用于使用。对于给定 bank,size + offset 不应大于关联数据数组的长度。数据缓冲区的数据类型指示数据数组的类型,还可以指示其他附加语义,例如在字节数组的元素中存储无符号 8 位数据。数据类型可以是 TYPE_UNDEFINED 或下面定义的类型之一。将来可能会添加其他类型。通常,DataBuffer 类的对象将被转换为其特定数据类型的子类之一,以访问特定于数据类型的方法,以提高性能。目前,Java 2D(tm) API 图像类使用 TYPE_BYTE、TYPE_USHORT、TYPE_INT、TYPE_SHORT、TYPE_FLOAT 和 TYPE_DOUBLE DataBuffers 来存储图像数据。
参见:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected int
    此 DataBuffer 中的 bank 数量。
    protected int
    此 DataBuffer 的数据类型。
    protected int
    从默认(第一个)bank 中获取第一个元素的偏移量。
    protected int[]
    所有 bank 的偏移量。
    protected int
    所有 bank 的可用大小。
    static final int
    无符号字节数据的标记。
    static final int
    双精度数据的标记。
    static final int
    浮点数据的标记。
    static final int
    整数数据的标记。
    static final int
    有符号短整数数据的标记。
    static final int
    未定义数据的标记。
    static final int
    无符号短整数数据的标记。
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    DataBuffer(int dataType, int size)
    构造一个包含指定数据类型和大小的一个 bank 的 DataBuffer。
    protected
    DataBuffer(int dataType, int size, int numBanks)
    构造一个包含指定数量的 bank 的 DataBuffer。
    protected
    DataBuffer(int dataType, int size, int numBanks, int offset)
    构造一个包含指定数量的 bank 的 DataBuffer。
    protected
    DataBuffer(int dataType, int size, int numBanks, int[] offsets)
    构造一个包含指定数量的 bank 的 DataBuffer。
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    返回此 DataBuffer 的数据类型。
    static int
    getDataTypeSize(int type)
    返回给定数据类型标记的数据类型的大小(以位为单位)。
    int
    getElem(int i)
    作为整数返回来自第一个(默认)bank 的请求的数据数组元素。
    abstract int
    getElem(int bank, int i)
    作为整数返回来自指定 bank 的请求的数据数组元素。
    double
    getElemDouble(int i)
    作为双精度返回来自第一个(默认)bank 的请求的数据数组元素。
    double
    getElemDouble(int bank, int i)
    作为双精度返回来自指定 bank 的请求的数据数组元素。
    float
    getElemFloat(int i)
    作为浮点数返回来自第一个(默认)bank 的请求的数据数组元素。
    float
    getElemFloat(int bank, int i)
    作为浮点数返回来自指定 bank 的请求的数据数组元素。
    int
    返回此 DataBuffer 中的 bank 数量。
    int
    返回数组元素中默认 bank 的偏移量。
    int[]
    返回所有 bank 的偏移量(以数组元素为单位)。
    int
    返回所有 bank 的大小(以数组元素为单位)。
    void
    setElem(int i, int val)
    从给定整数设置第一个(默认)bank 中的请求的数据数组元素。
    abstract void
    setElem(int bank, int i, int val)
    从给定整数设置指定 bank 中的请求的数据数组元素。
    void
    setElemDouble(int i, double val)
    从给定双精度设置第一个(默认)bank 中的请求的数据数组元素。
    void
    setElemDouble(int bank, int i, double val)
    从给定双精度设置指定 bank 中的请求的数据数组元素。
    void
    setElemFloat(int i, float val)
    从给定浮点数设置第一个(默认)bank 中的请求的数据数组元素。
    void
    setElemFloat(int bank, int i, float val)
    从给定浮点数设置指定 bank 中的请求的数据数组元素。

    Methods declared in class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • TYPE_BYTE

      @Native public static final int TYPE_BYTE
      无符号字节数据的标记。
      参见:
    • TYPE_USHORT

      @Native public static final int TYPE_USHORT
      无符号短整数数据的标记。
      参见:
    • TYPE_SHORT

      @Native public static final int TYPE_SHORT
      有符号短整数数据的标记。
      参见:
    • TYPE_INT

      @Native public static final int TYPE_INT
      整数数据的标记。
      参见:
    • TYPE_FLOAT

      @Native public static final int TYPE_FLOAT
      浮点数据的标记。
      参见:
    • TYPE_DOUBLE

      @Native public static final int TYPE_DOUBLE
      双精度数据的标记。
      参见:
    • TYPE_UNDEFINED

      @Native public static final int TYPE_UNDEFINED
      未定义数据的标记。
      参见:
    • dataType

      protected int dataType
      此 DataBuffer 的数据类型。
    • banks

      protected int banks
      此 DataBuffer 中的 bank 数量。
    • offset

      protected int offset
      从默认(第一个)bank 中获取第一个元素的偏移量。
    • size

      protected int size
      所有 bank 的可用大小。
    • offsets

      protected int[] offsets
      所有 bank 的偏移量。
  • Constructor Details

    • DataBuffer

      protected DataBuffer(int dataType, int size)
      构造一个包含指定数据类型和大小的一个 bank 的 DataBuffer。
      参数:
      dataType - 此 DataBuffer 的数据类型
      size - bank 的大小
    • DataBuffer

      protected DataBuffer(int dataType, int size, int numBanks)
      构造一个包含指定数量的 bank 的 DataBuffer。每个 bank 都具有指定的大小和偏移量为 0。
      参数:
      dataType - 此 DataBuffer 的数据类型
      size - bank 的大小
      numBanks - 此 DataBuffer 中的 bank 数量
    • DataBuffer

      protected DataBuffer(int dataType, int size, int numBanks, int offset)
      构造一个包含指定数量的 bank 的 DataBuffer。每个 bank 都具有指定的数据类型、大小和偏移量。
      参数:
      dataType - 此 DataBuffer 的数据类型
      size - bank 的大小
      numBanks - 此 DataBuffer 中的 bank 数量
      offset - 每个 bank 的偏移量
    • DataBuffer

      protected DataBuffer(int dataType, int size, int numBanks, int[] offsets)
      构造一个包含指定数量的 bank 的 DataBuffer。每个 bank 都具有指定的数据类型和大小。每个 bank 的偏移量由其在偏移量数组中的相应条目指定。
      参数:
      dataType - 此 DataBuffer 的数据类型
      size - bank 的大小
      numBanks - 此 DataBuffer 中的 bank 数量
      offsets - 包含每个 bank 的偏移量的数组
      抛出:
      ArrayIndexOutOfBoundsException - 如果 numBanks 不等于 offsets 的长度
  • Method Details

    • getDataTypeSize

      public static int getDataTypeSize(int type)
      返回给定数据类型标记的数据类型的大小(以位为单位)。
      参数:
      type - 定义的数据类型标记之一的值
      返回:
      数据类型的大小
      抛出:
      IllegalArgumentException - 如果 type 小于零或大于 TYPE_DOUBLE
    • getDataType

      public int getDataType()
      返回此 DataBuffer 的数据类型。
      返回:
      DataBuffer 的数据类型。
    • getSize

      public int getSize()
      返回所有 bank 的大小(以数组元素为单位)。
      返回:
      所有 bank 的大小。
    • getOffset

      public int getOffset()
      返回数组元素中默认 bank 的偏移量。
      返回:
      默认 bank 的偏移量。
    • getOffsets

      public int[] getOffsets()
      返回所有 bank 的偏移量(以数组元素为单位)。
      返回:
      所有 bank 的偏移量。
    • getNumBanks

      public int getNumBanks()
      返回此 DataBuffer 中的 bank 数量。
      返回:
      bank 的数量。
    • getElem

      public int getElem(int i)
      作为整数返回来自第一个(默认)bank 的请求的数据数组元素。
      参数:
      i - 请求的数据数组元素的索引
      返回:
      指定索引处的数据数组元素。
      参见:
    • getElem

      public abstract int getElem(int bank, int i)
      返回来自指定 bank 的请求的数据数组元素作为整数。
      参数:
      bank - 指定的银行
      i - 请求的数据数组元素的索引
      返回:
      返回指定银行中指定索引处的数据数组元素。
      参见:
    • setElem

      public void setElem(int i, int val)
      设置给定整数中第一个(默认)银行中请求的数据数组元素。
      参数:
      i - 数据数组中的指定索引
      val - 要设置的数据数组中指定索引处的元素的数据
      参见:
    • setElem

      public abstract void setElem(int bank, int i, int val)
      设置给定整数中指定银行的请求的数据数组元素。
      参数:
      bank - 指定的银行
      i - 数据数组中的指定索引
      val - 要设置的数据数组中指定银行指定索引处的元素的数据
      参见:
    • getElemFloat

      public float getElemFloat(int i)
      以浮点数形式返回第一个(默认)银行中请求的数据数组元素。此类中的实现是将getElem(i)转换为浮点数。如果需要其他实现,子类可以重写此方法。
      参数:
      i - 请求的数据数组元素的索引
      返回:
      代表指定索引处的数据数组元素的浮点数值。
      参见:
    • getElemFloat

      public float getElemFloat(int bank, int i)
      以浮点数形式返回指定银行中请求的数据数组元素。此类中的实现是将getElem(int, int)转换为浮点数。如果需要其他实现,子类可以重写此方法。
      参数:
      bank - 指定的银行
      i - 请求的数据数组元素的索引
      返回:
      代表指定银行中指定索引处的数据数组元素的浮点数值。
      参见:
    • setElemFloat

      public void setElemFloat(int i, float val)
      以浮点数形式从给定浮点数设置第一个(默认)银行中请求的数据数组元素。此类中的实现是将val转换为整数并调用setElem(int, int)。如果需要其他实现,子类可以重写此方法。
      参数:
      i - 指定的索引
      val - 要设置的数据数组中指定索引处的值
      参见:
    • setElemFloat

      public void setElemFloat(int bank, int i, float val)
      以浮点数形式从给定浮点数设置指定银行中请求的数据数组元素。此类中的实现是将val转换为整数并调用setElem(int, int)。如果需要其他实现,子类可以重写此方法。
      参数:
      bank - 指定的银行
      i - 指定的索引
      val - 要设置的数据数组中指定银行指定索引处的值
      参见:
    • getElemDouble

      public double getElemDouble(int i)
      以双精度浮点数形式从第一个(默认)银行返回请求的数据数组元素。此类中的实现是将getElem(int)转换为双精度浮点数。如果需要其他实现,子类可以重写此方法。
      参数:
      i - 指定的索引
      返回:
      代表数据数组中指定索引处的元素的双精度浮点数值。
      参见:
    • getElemDouble

      public double getElemDouble(int bank, int i)
      以双精度浮点数形式从指定银行返回请求的数据数组元素。此类中的实现是将getElem(bank, i)转换为双精度浮点数。如果需要其他实现,子类可以重写此方法。
      参数:
      bank - 指定的银行
      i - 指定的索引
      返回:
      代表指定银行中指定索引处的数据数组元素的双精度浮点数值。
      参见:
    • setElemDouble

      public void setElemDouble(int i, double val)
      以双精度浮点数形式从给定双精度数设置第一个(默认)银行中请求的数据数组元素。此类中的实现是将val转换为整数并调用setElem(int, int)。如果需要其他实现,子类可以重写此方法。
      参数:
      i - 指定的索引
      val - 要设置的数据数组中指定索引处的值
      参见:
    • setElemDouble

      public void setElemDouble(int bank, int i, double val)
      以双精度浮点数形式从给定双精度数设置指定银行中请求的数据数组元素。此类中的实现是将val转换为整数并调用setElem(int, int)。如果需要其他实现,子类可以重写此方法。
      参数:
      bank - 指定的银行
      i - 指定的索引
      val - 要设置的数据数组中指定银行指定索引处的值
      参见: