protected void onRender(GraphicsHelper gh) {
		Rectangle r = new Rectangle(xOnView(pos.x),yOnView(pos.y),s,s);
		
		gh.drawRectangleGradient(r,cBgTop.multiply(color),cBgTop.multiply(color),cBgBottom.multiply(color),cBgBottom.multiply(color));
		gh.g().setColor(cBorder.multiply(color));
		gh.g().draw(r);
		
		float mult = pressed ? cMultPress : (over ? cMultOver : 0f);
		
		if (mult != 0f) {
			gh.setBlendMode(mult > 0 ? BM_ADD : BM_SUBTRACT);
			mult = Math.abs(mult);
			gh.g().setColor(Colors.merge(Color.black,Color.white,mult).multiply(color));
			gh.g().fill(r);
			gh.setPreviousBlendMode();
		}
		
		if (isSet) {
			r = new Rectangle(xOnView(pos.x)+(s/4f),yOnView(pos.y)+(s/4f),s/2f,s/2f);
			gh.drawRectangleGradient(r,cSetTop.multiply(color),cSetTop.multiply(color),cSetBottom.multiply(color),cSetBottom.multiply(color));
			gh.g().setColor(cBorder.multiply(color));
			gh.g().draw(r);
		}
		
		gh.g().setFont(font);
		gh.g().setColor(cText.multiply(color));
		Fonts.setFontAlign(Fonts.MiddleLeft);
		Fonts.drawString(gh,caption,xOnView(pos.x)+s+4,yOnView(pos.y)+s/2f);
		Fonts.resetFontAlign();
	}