From f1f5291b0d67a1e7f6ac618a63c50ec8f8fa9352 Mon Sep 17 00:00:00 2001 From: Lalit Pant Date: Tue, 3 Mar 2020 00:03:08 +0530 Subject: [PATCH] Add support for picture effects based on ImageOp. --- src/main/scala/net/kogics/kojo/lite/Builtins.scala | 8 ++++++++ src/main/scala/net/kogics/kojo/lite/Versions.scala | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/scala/net/kogics/kojo/lite/Builtins.scala b/src/main/scala/net/kogics/kojo/lite/Builtins.scala index a98787b1..d3015066 100644 --- a/src/main/scala/net/kogics/kojo/lite/Builtins.scala +++ b/src/main/scala/net/kogics/kojo/lite/Builtins.scala @@ -28,6 +28,7 @@ import javax.swing.JComponent import scala.language.implicitConversions import scala.swing.Graphics2D +import com.jhlabs.image.AbstractBufferedImageOp import com.jhlabs.image.LightFilter.Light import net.kogics.kojo.mathworld.MathWorld @@ -392,6 +393,13 @@ Here's a partial list of the available commands: val weave = picture.weave _ def effect(name: Symbol, props: Tuple2[Symbol, Any]*) = picture.effect(name, props: _*) def effect(filter: BufferedImageOp) = picture.ApplyFilterc(filter) + type ImageOp = picture.ImageOp + def effect(filterOp: ImageOp) = { + val filterOp2 = new AbstractBufferedImageOp { + def filter(src: BufferedImage, dest: BufferedImage) = filterOp.filter(src) + } + picture.ApplyFilterc(filterOp2) + } // put api functions here to enable code completion right from function definitions def transform(fn: Picture => Unit) = preDrawTransform(fn) diff --git a/src/main/scala/net/kogics/kojo/lite/Versions.scala b/src/main/scala/net/kogics/kojo/lite/Versions.scala index b0e72954..162d424d 100644 --- a/src/main/scala/net/kogics/kojo/lite/Versions.scala +++ b/src/main/scala/net/kogics/kojo/lite/Versions.scala @@ -3,8 +3,8 @@ package net.kogics.kojo.lite object Versions { val KojoMajorVersion = "2.7" val KojoVersion = "2.7.11" - val KojoRevision = "r15" - val KojoBuildDate = "25 February 2020" + val KojoRevision = "r16" + val KojoBuildDate = "3 March 2020" val JavaVersion = { val jrv = System.getProperty("java.runtime.version") val arch = System.getProperty("os.arch")