moved geometry classes to separate package; use pixel range for
viewport; dummy layer
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/axis/viewport/ViewportAxis.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/axis/viewport/ViewportAxis.xtend
index 7da945f..1bdd117 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/axis/viewport/ViewportAxis.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/axis/viewport/ViewportAxis.xtend
@@ -1,19 +1,28 @@
 package org.eclipse.nebula.widgets.nattable.core.axis.viewport
 
 import org.eclipse.nebula.widgets.nattable.core.axis.Axis
+import org.eclipse.nebula.widgets.nattable.core.geometry.PixelRange
 
 class ViewportAxis implements Axis {
 	
 	val Axis underlyingAxis
 	
+	/**
+	 * Indicates the visible portion of the axis. Note that the pixel locations returned by this ClientDimensionProvider
+	 * must be in terms of underlying axis pixel coordinates.
+	 */
+	val PixelRange visibleDimension
+	
 	int pixelOrigin
 	
-	new(Axis underlyingAxis) {
+	new(Axis underlyingAxis, PixelRange visibleDimension) {
 		this.underlyingAxis = underlyingAxis
+		this.visibleDimension = visibleDimension
 	}
 	
 	override getSegmentCount() {
-		throw new UnsupportedOperationException("TODO: need to know client area size to implement this..")
+		val endSegmentPosition = underlyingAxis.getSegmentPositionByPixelLocation(visibleDimension.endPixel)
+		endSegmentPosition - originSegmentPosition
 	}
 	
 	override getStartPixelOfSegmentPosition(int segmentPosition) {
@@ -32,4 +41,8 @@
 		underlyingAxis.getSegmentPositionByPixelLocation(pixelOrigin)
 	}
 	
+	def void setPixelOrigin(int pixelOrigin) {
+		this.pixelOrigin = pixelOrigin
+	}
+	
 }
\ No newline at end of file
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelCoordinate.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelCoordinate.xtend
new file mode 100644
index 0000000..189c4c8
--- /dev/null
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelCoordinate.xtend
@@ -0,0 +1,7 @@
+package org.eclipse.nebula.widgets.nattable.core.geometry
+
+@Data
+class PixelCoordinate {
+	int x
+	int y
+}
\ No newline at end of file
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelRange.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelRange.xtend
new file mode 100644
index 0000000..3c3607c
--- /dev/null
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelRange.xtend
@@ -0,0 +1,8 @@
+package org.eclipse.nebula.widgets.nattable.core.geometry
+
+@Data
+class PixelRange {
+	int startPixel
+	int endPixel
+	int pixelSize
+}
\ No newline at end of file
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/PixelRectangle.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelRectangle.xtend
similarity index 91%
rename from NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/PixelRectangle.xtend
rename to NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelRectangle.xtend
index 9e9d2b7..a999d0d 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/PixelRectangle.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelRectangle.xtend
@@ -1,4 +1,4 @@
-package org.eclipse.nebula.widgets.nattable.core.layer
+package org.eclipse.nebula.widgets.nattable.core.geometry
 
 class PixelRectangle {
 	val PixelCoordinate pixelOrigin
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PositionCoordinate.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PositionCoordinate.xtend
new file mode 100644
index 0000000..d4185df
--- /dev/null
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PositionCoordinate.xtend
@@ -0,0 +1,7 @@
+package org.eclipse.nebula.widgets.nattable.core.geometry
+
+@Data
+class PositionCoordinate {
+	int columnPosition
+	int rowPosition
+}
\ No newline at end of file
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/PositionRectangle.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PositionRectangle.xtend
similarity index 92%
rename from NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/PositionRectangle.xtend
rename to NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PositionRectangle.xtend
index 6455346..a7d7b06 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/PositionRectangle.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PositionRectangle.xtend
@@ -1,4 +1,4 @@
-package org.eclipse.nebula.widgets.nattable.core.layer
+package org.eclipse.nebula.widgets.nattable.core.geometry
 
 class PositionRectangle {
 	val PositionCoordinate positionOrigin
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/Cell.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/Cell.xtend
index 90185be..7eb464b 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/Cell.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/Cell.xtend
@@ -1,5 +1,7 @@
 package org.eclipse.nebula.widgets.nattable.core.layer
 
+import org.eclipse.nebula.widgets.nattable.core.geometry.PositionRectangle
+
 interface Cell {
 	
 	def Layer getLayer()
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/CellInvariants.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/CellInvariants.xtend
index 7a5fc9d..d95c419 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/CellInvariants.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/CellInvariants.xtend
@@ -1,6 +1,7 @@
 package org.eclipse.nebula.widgets.nattable.core.layer
 
 import static extension org.eclipse.nebula.widgets.nattable.core.layer.LayerInvariants.*
+import org.eclipse.nebula.widgets.nattable.core.geometry.PixelRectangle
 
 class CellInvariants {
 	
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/AbstractLayer.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/DummyLayer.xtend
similarity index 78%
rename from NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/AbstractLayer.xtend
rename to NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/DummyLayer.xtend
index cb97cb7..df47710 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/AbstractLayer.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/DummyLayer.xtend
@@ -3,7 +3,7 @@
 import org.eclipse.nebula.widgets.nattable.core.axis.Axis
 import org.eclipse.nebula.widgets.nattable.core.axis.DefaultAxis
 
-abstract class AbstractLayer implements Layer {
+class DummyLayer implements Layer {
 
 	val Axis horizontalAxis
 	val Axis verticalAxis
@@ -13,8 +13,6 @@
 		verticalAxis = new DefaultAxis(rowCount, defaultRowHeight)
 	}
 	
-	// Pixel dimensions
-	
 	override getHorizontalAxis() {
 		horizontalAxis
 	}
@@ -23,4 +21,8 @@
 		verticalAxis
 	}
 	
+	override getCellByPosition(int columnPosition, int rowPosition) {
+//		new Cell(this, columnPosition, rowPosition)
+	}
+	
 }
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/PixelCoordinate.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/PixelCoordinate.xtend
deleted file mode 100644
index aeb794f..0000000
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/PixelCoordinate.xtend
+++ /dev/null
@@ -1,7 +0,0 @@
-package org.eclipse.nebula.widgets.nattable.core.layer
-
-@Data
-class PixelCoordinate {
-	int x
-	int y
-}
\ No newline at end of file
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/PositionCoordinate.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/PositionCoordinate.xtend
deleted file mode 100644
index 3187d40..0000000
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/PositionCoordinate.xtend
+++ /dev/null
@@ -1,7 +0,0 @@
-package org.eclipse.nebula.widgets.nattable.core.layer
-
-@Data
-class PositionCoordinate {
-	int columnPosition
-	int rowPosition
-}
\ No newline at end of file