1 /*****************************************************************************/
2 // Copyright 2006-2007 Adobe Systems Incorporated
3 // All Rights Reserved.
4 //
5 // NOTICE: Adobe permits you to use, modify, and distribute this file in
6 // accordance with the terms of the Adobe license agreement accompanying it.
7 /*****************************************************************************/
8
9 /* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_rect.cpp#1 $ */
10 /* $DateTime: 2012/05/30 13:28:51 $ */
11 /* $Change: 832332 $ */
12 /* $Author: tknoll $ */
13
14 /*****************************************************************************/
15
16 #include "dng_rect.h"
17
18 #include "dng_utils.h"
19
20 /*****************************************************************************/
21
operator ==(const dng_rect & rect) const22 bool dng_rect::operator== (const dng_rect &rect) const
23 {
24
25 return (rect.t == t) &&
26 (rect.l == l) &&
27 (rect.b == b) &&
28 (rect.r == r);
29
30 }
31
32 /*****************************************************************************/
33
IsZero() const34 bool dng_rect::IsZero () const
35 {
36
37 return (t == 0) && (l == 0) && (b == 0) && (r == 0);
38
39 }
40
41 /*****************************************************************************/
42
operator ==(const dng_rect_real64 & rect) const43 bool dng_rect_real64::operator== (const dng_rect_real64 &rect) const
44 {
45
46 return (rect.t == t) &&
47 (rect.l == l) &&
48 (rect.b == b) &&
49 (rect.r == r);
50
51 }
52
53 /*****************************************************************************/
54
IsZero() const55 bool dng_rect_real64::IsZero () const
56 {
57
58 return (t == 0.0) && (l == 0.0) && (b == 0.0) && (r == 0.0);
59
60 }
61
62 /*****************************************************************************/
63
operator &(const dng_rect & a,const dng_rect & b)64 dng_rect operator& (const dng_rect &a,
65 const dng_rect &b)
66 {
67
68 dng_rect c;
69
70 c.t = Max_int32 (a.t, b.t);
71 c.l = Max_int32 (a.l, b.l);
72
73 c.b = Min_int32 (a.b, b.b);
74 c.r = Min_int32 (a.r, b.r);
75
76 if (c.IsEmpty ())
77 {
78
79 c = dng_rect ();
80
81 }
82
83 return c;
84
85 }
86
87 /*****************************************************************************/
88
operator |(const dng_rect & a,const dng_rect & b)89 dng_rect operator| (const dng_rect &a,
90 const dng_rect &b)
91 {
92
93 if (a.IsEmpty ())
94 {
95 return b;
96 }
97
98 if (b.IsEmpty ())
99 {
100 return a;
101 }
102
103 dng_rect c;
104
105 c.t = Min_int32 (a.t, b.t);
106 c.l = Min_int32 (a.l, b.l);
107
108 c.b = Max_int32 (a.b, b.b);
109 c.r = Max_int32 (a.r, b.r);
110
111 return c;
112
113 }
114
115 /*****************************************************************************/
116
operator &(const dng_rect_real64 & a,const dng_rect_real64 & b)117 dng_rect_real64 operator& (const dng_rect_real64 &a,
118 const dng_rect_real64 &b)
119 {
120
121 dng_rect_real64 c;
122
123 c.t = Max_real64 (a.t, b.t);
124 c.l = Max_real64 (a.l, b.l);
125
126 c.b = Min_real64 (a.b, b.b);
127 c.r = Min_real64 (a.r, b.r);
128
129 if (c.IsEmpty ())
130 {
131
132 c = dng_rect_real64 ();
133
134 }
135
136 return c;
137
138 }
139
140 /*****************************************************************************/
141
operator |(const dng_rect_real64 & a,const dng_rect_real64 & b)142 dng_rect_real64 operator| (const dng_rect_real64 &a,
143 const dng_rect_real64 &b)
144 {
145
146 if (a.IsEmpty ())
147 {
148 return b;
149 }
150
151 if (b.IsEmpty ())
152 {
153 return a;
154 }
155
156 dng_rect_real64 c;
157
158 c.t = Min_real64 (a.t, b.t);
159 c.l = Min_real64 (a.l, b.l);
160
161 c.b = Max_real64 (a.b, b.b);
162 c.r = Max_real64 (a.r, b.r);
163
164 return c;
165
166 }
167
168 /*****************************************************************************/
169