Task

Create a window and draw a pixel in it, subject to the following:

  the window is 320 x 240
  the color of the pixel must be red (255,0,0)
  the position of the pixel is x = 100, y = 100
import java.awt.image.BufferedImage
import java.awt.Color
import scala.language.reflectiveCalls
 
object RgbBitmap extends App {
 
  class RgbBitmap(val dim: (Int, Int)) {
    def width = dim._1
    def height = dim._2
 
    private val image = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR)
 
    def apply(x: Int, y: Int) = new Color(image.getRGB(x, y))
 
    def update(x: Int, y: Int, c: Color) = image.setRGB(x, y, c.getRGB)
 
    def fill(c: Color) = {
      val g = image.getGraphics
      g.setColor(c)
      g.fillRect(0, 0, width, height)
    }
  }
 
  object RgbBitmap {
    def apply(width: Int, height: Int) = new RgbBitmap(width, height)
  }
 
  /** Even Javanese style testing is still possible.
    */
  private val img0 = new RgbBitmap(50, 60) { // Wrappers to enable adhoc Javanese style
    def getPixel(x: Int, y: Int) = this(x, y)
    def setPixel(x: Int, y: Int, c: Color) = this(x, y) = c
  }
 
  img0.fill(Color.CYAN)
  img0.setPixel(5, 6, Color.BLUE)
  // Testing in Java style
  assert(img0.getPixel(0, 1) == Color.CYAN)
  assert(img0.getPixel(5, 6) == Color.BLUE)
  assert(img0.width == 50)
  assert(img0.height == 60)
  println("Tests successfully completed with no errors found.")
 
}