コード例 #1
0
ファイル: XYPlotRenderer.java プロジェクト: cosfish/igv
  @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));
     */
  }