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