Example #1
0
  /** Transfers internal line data to jReality */
  private void updateLines() {
    if (lineCoordinates.size() == 0) return;
    ilsf.setVertexCount(lineCoordinates.size());
    ilsf.setVertexCoordinates(lineCoordinates.toArray(new double[0][0]));

    Color[] pointColorsArray = new Color[lineColors.size() * 2];
    for (int i = 0; i < lineColors.size(); i++) {
      pointColorsArray[2 * i] = lineColors.get(i);
      pointColorsArray[2 * i + 1] = lineColors.get(i);
    }
    ilsf.setVertexColors(pointColorsArray);
    pointColorsArray = null;

    double[] pointSizesArray = new double[lineSizes.size() * 2];
    for (int i = 0; i < lineColors.size(); i++) {
      pointSizesArray[2 * i] = lineSizes.get(i);
      pointSizesArray[2 * i + 1] = lineSizes.get(i);
    }
    ilsf.setVertexRelativeRadii(pointSizesArray);

    ilsf.setEdgeCount(lineIndices.size() / 2);
    ilsf.setEdgeColors(lineColors.toArray(new Color[0]));

    int[] indicesArray = new int[lineIndices.size()];
    for (int i = 0; i < lineIndices.size(); ++i) indicesArray[i] = lineIndices.get(i);
    ilsf.setEdgeIndices(indicesArray);

    double[] sizesArray = new double[lineSizes.size()];
    for (int i = 0; i < lineSizes.size(); ++i) sizesArray[i] = lineSizes.get(i);
    ilsf.setEdgeRelativeRadii(sizesArray);

    int[] typesArray = new int[lineTypes.size()];
    for (int i = 0; i < lineTypes.size(); ++i) typesArray[i] = lineTypes.get(i);
    ilsf.setEdgeAttribute(Attribute.attributeForName("lineType"), new IntArray(typesArray));

    ilsf.update();
  }