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