Quintiq file version 2.0 #parent: CustomDrawComponentRoutingConfigurator/CustomDrawDataLayerOperationOutputEdgeRCV Response OnDrawObject ( PISPOperationOutputEdge object ) id:Response_CustomDrawComponentRoutingConfigurator_CustomDrawDataLayerOperationOutputEdgeRCV_OnDrawObject { #keys: '[124808.0.1235006012]' Body: [* // Draw PISP Operation output Edge rcv := DataHolderRCView.Data(); // Adjust line based on its orientations topdown := object.FromY() < object.ToY(); leftright := object.FromX() < object.ToX(); padding := 6; fromx := region.Left(); tox := region.Width(); fromy := region.Top() + padding; toy := region.Height() - padding; if( not topdown ) { tmp := fromy; fromy := toy; toy := tmp; } if( not leftright ) { tmp := fromx; fromx := tox; tox := tmp; } // Highlight operation input outputs related to this edge operationoutputs := selectset( DataHolderHighlightOperationInputOutputNode.Data(), Elements.astype( OperationOutput ), e, true, true ); highlight := object.IsLinkOf( DataHolderHighlightPISPNodeInRouting.Data() ) or object.IsLinkOf( operationoutputs ); surface.Brush().Reset(); // strange. without this line, the arrow head will not be filled. surface.Brush().Color( ColorScheme.Outline() ); // to paint the solid arrowhead surface.Pen().Color( ColorScheme.Outline() ); if( highlight ) { surface.Brush().Reset(); // strange. without this line, the arrow head will not be filled. surface.Pen().Color( Color::DarkGreen() ); surface.Brush().Color( Color::DarkGreen() ); // to paint the solid arrowhead } surface.Pen().Style( PenSpecification::StyleSolid() ); surface.Pen().Width( rcv.EdgeThickness() ); // Draw the directional line line := GraphicalLine::LineTo( fromx, fromy, tox, toy ); line.ArrowToEnd( true ).ArrowPos( GraphicalLine::ArrowPosMiddle() ); surface.Draw( line ); *] CanBindMultiple: false DefinitionID: 'Responsedef_CustomDrawDataLayer_OnDrawObject' Precondition: [* return not isnull( DataHolderRCView.Data() ); *] }