Table of Contents

Class Buffer

命名空间
easyar

Buffer 存储了原始字节数组,可以用来访问图像数据。 在Java API中可以从 Image 中获取buffer然后copy数据到Java字节数组。 在EasyAR Sense的所有版本中,你都可以访问图像数据。参考 Image

Buffer

方法

wrap

包装一个指定长度的原始内存块。在Buffer被完全释放的时候,会调用deleter回调,执行用户自定义内存销毁行为。deleter必须是线程安全的。

void easyar_Buffer_wrap(void * ptr, int size, easyar_FunctorOfVoid deleter, easyar_Buffer * * Return)
static std::shared_ptr<Buffer> wrap(void * ptr, int size, std::function<void()> deleter)
public static @Nonnull Buffer wrap(long ptr, int size, @Nonnull FunctorOfVoid deleter)
companion object fun wrap(ptr: Long, size: Int, deleter: FunctorOfVoid): Buffer
+ (easyar_Buffer *)wrap:(void *)ptr size:(int)size deleter:(void (^)())deleter
public static func wrap(_ ptr: OpaquePointer?, _ size: Int32, _ deleter: @escaping () -> Void) -> Buffer
public static Buffer wrap(IntPtr ptr, int size, Action deleter)

参数

名称 类型 描述
ptr IntPtr
size Int32
deleter Action

返回

类型 描述
Buffer

create

创建一个指定字节长度的Buffer。

void easyar_Buffer_create(int size, easyar_Buffer * * Return)
static std::shared_ptr<Buffer> create(int size)
public static @Nonnull Buffer create(int size)
companion object fun create(size: Int): Buffer
+ (easyar_Buffer *)create:(int)size
public static func create(_ size: Int32) -> Buffer
public static Buffer create(int size)

参数

名称 类型 描述
size Int32

返回

类型 描述
Buffer

data

返回原始内存地址。

void * easyar_Buffer_data(const easyar_Buffer * This)
void * data()
public long data()
fun data(): Long
- (void *)data
public func data() -> OpaquePointer?
public virtual IntPtr data()

返回

类型 描述
IntPtr

size

Buffer的字节长度。

int easyar_Buffer_size(const easyar_Buffer * This)
int size()
public int size()
fun size(): Int
- (int)size
public func size() -> Int32
public virtual int size()

返回

类型 描述
Int32

memoryCopy

复制原始内存。主要用于内存操作不完善的语言或环境。

void easyar_Buffer_memoryCopy(void * src, void * dest, int length)
static void memoryCopy(void * src, void * dest, int length)
public static void memoryCopy(long src, long dest, int length)
companion object fun memoryCopy(src: Long, dest: Long, length: Int): Unit
+ (void)memoryCopy:(void *)src dest:(void *)dest length:(int)length
public static func memoryCopy(_ src: OpaquePointer?, _ dest: OpaquePointer?, _ length: Int32) -> Void
public static void memoryCopy(IntPtr src, IntPtr dest, int length)

参数

名称 类型 描述
src IntPtr
dest IntPtr
length Int32

返回

类型 描述
Void

tryCopyFrom

尝试从原始内存地址复制数据到Buffer中。如果复制成功,则返回true,否则返回false。失败的原因有:源数据范围或目标数据范围超出可用范围。

bool easyar_Buffer_tryCopyFrom(easyar_Buffer * This, void * src, int srcIndex, int index, int length)
bool tryCopyFrom(void * src, int srcIndex, int index, int length)
public boolean tryCopyFrom(long src, int srcIndex, int index, int length)
fun tryCopyFrom(src: Long, srcIndex: Int, index: Int, length: Int): Boolean
- (bool)tryCopyFrom:(void *)src srcIndex:(int)srcIndex index:(int)index length:(int)length
public func tryCopyFrom(_ src: OpaquePointer?, _ srcIndex: Int32, _ index: Int32, _ length: Int32) -> Bool
public virtual bool tryCopyFrom(IntPtr src, int srcIndex, int index, int length)

参数

名称 类型 描述
src IntPtr
srcIndex Int32
index Int32
length Int32

返回

类型 描述
Boolean

tryCopyTo

尝试从Buffer复制数据到原始内存地址中。如果复制成功,则返回true,否则返回false。失败的原因有:源数据范围或目标数据范围超出可用范围。

bool easyar_Buffer_tryCopyTo(easyar_Buffer * This, int index, void * dest, int destIndex, int length)
bool tryCopyTo(int index, void * dest, int destIndex, int length)
public boolean tryCopyTo(int index, long dest, int destIndex, int length)
fun tryCopyTo(index: Int, dest: Long, destIndex: Int, length: Int): Boolean
- (bool)tryCopyTo:(int)index dest:(void *)dest destIndex:(int)destIndex length:(int)length
public func tryCopyTo(_ index: Int32, _ dest: OpaquePointer?, _ destIndex: Int32, _ length: Int32) -> Bool
public virtual bool tryCopyTo(int index, IntPtr dest, int destIndex, int length)

参数

名称 类型 描述
index Int32
dest IntPtr
destIndex Int32
length Int32

返回

类型 描述
Boolean

partition

创建一个子Buffer,并引用原Buffer。一个Buffer在所有子Buffer释放后才会释放。

void easyar_Buffer_partition(easyar_Buffer * This, int index, int length, easyar_Buffer * * Return)
std::shared_ptr<Buffer> partition(int index, int length)
public @Nonnull Buffer partition(int index, int length)
fun partition(index: Int, length: Int): Buffer
- (easyar_Buffer *)partition:(int)index length:(int)length
public func partition(_ index: Int32, _ length: Int32) -> Buffer
public virtual Buffer partition(int index, int length)

参数

名称 类型 描述
index Int32
length Int32

返回

类型 描述
Buffer

wrapByteArray

包装一个字节数组。

public static @Nonnull Buffer wrapByteArray(byte @Nonnull[] bytes)
companion object fun wrapByteArray(bytes: Array<Byte>): Buffer
public static Buffer wrapByteArray(byte[] bytes)

参数

名称 类型 描述
bytes

返回

类型 描述
Buffer

wrapByteArray

包装一个字节数组。可以指定起始位置和长度,可以指定Buffer是只读还是可读写(只读Buffer释放可能更快)。可以指定deleter回调,在Buffer被完全释放的时候,会调用deleter回调,执行用户自定义内存销毁行为。deleter必须是线程安全的。

public static @Nonnull Buffer wrapByteArray(byte @Nonnull[] bytes, int index, int length, boolean readOnly, @Nonnull FunctorOfVoid deleter)
companion object fun wrapByteArray(bytes: Array<Byte>, index: Int, length: Int, readOnly: Boolean, deleter: FunctorOfVoid): Buffer

参数

名称 类型 描述
bytes
index Int32
length Int32
readOnly Boolean
deleter Action

返回

类型 描述
Buffer

wrapByteArray

包装一个字节数组。可以指定起始位置和长度。

public static Buffer wrapByteArray(byte[] bytes, int index, int length)

参数

名称 类型 描述
bytes
index Int32
length Int32

返回

类型 描述
Buffer

wrapByteArray

包装一个字节数组。可以指定起始位置和长度。可以指定deleter回调,在Buffer被完全释放的时候,会调用deleter回调,执行用户自定义内存销毁行为。deleter必须是线程安全的。

public static Buffer wrapByteArray(byte[] bytes, int index, int length, Action deleter)

参数

名称 类型 描述
bytes
index Int32
length Int32
deleter Action

返回

类型 描述
Buffer

wrapBuffer

包装一个java.nio.Buffer。

public static @Nonnull Buffer wrapBuffer(java.nio.@Nonnull Buffer directBuffer)
companion object fun wrapBuffer(directBuffer: java.nio.Buffer): Buffer

参数

名称 类型 描述
directBuffer

返回

类型 描述
Buffer

wrapBuffer

包装一个java.nio.Buffer。可以指定deleter回调,在Buffer被完全释放的时候,会调用deleter回调,执行用户自定义内存销毁行为。deleter必须是线程安全的。

public static @Nonnull Buffer wrapBuffer(java.nio.@Nonnull Buffer directBuffer, @Nonnull FunctorOfVoid deleter)
companion object fun wrapBuffer(directBuffer: java.nio.Buffer, deleter: Action): Buffer

参数

名称 类型 描述
directBuffer
deleter Action

返回

类型 描述
Buffer

copyFromByteArray

从字节数组复制数据到Buffer中。如果复制失败,则抛出异常。失败的原因有:源数据范围或目标数据范围超出可用范围。

public void copyFromByteArray(byte @Nonnull[] src)
fun copyFromByteArray(src: Array<Byte>): Unit
public void copyFromByteArray(byte[] src)

参数

名称 类型 描述
src

copyFromByteArray

从字节数组复制数据到Buffer中。如果复制失败,则抛出异常。失败的原因有:源数据范围或目标数据范围超出可用范围。

public void copyFromByteArray(byte @Nonnull[] src, int srcIndex, int index, int length)
fun copyFromByteArray(src: Array<Byte>, srcIndex: Int, index: Int, length: Int): Unit
public void copyFromByteArray(byte[] src, int srcIndex, int index, int length)

参数

名称 类型 描述
src
srcIndex Int32
index Int32
length Int32

copyToByteArray

从Buffer复制数据到字节数组中。如果复制失败,则抛出异常。失败的原因有:源数据范围或目标数据范围超出可用范围。

public void copyToByteArray(byte @Nonnull[] dest)
fun copyToByteArray(dest: Array<Byte>): Unit
public void copyToByteArray(byte[] dest)

参数

名称 类型 描述
dest

copyToByteArray

从Buffer复制数据到字节数组中。如果复制失败,则抛出异常。失败的原因有:源数据范围或目标数据范围超出可用范围。

public void copyToByteArray(int index, byte @Nonnull[] dest, int destIndex, int length)
fun copyToByteArray(index: Int, dest: Array<Byte>, destIndex: Int, length: Int): Unit
public void copyToByteArray(int index, byte[] dest, int destIndex, int length)

参数

名称 类型 描述
index Int32
dest
destIndex Int32
length Int32

tryCopyFromByteArray

从字节数组复制数据到Buffer中。如果复制成功,则返回true,否则返回false。失败的原因有:源数据范围或目标数据范围超出可用范围。

public func tryCopyFromByteArray(_ src: [UInt8]) -> Bool

参数

名称 类型 描述
src

返回

类型 描述
Boolean

tryCopyFromByteArray

从字节数组复制数据到Buffer中。如果复制成功,则返回true,否则返回false。失败的原因有:源数据范围或目标数据范围超出可用范围。

public func tryCopyFromByteArray(_ src: [UInt8], _ srcIndex: Int32, _ index: Int32, _ length: Int32) -> Bool

参数

名称 类型 描述
src
srcIndex Int32
index Int32
length Int32

返回

类型 描述
Boolean

tryCopyToByteArray

从Buffer复制数据到字节数组中。如果复制成功,则返回true,否则返回false。失败的原因有:源数据范围或目标数据范围超出可用范围。

public func tryCopyToByteArray(_ dest: [UInt8]) -> Bool

参数

名称 类型 描述
dest

返回

类型 描述
Boolean

tryCopyToByteArray

从Buffer复制数据到字节数组中。如果复制成功,则返回true,否则返回false。失败的原因有:源数据范围或目标数据范围超出可用范围。

public func tryCopyToByteArray(_ index: Int32, _ dest: [UInt8], _ destIndex: Int32, _ length: Int32) -> Bool

参数

名称 类型 描述
index Int32
dest
destIndex Int32
length Int32

返回

类型 描述
Boolean