/src/FreeImage/Source/OpenEXR/IlmImf/ImfRational.h
C++ Header | 93 lines | 15 code | 20 blank | 58 comment | 0 complexity | dae7bc540c0673ebbd66d8915d124004 MD5 | raw file
1/////////////////////////////////////////////////////////////////////////// 2// 3// Copyright (c) 2006, Industrial Light & Magic, a division of Lucas 4// Digital Ltd. LLC 5// 6// All rights reserved. 7// 8// Redistribution and use in source and binary forms, with or without 9// modification, are permitted provided that the following conditions are 10// met: 11// * Redistributions of source code must retain the above copyright 12// notice, this list of conditions and the following disclaimer. 13// * Redistributions in binary form must reproduce the above 14// copyright notice, this list of conditions and the following disclaimer 15// in the documentation and/or other materials provided with the 16// distribution. 17// * Neither the name of Industrial Light & Magic nor the names of 18// its contributors may be used to endorse or promote products derived 19// from this software without specific prior written permission. 20// 21// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32// 33/////////////////////////////////////////////////////////////////////////// 34 35 36#ifndef INCLUDED_IMF_RATIONAL_H 37#define INCLUDED_IMF_RATIONAL_H 38 39//----------------------------------------------------------------------------- 40// 41// Rational numbers 42// 43// A rational number is represented as pair of integers, n and d. 44// The value of of the rational number is 45// 46// n/d for d > 0 47// positive infinity for n > 0, d == 0 48// negative infinity for n < 0, d == 0 49// not a number (NaN) for n == 0, d == 0 50// 51//----------------------------------------------------------------------------- 52 53namespace Imf { 54 55class Rational 56{ 57 public: 58 59 int n; // numerator 60 unsigned int d; // denominator 61 62 63 //---------------------------------------- 64 // Default constructor, sets value to zero 65 //---------------------------------------- 66 67 Rational (): n (0), d (1) {} 68 69 70 //------------------------------------- 71 // Constructor, explicitly sets n and d 72 //------------------------------------- 73 74 Rational (int n, int d): n (n), d (d) {} 75 76 77 //---------------------------- 78 // Constructor, approximates x 79 //---------------------------- 80 81 explicit Rational (double x); 82 83 84 //--------------------------------- 85 // Approximate conversion to double 86 //--------------------------------- 87 88 operator double () const {return double (n) / double (d);} 89}; 90 91} // namespace Imf 92 93#endif