(Canvas canvas, Scene scene, int width, int height)
| 24 | } |
| 25 | |
| 26 | public void draw(Canvas canvas, Scene scene, int width, int height) { |
| 27 | long nativeCalls = Stats.nativeCalls; |
| 28 | Stats.nativeCalls = 0; |
| 29 | int allocated = Stats.allocated.values().stream().reduce(0, Integer::sum); |
| 30 | |
| 31 | Paint bg = new Paint().setColor(0x90000000); |
| 32 | Paint fg = new Paint().setColor(0xFFFFFFFF); |
| 33 | Paint graph = new Paint().setColor(0xFF00FF00).setStrokeWidth(1); |
| 34 | Paint graphPast = new Paint().setColor(0x9000FF00).setStrokeWidth(1); |
| 35 | Paint graphLimit = new Paint().setColor(0xFFcc3333).setStrokeWidth(1); |
| 36 | FontMetrics metrics = Scene.inter13.getMetrics(); |
| 37 | |
| 38 | float variantsHeight = scene._variants.length > 1 ? 25 : 0; |
| 39 | |
| 40 | // Background |
| 41 | canvas.translate(width - 230, height - 160 - variantsHeight - extras.size() * 25); |
| 42 | canvas.drawRRect(RRect.makeLTRB(0, 0, 225, 180 + variantsHeight, 7), bg); |
| 43 | canvas.translate(5, 5); |
| 44 | |
| 45 | // Scene |
| 46 | RRect buttonBounds = RRect.makeLTRB(0, 0, 30, 20, 2); |
| 47 | Rect labelBounds = Rect.makeLTRB(35, 0, 225, 20); |
| 48 | canvas.drawRRect(buttonBounds, bg); |
| 49 | Scene.drawStringCentered(canvas, "←→", 15, 10, Scene.inter13, fg); |
| 50 | int sceneIdx = 1; |
| 51 | for (String sceneKey: Scenes.scenes.keySet()) { |
| 52 | if (sceneKey.equals(Scenes.currentScene)) break; |
| 53 | sceneIdx++; |
| 54 | } |
| 55 | Scene.drawStringLeft(canvas, sceneIdx + "/" + Scenes.scenes.size() + " " + Scenes.currentScene, labelBounds, Scene.inter13, fg); |
| 56 | canvas.translate(0, 25); |
| 57 | |
| 58 | // Variants |
| 59 | if (scene._variants.length > 1) { |
| 60 | labelBounds = Rect.makeLTRB(35, 0, 225, 20); |
| 61 | canvas.drawRRect(buttonBounds, bg); |
| 62 | Scene.drawStringCentered(canvas, "↑↓", 15, 10, Scene.inter13, fg); |
| 63 | Scene.drawStringLeft(canvas, (scene._variantIdx + 1) + "/" + scene._variants.length + " " + scene.variantTitle(), labelBounds, Scene.inter13, fg); |
| 64 | canvas.translate(0, 25); |
| 65 | } |
| 66 | |
| 67 | // Extras |
| 68 | for (var pair: extras) { |
| 69 | String key = pair.getFirst(); |
| 70 | String label = pair.getSecond(); |
| 71 | buttonBounds = RRect.makeXYWH(5, 0, 20, 20, 2); |
| 72 | canvas.drawRRect(buttonBounds, bg); |
| 73 | Scene.drawStringCentered(canvas, key, 15, 10, Scene.inter13, fg); |
| 74 | Scene.drawStringLeft(canvas, label, labelBounds, Scene.inter13, fg); |
| 75 | canvas.translate(0, 25); |
| 76 | } |
| 77 | |
| 78 | // Stats |
| 79 | canvas.drawRRect(buttonBounds, bg); |
| 80 | Scene.drawStringCentered(canvas, "S", 15, 10, Scene.inter13, fg); |
| 81 | Scene.drawStringLeft(canvas, "Stats: " + (Scenes.stats ? "ON" : "OFF"), labelBounds, Scene.inter13, fg); |
| 82 | canvas.translate(0, 25); |
| 83 |
nothing calls this directly
no test coverage detected