/*****************************************************************************/ // 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 /*****************************************************************************/