46 template<
typename T,
template<
typename TT>
typename A>
49 grk_buf(T* buffer,
size_t off,
size_t length,
bool ownsData)
54 grk_buf(T* buffer,
size_t length,
bool ownsData) :
grk_buf(buffer, 0, length, ownsData) {}
94 inline bool write(T* b,
size_t size)
108 buf = A<T>::alloc(length);
167 GRK_WARN(
"grk_buf8: attempt to increment buffer offset out of bounds");
178 if(
offset < (
size_t)(-off))
228 template<
typename T,
template<
typename TT>
typename A>
231 grk_buf2d(T* buffer,
bool ownsData, uint32_t w, uint32_t strd, uint32_t h)
277 uint64_t data_size_needed = (uint64_t)
stride *
height() *
sizeof(T);
278 if(!data_size_needed)
282 grk::GRK_ERROR(
"Failed to allocate aligned memory buffer of dimensions %u x %u",
287 memset(this->
buf, 0, data_size_needed);
363 T* ptr = this->
buf + (inter.y0 *
stride + inter.x0);
364 T* srcPtr = src->
buf + ((inter.y0 - src->
y0) * src->
stride + inter.x0 - src->
x0);
365 uint32_t
len = inter.width();
366 for(uint32_t j = inter.y0; j < inter.y1; ++j)
368 filter.copy(ptr, srcPtr,
len);
377 memcpy(dst, src,
len);
#define SIZE_MAX
Definition: MemManager.cpp:29
Copyright (C) 2016-2022 Grok Image Compression Inc.
Definition: ICacheable.h:20
uint32_t grk_make_aligned_width(uint32_t width)
Definition: MemManager.cpp:35
void GRK_ERROR(const char *fmt,...)
Definition: logger.cpp:58
void GRK_WARN(const char *fmt,...)
Definition: logger.cpp:49
void * grk_aligned_malloc(size_t size)
Allocate memory aligned to a 16 byte boundary.
Definition: MemManager.cpp:76
void grk_aligned_free(void *ptr)
Definition: MemManager.cpp:80
void dealloc(T *buf)
Definition: buffer.h:41
T * alloc(size_t length)
Definition: buffer.h:37
T * alloc(size_t length)
Definition: buffer.h:25
void dealloc(T *buf)
Definition: buffer.h:29
void copy(T *dst, T *src, uint32_t len)
Definition: buffer.h:375
grk_buf2d_simple & incX_IN_PLACE(size_t deltaX)
Definition: buffer.h:211
grk_buf2d_simple(T *buf, uint32_t stride, uint32_t height)
Definition: buffer.h:208
grk_buf2d_simple()
Definition: buffer.h:207
T * buf_
Definition: buffer.h:223
grk_buf2d_simple & incY_IN_PLACE(size_t deltaY)
Definition: buffer.h:217
uint32_t height_
Definition: buffer.h:225
uint32_t stride_
Definition: buffer.h:224
void transfer(T **buffer, uint32_t *strd)
Definition: buffer.h:327
void copyFrom(const grk_buf2d &src, F filter)
Definition: buffer.h:348
grk_buf2d(uint32_t w, uint32_t h)
Definition: buffer.h:234
void attach(T *buffer, uint32_t strd)
Definition: buffer.h:293
void attach(grk_buf2d *rhs, uint32_t x, uint32_t y)
Definition: buffer.h:306
grk_buf2d(const grk_rect32 &b, [[maybe_unused]] bool useOrigin)
Definition: buffer.h:241
void attach(grk_buf2d *rhs)
Definition: buffer.h:316
grk_buf2d_simple< T > simple(void) const
Definition: buffer.h:248
void attach(grk_buf2d &rhs, uint32_t x, uint32_t y)
Definition: buffer.h:298
void copyFrom(const grk_buf2d &src)
Definition: buffer.h:380
bool alloc2d(bool clear)
Definition: buffer.h:271
void copyFrom(const grk_buf2d *src, F filter)
Definition: buffer.h:354
grk_buf2d & operator=(const grk_buf2d *rhs)
Definition: buffer.h:260
grk_buf2d(void)
Definition: buffer.h:244
grk_buf2d(const grk_rect32 &b)
Definition: buffer.h:238
grk_buf2d_simple< float > simpleF(void) const
Definition: buffer.h:252
grk_buf2d(const grk_buf2d &rhs)
Definition: buffer.h:245
grk_buf2d(const grk_rect32 *b)
Definition: buffer.h:235
virtual ~grk_buf2d()=default
grk_buf2d(T *buffer, bool ownsData, uint32_t w, uint32_t strd, uint32_t h)
Definition: buffer.h:231
void acquire(T *buffer, uint32_t strd)
Definition: buffer.h:321
T * getBuffer(void) const
Definition: buffer.h:384
uint32_t stride
Definition: buffer.h:392
bool isWindowValid(grk_rect32 win)
Returns whether window bounds are valid (non empty and within buffer bounds)
Definition: buffer.h:341
void attach(grk_buf2d &rhs)
Definition: buffer.h:302
grk_buf2d & operator=(const grk_buf2d &rhs)
Definition: buffer.h:256
T * address(uint32_t x, uint32_t y)
Definition: buffer.h:388
size_t remainingLength(void)
Definition: buffer.h:150
void attach(T *buffer)
Definition: buffer.h:127
grk_buf & operator=(const grk_buf *rhs)
Definition: buffer.h:67
T read(void)
Definition: buffer.h:82
grk_buf(T *buffer, size_t length)
Definition: buffer.h:52
bool owns_data
Definition: buffer.h:198
grk_buf & operator=(const grk_buf &rhs)
Definition: buffer.h:63
size_t len
Definition: buffer.h:197
void incrementOffset(ptrdiff_t off)
Definition: buffer.h:154
void acquire(T *buffer)
Definition: buffer.h:133
bool write(T *b, size_t size)
Definition: buffer.h:94
void transfer(T **buffer)
Definition: buffer.h:140
grk_buf(T *buffer, size_t off, size_t length, bool ownsData)
Definition: buffer.h:49
grk_buf()
Definition: buffer.h:53
bool write(T val)
Definition: buffer.h:86
virtual bool alloc(size_t length)
Definition: buffer.h:103
grk_buf(const grk_buf &rhs)
Definition: buffer.h:59
bool canRead(void)
Definition: buffer.h:78
grk_buf(T *buffer, size_t length, bool ownsData)
Definition: buffer.h:54
T * currPtr(void) const
Definition: buffer.h:189
virtual ~grk_buf()
Definition: buffer.h:55
virtual void dealloc()
Definition: buffer.h:117
T * buf
Definition: buffer.h:195
size_t offset
Definition: buffer.h:196
uint32_t width() const
Definition: geometry.h:335
uint32_t y1
Definition: geometry.h:124
uint32_t x0
Definition: geometry.h:124
uint32_t x1
Definition: geometry.h:124
grk_rect< uint32_t > & operator=(const grk_rect< uint32_t > &rhs)
Definition: geometry.h:201
uint32_t height() const
Definition: geometry.h:339
grk_rect< uint32_t > intersection(const grk_rect< uint32_t > rhs) const
Definition: geometry.h:281
uint32_t y0
Definition: geometry.h:124