Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2020-01-27 11:48:54 +0300
committerCampbell Barton <ideasman42@gmail.com>2020-01-27 11:48:54 +0300
commit649659aa24604ba1af7da4d2e2c896b6402d6270 (patch)
tree359f9a0282b334c9ff291843d8121deb93b21ee1 /source/blender/blenlib/intern/rct.c
parent65e42d7b32ae244368e54c9676d354f4a5f1ae8b (diff)
parent756b9acaf552bb82596f2239f522467372e4e661 (diff)
Merge branch 'blender-v2.82-release'
Diffstat (limited to 'source/blender/blenlib/intern/rct.c')
-rw-r--r--source/blender/blenlib/intern/rct.c84
1 files changed, 84 insertions, 0 deletions
diff --git a/source/blender/blenlib/intern/rct.c b/source/blender/blenlib/intern/rct.c
index 8fab4ed8e6a..2ed7d7d7345 100644
--- a/source/blender/blenlib/intern/rct.c
+++ b/source/blender/blenlib/intern/rct.c
@@ -923,6 +923,90 @@ bool BLI_rcti_isect(const rcti *src1, const rcti *src2, rcti *dest)
}
}
+bool BLI_rctf_isect_rect_x(const rctf *src1, const rctf *src2, float range_x[2])
+{
+ const float xmin = (src1->xmin) > (src2->xmin) ? (src1->xmin) : (src2->xmin);
+ const float xmax = (src1->xmax) < (src2->xmax) ? (src1->xmax) : (src2->xmax);
+
+ if (xmax >= xmin) {
+ if (range_x) {
+ range_x[0] = xmin;
+ range_x[1] = xmax;
+ }
+ return true;
+ }
+ else {
+ if (range_x) {
+ range_x[0] = 0;
+ range_x[1] = 0;
+ }
+ return false;
+ }
+}
+
+bool BLI_rctf_isect_rect_y(const rctf *src1, const rctf *src2, float range_y[2])
+{
+ const float ymin = (src1->ymin) > (src2->ymin) ? (src1->ymin) : (src2->ymin);
+ const float ymax = (src1->ymax) < (src2->ymax) ? (src1->ymax) : (src2->ymax);
+
+ if (ymax >= ymin) {
+ if (range_y) {
+ range_y[0] = ymin;
+ range_y[1] = ymax;
+ }
+ return true;
+ }
+ else {
+ if (range_y) {
+ range_y[0] = 0;
+ range_y[1] = 0;
+ }
+ return false;
+ }
+}
+
+bool BLI_rcti_isect_rect_x(const rcti *src1, const rcti *src2, int range_x[2])
+{
+ const int xmin = (src1->xmin) > (src2->xmin) ? (src1->xmin) : (src2->xmin);
+ const int xmax = (src1->xmax) < (src2->xmax) ? (src1->xmax) : (src2->xmax);
+
+ if (xmax >= xmin) {
+ if (range_x) {
+ range_x[0] = xmin;
+ range_x[1] = xmax;
+ }
+ return true;
+ }
+ else {
+ if (range_x) {
+ range_x[0] = 0;
+ range_x[1] = 0;
+ }
+ return false;
+ }
+}
+
+bool BLI_rcti_isect_rect_y(const rcti *src1, const rcti *src2, int range_y[2])
+{
+ const int ymin = (src1->ymin) > (src2->ymin) ? (src1->ymin) : (src2->ymin);
+ const int ymax = (src1->ymax) < (src2->ymax) ? (src1->ymax) : (src2->ymax);
+
+ if (ymax >= ymin) {
+ if (range_y) {
+ range_y[0] = ymin;
+ range_y[1] = ymax;
+ }
+ return true;
+ }
+ else {
+ if (range_y) {
+ range_y[0] = 0;
+ range_y[1] = 0;
+ }
+ return false;
+ }
+}
+
void BLI_rcti_rctf_copy(rcti *dst, const rctf *src)
{
dst->xmin = floorf(src->xmin + 0.5f);