From 3a3733052672b1c23ae240bd19f71e13336c600b Mon Sep 17 00:00:00 2001 From: James Barnett Date: Wed, 1 Aug 2018 22:02:50 +0100 Subject: Add GPU interface and implementation which returns a test pattern --- src/main/kotlin/gpu/TestPatternGpu.kt | 52 +++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/main/kotlin/gpu/TestPatternGpu.kt (limited to 'src/main/kotlin/gpu/TestPatternGpu.kt') diff --git a/src/main/kotlin/gpu/TestPatternGpu.kt b/src/main/kotlin/gpu/TestPatternGpu.kt new file mode 100644 index 0000000..6976426 --- /dev/null +++ b/src/main/kotlin/gpu/TestPatternGpu.kt @@ -0,0 +1,52 @@ +package gpu + +import java.awt.Color +import java.awt.image.BufferedImage +import java.io.File +import javax.imageio.ImageIO + +class TestPatternGpu : Gpu { + + private val SCALING_FACTOR = 4 + + private val frame = BufferedImage(160 * SCALING_FACTOR, 144 * SCALING_FACTOR, BufferedImage.TYPE_INT_RGB) + + private var lastColour = Color.BLACK + + override fun setPixel(x: Int, y: Int, colour: Color) { + (0 until SCALING_FACTOR).forEach { xOffset -> + (0 until SCALING_FACTOR).forEach { yOffset -> + frame.setRGB((x * SCALING_FACTOR) + xOffset, (y * SCALING_FACTOR) + yOffset, colour.rgb) + } + } + } + + override fun getFrame(): BufferedImage { + + (0 until 144).forEach { y -> + + if(y % 4 == 0) { + swapColour() + } + + (0 until 160).forEach { x -> + + if(x % 4 == 0) { + swapColour() + } + + setPixel(x, y, lastColour) + } + } + + return frame + } + + private fun swapColour() { + lastColour = if(lastColour == Color.BLACK) { + Color.WHITE + } else { + Color.BLACK + } + } +} \ No newline at end of file -- cgit v1.2.3