private static VBox[] doCut( int color, VBox vbox, List<Integer> partialsum, List<Integer> lookaheadsum, int total) { int dim1 = 0, dim2 = 0; if (color == RED) { dim1 = vbox.getR1(); dim2 = vbox.getR2(); } else if (color == GREEN) { dim1 = vbox.getG1(); dim2 = vbox.getG2(); } else if (color == BLUE) { dim1 = vbox.getB1(); dim2 = vbox.getB2(); } VBox vbox1, vbox2; int left, right, d2; Integer count2; for (int i = dim1; i < dim2; i++) { if (partialsum.get(i) > total / 2) { vbox1 = vbox.copy(); vbox2 = vbox.copy(); left = i - dim1; right = dim2 - i; if (left <= right) { d2 = Math.min(dim2 - 1, ~~(i + right / 2)); } else { d2 = Math.max(dim1, ~~(i - 1 - left / 2)); } while (partialsum.get(d2) == null) d2++; count2 = lookaheadsum.get(d2); while (count2 == null && partialsum.get(d2 - 1) == null) count2 = lookaheadsum.get(--d2); if (color == RED) { vbox1.setR2(d2); vbox2.setR1(vbox1.getR2() + 1); } else if (color == GREEN) { vbox1.setG2(d2); vbox2.setG1(vbox1.getG2() + 1); } else if (color == BLUE) { vbox1.setB2(d2); vbox2.setB1(vbox1.getB2() + 1); } return new VBox[] {vbox1, vbox2}; } } return null; }