use paint region instead of clip
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/CellLayerRenderer.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/CellLayerRenderer.xtend
index 6c6c378..625d5e5 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/CellLayerRenderer.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/CellLayerRenderer.xtend
@@ -16,21 +16,15 @@
override renderLayer(Layer layer, Canvas canvas) {
canvas.graphicsContext2D.clearRect(0, 0, canvas.boundsInLocal.width, canvas.boundsInLocal.height)
- for (columnPosition : 0 .. layer.columnCount)
- for (rowPosition : 0 .. layer.rowCount) {
+ for (columnPosition : 0 ..< layer.columnCount)
+ for (rowPosition : 0 ..< layer.rowCount) {
val cell = layer.getCell(columnPosition, rowPosition)
- val newClip = cell.clipBounds
- val originalClip = canvas.clip
-
- canvas.clip = newClip
- layerCellRenderer.renderLayerCell(cell, canvas, newClip)
-
- canvas.clip = originalClip
+ layerCellRenderer.renderLayerCell(cell, canvas, cell.getPaintRegion)
}
}
- protected def getClipBounds(LayerCell cell) {
+ protected def getPaintRegion(LayerCell cell) {
cell.pixelBounds.toJavaFXRectangle
}
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/GridLineCellLayerRenderer.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/GridLineCellLayerRenderer.xtend
index 8df9f89..82075f9 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/GridLineCellLayerRenderer.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/GridLineCellLayerRenderer.xtend
@@ -20,13 +20,14 @@
def drawGridLines(Canvas canvas, Layer layer) {
val gc = canvas.graphicsContext2D
+
gc.stroke = Color::BLUE
val pixelWidth = layer.pixelWidth
val pixelHeight = layer.pixelHeight
- for (columnPosition : 0 .. layer.columnCount)
- for (rowPosition : 0 .. layer.rowCount) {
+ for (columnPosition : 0 ..< layer.columnCount)
+ for (rowPosition : 0 ..< layer.rowCount) {
val startX = layer.getStartXPixelOfColumnPosition(columnPosition)
val startY = layer.getStartYPixelOfRowPosition(rowPosition)
@@ -44,8 +45,8 @@
}
}
- override protected getClipBounds(LayerCell cell) {
- val cellBounds = super.getClipBounds(cell)
+ override protected getPaintRegion(LayerCell cell) {
+ val cellBounds = super.getPaintRegion(cell)
new Rectangle(
cellBounds.x + 10,
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/LayerRenderer.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/LayerRenderer.xtend
index 8bda891..1f0768c 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/LayerRenderer.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/LayerRenderer.xtend
@@ -5,6 +5,10 @@
interface LayerRenderer {
+ /**
+ * @param layer The layer to render.
+ * @param canvas The canvas to render into.
+ */
def void renderLayer(Layer layer, Canvas canvas)
}
\ No newline at end of file
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/cell/DefaultLayerCellRenderer.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/cell/DefaultLayerCellRenderer.xtend
index eb8e312..456eb28 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/cell/DefaultLayerCellRenderer.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/cell/DefaultLayerCellRenderer.xtend
@@ -7,15 +7,15 @@
class DefaultLayerCellRenderer implements LayerCellRenderer {
- override renderLayerCell(LayerCell cell, Canvas canvas, Rectangle clipBounds) {
+ override renderLayerCell(LayerCell cell, Canvas canvas, Rectangle paintRegion) {
val text = cell.dataValue.toString
// Draw text
val gc = canvas.graphicsContext2D
- val centerX = clipBounds.x + (clipBounds.width / 2)
- val centerY = clipBounds.y + (clipBounds.height / 2)
+ val centerX = paintRegion.x + (paintRegion.width / 2)
+ val centerY = paintRegion.y + (paintRegion.height / 2)
val fontMetrics = Toolkit::toolkit.fontLoader.getFontMetrics(gc.font)
val textWidth = fontMetrics.computeStringWidth(text)
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/cell/LayerCellRenderer.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/cell/LayerCellRenderer.xtend
index 9159183..6fa7d0a 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/cell/LayerCellRenderer.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/cell/LayerCellRenderer.xtend
@@ -9,10 +9,10 @@
/**
* @param cell The cell to render.
* @param canvas The canvas to render into.
- * @param clipBounds The rectangular region of the canvas to render into. This clipping region should have already been set on the canvas.
- * Note that the clip bounds of the canvas may be different than the pixel bounds of the cell.
+ * @param paintRegion The rectangular region of the canvas to render into.
+ * Note that the paint region of the canvas may be different than the pixel bounds of the cell.
* For example, the cell bounds may have been adjusted to make room for grid lines.
*/
- def void renderLayerCell(LayerCell cell, Canvas canvas, Rectangle clipBounds)
+ def void renderLayerCell(LayerCell cell, Canvas canvas, Rectangle paintRegion)
}