aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/gpu/TestPatternGpu.kt
diff options
context:
space:
mode:
authorJames Barnett <noreply@jamesbarnett.xyz>2018-08-01 22:02:50 +0100
committerJames Barnett <noreply@jamesbarnett.xyz>2018-08-01 22:02:50 +0100
commit3a3733052672b1c23ae240bd19f71e13336c600b (patch)
treec014139179947c4310921129fdf10c8b059a796c /src/main/kotlin/gpu/TestPatternGpu.kt
parente4e561bd94df819f4ce9487f28b1d18a8d178810 (diff)
downloadKGB-3a3733052672b1c23ae240bd19f71e13336c600b.tar.xz
KGB-3a3733052672b1c23ae240bd19f71e13336c600b.zip
Add GPU interface and implementation which returns a test pattern
Diffstat (limited to 'src/main/kotlin/gpu/TestPatternGpu.kt')
-rw-r--r--src/main/kotlin/gpu/TestPatternGpu.kt52
1 files changed, 52 insertions, 0 deletions
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