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); } }
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); } }