scala/ScalaBook/chapter-06/graphicDSL.scala
import java.awt.image.BufferedImage; import javax.imageio.ImageIO; import java.awt._
class colorRegion {
private val imgtype = BufferedImage.TYPE_INT_ARGB
var img = new BufferedImage(500, 500, imgtype)
var g2 = img.createGraphics()
private var ac = AlphaComposite.getInstance(
AlphaComposite.SRC_OVER, 0.5f)
g2.setComposite(ac)
private var transform = new java.awt.geom.AffineTransform
def circle(c1 : Float, c2 : Float, c3 : Float) = {
g2.setColor(new Color(c1,c2,c3))
g2.fillOval(150, 150, 200, 200)
this
}
def square(c1 : Float, c2 : Float, c3 : Float) {
g2.setColor(new Color(c1,c2,c3))
g2.fillRect(50, 50, 200, 200)
this
}
def translate(c1 : Float, c2 : Float) {
transform.setToTranslation(c1, c2)
g2.setTransform(transform)
this
}
def over(y: colorRegion) {
g2.drawImage(y.img, 0, 0, null)
this
}
def show {
g2.dispose()
ImageIO.write(img, "png", new java.io.File("funcG.png"))
this
}
}
val blueCircle = new colorRegion circle (0,0,1)
val redCircle = new colorRegion circle (1,0,0)
blueCircle translate(-100, 0)
redCircle translate (100, 0)
blueCircle over redCircle
blueCircle show