(Canvas canvas, int width, int height, float dpi, int xpos, int ypos)
| 5 | |
| 6 | public class MatrixScene extends Scene { |
| 7 | @Override |
| 8 | public void draw(Canvas canvas, int width, int height, float dpi, int xpos, int ypos) { |
| 9 | canvas.translate(20, 20); |
| 10 | |
| 11 | try (var stroke = new Paint().setColor(0x40000000).setMode(PaintMode.STROKE).setStrokeWidth(1)) { |
| 12 | canvas.save(); |
| 13 | canvas.drawRect(Rect.makeLTRB(0, 0, 200, 200), stroke); |
| 14 | canvas.drawLine(0, 100, 200, 100, stroke); |
| 15 | canvas.drawLine(100, 0, 100, 200, stroke); |
| 16 | canvas.concat(Matrix33.makeTranslate(100, 100).makeConcat(Matrix33.makeRotate(5))); |
| 17 | canvas.drawRect(Rect.makeLTRB(-10, -10, 10, 10), blackFill); |
| 18 | var m44 = canvas.getLocalToDevice().getMat(); |
| 19 | var m33 = canvas.getLocalToDeviceAsMatrix33().getMat(); |
| 20 | canvas.restore(); |
| 21 | canvas.drawString("translate(100, 100) + rotate(5)", 0, 220, inter13, blackFill); |
| 22 | for (var row = 0; row < 4; ++row) |
| 23 | canvas.drawString(String.format("[ %.2f %.2f %.2f %.2f ]", m44[row * 4], m44[row * 4 + 1], m44[row * 4 + 2], + m44[row * 4 + 3]), 0, 260 + row * 20, inter13, blackFill); |
| 24 | for (var row = 0; row < 3; ++row) |
| 25 | canvas.drawString(String.format("[ %.2f %.2f %.2f ]", m33[row * 3], m33[row * 3 + 1], m33[row * 3 + 2]), 0, 360 + row * 20, inter13, blackFill); |
| 26 | canvas.translate(300, 0); |
| 27 | |
| 28 | canvas.save(); |
| 29 | canvas.drawRect(Rect.makeLTRB(0, 0, 200, 200), stroke); |
| 30 | canvas.drawLine(0, 100, 200, 100, stroke); |
| 31 | canvas.drawLine(100, 0, 100, 200, stroke); |
| 32 | canvas.concat(Matrix33.makeRotate(5).makeConcat(Matrix33.makeTranslate(100, 100))); |
| 33 | canvas.drawRect(Rect.makeLTRB(-10, -10, 10, 10), blackFill); |
| 34 | m44 = canvas.getLocalToDevice().getMat(); |
| 35 | m33 = canvas.getLocalToDeviceAsMatrix33().getMat(); |
| 36 | canvas.restore(); |
| 37 | canvas.drawString("rotate(5) + translate(100, 100)", 0, 220, inter13, blackFill); |
| 38 | for (var row = 0; row < 4; ++row) |
| 39 | canvas.drawString(String.format("[ %.2f %.2f %.2f %.2f ]", m44[row * 4], m44[row * 4 + 1], m44[row * 4 + 2], + m44[row * 4 + 3]), 0, 260 + row * 20, inter13, blackFill); |
| 40 | for (var row = 0; row < 3; ++row) |
| 41 | canvas.drawString(String.format("[ %.2f %.2f %.2f ]", m33[row * 3], m33[row * 3 + 1], m33[row * 3 + 2]), 0, 360 + row * 20, inter13, blackFill); |
| 42 | canvas.translate(300, 0); |
| 43 | |
| 44 | // rotate over pivot |
| 45 | canvas.save(); |
| 46 | canvas.drawRect(Rect.makeLTRB(0, 0, 200, 200), stroke); |
| 47 | canvas.drawLine(0, 100, 200, 100, stroke); |
| 48 | canvas.drawLine(100, 0, 100, 200, stroke); |
| 49 | canvas.concat(Matrix33.makeRotate(5, 100, 100)); |
| 50 | canvas.drawRect(Rect.makeLTRB(-10, -10, 10, 10), blackFill); |
| 51 | m44 = canvas.getLocalToDevice().getMat(); |
| 52 | m33 = canvas.getLocalToDeviceAsMatrix33().getMat(); |
| 53 | canvas.restore(); |
| 54 | canvas.drawString("translate(100, 100) + rotate(5) + translate(-100, -100)", 0, 220, inter13, blackFill); |
| 55 | for (var row = 0; row < 4; ++row) |
| 56 | canvas.drawString(String.format("[ %.2f %.2f %.2f %.2f ]", m44[row * 4], m44[row * 4 + 1], m44[row * 4 + 2], + m44[row * 4 + 3]), 0, 260 + row * 20, inter13, blackFill); |
| 57 | for (var row = 0; row < 3; ++row) |
| 58 | canvas.drawString(String.format("[ %.2f %.2f %.2f ]", m33[row * 3], m33[row * 3 + 1], m33[row * 3 + 2]), 0, 360 + row * 20, inter13, blackFill); |
| 59 | canvas.translate(300, 0); |
| 60 | } |
| 61 | } |
| 62 | } |
nothing calls this directly
no test coverage detected