diff options
Diffstat (limited to 'intern/ghost/intern/GHOST_Rect.cpp')
-rw-r--r-- | intern/ghost/intern/GHOST_Rect.cpp | 173 |
1 files changed, 84 insertions, 89 deletions
diff --git a/intern/ghost/intern/GHOST_Rect.cpp b/intern/ghost/intern/GHOST_Rect.cpp index 973c3d40ae8..c5b9bc44468 100644 --- a/intern/ghost/intern/GHOST_Rect.cpp +++ b/intern/ghost/intern/GHOST_Rect.cpp @@ -21,112 +21,107 @@ * \ingroup GHOST */ - #include "GHOST_Rect.h" - - void GHOST_Rect::inset(GHOST_TInt32 i) { - if (i > 0) { - // Grow the rectangle - m_l -= i; - m_r += i; - m_t -= i; - m_b += i; - } - else if (i < 0) { - // Shrink the rectangle, check for insets larger than half the size - GHOST_TInt32 i2 = i * 2; - if (getWidth() > i2) { - m_l += i; - m_r -= i; - } - else { - m_l = m_l + ((m_r - m_l) / 2); - m_r = m_l; - } - if (getHeight() > i2) { - m_t += i; - m_b -= i; - } - else { - m_t = m_t + ((m_b - m_t) / 2); - m_b = m_t; - } - } + if (i > 0) { + // Grow the rectangle + m_l -= i; + m_r += i; + m_t -= i; + m_b += i; + } + else if (i < 0) { + // Shrink the rectangle, check for insets larger than half the size + GHOST_TInt32 i2 = i * 2; + if (getWidth() > i2) { + m_l += i; + m_r -= i; + } + else { + m_l = m_l + ((m_r - m_l) / 2); + m_r = m_l; + } + if (getHeight() > i2) { + m_t += i; + m_b -= i; + } + else { + m_t = m_t + ((m_b - m_t) / 2); + m_b = m_t; + } + } } - -GHOST_TVisibility GHOST_Rect::getVisibility(GHOST_Rect& r) const +GHOST_TVisibility GHOST_Rect::getVisibility(GHOST_Rect &r) const { - bool lt = isInside(r.m_l, r.m_t); - bool rt = isInside(r.m_r, r.m_t); - bool lb = isInside(r.m_l, r.m_b); - bool rb = isInside(r.m_r, r.m_b); - GHOST_TVisibility v; - if (lt && rt && lb && rb) { - // All points inside, rectangle is inside this - v = GHOST_kFullyVisible; - } - else if (!(lt || rt || lb || rb)) { - // None of the points inside - // Check to see whether the rectangle is larger than this one - if ((r.m_l < m_l) && (r.m_t < m_t) && (r.m_r > m_r) && (r.m_b > m_b)) { - v = GHOST_kPartiallyVisible; - } - else { - v = GHOST_kNotVisible; - } - } - else { - // Some of the points inside, rectangle is partially inside - v = GHOST_kPartiallyVisible; - } - return v; + bool lt = isInside(r.m_l, r.m_t); + bool rt = isInside(r.m_r, r.m_t); + bool lb = isInside(r.m_l, r.m_b); + bool rb = isInside(r.m_r, r.m_b); + GHOST_TVisibility v; + if (lt && rt && lb && rb) { + // All points inside, rectangle is inside this + v = GHOST_kFullyVisible; + } + else if (!(lt || rt || lb || rb)) { + // None of the points inside + // Check to see whether the rectangle is larger than this one + if ((r.m_l < m_l) && (r.m_t < m_t) && (r.m_r > m_r) && (r.m_b > m_b)) { + v = GHOST_kPartiallyVisible; + } + else { + v = GHOST_kNotVisible; + } + } + else { + // Some of the points inside, rectangle is partially inside + v = GHOST_kPartiallyVisible; + } + return v; } - void GHOST_Rect::setCenter(GHOST_TInt32 cx, GHOST_TInt32 cy) { - GHOST_TInt32 offset = cx - (m_l + (m_r - m_l) / 2); - m_l += offset; - m_r += offset; - offset = cy - (m_t + (m_b - m_t) / 2); - m_t += offset; - m_b += offset; + GHOST_TInt32 offset = cx - (m_l + (m_r - m_l) / 2); + m_l += offset; + m_r += offset; + offset = cy - (m_t + (m_b - m_t) / 2); + m_t += offset; + m_b += offset; } void GHOST_Rect::setCenter(GHOST_TInt32 cx, GHOST_TInt32 cy, GHOST_TInt32 w, GHOST_TInt32 h) { - long w_2, h_2; + long w_2, h_2; - w_2 = w >> 1; - h_2 = h >> 1; - m_l = cx - w_2; - m_t = cy - h_2; - m_r = m_l + w; - m_b = m_t + h; + w_2 = w >> 1; + h_2 = h >> 1; + m_l = cx - w_2; + m_t = cy - h_2; + m_r = m_l + w; + m_b = m_t + h; } -bool GHOST_Rect::clip(GHOST_Rect& r) const +bool GHOST_Rect::clip(GHOST_Rect &r) const { - bool clipped = false; - if (r.m_l < m_l) { - r.m_l = m_l; - clipped = true; - } - if (r.m_t < m_t) { - r.m_t = m_t; - clipped = true; - } - if (r.m_r > m_r) { - r.m_r = m_r; - clipped = true; - } - if (r.m_b > m_b) { - r.m_b = m_b; - clipped = true; - } - return clipped; + bool clipped = false; + if (r.m_l < m_l) { + r.m_l = m_l; + clipped = true; + } + if (r.m_t < m_t) { + r.m_t = m_t; + clipped = true; + } + if (r.m_r > m_r) { + r.m_r = m_r; + clipped = true; + } + if (r.m_b > m_b) { + r.m_b = m_b; + clipped = true; + } + return clipped; } |