explicit paintBounds for CellPainter
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/cell/CellPainter.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/cell/CellPainter.xtend
index 9178f42..7d29d7b 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/cell/CellPainter.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/cell/CellPainter.xtend
@@ -1,13 +1,15 @@
package org.eclipse.nebula.widgets.nattable.core.layer.cell
+import org.eclipse.nebula.widgets.nattable.core.geometry.PixelRectangle
import org.eclipse.nebula.widgets.nattable.core.graphics.GraphicsContext
interface CellPainter {
/**
* @param cell The cell to paint.
+ * @param paintBounds The rectangular pixel area to paint into.
* @param gc The graphics context to paint into.
*/
- def void paintCell(Cell cell, GraphicsContext gc)
+ def void paintCell(Cell cell, PixelRectangle paintBounds, GraphicsContext gc)
}
\ No newline at end of file
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/cell/impl/DefaultCellPainter.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/cell/impl/DefaultCellPainter.xtend
index f12bb1f..29e2340 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/cell/impl/DefaultCellPainter.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/cell/impl/DefaultCellPainter.xtend
@@ -3,15 +3,15 @@
import org.eclipse.nebula.widgets.nattable.core.graphics.GraphicsContext
import org.eclipse.nebula.widgets.nattable.core.layer.cell.Cell
import org.eclipse.nebula.widgets.nattable.core.layer.cell.CellPainter
+import org.eclipse.nebula.widgets.nattable.core.geometry.PixelRectangle
class DefaultCellPainter implements CellPainter {
- override paintCell(Cell cell, GraphicsContext gc) {
+ override paintCell(Cell cell, PixelRectangle paintBounds, GraphicsContext gc) {
val text = cell.dataValue.toString
- val clipBounds = gc.clipBounds
- val centerX = clipBounds.x + (clipBounds.width / 2)
- val centerY = clipBounds.y + (clipBounds.height / 2)
+ val centerX = paintBounds.x + (paintBounds.width / 2)
+ val centerY = paintBounds.y + (paintBounds.height / 2)
val textWidth = gc.calculateTextWidth(text)
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/CellLayerPainter.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/CellLayerPainter.xtend
index 0cf2ad5..dd0d5aa 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/CellLayerPainter.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/CellLayerPainter.xtend
@@ -1,6 +1,5 @@
package org.eclipse.nebula.widgets.nattable.core.layer.impl
-import org.eclipse.nebula.widgets.nattable.core.geometry.PixelRectangle
import org.eclipse.nebula.widgets.nattable.core.graphics.GraphicsContext
import org.eclipse.nebula.widgets.nattable.core.layer.Layer
import org.eclipse.nebula.widgets.nattable.core.layer.LayerPainter
@@ -23,10 +22,8 @@
for (rowPosition : 0 ..< layer.getRowCount) {
val cell = layer.getCell(columnPosition, rowPosition)
gc.pushState
- val paintRegion = cell.paintRegion
- gc.translate(paintRegion.x, paintRegion.y)
- gc.clipBounds = new PixelRectangle(0, 0, paintRegion.width, paintRegion.height)
- cellPainter.paintCell(cell, gc)
+ gc.clipBounds = cell.paintRegion
+ cellPainter.paintCell(cell, cell.paintRegion, gc)
gc.popState
}
}
@@ -34,7 +31,7 @@
//
protected def getPaintRegion(Cell cell) {
- cell.getPixelBounds
+ cell.pixelBounds
}
}
\ No newline at end of file