Quintiq file version 2.0 
 | 
#parent: CustomDrawComponentRoutingConfigurator/CustomDrawDataLayerOperation 
 | 
Response OnDrawObject ( 
 | 
  Operation object 
 | 
) id:Response_CustomDrawComponentRoutingConfigurator_CustomDrawDataLayerOperation_OnDrawObject 
 | 
{ 
 | 
  #keys: '[124808.0.1222257144]' 
 | 
  Body: 
 | 
  [* 
 | 
    // Draw operation 
 | 
    imagesize := minvalue( region.Height(), region.Width() ); 
 | 
     
 | 
    //Initialize borders 
 | 
    surface.Pen().Style( PenSpecification::StyleSolid() ); 
 | 
    surface.Pen().Width( 1 ) 
 | 
    surface.Pen().Color( ColorScheme.Outline() );   
 | 
     
 | 
    //Initialize filled colors 
 | 
    //It is safe to use color scheme as the routing config is not user / scenario specific 
 | 
    colorstart := ColorScheme.RoutingConfigurator_Operation1(); 
 | 
    colorend := ColorScheme.RoutingConfigurator_Operation2(); 
 | 
     
 | 
    // Set color to black if operation is being disabled 
 | 
    if( not object.IsEnabled() ) 
 | 
    { 
 | 
      colorstart := ColorScheme.RoutingConfiguratorDisabled(); 
 | 
      colorend := ColorScheme.RoutingConfiguratorDisabled(); 
 | 
    } 
 | 
     
 | 
    surface.Brush().LinearGradient( region, colorstart, colorend, 0.0 ); 
 | 
    surface.Fill( region ); 
 | 
     
 | 
    surface.Image( region.Left(), region.Top(), imagesize, imagesize, object.Unit().IconName()  + '(32)'  ); 
 | 
    surface.Rect( region.Left(), region.Top(), region.Width(), region.Height(), Color::Black() );                                 
 | 
     
 | 
     
 | 
    //Draw text 
 | 
    rcv := DataHolderRCView.Data(); 
 | 
    surface.Font().Name( rcv.FontName() ); 
 | 
    surface.Font().Size( rcv.FontSize() ); 
 | 
    surface.TextColor( Color::Black() ); 
 | 
     
 | 
    textformat := TextFormat::Construct( TextFormat::AlignCenter(), TextFormat::AlignMiddle() ); 
 | 
    surface.Text( imagesize, 0, region.Width() - imagesize , region.Height(), text, textformat ); // Add offset for images 
 | 
     
 | 
     
 | 
    //draw input output drop here! 
 | 
    //guide to be drawn below the operation 
 | 
    routing := guard( object.RoutingStep().Routing(), null( Routing ) );                                            
 | 
     
 | 
    if( not isnull( routing ) and not routing.HasInputOrOutput() ) 
 | 
    { 
 | 
      surface.Pen().Style( PenSpecification::StyleDotted() ); 
 | 
      surface.Pen().Width( rcv.EdgeThickness() ) 
 | 
      surface.Pen().Color( ColorScheme.RoutingConfigurator_DropHereHelp() );   
 | 
      surface.Brush().Color( ColorScheme.RoutingConfigurator_DropHereHelp() ); // to paint the solid arrowhead 
 | 
       
 | 
      surface.TextColor( ColorScheme.RoutingConfigurator_DropHereHelp() ); 
 | 
     
 | 
      lblx := region.Left(); 
 | 
      lbly := region.Height() + 20; 
 | 
       
 | 
      midh := [Number]( region.Height() / 2 ); 
 | 
      midw := [Number]( region.Width() / 2 ); 
 | 
     
 | 
      line := GraphicalLine::LineTo( midw, lbly, midw, midh ); 
 | 
      line.ArrowToEnd( true ).ArrowPos( GraphicalLine::ArrowPosEnd() ); 
 | 
      surface.Draw( line ); 
 | 
       
 | 
      surface.Text( lblx, lbly, Translations::MP_Routing_DropHereIO() );  
 | 
    } 
 | 
  *] 
 | 
  CanBindMultiple: false 
 | 
  DefinitionID: 'Responsedef_CustomDrawDataLayer_OnDrawObject' 
 | 
  Precondition: 
 | 
  [* 
 | 
    return not isnull( DataHolderRCView.Data() ); 
 | 
  *] 
 | 
} 
 |