Esempio n. 1
0
  public void draw(GlowTransform t, int highlight, int hot, Object node, Object colornode) {
    if (cmn.nodraw != 0) return;

    int idx;
    int drawtype;
    double rotation;
    int grad = gradient;
    if (gradient == Glow.eGradient_No
        && (node != null && ((GrowNode) node).gradient != Glow.eGradient_No)
        && disable_gradient == 0) grad = ((GrowNode) node).gradient;

    int bar_border_idx =
        (int) (cmn.mw.zoom_factor_y / cmn.mw.base_zoom_factor * bar_borderwidth - 1);
    bar_border_idx = Math.min(Glow.DRAW_TYPE_SIZE - 1, Math.max(0, bar_border_idx));

    if (node != null && ((GrowNode) node).line_width != 0)
      idx =
          (int) (cmn.mw.zoom_factor_y / cmn.mw.base_zoom_factor * ((GrowNode) node).line_width - 1);
    else idx = (int) (cmn.mw.zoom_factor_y / cmn.mw.base_zoom_factor * line_width - 1);
    idx += hot;

    idx = Math.max(0, idx);
    idx = Math.min(idx, Glow.DRAW_TYPE_SIZE - 1);
    int x1, y1, x2, y2, ll_x, ll_y, ur_x, ur_y;

    if (t == null) {
      x1 = (int) (trf.x(ll.x, ll.y) * cmn.mw.zoom_factor_x) - cmn.mw.offset_x;
      y1 = (int) (trf.y(ll.x, ll.y) * cmn.mw.zoom_factor_y) - cmn.mw.offset_y;
      x2 = (int) (trf.x(ur.x, ur.y) * cmn.mw.zoom_factor_x) - cmn.mw.offset_x;
      y2 = (int) (trf.y(ur.x, ur.y) * cmn.mw.zoom_factor_y) - cmn.mw.offset_y;
    } else {
      x1 = (int) (trf.x(t, ll.x, ll.y) * cmn.mw.zoom_factor_x) - cmn.mw.offset_x;
      y1 = (int) (trf.y(t, ll.x, ll.y) * cmn.mw.zoom_factor_y) - cmn.mw.offset_y;
      x2 = (int) (trf.x(t, ur.x, ur.y) * cmn.mw.zoom_factor_x) - cmn.mw.offset_x;
      y2 = (int) (trf.y(t, ur.x, ur.y) * cmn.mw.zoom_factor_y) - cmn.mw.offset_y;
    }

    ll_x = Math.min(x1, x2);
    ur_x = Math.max(x1, x2);
    ll_y = Math.min(y1, y2);
    ur_y = Math.max(y1, y2);
    if (fill != 0) {
      drawtype =
          GlowColor.get_drawtype(
              fill_drawtype, Glow.eDrawType_FillHighlight, highlight, colornode, 1, 0);

      if (grad == Glow.eGradient_No)
        cmn.gdraw.fill_rect(ll_x, ll_y, ur_x - ll_x, ur_y - ll_y, drawtype);
      else {
        int f1, f2;

        if (t != null) rotation = trf.rot(t);
        else rotation = trf.rot();
        if (gradient_contrast >= 0) {
          f2 = GlowColor.shift_drawtype(drawtype, -gradient_contrast / 2, null);
          f1 =
              GlowColor.shift_drawtype(
                  drawtype, (int) ((float) (gradient_contrast) / 2 + 0.6), null);
        } else {
          f2 =
              GlowColor.shift_drawtype(
                  drawtype, -(int) ((float) (gradient_contrast) / 2 - 0.6), null);
          f1 = GlowColor.shift_drawtype(drawtype, gradient_contrast / 2, null);
        }
        cmn.gdraw.gradient_fill_rect(
            ll_x,
            ll_y,
            ur_x - ll_x,
            ur_y - ll_y,
            drawtype,
            f1,
            f2,
            cmn.gdraw.gradient_rotate(rotation, grad));
      }
    }
    drawtype =
        GlowColor.get_drawtype(
            draw_type, Glow.eDrawType_LineHighlight, highlight, (GrowNode) colornode, 0, 0);

    if (max_value != min_value) {
      int x0, y0, width, height, l_x0, l_y0, l_x1, l_y1;

      if (t != null) rotation = (trf.rot(t) / 360 - Math.floor(trf.rot(t) / 360)) * 360;
      else rotation = (trf.rot() / 360 - Math.floor(trf.rot() / 360)) * 360;
      if (45 >= rotation || rotation > 315) {
        height = (int) ((bar_value - min_value) / (max_value - min_value) * (ur_y - ll_y));
        height = Math.max(0, Math.min(height, ur_y - ll_y));
        width = ur_x - ll_x;
        x0 = ll_x;
        y0 = ur_y - height;
        l_x0 = ll_x;
        l_y0 = ur_y - height;
        l_x1 = ur_x;
        l_y1 = ur_y - height;
      } else if (45 < rotation && rotation <= 135) {
        width = (int) ((bar_value - min_value) / (max_value - min_value) * (ur_x - ll_x));
        width = Math.max(0, Math.min(width, ur_x - ll_x));
        height = ur_y - ll_y;
        x0 = ll_x;
        y0 = ll_y;
        l_x0 = ll_x + width;
        l_y0 = ll_y;
        l_x1 = ll_x + width;
        l_y1 = ur_y;
      } else if (135 < rotation && rotation <= 225) {
        height = (int) ((bar_value - min_value) / (max_value - min_value) * (ur_y - ll_y));
        height = Math.max(0, Math.min(height, ur_y - ll_y));
        width = ur_x - ll_x;
        x0 = ll_x;
        y0 = ll_y;
        l_x0 = ll_x;
        l_y0 = ll_y + height;
        l_x1 = ur_x;
        l_y1 = ll_y + height;
      } else { // if ( 225 < rotation && rotation <= 315)
        width = (int) ((bar_value - min_value) / (max_value - min_value) * (ur_x - ll_x));
        width = Math.max(0, Math.min(width, ur_x - ll_x));
        height = ur_y - ll_y;
        x0 = ur_x - width;
        y0 = ll_y;
        l_x0 = ur_x - width;
        l_y0 = ll_y;
        l_x1 = ur_x - width;
        l_y1 = ur_y;
      }

      int dt = drawtype;
      if (bar_drawtype != Glow.eDrawType_Inherit) dt = bar_drawtype;

      if (grad == Glow.eGradient_No) cmn.gdraw.fill_rect(x0, y0, width, height, dt);
      else {
        int f1, f2;

        if (t != null) rotation = trf.rot(t);
        else rotation = trf.rot();
        if (gradient_contrast >= 0) {
          f2 = GlowColor.shift_drawtype(dt, -gradient_contrast / 2, null);
          f1 = GlowColor.shift_drawtype(dt, (int) ((float) (gradient_contrast) / 2 + 0.6), null);
        } else {
          f2 = GlowColor.shift_drawtype(dt, -(int) ((float) (gradient_contrast) / 2 - 0.6), null);
          f1 = GlowColor.shift_drawtype(dt, gradient_contrast / 2, null);
        }
        cmn.gdraw.gradient_fill_rect(
            x0, y0, width, height, dt, f1, f2, cmn.gdraw.gradient_rotate(rotation, grad));
      }

      dt = drawtype;
      if (bar_bordercolor != Glow.eDrawType_Inherit) dt = bar_bordercolor;
      cmn.gdraw.line(l_x0, l_y0, l_x1, l_y1, dt, bar_border_idx, 0);
    }

    if (border != 0) {
      cmn.gdraw.rect(ll_x, ll_y, ur_x - ll_x, ur_y - ll_y, drawtype, idx, 0);
    }
  }
Esempio n. 2
0
  public void draw_shadow(int border, int shadow, int highlight, int hot) {
    if (cmn.nodraw != 0) return;

    int ll_x, ll_y, ur_x, ur_y;
    ll_x = (int) (ll.x * cmn.mw.zoom_factor_x + 0.5) - cmn.mw.offset_x;
    ll_y = (int) (ll.y * cmn.mw.zoom_factor_y + 0.5) - cmn.mw.offset_y;
    ur_x = (int) (ur.x * cmn.mw.zoom_factor_x + 0.5) - cmn.mw.offset_x;
    ur_y = (int) (ur.y * cmn.mw.zoom_factor_y + 0.5) - cmn.mw.offset_y;
    int idx = (int) (cmn.mw.zoom_factor_y / cmn.mw.base_zoom_factor * line_width - 1);
    idx += hot;
    idx = Math.max(0, idx);
    idx = Math.min(idx, Glow.DRAW_TYPE_SIZE - 1);
    int ish = 1;
    int offs = border;

    if (shadow != 0 && idx > 2) {
      if (angle1 == 0) {
        cmn.gdraw.arc(
            ll_x + idx / 2 - idx + offs,
            ll_y + idx / 2 - idx + offs,
            ur_x - ll_x + idx - offs * 2,
            ur_y - ll_y + idx - offs * 2,
            angle1 + 45,
            angle2 - 45,
            GlowColor.shift_drawtype(draw_type, -2, null),
            ish - 1,
            highlight);
        cmn.gdraw.arc(
            ll_x + idx / 2 - idx + offs,
            ll_y + idx / 2 - idx + offs,
            ur_x - ll_x + idx - offs * 2,
            ur_y - ll_y + idx - offs * 2,
            angle1,
            angle2 - 45,
            GlowColor.shift_drawtype(draw_type, 2, null),
            ish - 1,
            highlight);
        cmn.gdraw.arc(
            ll_x + idx / 2 - offs,
            ll_y + idx / 2 - offs,
            Math.max(0, ur_x - ll_x - idx + offs * 2),
            Math.max(0, ur_y - ll_y - idx + offs * 2),
            angle1 + 45,
            angle2 - 45,
            GlowColor.shift_drawtype(draw_type, 2, null),
            ish - 1,
            highlight);
        cmn.gdraw.arc(
            ll_x + idx / 2 - offs,
            ll_y + idx / 2 - offs,
            Math.max(0, ur_x - ll_x - idx + offs * 2),
            Math.max(0, ur_y - ll_y - idx + offs * 2),
            angle1,
            angle2 - 45,
            GlowColor.shift_drawtype(draw_type, -2, null),
            ish - 1,
            highlight);
      } else if (angle1 == 90) {
        cmn.gdraw.arc(
            ll_x + idx / 2 - idx + offs,
            ll_y + idx / 2 - idx + offs,
            ur_x - ll_x + idx - offs * 2,
            ur_y - ll_y + idx - offs * 2,
            angle1,
            angle2,
            GlowColor.shift_drawtype(draw_type, -2, null),
            ish - 1,
            highlight);
        cmn.gdraw.arc(
            ll_x + idx / 2 - offs,
            ll_y + idx / 2 - offs,
            Math.max(0, ur_x - ll_x - idx + offs * 2),
            Math.max(0, ur_y - ll_y - idx + offs * 2),
            angle1,
            angle2,
            GlowColor.shift_drawtype(draw_type, 2, null),
            ish - 1,
            highlight);
      } else if (angle1 == 180) {
        cmn.gdraw.arc(
            ll_x + idx / 2 - idx + offs,
            ll_y + idx / 2 - idx + offs,
            ur_x - ll_x + idx - offs * 2,
            ur_y - ll_y + idx - offs * 2,
            angle1 + 45,
            angle2 - 45,
            GlowColor.shift_drawtype(draw_type, 2, null),
            ish - 1,
            highlight);
        cmn.gdraw.arc(
            ll_x + idx / 2 - idx + offs,
            ll_y + idx / 2 - idx + offs,
            ur_x - ll_x + idx - offs * 2,
            ur_y - ll_y + idx - offs * 2,
            angle1,
            angle2 - 45,
            GlowColor.shift_drawtype(draw_type, -2, null),
            ish - 1,
            highlight);
        cmn.gdraw.arc(
            ll_x + idx / 2 - offs,
            ll_y + idx / 2 - offs,
            Math.max(0, ur_x - ll_x - idx + offs * 2),
            Math.max(0, ur_y - ll_y - idx + offs * 2),
            angle1 + 45,
            angle2 - 45,
            GlowColor.shift_drawtype(draw_type, -2, null),
            ish - 1,
            highlight);
        cmn.gdraw.arc(
            ll_x + idx / 2 - offs,
            ll_y + idx / 2 - offs,
            Math.max(0, ur_x - ll_x - idx + offs * 2),
            Math.max(0, ur_y - ll_y - idx + offs * 2),
            angle1,
            angle2 - 45,
            GlowColor.shift_drawtype(draw_type, 2, null),
            ish - 1,
            highlight);
      } else if (angle1 == 270) {
        cmn.gdraw.arc(
            ll_x + idx / 2 - idx + offs,
            ll_y + idx / 2 - idx + offs,
            ur_x - ll_x + idx - offs * 2,
            ur_y - ll_y + idx - offs * 2,
            angle1,
            angle2,
            GlowColor.shift_drawtype(draw_type, 2, null),
            ish - 1,
            highlight);
        cmn.gdraw.arc(
            ll_x + idx / 2 - offs,
            ll_y + idx / 2 - offs,
            Math.max(0, ur_x - ll_x - idx + offs * 2),
            Math.max(0, ur_y - ll_y - idx + offs * 2),
            angle1,
            angle2,
            GlowColor.shift_drawtype(draw_type, -2, null),
            ish - 1,
            highlight);
      }
    }
    if (border != 0) {
      cmn.gdraw.arc(
          ll_x + idx / 2 - idx,
          ll_y + idx / 2 - idx,
          ur_x - ll_x + idx,
          ur_y - ll_y + idx,
          angle1,
          angle2,
          Glow.eDrawType_Line,
          0,
          highlight);
      if (idx > 0)
        cmn.gdraw.arc(
            ll_x + idx / 2,
            ll_y + idx / 2,
            Math.max(0, ur_x - ll_x - idx),
            Math.max(0, ur_y - ll_y - idx),
            angle1,
            angle2,
            Glow.eDrawType_Line,
            0,
            highlight);
    }
  }