Quintiq file version 2.0 #parent: CustomDrawSCO/CustomDrawDataLayerLabels Response OnDrawObject ( Node object ) id:Response_CustomDrawSCO_CustomDrawDataLayerLabels_OnDrawObject { #keys: '[136682.0.1905115950]' CanBindMultiple: false DefinitionID: 'Responsedef_WebCustomDrawDataLayer_OnDrawObject' QuillAction { Body: [* // Draw node labels view := object.ViewBase().astype( SupplyChainView ); if ( not isnull( view ) ) { //Set font color surface.Font().Name( view.FontName() ); surface.Font().Size( view.FontSize() ) surface.Font().Bold( true ); color := Color::Color(0, 0, 0); if ( object.TextColor() <> '' ) { color := guard( Color::Color( object.TextColor() ), ColorScheme.SupplyChainOverview_NodeText() ); } surface.TextColor( color ); if ( text = '' ) { text := object.Name(); } fontheight := view.FontSize() + 3; // +3 needed to make text actually fit in fontheight /* fontheight := ceil( fontheight / CustomDrawSCO.ZoomY() )*/ // Make fontheight independent of zoom level rows := text.Tokenize( String::NewLine() ).Size(); maxlength := max( text.Tokenize( String::NewLine() ), Elements, e, e.Length() ) width := region.BoundingRect().Width(); totalwidth := width * ceil( maxlength / 2 ) ; //assume each width only fits 3 chars offset := [Number] ( ( totalwidth - width ) / 2 ); y := region.BoundingRect().Height(); if ( object.IsTextTop() ) { y := region.BoundingRect().Top() - ( rows * fontheight ); } if( object.IsNameVisible() ) { textformat := TextFormat::Construct(); textformat.AlignMiddle().AlignCenter().NoEndEllipsis(); surface.TextZoom( region.BoundingRect().Left() - offset, y , totalwidth, ( fontheight * rows ), text, textformat ) } } *] GroupServerCalls: false } }