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_2/dng_sdk/source/dng_rect.cpp#1 $ */
10 /* $DateTime: 2008/03/09 14:29:54 $ */
11 /* $Change: 431850 $ */
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