blob: 7151d8a933fa39373fa2cb7df597cd37f7e71e5c [file] [log] [blame]
package org.eclipse.nebula.widgets.nattable.renderer.javafx.graphics
import com.sun.javafx.tk.Toolkit
import org.eclipse.nebula.widgets.nattable.core.geometry.PixelRectangle
import org.eclipse.nebula.widgets.nattable.core.graphics.Color
import org.eclipse.nebula.widgets.nattable.core.graphics.GraphicsContext
class JavaFXGraphicsContext implements GraphicsContext {
val javafx.scene.canvas.GraphicsContext gc
new(javafx.scene.canvas.GraphicsContext gc) {
this.gc = gc
}
// GraphicsContext interface
override pushState() {
gc.save
}
override popState() {
gc.restore
}
override translate(int xOffset, int yOffset) {
gc.translate(xOffset, yOffset)
}
override setForegroundColor(Color foregroundColor) {
gc.stroke = new javafx.scene.paint.Color(
foregroundColor.red as double / 255,
foregroundColor.green as double / 255,
foregroundColor.blue as double / 255,
foregroundColor.alpha as double / 255
)
}
override setBackgroundColor(Color backgroundColor) {
gc.fill = new javafx.scene.paint.Color(
backgroundColor.red as double / 255,
backgroundColor.green as double / 255,
backgroundColor.blue as double / 255,
backgroundColor.alpha as double / 255
)
}
override getClipBounds() {
println("getClipBounds() not implemented")
new PixelRectangle(0, 0, 0, 0)
}
override setClipBounds(PixelRectangle clipBounds) {
println("setClipBounds(clipBounds) not implemented")
}
override drawLine(int x1, int y1, int x2, int y2) {
gc.strokeLine(x1, y1, x2, y2)
}
override drawRectangle(PixelRectangle rect) {
gc.strokeRect(rect.x, rect.y, rect.width, rect.height)
}
override fillRectangle(PixelRectangle rect) {
gc.fillRect(rect.x, rect.y, rect.width, rect.height)
}
override drawText(String text, int x, int y) {
gc.strokeText(text, x, y)
}
override calculateTextWidth(String text) {
val fontMetrics = Toolkit::toolkit.fontLoader.getFontMetrics(gc.font)
fontMetrics.computeStringWidth(text)
}
override getFontHeight() {
val fontMetrics = Toolkit::toolkit.fontLoader.getFontMetrics(gc.font)
fontMetrics.lineHeight
}
}