@Override public void renderBorder(Track track, RenderContext context, Rectangle arect) { Rectangle adjustedRect = calculateDrawingRect(arect); // Draw boundaries if there is room if (adjustedRect.getHeight() >= 10) { /// TrackProperties pros = track.getProperties(); // midline DataRange axisDefinition = track.getDataRange(); float maxValue = axisDefinition.getMaximum(); float baseValue = axisDefinition.getBaseline(); float minValue = axisDefinition.getMinimum(); double maxX = adjustedRect.getMaxX(); double x = adjustedRect.getX(); double y = adjustedRect.getY(); if ((baseValue > minValue) && (baseValue < maxValue)) { int baseY = computeYPixelValue(adjustedRect, axisDefinition, baseValue); getBaselineGraphics(context).drawLine((int) x, baseY, (int) maxX, baseY); } PreferenceManager prefs = PreferenceManager.getInstance(); Color altColor = track.getAltColor(); Color borderColor = (prefs.getAsBoolean(PreferenceManager.CHART_COLOR_BORDERS) && altColor != null && altColor.equals(track.getColor())) ? track.getColor() : Color.lightGray; Graphics2D borderGraphics = context.getGraphic2DForColor(borderColor); // Draw the baseline -- todo, this is a wig track option? double zeroValue = axisDefinition.getBaseline(); int zeroY = computeYPixelValue(adjustedRect, axisDefinition, zeroValue); borderGraphics.drawLine(adjustedRect.x, zeroY, adjustedRect.x + adjustedRect.width, zeroY); // Optionally draw "Y" line (UCSC track line option) if (track.isDrawYLine()) { Graphics2D yLineGraphics = context.getGraphic2DForColor(Color.gray); int yLine = computeYPixelValue(adjustedRect, axisDefinition, track.getYLine()); GraphicUtils.drawDashedLine( borderGraphics, adjustedRect.x, yLine, adjustedRect.x + adjustedRect.width, yLine); } // If the chart has + and - numbers draw both borders or none. This // needs documented somewhere. boolean drawBorders = true; if (minValue * maxValue < 0) { drawBorders = prefs.getAsBoolean(PreferenceManager.CHART_DRAW_BOTTOM_BORDER) && prefs.getAsBoolean(PreferenceManager.CHART_DRAW_TOP_BORDER); } if (drawBorders && prefs.getAsBoolean(PreferenceManager.CHART_DRAW_TOP_BORDER)) { borderGraphics.drawLine( adjustedRect.x, adjustedRect.y, adjustedRect.x + adjustedRect.width, adjustedRect.y); } if (drawBorders && prefs.getAsBoolean(PreferenceManager.CHART_DRAW_BOTTOM_BORDER)) { borderGraphics.drawLine( adjustedRect.x, adjustedRect.y + adjustedRect.height, adjustedRect.x + adjustedRect.width, adjustedRect.y + adjustedRect.height); } } /* (CHART_DRAW_TOP_BORDER)); prefs.setDrawBottomBorder(getBooleanPreference(CHART_DRAW_BOTTOM_BORDER)); prefs.setColorBorders(getBooleanPreference(CHART_COLOR_BORDERS)); prefs.setDrawAxis(getBooleanPreference(CHART_DRAW_Y_AXIS)); prefs.setDrawTrackName(getBooleanPreference(CHART_DRAW_TRACK_NAME)); prefs.setColorTrackName(getBooleanPreference(CHART_COLOR_TRACK_NAME)); prefs.setAutoscale(getBooleanPreference(CHART_AUTOSCALE)); prefs.setShowDataRange(getBooleanPreference(CHART_SHOW_DATA_RANGE)); */ }