code: function pongIOrenderDisplay( divId, ctx, def, dta ) {
  	log( "pong-io", "pongIOrenderDisplay '"+def.id+"': "+JSON.stringify(dta) );
  	var x = parseInt( def.pos.x );
  	var y = parseInt( def.pos.y );
  	var w = parseInt( def.width )*10;
  	log( "pong-io", x+"/"+y+"/"+w );
  	ctx.beginPath();
  	ctx.lineWidth   = "2";
  	ctx.strokeStyle = "#00A";
  	ctx.fillStyle   = "#DDD";
  	if ( def.lineCol ) { ctx.strokeStyle = def.lineCol; }
  	if ( def.fillCol ) { ctx.fillStyle   = def.fillCol; }
  	ctx.rect( x, y, w, 20 );
  	ctx.stroke();
  	ctx.fill();  		
  	if ( dta  && dta.value  ) {
  		var opt = new Object();
  		opt.fillStyle   = "#040";
  		opt.strokeStyle = "#0F0";
  		ctx.textAlign = "end"; 
  		ctx.textBaseline = "bottom"; 
  		var xx = x + w - 4;
  		var yy = y + 17;
  		log( "pong-io", "ctx.fillText( "+dta.value+","+ xx+","+yy+" );" );
  //		ctx.fillText( dta.value, xx, yy );
  		textOut( divId, def, ctx, dta.value, xx, yy, opt );
  	}	
  	log( "pong-io", "pongIOrenderDisplay end.");
  }
docs: ---------------------------------------------------------------------------------------