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
22bool 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
34bool dng_rect::IsZero () const
35 {
36
37 return (t == 0) && (l == 0) && (b == 0) && (r == 0);
38
39 }
40
41/*****************************************************************************/
42
43bool 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
55bool 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
64dng_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
89dng_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
117dng_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
142dng_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