Home | History | Annotate | Download | only in turbojpeg
      1 /*
      2  * Copyright (C)2011 D. R. Commander.  All Rights Reserved.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions are met:
      6  *
      7  * - Redistributions of source code must retain the above copyright notice,
      8  *   this list of conditions and the following disclaimer.
      9  * - Redistributions in binary form must reproduce the above copyright notice,
     10  *   this list of conditions and the following disclaimer in the documentation
     11  *   and/or other materials provided with the distribution.
     12  * - Neither the name of the libjpeg-turbo Project nor the names of its
     13  *   contributors may be used to endorse or promote products derived from this
     14  *   software without specific prior written permission.
     15  *
     16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS",
     17  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     19  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
     20  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     21  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     22  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     23  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     24  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     25  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     26  * POSSIBILITY OF SUCH DAMAGE.
     27  */
     28 
     29 package org.libjpegturbo.turbojpeg;
     30 
     31 /**
     32  * Fractional scaling factor
     33  */
     34 public class TJScalingFactor {
     35 
     36   public TJScalingFactor(int num, int denom) throws Exception {
     37     if (num < 1 || denom < 1)
     38       throw new Exception("Numerator and denominator must be >= 1");
     39     this.num = num;
     40     this.denom = denom;
     41   }
     42 
     43   /**
     44    * Returns numerator
     45    *
     46    * @return numerator
     47    */
     48   public int getNum() {
     49     return num;
     50   }
     51 
     52   /**
     53    * Returns denominator
     54    *
     55    * @return denominator
     56    */
     57   public int getDenom() {
     58     return denom;
     59   }
     60 
     61   /**
     62    * Returns the scaled value of <code>dimension</code>.  This function
     63    * performs the integer equivalent of
     64    * <code>ceil(dimension * scalingFactor)</code>.
     65    *
     66    * @return the scaled value of <code>dimension</code>.
     67    */
     68   public int getScaled(int dimension) {
     69     return (dimension * num + denom - 1) / denom;
     70   }
     71 
     72   /**
     73    * Returns true or false, depending on whether this instance and
     74    * <code>other</code> have the same numerator and denominator.
     75    *
     76    * @return true or false, depending on whether this instance and
     77    * <code>other</code> have the same numerator and denominator.
     78    */
     79   public boolean equals(TJScalingFactor other) {
     80     return (this.num == other.num && this.denom == other.denom);
     81   }
     82 
     83   /**
     84    * Returns true or false, depending on whether this instance is equal to
     85    * 1/1.
     86    *
     87    * @return true or false, depending on whether this instance is equal to
     88    * 1/1.
     89    */
     90   public boolean isOne() {
     91     return (num == 1 && denom == 1);
     92   }
     93 
     94   /**
     95    * Numerator
     96    */
     97   private int num = 1;
     98 
     99   /**
    100    * Denominator
    101    */
    102   private int denom = 1;
    103 };
    104