/** * Actually perform the ruler drawing. * * @param drawingTools {@link DrawingTools} used to perform the ruler drawing. */ private synchronized void draw(DrawingTools drawingTools) { BuffersManager bufferManager = drawingTools.getCanvas().getBuffersManager(); ElementsBuffer vertices = bufferManager.createElementsBuffer(); fillVertices(vertices, rulerModel, ticksValue, subTicksValue, canvasProjection); DefaultGeometry geometry = new DefaultGeometry(); geometry.setFillDrawingMode(Geometry.FillDrawingMode.NONE); geometry.setLineDrawingMode(Geometry.LineDrawingMode.SEGMENTS); geometry.setVertices(vertices); Appearance appearance = new Appearance(); appearance.setLineColor(rulerModel.getColor()); appearance.setLineWidth((float) rulerModel.getLineWidth()); drawingTools.getTransformationManager().useWindowCoordinate(); try { for (PositionedSprite positionedSprite : spritesList) { drawingTools.draw( positionedSprite.getSprite(), AnchorPosition.CENTER, positionedSprite.getWindowPosition()); } drawingTools.draw(geometry, appearance); } catch (SciRendererException ignored) { } drawingTools.getTransformationManager().useSceneCoordinate(); bufferManager.dispose(vertices); }