GraphicsFXValue для canvasfx

This commit is contained in:
Victor 2016-05-24 14:40:11 +03:00
parent 5e1f52024a
commit a0f1355f31
5 changed files with 247 additions and 400 deletions

View File

@ -2,23 +2,22 @@ use "canvasfx"
// https://docs.oracle.com/javafx/2/canvas/jfxpub-canvas.htm // https://docs.oracle.com/javafx/2/canvas/jfxpub-canvas.htm
window("JavaFX Basic shapes", 300, 250) g = window("JavaFX Basic shapes", 300, 250)
g.setFill(Color.GREEN)
setFill(Color.GREEN) g.setStroke(Color.BLUE)
setStroke(Color.BLUE) g.setLineWidth(5)
setLineWidth(5) g.strokeLine(40, 10, 10, 40)
strokeLine(40, 10, 10, 40) g.fillOval(10, 60, 30, 30)
fillOval(10, 60, 30, 30) g.strokeOval(60, 60, 30, 30)
strokeOval(60, 60, 30, 30) g.fillRoundRect(110, 60, 30, 30, 10, 10)
fillRoundRect(110, 60, 30, 30, 10, 10) g.strokeRoundRect(160, 60, 30, 30, 10, 10)
strokeRoundRect(160, 60, 30, 30, 10, 10) g.fillArc(10, 110, 30, 30, 45, 240, ArcType.OPEN)
fillArc(10, 110, 30, 30, 45, 240, ArcType.OPEN) g.fillArc(60, 110, 30, 30, 45, 240, ArcType.CHORD)
fillArc(60, 110, 30, 30, 45, 240, ArcType.CHORD) g.fillArc(110, 110, 30, 30, 45, 240, ArcType.ROUND)
fillArc(110, 110, 30, 30, 45, 240, ArcType.ROUND) g.strokeArc(10, 160, 30, 30, 45, 240, ArcType.OPEN)
strokeArc(10, 160, 30, 30, 45, 240, ArcType.OPEN) g.strokeArc(60, 160, 30, 30, 45, 240, ArcType.CHORD)
strokeArc(60, 160, 30, 30, 45, 240, ArcType.CHORD) g.strokeArc(110, 160, 30, 30, 45, 240, ArcType.ROUND)
strokeArc(110, 160, 30, 30, 45, 240, ArcType.ROUND) g.fillPolygon([10, 40, 10, 40], [210, 210, 240, 240], 4)
fillPolygon([10, 40, 10, 40], [210, 210, 240, 240], 4) g.strokePolygon([60, 90, 60, 90], [210, 210, 240, 240], 4)
strokePolygon([60, 90, 60, 90], [210, 210, 240, 240], 4) g.strokePolyline([110, 140, 110, 140], [210, 210, 240, 240], 4)
strokePolyline([110, 140, 110, 140], [210, 210, 240, 240], 4)
repaint() repaint()

View File

@ -2,7 +2,7 @@ use "canvasfx"
use "std" use "std"
w = 800 h = 600 w = 800 h = 600
window("JavaFX Event handler example", w, h) g = window("JavaFX Event handler example", w, h)
addEventHandler(Events.MOUSE_MOVED, ::onMouseMoved) addEventHandler(Events.MOUSE_MOVED, ::onMouseMoved)
addEventHandler(Events.MOUSE_DRAGGED, ::onMouseMoved) addEventHandler(Events.MOUSE_DRAGGED, ::onMouseMoved)
@ -11,8 +11,8 @@ addEventHandler(Events.KEY_PRESSED, def(e) {
}) })
def onMouseMoved(e) { def onMouseMoved(e) {
setFill(Color.rgb(rand(255), rand(255), rand(255), rand())) g.setFill(Color.rgb(rand(255), rand(255), rand(255), rand()))
m = 1 + e.isPrimaryButtonDown + e.isSecondaryButtonDown m = 1 + e.isPrimaryButtonDown + e.isSecondaryButtonDown
radius = m * rand(30, 50) radius = m * rand(30, 50)
fillOval(e.x - radius/2, e.y - radius/2, radius, radius) g.fillOval(e.x - radius/2, e.y - radius/2, radius, radius)
} }

View File

@ -7,11 +7,11 @@ h = size * 1.5
step = 1.0 / steps step = 1.0 / steps
window("JavaFX Global Alpha example", w, h) g = window("JavaFX Global Alpha example", w, h)
setFill(Color.RED) g.setFill(Color.RED)
y = size * 0.25 y = size * 0.25
for a = 0, a <= 1.0, a += step { for a = 0, a <= 1.0, a += step {
setGlobalAlpha(a) g.setGlobalAlpha(a)
fillRect(a * w, y, size, size) g.fillRect(a * w, y, size, size)
} }

View File

@ -4,21 +4,21 @@ use "std"
// http://www.developer.com/java/data/using-graphics-in-javafx.html // http://www.developer.com/java/data/using-graphics-in-javafx.html
width = 800 height = 600 width = 800 height = 600
window("JavaFX Rotation example", width, height) g = window("JavaFX Rotation example", width, height)
translate(width / 2, height / 2) g.translate(width / 2, height / 2)
def randomColor() = Color.rgb(rand(255), rand(255), rand(255), 0.9) def randomColor() = Color.rgb(rand(255), rand(255), rand(255), 0.9)
for i = 0, i < 60, i++ { for i = 0, i < 60, i++ {
rotate(6.0) g.rotate(6.0)
setFill(randomColor()) g.setFill(randomColor())
fillOval(10, 60, 30, 30) g.fillOval(10, 60, 30, 30)
setStroke(randomColor()) g.setStroke(randomColor())
strokeOval(60, 60, 30, 30) g.strokeOval(60, 60, 30, 30)
setFill(randomColor()) g.setFill(randomColor())
fillRoundRect(110, 60, 30, 30, 10, 10) g.fillRoundRect(110, 60, 30, 30, 10, 10)
setFill(randomColor()) g.setFill(randomColor())
fillPolygon([105, 117, 159, 123, 133, 105, 77, 87, 51, 93], g.fillPolygon([105, 117, 159, 123, 133, 105, 77, 87, 51, 93],
[150, 186, 186, 204, 246, 222, 246, 204, 186, 186], 10) [150, 186, 186, 204, 246, 222, 246, 204, 186, 186], 10)
} }

View File

@ -5,6 +5,7 @@ import com.annimon.ownlang.lib.*;
import java.awt.Dimension; import java.awt.Dimension;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javafx.application.Platform; import javafx.application.Platform;
@ -116,68 +117,6 @@ public final class canvasfx implements Module {
Functions.set("addEventFilter", new addEventFilter()); Functions.set("addEventFilter", new addEventFilter());
Functions.set("addEventHandler", new addEventHandler()); Functions.set("addEventHandler", new addEventHandler());
Functions.set("applyEffect", new applyEffect());
Functions.set("appendSVGPath", new appendSVGPath());
Functions.set("arc", new arc());
Functions.set("arcTo", new arcTo());
Functions.set("beginPath", new beginPath());
Functions.set("bezierCurveTo", new bezierCurveTo());
Functions.set("clearRect", new clearRect());
Functions.set("clip", new clip());
Functions.set("closePath", new closePath());
Functions.set("fill", new fill());
Functions.set("fillArc", new fillArc());
Functions.set("fillOval", new fillOval());
Functions.set("fillPolygon", new fillPolygon());
Functions.set("fillRect", new fillRect());
Functions.set("fillRoundRect", new fillRoundRect());
Functions.set("fillText", new fillText());
Functions.set("getGlobalAlpha", new getGlobalAlpha());
Functions.set("getLineWidth", new getLineWidth());
Functions.set("getMiterLimit", new getMiterLimit());
Functions.set("getFill", new getFill());
Functions.set("getFillRule", new getFillRule());
Functions.set("getGlobalAlpha", new getGlobalAlpha());
Functions.set("getGlobalBlendMode", new getGlobalBlendMode());
Functions.set("getLineCap", new getLineCap());
Functions.set("getLineJoin", new getLineJoin());
Functions.set("getLineWidth", new getLineWidth());
Functions.set("getMiterLimit", new getMiterLimit());
Functions.set("getStroke", new getStroke());
Functions.set("getTextAlign", new getTextAlign());
Functions.set("getTextBaseline", new getTextBaseline());
Functions.set("isPointInPath", new isPointInPath());
Functions.set("lineTo", new lineTo());
Functions.set("moveTo", new moveTo());
Functions.set("quadraticCurveTo", new quadraticCurveTo());
Functions.set("rect", new rect());
Functions.set("restore", new restore());
Functions.set("rotate", new rotate());
Functions.set("save", new save());
Functions.set("scale", new scale());
Functions.set("setEffect", new setEffect());
Functions.set("setFill", new setFill());
Functions.set("setFillRule", new setFillRule());
Functions.set("setGlobalAlpha", new setGlobalAlpha());
Functions.set("setGlobalBlendMode", new setGlobalBlendMode());
Functions.set("setLineCap", new setLineCap());
Functions.set("setLineJoin", new setLineJoin());
Functions.set("setLineWidth", new setLineWidth());
Functions.set("setMiterLimit", new setMiterLimit());
Functions.set("setStroke", new setStroke());
Functions.set("setTextAlign", new setTextAlign());
Functions.set("setTextBaseline", new setTextBaseline());
Functions.set("stroke", new stroke());
Functions.set("strokeArc", new strokeArc());
Functions.set("strokeLine", new strokeLine());
Functions.set("strokeOval", new strokeOval());
Functions.set("strokePolygon", new strokePolygon());
Functions.set("strokePolyline", new strokePolyline());
Functions.set("strokeRect", new strokeRect());
Functions.set("strokeRoundRect", new strokeRoundRect());
Functions.set("strokeText", new strokeText());
Functions.set("transform", new transform());
Functions.set("translate", new translate());
final MapValue arcType = new MapValue(ArcType.values().length); final MapValue arcType = new MapValue(ArcType.values().length);
for (ArcType value : ArcType.values()) { for (ArcType value : ArcType.values()) {
@ -632,119 +571,161 @@ public final class canvasfx implements Module {
} }
//</editor-fold> //</editor-fold>
private static class applyEffect implements Function { public static class GraphicsFXValue extends MapValue {
@Override
public Value execute(Value... args) { private final GraphicsContext graphics;
public GraphicsFXValue(GraphicsContext graphics) {
super(64);
this.graphics = graphics;
init();
}
private void init() {
Map<String, Function> functions = new HashMap<>();
functions.put("applyEffect", this::applyEffect);
functions.put("appendSVGPath", this::appendSVGPath);
functions.put("arc", this::arc);
functions.put("arcTo", this::arcTo);
functions.put("beginPath", this::beginPath);
functions.put("bezierCurveTo", this::bezierCurveTo);
functions.put("clearRect", this::clearRect);
functions.put("clip", this::clip);
functions.put("closePath", this::closePath);
functions.put("fill", this::fill);
functions.put("fillArc", this::fillArc);
functions.put("fillOval", this::fillOval);
functions.put("fillPolygon", this::fillPolygon);
functions.put("fillRect", this::fillRect);
functions.put("fillRoundRect", this::fillRoundRect);
functions.put("fillText", this::fillText);
functions.put("getGlobalAlpha", this::getGlobalAlpha);
functions.put("getLineWidth", this::getLineWidth);
functions.put("getMiterLimit", this::getMiterLimit);
functions.put("getFill", this::getFill);
functions.put("getFillRule", this::getFillRule);
functions.put("getGlobalAlpha", this::getGlobalAlpha);
functions.put("getGlobalBlendMode", this::getGlobalBlendMode);
functions.put("getLineCap", this::getLineCap);
functions.put("getLineJoin", this::getLineJoin);
functions.put("getLineWidth", this::getLineWidth);
functions.put("getMiterLimit", this::getMiterLimit);
functions.put("getStroke", this::getStroke);
functions.put("getTextAlign", this::getTextAlign);
functions.put("getTextBaseline", this::getTextBaseline);
functions.put("isPointInPath", this::isPointInPath);
functions.put("lineTo", this::lineTo);
functions.put("moveTo", this::moveTo);
functions.put("quadraticCurveTo", this::quadraticCurveTo);
functions.put("rect", this::rect);
functions.put("restore", this::restore);
functions.put("rotate", this::rotate);
functions.put("save", this::save);
functions.put("scale", this::scale);
functions.put("setEffect", this::setEffect);
functions.put("setFill", this::setFill);
functions.put("setFillRule", this::setFillRule);
functions.put("setGlobalAlpha", this::setGlobalAlpha);
functions.put("setGlobalBlendMode", this::setGlobalBlendMode);
functions.put("setLineCap", this::setLineCap);
functions.put("setLineJoin", this::setLineJoin);
functions.put("setLineWidth", this::setLineWidth);
functions.put("setMiterLimit", this::setMiterLimit);
functions.put("setStroke", this::setStroke);
functions.put("setTextAlign", this::setTextAlign);
functions.put("setTextBaseline", this::setTextBaseline);
functions.put("stroke", this::stroke);
functions.put("strokeArc", this::strokeArc);
functions.put("strokeLine", this::strokeLine);
functions.put("strokeOval", this::strokeOval);
functions.put("strokePolygon", this::strokePolygon);
functions.put("strokePolyline", this::strokePolyline);
functions.put("strokeRect", this::strokeRect);
functions.put("strokeRoundRect", this::strokeRoundRect);
functions.put("strokeText", this::strokeText);
functions.put("transform", this::transform);
functions.put("translate", this::translate);
for (Map.Entry<String, Function> entry : functions.entrySet()) {
set(new StringValue(entry.getKey()), new FunctionValue(entry.getValue()));
}
}
public Value applyEffect(Value... args) {
if (args[0].type() != FX_EFFECT_TYPE) { if (args[0].type() != FX_EFFECT_TYPE) {
throw new TypeException("Effect expected, found " + Types.typeToString(args[0].type())); throw new TypeException("Effect expected, found " + Types.typeToString(args[0].type()));
} }
graphics.applyEffect((Effect) args[0].raw()); graphics.applyEffect((Effect) args[0].raw());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value arc(Value... args) {
private static class appendSVGPath implements Function {
@Override
public Value execute(Value... args) {
graphics.appendSVGPath(args[0].asString());
return NumberValue.ZERO;
}
}
private static class arc implements Function {
@Override
public Value execute(Value... args) {
graphics.arc(args[0].asNumber(), args[1].asNumber(), graphics.arc(args[0].asNumber(), args[1].asNumber(),
args[2].asNumber(), args[3].asNumber(), args[2].asNumber(), args[3].asNumber(),
args[4].asNumber(), args[5].asNumber()); args[4].asNumber(), args[5].asNumber());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value appendSVGPath(Value... args) {
private static class arcTo implements Function { graphics.appendSVGPath(args[0].asString());
@Override return NumberValue.ZERO;
public Value execute(Value... args) { }
public Value arcTo(Value... args) {
graphics.arcTo(args[0].asNumber(), args[1].asNumber(), graphics.arcTo(args[0].asNumber(), args[1].asNumber(),
args[2].asNumber(), args[3].asNumber(), args[2].asNumber(), args[3].asNumber(),
args[4].asNumber()); args[4].asNumber());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value beginPath(Value... args) {
private static class beginPath implements Function {
@Override
public Value execute(Value... args) {
graphics.beginPath(); graphics.beginPath();
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value bezierCurveTo(Value... args) {
private static class bezierCurveTo implements Function {
@Override
public Value execute(Value... args) {
graphics.bezierCurveTo(args[0].asNumber(), args[1].asNumber(), graphics.bezierCurveTo(args[0].asNumber(), args[1].asNumber(),
args[2].asNumber(), args[3].asNumber(), args[2].asNumber(), args[3].asNumber(),
args[4].asNumber(), args[5].asNumber()); args[4].asNumber(), args[5].asNumber());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value clearRect(Value... args) {
private static class clearRect implements Function {
@Override
public Value execute(Value... args) {
graphics.clearRect(args[0].asNumber(), args[1].asNumber(), graphics.clearRect(args[0].asNumber(), args[1].asNumber(),
args[2].asNumber(), args[3].asNumber()); args[2].asNumber(), args[3].asNumber());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value clip(Value... args) {
private static class clip implements Function {
@Override
public Value execute(Value... args) {
graphics.clip(); graphics.clip();
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value closePath(Value... args) {
private static class closePath implements Function {
@Override
public Value execute(Value... args) {
graphics.closePath(); graphics.closePath();
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value fill(Value... args) {
private static class fill implements Function {
@Override
public Value execute(Value... args) {
graphics.fill(); graphics.fill();
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value fillArc(Value... args) {
private static class fillArc implements Function {
@Override
public Value execute(Value... args) {
graphics.fillArc(args[0].asNumber(), args[1].asNumber(), graphics.fillArc(args[0].asNumber(), args[1].asNumber(),
args[2].asNumber(), args[3].asNumber(), args[2].asNumber(), args[3].asNumber(),
args[4].asNumber(), args[5].asNumber(), args[4].asNumber(), args[5].asNumber(),
ArcType.values()[args[6].asInt()]); ArcType.values()[args[6].asInt()]);
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value fillOval(Value... args) {
private static class fillOval implements Function {
@Override
public Value execute(Value... args) {
graphics.fillOval(args[0].asNumber(), args[1].asNumber(), graphics.fillOval(args[0].asNumber(), args[1].asNumber(),
args[2].asNumber(), args[3].asNumber()); args[2].asNumber(), args[3].asNumber());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value fillPolygon(Value... args) {
private static class fillPolygon implements Function {
@Override
public Value execute(Value... args) {
final ArrayValue xarr = (ArrayValue) args[0]; final ArrayValue xarr = (ArrayValue) args[0];
final ArrayValue yarr = (ArrayValue) args[1]; final ArrayValue yarr = (ArrayValue) args[1];
@ -755,34 +736,25 @@ public final class canvasfx implements Module {
xPoints[i] = xarr.get(i).asNumber(); xPoints[i] = xarr.get(i).asNumber();
yPoints[i] = yarr.get(i).asNumber(); yPoints[i] = yarr.get(i).asNumber();
} }
graphics.fillPolygon(xPoints, yPoints, args[2].asInt()); graphics.fillPolygon(xPoints, yPoints, args[2].asInt());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value fillRect(Value... args) {
private static class fillRect implements Function {
@Override
public Value execute(Value... args) {
graphics.fillRect(args[0].asNumber(), args[1].asNumber(), graphics.fillRect(args[0].asNumber(), args[1].asNumber(),
args[2].asNumber(), args[3].asNumber()); args[2].asNumber(), args[3].asNumber());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value fillRoundRect(Value... args) {
private static class fillRoundRect implements Function {
@Override
public Value execute(Value... args) {
graphics.fillRoundRect(args[0].asNumber(), args[1].asNumber(), graphics.fillRoundRect(args[0].asNumber(), args[1].asNumber(),
args[2].asNumber(), args[3].asNumber(), args[2].asNumber(), args[3].asNumber(),
args[4].asNumber(), args[5].asNumber() ); args[4].asNumber(), args[5].asNumber() );
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value fillText(Value... args) {
private static class fillText implements Function {
@Override
public Value execute(Value... args) {
if (args.length < 4) { if (args.length < 4) {
// str x y // str x y
graphics.fillText(args[0].asString(), args[1].asNumber(), graphics.fillText(args[0].asString(), args[1].asNumber(),
@ -793,297 +765,186 @@ public final class canvasfx implements Module {
} }
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value getFill(Value... args) {
private static class getFill implements Function {
@Override
public Value execute(Value... args) {
return new ColorValue((Color)graphics.getFill()); return new ColorValue((Color)graphics.getFill());
} }
}
public Value getFillRule(Value... args) {
private static class getFillRule implements Function {
@Override
public Value execute(Value... args) {
return NumberValue.of(graphics.getFillRule().ordinal()); return NumberValue.of(graphics.getFillRule().ordinal());
} }
}
public Value getGlobalAlpha(Value... args) {
private static class getGlobalAlpha implements Function {
@Override
public Value execute(Value... args) {
return NumberValue.of(graphics.getGlobalAlpha()); return NumberValue.of(graphics.getGlobalAlpha());
} }
}
public Value getGlobalBlendMode(Value... args) {
private static class getGlobalBlendMode implements Function {
@Override
public Value execute(Value... args) {
return NumberValue.of(graphics.getGlobalBlendMode().ordinal()); return NumberValue.of(graphics.getGlobalBlendMode().ordinal());
} }
}
public Value getLineCap(Value... args) {
private static class getLineCap implements Function {
@Override
public Value execute(Value... args) {
return NumberValue.of(graphics.getLineCap().ordinal()); return NumberValue.of(graphics.getLineCap().ordinal());
} }
}
public Value getLineJoin(Value... args) {
private static class getLineJoin implements Function {
@Override
public Value execute(Value... args) {
return NumberValue.of(graphics.getLineJoin().ordinal()); return NumberValue.of(graphics.getLineJoin().ordinal());
} }
}
public Value getLineWidth(Value... args) {
private static class getLineWidth implements Function {
@Override
public Value execute(Value... args) {
return NumberValue.of(graphics.getLineWidth()); return NumberValue.of(graphics.getLineWidth());
} }
}
public Value getMiterLimit(Value... args) {
private static class getMiterLimit implements Function {
@Override
public Value execute(Value... args) {
return NumberValue.of(graphics.getMiterLimit()); return NumberValue.of(graphics.getMiterLimit());
} }
}
public Value getStroke(Value... args) {
private static class getStroke implements Function {
@Override
public Value execute(Value... args) {
return new ColorValue((Color)graphics.getStroke()); return new ColorValue((Color)graphics.getStroke());
} }
}
public Value getTextAlign(Value... args) {
private static class getTextAlign implements Function {
@Override
public Value execute(Value... args) {
return NumberValue.of(graphics.getTextAlign().ordinal()); return NumberValue.of(graphics.getTextAlign().ordinal());
} }
}
public Value getTextBaseline(Value... args) {
private static class getTextBaseline implements Function {
@Override
public Value execute(Value... args) {
return NumberValue.of(graphics.getTextBaseline().ordinal()); return NumberValue.of(graphics.getTextBaseline().ordinal());
} }
}
public Value isPointInPath(Value... args) {
private static class isPointInPath implements Function {
@Override
public Value execute(Value... args) {
return NumberValue.fromBoolean(graphics.isPointInPath(args[0].asNumber(), args[1].asNumber())); return NumberValue.fromBoolean(graphics.isPointInPath(args[0].asNumber(), args[1].asNumber()));
} }
}
public Value lineTo(Value... args) {
private static class lineTo implements Function {
@Override
public Value execute(Value... args) {
graphics.lineTo(args[0].asNumber(), args[1].asNumber()); graphics.lineTo(args[0].asNumber(), args[1].asNumber());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value moveTo(Value... args) {
private static class moveTo implements Function {
@Override
public Value execute(Value... args) {
graphics.moveTo(args[0].asNumber(), args[1].asNumber()); graphics.moveTo(args[0].asNumber(), args[1].asNumber());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value quadraticCurveTo(Value... args) {
private static class quadraticCurveTo implements Function {
@Override
public Value execute(Value... args) {
graphics.quadraticCurveTo(args[0].asNumber(), args[1].asNumber(), graphics.quadraticCurveTo(args[0].asNumber(), args[1].asNumber(),
args[2].asNumber(), args[3].asNumber()); args[2].asNumber(), args[3].asNumber());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value rect(Value... args) {
private static class rect implements Function {
@Override
public Value execute(Value... args) {
graphics.rect(args[0].asNumber(), args[1].asNumber(), graphics.rect(args[0].asNumber(), args[1].asNumber(),
args[2].asNumber(), args[3].asNumber()); args[2].asNumber(), args[3].asNumber());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value restore(Value... args) {
private static class restore implements Function {
@Override
public Value execute(Value... args) {
graphics.restore(); graphics.restore();
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value rotate(Value... args) {
private static class rotate implements Function {
@Override
public Value execute(Value... args) {
graphics.rotate(args[0].asNumber()); graphics.rotate(args[0].asNumber());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value save(Value... args) {
private static class save implements Function {
@Override
public Value execute(Value... args) {
graphics.save(); graphics.save();
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value scale(Value... args) {
private static class scale implements Function {
@Override
public Value execute(Value... args) {
graphics.scale(args[0].asNumber(), args[1].asNumber()); graphics.scale(args[0].asNumber(), args[1].asNumber());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value setEffect(Value... args) {
private static class setEffect implements Function {
@Override
public Value execute(Value... args) {
if (args[0].type() != FX_EFFECT_TYPE) { if (args[0].type() != FX_EFFECT_TYPE) {
throw new TypeException("Effect expected, found " + Types.typeToString(args[0].type())); throw new TypeException("Effect expected, found " + Types.typeToString(args[0].type()));
} }
graphics.setEffect((Effect) args[0].raw()); graphics.setEffect((Effect) args[0].raw());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value setFill(Value... args) {
private static class setFill implements Function {
@Override
public Value execute(Value... args) {
graphics.setFill((Color) args[0].raw()); graphics.setFill((Color) args[0].raw());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value setFillRule(Value... args) {
private static class setFillRule implements Function {
@Override
public Value execute(Value... args) {
graphics.setFillRule(FillRule.values()[args[0].asInt()]); graphics.setFillRule(FillRule.values()[args[0].asInt()]);
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value setGlobalAlpha(Value... args) {
private static class setGlobalAlpha implements Function {
@Override
public Value execute(Value... args) {
graphics.setGlobalAlpha(args[0].asNumber()); graphics.setGlobalAlpha(args[0].asNumber());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value setGlobalBlendMode(Value... args) {
private static class setGlobalBlendMode implements Function {
@Override
public Value execute(Value... args) {
graphics.setGlobalBlendMode(BlendMode.values()[args[0].asInt()]); graphics.setGlobalBlendMode(BlendMode.values()[args[0].asInt()]);
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value setLineCap(Value... args) {
private static class setLineCap implements Function {
@Override
public Value execute(Value... args) {
graphics.setLineCap(StrokeLineCap.values()[args[0].asInt()]); graphics.setLineCap(StrokeLineCap.values()[args[0].asInt()]);
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value setLineJoin(Value... args) {
private static class setLineJoin implements Function {
@Override
public Value execute(Value... args) {
graphics.setLineJoin(StrokeLineJoin.values()[args[0].asInt()]); graphics.setLineJoin(StrokeLineJoin.values()[args[0].asInt()]);
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value setLineWidth(Value... args) {
private static class setLineWidth implements Function {
@Override
public Value execute(Value... args) {
graphics.setLineWidth(args[0].asNumber()); graphics.setLineWidth(args[0].asNumber());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value setMiterLimit(Value... args) {
private static class setMiterLimit implements Function {
@Override
public Value execute(Value... args) {
graphics.setMiterLimit(args[0].asNumber()); graphics.setMiterLimit(args[0].asNumber());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value setStroke(Value... args) {
private static class setStroke implements Function {
@Override
public Value execute(Value... args) {
graphics.setStroke((Color) args[0].raw()); graphics.setStroke((Color) args[0].raw());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value setTextAlign(Value... args) {
private static class setTextAlign implements Function {
@Override
public Value execute(Value... args) {
graphics.setTextAlign(TextAlignment.values()[args[0].asInt()]); graphics.setTextAlign(TextAlignment.values()[args[0].asInt()]);
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value setTextBaseline(Value... args) {
private static class setTextBaseline implements Function {
@Override
public Value execute(Value... args) {
graphics.setTextBaseline(VPos.values()[args[0].asInt()]); graphics.setTextBaseline(VPos.values()[args[0].asInt()]);
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value stroke(Value... args) {
private static class stroke implements Function {
@Override
public Value execute(Value... args) {
graphics.stroke(); graphics.stroke();
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value strokeArc(Value... args) {
private static class strokeArc implements Function {
@Override
public Value execute(Value... args) {
graphics.strokeArc(args[0].asNumber(), args[1].asNumber(), graphics.strokeArc(args[0].asNumber(), args[1].asNumber(),
args[2].asNumber(), args[3].asNumber(), args[2].asNumber(), args[3].asNumber(),
args[4].asNumber(), args[5].asNumber(), args[4].asNumber(), args[5].asNumber(),
ArcType.values()[args[6].asInt()]); ArcType.values()[args[6].asInt()]);
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value strokeLine(Value... args) {
private static class strokeLine implements Function {
@Override
public Value execute(Value... args) {
graphics.strokeLine(args[0].asNumber(), args[1].asNumber(), graphics.strokeLine(args[0].asNumber(), args[1].asNumber(),
args[2].asNumber(), args[3].asNumber()); args[2].asNumber(), args[3].asNumber());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value strokeOval(Value... args) {
private static class strokeOval implements Function {
@Override
public Value execute(Value... args) {
graphics.strokeOval(args[0].asNumber(), args[1].asNumber(), graphics.strokeOval(args[0].asNumber(), args[1].asNumber(),
args[2].asNumber(), args[3].asNumber()); args[2].asNumber(), args[3].asNumber());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value strokePolygon(Value... args) {
private static class strokePolygon implements Function {
@Override
public Value execute(Value... args) {
final ArrayValue xarr = (ArrayValue) args[0]; final ArrayValue xarr = (ArrayValue) args[0];
final ArrayValue yarr = (ArrayValue) args[1]; final ArrayValue yarr = (ArrayValue) args[1];
@ -1094,15 +955,12 @@ public final class canvasfx implements Module {
xPoints[i] = xarr.get(i).asNumber(); xPoints[i] = xarr.get(i).asNumber();
yPoints[i] = yarr.get(i).asNumber(); yPoints[i] = yarr.get(i).asNumber();
} }
graphics.strokePolygon(xPoints, yPoints, args[2].asInt()); graphics.strokePolygon(xPoints, yPoints, args[2].asInt());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value strokePolyline(Value... args) {
private static class strokePolyline implements Function {
@Override
public Value execute(Value... args) {
final ArrayValue xarr = (ArrayValue) args[0]; final ArrayValue xarr = (ArrayValue) args[0];
final ArrayValue yarr = (ArrayValue) args[1]; final ArrayValue yarr = (ArrayValue) args[1];
@ -1113,34 +971,25 @@ public final class canvasfx implements Module {
xPoints[i] = xarr.get(i).asNumber(); xPoints[i] = xarr.get(i).asNumber();
yPoints[i] = yarr.get(i).asNumber(); yPoints[i] = yarr.get(i).asNumber();
} }
graphics.strokePolyline(xPoints, yPoints, args[2].asInt()); graphics.strokePolyline(xPoints, yPoints, args[2].asInt());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value strokeRect(Value... args) {
private static class strokeRect implements Function {
@Override
public Value execute(Value... args) {
graphics.strokeRect(args[0].asNumber(), args[1].asNumber(), graphics.strokeRect(args[0].asNumber(), args[1].asNumber(),
args[2].asNumber(), args[3].asNumber()); args[2].asNumber(), args[3].asNumber());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value strokeRoundRect(Value... args) {
private static class strokeRoundRect implements Function {
@Override
public Value execute(Value... args) {
graphics.strokeRoundRect(args[0].asNumber(), args[1].asNumber(), graphics.strokeRoundRect(args[0].asNumber(), args[1].asNumber(),
args[2].asNumber(), args[3].asNumber(), args[2].asNumber(), args[3].asNumber(),
args[4].asNumber(), args[5].asNumber() ); args[4].asNumber(), args[5].asNumber() );
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value strokeText(Value... args) {
private static class strokeText implements Function {
@Override
public Value execute(Value... args) {
if (args.length < 4) { if (args.length < 4) {
// str x y // str x y
graphics.strokeText(args[0].asString(), args[1].asNumber(), graphics.strokeText(args[0].asString(), args[1].asNumber(),
@ -1151,26 +1000,25 @@ public final class canvasfx implements Module {
} }
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value transform(Value... args) {
private static class transform implements Function {
@Override
public Value execute(Value... args) {
graphics.transform(args[0].asNumber(), args[1].asNumber(), graphics.transform(args[0].asNumber(), args[1].asNumber(),
args[2].asNumber(), args[3].asNumber(), args[2].asNumber(), args[3].asNumber(),
args[4].asNumber(), args[5].asNumber()); args[4].asNumber(), args[5].asNumber());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
public Value translate(Value... args) {
private static class translate implements Function {
@Override
public Value execute(Value... args) {
graphics.translate(args[0].asNumber(), args[1].asNumber()); graphics.translate(args[0].asNumber(), args[1].asNumber());
return NumberValue.ZERO; return NumberValue.ZERO;
} }
}
@Override
public String toString() {
return "GraphicsFXValue " + asString();
}
}
private static class CreateWindow implements Function { private static class CreateWindow implements Function {
@Override @Override
@ -1212,7 +1060,7 @@ public final class canvasfx implements Module {
root.getChildren().add(canvas); root.getChildren().add(canvas);
panel.setScene(scene); panel.setScene(scene);
}); });
return NumberValue.ZERO; return new GraphicsFXValue(graphics);
} }
} }