69 static_assert(
sizeof(T) <= 4);
70 if(val < (std::numeric_limits<T>::min)())
71 val = (std::numeric_limits<T>::min)();
72 else if(val > (std::numeric_limits<T>::max)())
73 val = (std::numeric_limits<T>::max)();
86 return clip<T>((int64_t)lhs + rhs);
92 return clip<T>((int64_t)lhs - rhs);
177 Logger::logger_.
info(
"[%u,%u,%u,%u,%u,%u]",
origin_x0,
origin_y0,
x0,
y0,
x1,
y1);
181 std::ostringstream os;
200 return x >=
x0 && y >=
y0 && x <
x1 && y <
y1;
209 if(rhs && (
this != rhs))
245 x1 * scalex,
y1 * scaley);
296 std::min<T>(
x1, rhs->
x1), std::min<T>(
y1, rhs->
y1));
306 std::min<T>(
y1, rhs.
y1));
314 std::min<T>(
x1, rhs->
x1), std::min<T>(
y1, rhs->
y1));
319 return std::max<T>(
x0, rhs->
x0) < std::min<T>(
x1, rhs->
x1) &&
320 std::max<T>(
y0, rhs->
y0) < std::min<T>(
y1, rhs->
y1);
326 std::max<T>(
x1, rhs->
x1), std::max<T>(
y1, rhs->
y1));
334 return (uint64_t)(
x1 -
x0) * (
y1 -
y0);
357 return rc.pan_IN_PLACE(x, y);
371 return grow_IN_PLACE(boundary, boundary, (std::numeric_limits<T>::max)(),
372 (std::numeric_limits<T>::max)());
376 return grow_IN_PLACE(boundaryx, boundaryy, (std::numeric_limits<T>::max)(),
377 (std::numeric_limits<T>::max)());
Copyright (C) 2016-2024 Grok Image Compression Inc.
Definition ICacheable.h:20
T satAdd(int64_t lhs, int64_t rhs)
Definition geometry.h:78
T clip(int64_t val)
Definition geometry.h:67
uint32_t ceildiv(T a, T b)
Divide an integer by another integer and round upwards.
Definition grk_intmath.h:33
T satSub(T lhs, T rhs)
Definition geometry.h:90
grk_rect< uint32_t > grk_rect32
Definition geometry.h:61
grk_rect< uint16_t > grk_rect16
Definition geometry.h:62
T ceildivpow2(T a, uint32_t b)
Definition grk_intmath.h:40
void info(const char *fmt,...) override
Definition Logger.h:35
static Logger logger_
Definition Logger.h:70
T x0
Definition geometry.h:48
grk_line(T _x0, T _x1)
Definition geometry.h:47
grk_line()
Definition geometry.h:46
T x1
Definition geometry.h:49
T length() const
Definition geometry.h:51
T x
Definition geometry.h:37
T y
Definition geometry.h:38
grk_pt(T _x, T _y)
Definition geometry.h:36
grk_pt()
Definition geometry.h:35
Definition geometry.h:103
uint64_t area(void) const
Definition geometry.h:332
T width() const
Definition geometry.h:336
grk_rect< T > & pan_IN_PLACE(int64_t x, int64_t y)
Definition geometry.h:359
bool absoluteCoordinates
Definition geometry.h:123
grk_rect< T > pan(int64_t x, int64_t y) const
Definition geometry.h:353
void setRect(grk_rect< T > rhs)
Definition geometry.h:233
T y1
Definition geometry.h:125
grk_rect< T > & setOrigin(T origx, T origy, bool absolute)
Definition geometry.h:127
T x0
Definition geometry.h:125
grk_rect< T > intersection(const grk_rect< T > rhs) const
Definition geometry.h:282
bool operator==(const grk_rect< T > &rhs) const
Definition geometry.h:221
grk_rect< T > & grow_IN_PLACE(T boundaryx, T boundaryy)
Definition geometry.h:374
grk_rect< T > & toRelative(void)
Definition geometry.h:157
grk_rect< T > & grow_IN_PLACE(T boundaryx, T boundaryy, grk_rect< T > bounds)
Definition geometry.h:391
T x1
Definition geometry.h:125
grk_rect< T > clip(const grk_rect< T > *rhs) const
Definition geometry.h:292
grk_rect< T > scaleDownCeil(uint64_t denx, uint64_t deny) const
Definition geometry.h:263
T origin_y0
Definition geometry.h:124
T height() const
Definition geometry.h:340
bool valid(void) const
Definition geometry.h:186
T parityY(void) const
Definition geometry.h:404
grk_rect< T > & toAbsolute(void)
Definition geometry.h:167
grk_rect< T > & operator=(const grk_rect< T > &rhs)
Definition geometry.h:202
grk_rect< T > & grow_IN_PLACE(T boundary, grk_rect< T > bounds)
Definition geometry.h:387
grk_line< T > dimX() const
Definition geometry.h:344
grk_rect< T > & clip_IN_PLACE(const grk_rect< T > &rhs)
Definition geometry.h:302
bool nonEmptyIntersection(const grk_rect< T > *rhs) const
Definition geometry.h:316
T parityX(void) const
Definition geometry.h:400
virtual ~grk_rect()=default
grk_rect< T > & setOrigin(grk_rect< T > *rhs, bool absolute)
Definition geometry.h:143
grk_rect< T > rectUnion(const grk_rect< T > &rhs) const
Definition geometry.h:328
grk_rect< T > scale(uint32_t scalex, uint32_t scaley) const
Definition geometry.h:242
grk_rect< T > scaleDownCeilPow2(uint32_t power) const
Definition geometry.h:269
grk_rect< T > & grow_IN_PLACE(T boundary, T maxX, T maxY)
Definition geometry.h:379
bool contains(grk_pt< T > pt)
Definition geometry.h:194
grk_rect< T > & grow_IN_PLACE(T boundary)
Definition geometry.h:369
bool empty(void) const
Definition geometry.h:190
grk_rect< T > & operator=(const grk_rect< T > *rhs)
Definition geometry.h:206
grk_rect(T x0, T y0, T x1, T y1)
Definition geometry.h:108
grk_rect(const grk_rect *rhs)
Definition geometry.h:110
grk_rect< T > scaleDownPow2(grk_pt< T > pow) const
Definition geometry.h:259
T origin_x0
Definition geometry.h:124
virtual void print(void) const
Definition geometry.h:175
grk_line< T > dimY() const
Definition geometry.h:348
grk_rect< T > clip(const grk_rect< T > &rhs) const
Definition geometry.h:298
grk_rect< T > scaleDown(uint64_t denx, uint64_t deny) const
Definition geometry.h:247
void setRect(grk_rect< T > *rhs)
Definition geometry.h:229
grk_rect(void)
Definition geometry.h:120
grk_rect< T > rectUnion(const grk_rect< T > *rhs) const
Definition geometry.h:322
grk_rect< T > scaleDownCeil(uint32_t den) const
Definition geometry.h:237
bool contains(T x, T y)
Definition geometry.h:198
bool isContainedIn(const grk_rect< T > rhs) const
Definition geometry.h:288
grk_rect(const grk_rect &rhs)
Definition geometry.h:109
grk_rect< T > scaleDownCeilPow2(uint32_t powx, uint32_t powy) const
Definition geometry.h:275
grk_rect(T origin_x0, T origin_y0, T x0, T y0, T x1, T y1)
Definition geometry.h:104
std::string boundsString() const
Definition geometry.h:179
grk_rect< T > & grow_IN_PLACE(T boundaryx, T boundaryy, T maxX, T maxY)
Definition geometry.h:383
grk_rect< T > & setOrigin(grk_rect< T > &rhs, bool absolute)
Definition geometry.h:139
T y0
Definition geometry.h:125
grk_rect< T > intersection(const grk_rect< T > *rhs) const
Definition geometry.h:310
grk_rect< T > scaleDownPow2(uint32_t powx, uint32_t powy) const
Definition geometry.h:253