Class Buffer
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 |
|
傳回值
create
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)
參數
傳回值
data
void * easyar_Buffer_data(const easyar_Buffer * This)
public func data() -> OpaquePointer?
public virtual IntPtr data()
傳回值
size
int easyar_Buffer_size(const easyar_Buffer * This)
public func size() -> Int32
public virtual int size()
傳回值
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 |
|
傳回值
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 |
|
傳回值
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 |
|
傳回值
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 |
|
傳回值
wrapByteArray
public static @Nonnull Buffer wrapByteArray(byte @Nonnull[] bytes)
companion object fun wrapByteArray(bytes: Array<Byte>): Buffer
public static Buffer wrapByteArray(byte[] bytes)
參數
傳回值
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 |
|
傳回值
wrapByteArray
public static Buffer wrapByteArray(byte[] bytes, int index, int length)
參數
| 名稱 |
類型 |
描述 |
| bytes |
|
|
| index |
Int32 |
|
| length |
Int32 |
|
傳回值
wrapByteArray
包裝一個字節數組。可指定起始位置和長度。可指定deleter回調,在Buffer被完全釋放時,會調用deleter回調,執行用戶自訂記憶體銷毀行為。deleter必須是執行緒安全的。
public static Buffer wrapByteArray(byte[] bytes, int index, int length, Action deleter)
參數
| 名稱 |
類型 |
描述 |
| bytes |
|
|
| index |
Int32 |
|
| length |
Int32 |
|
| deleter |
Action |
|
傳回值
wrapBuffer
public static @Nonnull Buffer wrapBuffer(java.nio.@Nonnull Buffer directBuffer)
companion object fun wrapBuffer(directBuffer: java.nio.Buffer): 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 |
|
傳回值
copyFromByteArray
從字節數組複製數據到Buffer中。如果複製失敗,則拋出異常。失敗的原因有:源數據範圍或目標數據範圍超出可用範圍。
public void copyFromByteArray(byte @Nonnull[] src)
fun copyFromByteArray(src: Array<Byte>): Unit
public void copyFromByteArray(byte[] 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)
參數
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
參數
傳回值
tryCopyFromByteArray
從字節數組複製數據到Buffer中。如果複製成功,則返回true,否則返回false。失敗的原因有:源數據範圍或目標數據範圍超出可用範圍。
public func tryCopyFromByteArray(_ src: [UInt8], _ srcIndex: Int32, _ index: Int32, _ length: Int32) -> Bool
參數
| 名稱 |
類型 |
描述 |
| src |
|
|
| srcIndex |
Int32 |
|
| index |
Int32 |
|
| length |
Int32 |
|
傳回值
tryCopyToByteArray
從Buffer複製數據到字節數組中。如果複製成功,則返回true,否則返回false。失敗的原因有:源數據範圍或目標數據範圍超出可用範圍。
public func tryCopyToByteArray(_ dest: [UInt8]) -> Bool
參數
傳回值
tryCopyToByteArray
從Buffer複製數據到字節數組中。如果複製成功,則返回true,否則返回false。失敗的原因有:源數據範圍或目標數據範圍超出可用範圍。
public func tryCopyToByteArray(_ index: Int32, _ dest: [UInt8], _ destIndex: Int32, _ length: Int32) -> Bool
參數
| 名稱 |
類型 |
描述 |
| index |
Int32 |
|
| dest |
|
|
| destIndex |
Int32 |
|
| length |
Int32 |
|
傳回值