cy = getSize().height - fontmetrics.getHeight() - textVertSpacing - 4;
cy = getSize().height - fontmetrics.getHeight() - 6 - textVertSpacing;
    private synchronized void paintVertical(Graphics g)    {		g.setColor(Color.black);		g.setFont(font);		int shift=10;		int allbarwidth=(((nbvalues*(valWidth+valSpacing))+blockSpacing)*nbblocks);		int allbarheight=barsize;		int axepointx=(getSize().width-allbarwidth)/2 - 2*shift;        int axepointy = getSize().height - (2*fontmetrics.getHeight()) - textVertSpacing;		int cx=axepointx;		int cy=axepointy;		// Draw axes		Polygon polygon = new Polygon();		polygon.addPoint(cx,cy);		polygon.addPoint(cx+allbarwidth+3*shift,cy);		polygon.addPoint(cx+allbarwidth+4*shift,cy-shift);		polygon.addPoint(cx+shift,cy-shift);		g.setColor(backgraph_colorl);		g.fillPolygon(polygon);		g.setColor(Color.lightGray);		g.drawPolygon(polygon);		Polygon polygon2 = new Polygon();		polygon2.addPoint(cx,cy);		polygon2.addPoint(cx+shift,cy-shift);		polygon2.addPoint(cx+shift,cy-shift-barsize);		polygon2.addPoint(cx,cy-barsize);		g.setColor(backgraph_colorh);		g.fillPolygon(polygon2);		g.setColor(Color.lightGray);		g.drawPolygon(polygon2);		Polygon polygon3 = new Polygon();		polygon3.addPoint(cx+shift,cy-shift);		polygon3.addPoint(cx+allbarwidth+4*shift,cy-shift);		polygon3.addPoint(cx+allbarwidth+4*shift,cy-shift-barsize);		polygon3.addPoint(cx+shift,cy-shift-barsize);		g.setColor(backgraph_colorm);		g.fillPolygon(polygon3);		g.setColor(Color.lightGray);		g.drawPolygon(polygon3);		cx+=2*shift;				// Loop on each block        for (int j = 0; j < nbblocks; j++) {            // Draw the block label//			Log("Write block j="+j+" with cx="+cx);            cy = getSize().height - fontmetrics.getHeight() - textVertSpacing;            g.setColor(Color.black);			// Check if bold or highlight			int bold=0; int highlight=0; String label=blabels[j];			if (blabels[j].indexOf(":")>0) { bold=1; label=remove(blabels[j],":"); }			if (blabels[j].indexOf("!")>0) { highlight=1; label=remove(blabels[j],"!"); }			if (bold==1) { g.setFont(fontb); }			String as[] = split(label, "\247", 0);			if (highlight==1) {				g.setColor(special_color);				g.fillRect(cx-Math.max(-1+blockSpacing>>1,0),cy-fontmetrics.getHeight(),(nbvalues*(valWidth+valSpacing))+Math.max(blockSpacing-2,0)+1,((fontmetrics.getHeight()+textVertSpacing)*as.length)+2);				g.setColor(Color.black);			}            for (int i=0; i<as.length; i++) {				int cxoffset=((nbvalues*(valWidth+valSpacing))-fontmetrics.stringWidth(as[i]))>>1;	            if (cxoffset<0) { cxoffset=0; }				g.drawString(as[i], cx+cxoffset, cy);				cy+=fontmetrics.getHeight()+textVertSpacing;			}			if (bold==1) { g.setFont(font); }			// Loop on each value	        for (int i = 0; i < nbvalues; i++) {		            cy = getSize().height - fontmetrics.getHeight() - textVertSpacing - 4;	            cy -= fontmetrics.getHeight() - 4;		            // draw the shadow and bar				draw3DBar(g,cx,cy,valWidth,(values[j][i]*(float)barsize)/max[i],SHIFTBAR,colors[i]);       			cy = (int)((float)cy - (values[j][i] + 5F));	            cx += (valWidth + valSpacing);			}            cx += blockSpacing;        }    }    