package org.eclipse.nebula.widgets.nattable.core.layer.axis

/**
 * A set of useful utility functions that calculate invariants that must hold for any Axis.
 */
class AxisInvariants {
	
	def static getPixelSizeOfSegmentPosition(Axis axis, int segmentPosition) {
		axis.getStartPixelOfSegmentPosition(segmentPosition + 1) - axis.getStartPixelOfSegmentPosition(segmentPosition)
	}
	
	def static boolean containsPixelLocation(Axis axis, double pixelLocation) {
		pixelLocation >= 0 && pixelLocation < axis.getStartPixelOfSegmentPosition(axis.segmentCount)
	}
	
	def static boolean containsSegmentPosition(Axis axis, int segmentPosition) {
		segmentPosition >= 0 && segmentPosition < axis.segmentCount
	}

}