You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
149 lines
2.5 KiB
149 lines
2.5 KiB
/*****************************************************************************/ |
|
// Copyright 2006 Adobe Systems Incorporated |
|
// All Rights Reserved. |
|
// |
|
// NOTICE: Adobe permits you to use, modify, and distribute this file in |
|
// accordance with the terms of the Adobe license agreement accompanying it. |
|
/*****************************************************************************/ |
|
|
|
/* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_rational.h#2 $ */ |
|
/* $DateTime: 2012/07/31 22:04:34 $ */ |
|
/* $Change: 840853 $ */ |
|
/* $Author: tknoll $ */ |
|
|
|
/** \file |
|
* Signed and unsigned rational data types. |
|
*/ |
|
|
|
/*****************************************************************************/ |
|
|
|
#ifndef __dng_rational__ |
|
#define __dng_rational__ |
|
|
|
/*****************************************************************************/ |
|
|
|
#include "dng_types.h" |
|
|
|
/*****************************************************************************/ |
|
|
|
class dng_srational |
|
{ |
|
|
|
public: |
|
|
|
int32 n; // Numerator |
|
int32 d; // Denominator |
|
|
|
public: |
|
|
|
dng_srational () |
|
: n (0) |
|
, d (0) |
|
{ |
|
} |
|
|
|
dng_srational (int32 nn, int32 dd) |
|
: n (nn) |
|
, d (dd) |
|
{ |
|
} |
|
|
|
void Clear () |
|
{ |
|
n = 0; |
|
d = 0; |
|
} |
|
|
|
bool IsValid () const |
|
{ |
|
return d != 0; |
|
} |
|
|
|
bool NotValid () const |
|
{ |
|
return !IsValid (); |
|
} |
|
|
|
bool operator== (const dng_srational &r) const |
|
{ |
|
return (n == r.n) && |
|
(d == r.d); |
|
} |
|
|
|
bool operator!= (const dng_srational &r) const |
|
{ |
|
return !(*this == r); |
|
} |
|
|
|
real64 As_real64 () const; |
|
|
|
void Set_real64 (real64 x, int32 dd = 0); |
|
|
|
void ReduceByFactor (int32 factor); |
|
|
|
}; |
|
|
|
/*****************************************************************************/ |
|
|
|
class dng_urational |
|
{ |
|
|
|
public: |
|
|
|
uint32 n; // Numerator |
|
uint32 d; // Denominator |
|
|
|
public: |
|
|
|
dng_urational () |
|
: n (0) |
|
, d (0) |
|
{ |
|
} |
|
|
|
dng_urational (uint32 nn, uint32 dd) |
|
: n (nn) |
|
, d (dd) |
|
{ |
|
} |
|
|
|
void Clear () |
|
{ |
|
n = 0; |
|
d = 0; |
|
} |
|
|
|
bool IsValid () const |
|
{ |
|
return d != 0; |
|
} |
|
|
|
bool NotValid () const |
|
{ |
|
return !IsValid (); |
|
} |
|
|
|
bool operator== (const dng_urational &r) const |
|
{ |
|
return (n == r.n) && |
|
(d == r.d); |
|
} |
|
|
|
bool operator!= (const dng_urational &r) const |
|
{ |
|
return !(*this == r); |
|
} |
|
|
|
real64 As_real64 () const; |
|
|
|
void Set_real64 (real64 x, uint32 dd = 0); |
|
|
|
void ReduceByFactor (uint32 factor); |
|
|
|
}; |
|
|
|
/*****************************************************************************/ |
|
|
|
#endif |
|
|
|
/*****************************************************************************/
|
|
|