Home | History | Annotate | Download | only in source
      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 
     22 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 
     34 bool dng_rect::IsZero () const
     35 	{
     36 
     37 	return (t == 0) && (l == 0) && (b == 0) && (r == 0);
     38 
     39 	}
     40 
     41 /*****************************************************************************/
     42 
     43 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 
     55 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 
     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 
     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 
    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 
    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