public void draw(Canvas canvas) { canvas.setFillColor(0xFF99CCFF); canvas.fillRect(0, 0, 100, 100); // draw a point and some lines canvas.setStrokeColor(0xFFFF0000); canvas.drawPoint(50, 50); canvas.drawLine(0, 25, 100, 25); canvas.drawLine(0, 75, 100, 75); canvas.drawLine(25, 0, 25, 100); canvas.drawLine(75, 0, 75, 100); // stroke and fill a circle canvas.strokeCircle(25, 75, 10); canvas.setFillColor(0xFF0000FF); canvas.fillCircle(75, 75, 10); } });
public void draw(Canvas canvas) { canvas.setFillColor(0xFF99CCFF); canvas.fillRect(0, 0, 100, 100); // draw a point and some lines canvas.setStrokeColor(0xFFFF0000); canvas.drawPoint(50, 50); canvas.drawLine(0, 25, 100, 25); canvas.drawLine(0, 75, 100, 75); canvas.drawLine(25, 0, 25, 100); canvas.drawLine(75, 0, 75, 100); // stroke and fill a circle canvas.strokeCircle(25, 75, 10); canvas.setFillColor(0xFF0000FF); canvas.fillCircle(75, 75, 10); } });
@Override public Surface drawLine(float x0, float y0, float x1, float y1, float width) { canvas.save(); canvas.setStrokeWidth(width); canvas.drawLine(x0, y0, x1, y1); canvas.restore(); return this; }
@Override public void drawSegment(Vec2 p1, Vec2 p2, Color3f color) { setStrokeColor(color); setFillColor(color); getWorldToScreenToOut(p1, tempVec1); getWorldToScreenToOut(p2, tempVec2); canvas.drawLine(tempVec1.x, tempVec1.y, tempVec2.x, tempVec2.y); }
@Override public void drawTransform(Transform xf) { getWorldToScreenToOut(xf.p, tempVec1); tempVec2.setZero(); // float k_axisScale = 0.4f; canvas.setStrokeColor(Color.rgb(1, 0, 0)); // note: violates strokeAlpha tempVec2.x = xf.p.x; // + k_axisScale * xf.R.m11; // Transform no longer scales tempVec2.y = xf.p.y; // + k_axisScale * xf.R.m12; getWorldToScreenToOut(tempVec2, tempVec2); canvas.drawLine(tempVec1.x, tempVec1.y, tempVec2.x, tempVec2.y); canvas.setStrokeColor(Color.rgb(0, 1, 0)); // note: violates strokeAlpha tempVec2.x = xf.p.x; // + k_axisScale * xf.R.m21; // Transform no longer scales tempVec2.y = xf.p.y; // + k_axisScale * xf.R.m22; getWorldToScreenToOut(tempVec2, tempVec2); canvas.drawLine(tempVec1.x, tempVec1.y, tempVec2.x, tempVec2.y); canvas.setStrokeColor(Color.argb(strokeAlpha, 1, 0, 0)); // restores strokeAlpha }
@Override public void drawSegment(Vec2 p1, Vec2 p2, Color3f color) { if (canvas == null) { log().error(CANVASERROR); return; } setStrokeColor(color); setFillColor(color); getWorldToScreenToOut(p1, tempVec1); getWorldToScreenToOut(p2, tempVec2); canvas.drawLine(tempVec1.x, tempVec1.y, tempVec2.x, tempVec2.y); }
@Override public void drawTransform(Transform xf) { if (canvas == null) { log().error(CANVASERROR); return; } getWorldToScreenToOut(xf.p, tempVec1); tempVec2.setZero(); // float k_axisScale = 0.4f; canvas.setStrokeColor(Color.rgb(1, 0, 0)); // note: violates strokeAlpha tempVec2.x = xf.p.x; // + k_axisScale * xf.R.m11; // Transform no longer scales tempVec2.y = xf.p.y; // + k_axisScale * xf.R.m12; getWorldToScreenToOut(tempVec2, tempVec2); canvas.drawLine(tempVec1.x, tempVec1.y, tempVec2.x, tempVec2.y); canvas.setStrokeColor(Color.rgb(0, 1, 0)); // note: violates strokeAlpha tempVec2.x = xf.p.x; // + k_axisScale * xf.R.m21; // Transform no longer scales tempVec2.y = xf.p.y; // + k_axisScale * xf.R.m22; getWorldToScreenToOut(tempVec2, tempVec2); canvas.drawLine(tempVec1.x, tempVec1.y, tempVec2.x, tempVec2.y); canvas.setStrokeColor(Color.argb(strokeAlpha, 1, 0, 0)); // restores strokeAlpha }
@Override public void init () { Canvas bgcanvas = game.graphics.createCanvas(WIDTH + 10, HEIGHT); bgcanvas.setFillColor(0xff808080); bgcanvas.fillRect(0, 0, WIDTH + 10, HEIGHT); ImageLayer bg = new ImageLayer(bgcanvas.toTexture()); Canvas knob = game.graphics.createCanvas(WIDTH, HWIDTH); knob.setFillColor(0xffffffff).fillRect(0, 0, WIDTH, HWIDTH); knob.setStrokeColor(0xff000000).drawLine(0, HWIDTH / 2, WIDTH, HWIDTH / 2); knob.setStrokeColor(0xffff0000).strokeRect(0, 0, WIDTH - 1, HWIDTH - 1); ImageLayer il = new ImageLayer(knob.toTexture()); il.setOrigin(0, HWIDTH / 2).setDepth(1).setTranslation(0, HEIGHT / 2); GroupLayer slider = new GroupLayer(); slider.add(bg); slider.add(il); game.rootLayer.addAt(slider, 25, 25); bg.events().connect(new Mouse.Listener() { @Override public void onWheel (Mouse.WheelEvent event, Mouse.Interaction iact) { float y = il.ty() + event.velocity; y = Math.max(0, Math.min(y, HEIGHT)); il.setTranslation(0, y); } }); } }
@Override public void init () { GroupLayer slider = graphics().createGroupLayer(); CanvasImage image = graphics().createImage(WIDTH + 10, HEIGHT); image.canvas().setFillColor(0xff808080); image.canvas().fillRect(0, 0, WIDTH + 10, HEIGHT); ImageLayer bg = graphics().createImageLayer(image); slider.add(bg); image = graphics().createImage(WIDTH, HWIDTH); image.canvas().setFillColor(0xffffffff); image.canvas().fillRect(0, 0, WIDTH, HWIDTH); image.canvas().setStrokeColor(0xff000000); image.canvas().drawLine(0, HWIDTH / 2, WIDTH, HWIDTH / 2); image.canvas().setStrokeColor(0xffff0000); image.canvas().strokeRect(0, 0, WIDTH - 1, HWIDTH - 1); slider.add(il = graphics().createImageLayer(image)); il.setOrigin(0, HWIDTH / 2); il.setTranslation(0, HEIGHT / 2); il.setDepth(1); graphics().rootLayer().add(slider); slider.setTranslation(25, 25); bg.addListener(new Mouse.LayerAdapter() { @Override public void onMouseWheelScroll (WheelEvent event) { float y = il.ty() + event.velocity(); y = Math.max(0, Math.min(y, HEIGHT)); il.setTranslation(0, y); } }); }