View Javadoc

1   /**
2    * Copyright (c) 2011, The University of Southampton and the individual contributors.
3    * All rights reserved.
4    *
5    * Redistribution and use in source and binary forms, with or without modification,
6    * are permitted provided that the following conditions are met:
7    *
8    *   * 	Redistributions of source code must retain the above copyright notice,
9    * 	this list of conditions and the following disclaimer.
10   *
11   *   *	Redistributions in binary form must reproduce the above copyright notice,
12   * 	this list of conditions and the following disclaimer in the documentation
13   * 	and/or other materials provided with the distribution.
14   *
15   *   *	Neither the name of the University of Southampton nor the names of its
16   * 	contributors may be used to endorse or promote products derived from this
17   * 	software without specific prior written permission.
18   *
19   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21   * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
23   * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24   * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25   * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26   * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28   * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29   */
30  package org.openimaj.image.pixel;
31  
32  import java.util.Comparator;
33  
34  
35  /**
36   * 	Represents a pixel location. This is basically the same
37   * 	as java.awt.Point except we can control exactly what goes
38   * 	in here to optimise for memory usage.
39   *
40   *  @author Jonathon Hare (jsh2@ecs.soton.ac.uk)
41   *  
42   *	
43   */
44  public class FValuePixel extends ValuePixel<Float> {
45  	/**
46  	 * {@link Comparator} for comparing {@link FValuePixel}s based on
47  	 * the natural order of their values.
48  	 * 
49  	 * @author Jonathon Hare (jsh2@ecs.soton.ac.uk)
50  	 */
51  	public static class ValueComparator implements Comparator<FValuePixel> {
52  		/**
53  		 * The singleton instance of {@link ValueComparator}
54  		 */
55  		public final static ValueComparator INSTANCE = new ValueComparator();
56  		
57  		private ValueComparator() {}
58  		
59  		@Override
60  		public int compare(FValuePixel o1, FValuePixel o2) {
61  			return Float.compare(o1.value, o2.value);
62  		}
63  	}
64  	
65  	/**
66  	 * {@link Comparator} for comparing {@link FValuePixel}s based on
67  	 * the reversed natural order of their values.
68  	 * 
69  	 * @author Jonathon Hare (jsh2@ecs.soton.ac.uk)
70  	 */
71  	public static class ReverseValueComparator implements Comparator<FValuePixel> {
72  		/**
73  		 * The singleton instance of {@link ReverseValueComparator}
74  		 */
75  		public final static ReverseValueComparator INSTANCE = new ReverseValueComparator();
76  		
77  		private ReverseValueComparator() {}
78  		
79  		@Override
80  		public int compare(FValuePixel o1, FValuePixel o2) {
81  			return Float.compare(o2.value, o1.value);
82  		}
83  	}
84  	
85  	/** The value of the pixel */
86  	public float value = 0;
87  	
88  	/**
89  	 * 	Default constructor
90  	 *	@param x X-location of the pixel
91  	 *	@param y Y-location of the pixel
92  	 */
93  	public FValuePixel( int x, int y ) { super(x, y); }
94  	
95  	/**
96  	 * 	Constructor that takes the location and value of the
97  	 * 	pixel.
98  	 *	@param x X-location of the pixel
99  	 *	@param y Y-location of the pixel
100 	 *	@param v value of the pixel
101 	 */
102 	public FValuePixel( int x, int y, float v ) { super(x, y); this.value = v; }
103 	
104 	/**
105 	 *	{@inheritDoc}
106 	 * 	@see java.lang.Object#toString()
107 	 */
108 	@Override
109 	public String toString() { return "{"+x+","+y+","+value+"}"; }
110 
111 	@Override
112 	public Float getValue() {
113 		return value;
114 	}
115 }
116