After this script completion takes minutes --
new JFrame@i
new JFrame(“Demo”)@v
JFrame frame = new JFrame(“Demo”)
int w = 300
int h = 200
fr|ame.setSi|ze( w+4 , h+4 )
fr|ame.setV|isible(true)
frame.getGr|aphics()@v
java.awt.Graphics g = frame.getGraphics()
g.drawRect(||0,0,w,h)
g.setCo|lor(Color@i
g.setColor(Color.Y|ELLOW)
^^^ g.drawRect(0,0,w,h)
g.fillRect(0,0,w,h)
void updateDisplay() { updateContent(); show(); }
updateDisplay()
// error
^^ void show() { g.fillRect(0,0,w,h); }
void updateContent() { g.setColor( nextColor() ); }
^^^ updateDisplay()
// error
Color nextColor() { return g.getCo|lor().d|arker(); }
^ updateDisplay()
for (int i = 0; i < 20; ++i) { updatD|isplay(); Thread.sl|eep(250); }
^ } ^A
void doit() { for (int i = 0; i < 20; ++i) { updatD|isplay(); Thread.sleep(250); }}
doit()
doit()
^^ void doit() { init(); for (int i = 0; i < 20; ++i) { updatDisplay(); Thread.sleep(250); }}
^RYEL ;} ^Avoid init() {
^^ doit()
——————
ImageIO@i
ImageIO.read(new File("slides/funny-monkey.jpg”))@v
java.awt.image.BufferedImage im = ImageIO.read(new File("slides/funny-monkey.jpg"))
g.drawImage(||
g.drawImage(im, 0, 0, null)
im.getRGB(||0, 0, w, h, null, 0, w)@v
int[] before = im.getRGB(0, 0, w, h, null, 0, w)
int tweakRGB(int rgb) { return tweakColor( new Color(rgb) ).getRGB(); }
Color tweakColor(Color c) { return c.darker(); }
import static java.u|til.A|rrays.*
stream(before).map(rgb -> tweakRGB(rgb)).toArray()@v
int[] after = stream(before).map(rgb -> tweakRGB(rgb)).toArray()
im.setRGB(0, 0, w, h, after, 0, w)
^R drawIm ;} ^A void show() {
/edit
void init() {
im = ImageIO.read(new File("slides/funny-monkey.jpg”));
}
void updateContent() {
int[] before = im.getRGB(0, 0, w, h, null, 0, w);
int[] after = stream(before).map(rgb -> tweakRGB(rgb)).toArray();
im.setRGB(0, 0, w, h, after, 0, w);
}
doit()
Random rand = new Random();
int r(int v) {
int ri = (int) (rand.nextDouble() * 30) - 7;
return (v + ri) & 255;
}
Color tweakColor(Color c) { return new Color(r(c.getRed()), r(c.getGreen()), r(c.getBlue())); }
doit()
^R doit 50
new JFrame@i
new JFrame(“Demo”)@v
JFrame frame = new JFrame(“Demo”)
int w = 300
int h = 200
fr|ame.setSi|ze( w+4 , h+4 )
fr|ame.setV|isible(true)
frame.getGr|aphics()@v
java.awt.Graphics g = frame.getGraphics()
g.drawRect(||0,0,w,h)
g.setCo|lor(Color@i
g.setColor(Color.Y|ELLOW)
^^^ g.drawRect(0,0,w,h)
g.fillRect(0,0,w,h)
void updateDisplay() { updateContent(); show(); }
updateDisplay()
// error
^^ void show() { g.fillRect(0,0,w,h); }
void updateContent() { g.setColor( nextColor() ); }
^^^ updateDisplay()
// error
Color nextColor() { return g.getCo|lor().d|arker(); }
^ updateDisplay()
for (int i = 0; i < 20; ++i) { updatD|isplay(); Thread.sl|eep(250); }
^ } ^A
void doit() { for (int i = 0; i < 20; ++i) { updatD|isplay(); Thread.sleep(250); }}
doit()
doit()
^^ void doit() { init(); for (int i = 0; i < 20; ++i) { updatDisplay(); Thread.sleep(250); }}
^RYEL ;} ^Avoid init() {
^^ doit()
——————
ImageIO@i
ImageIO.read(new File("slides/funny-monkey.jpg”))@v
java.awt.image.BufferedImage im = ImageIO.read(new File("slides/funny-monkey.jpg"))
g.drawImage(||
g.drawImage(im, 0, 0, null)
im.getRGB(||0, 0, w, h, null, 0, w)@v
int[] before = im.getRGB(0, 0, w, h, null, 0, w)
int tweakRGB(int rgb) { return tweakColor( new Color(rgb) ).getRGB(); }
Color tweakColor(Color c) { return c.darker(); }
import static java.u|til.A|rrays.*
stream(before).map(rgb -> tweakRGB(rgb)).toArray()@v
int[] after = stream(before).map(rgb -> tweakRGB(rgb)).toArray()
im.setRGB(0, 0, w, h, after, 0, w)
^R drawIm ;} ^A void show() {
/edit
void init() {
im = ImageIO.read(new File("slides/funny-monkey.jpg”));
}
void updateContent() {
int[] before = im.getRGB(0, 0, w, h, null, 0, w);
int[] after = stream(before).map(rgb -> tweakRGB(rgb)).toArray();
im.setRGB(0, 0, w, h, after, 0, w);
}
doit()
Random rand = new Random();
int r(int v) {
int ri = (int) (rand.nextDouble() * 30) - 7;
return (v + ri) & 255;
}
Color tweakColor(Color c) { return new Color(r(c.getRed()), r(c.getGreen()), r(c.getBlue())); }
doit()
^R doit 50