Quintiq file version 2.0 #parent: CustomDrawComponentContainer/CustomDrawDataLayerLink Response OnDrawObject ( LibOpt_Link object ) id:Response_CustomDrawComponentContainer_CustomDrawDataLayerLink_OnDrawObject { #keys: '[139164.3.980131598]' Body: [* scale_x := ValueHolderScaleX.Data(); scale_y := ValueHolderScaleY.Data(); // Fix issue that it thinks the Brush is already Black, but is actually White. // This prevents me from making the Brush black (as it thinks it is already Black). surface.Brush().Color( Color::White() ); // Retrieve UI Color of Link color_string := object.TaskTransporter().UIColor(); color := null( Color, owning ); // Convert color code to Decimal, if its format is Hexadecimal if( color_string.SubString( 0, 1 ) = '#' ) { color_num := LibOpt_Utility::GetColorFromHex( color_string.SubString( 1, color_string.Length() - 1 ) ); color := Color::Color( color_num ); } else { color := Color::Color( color_string ); } // Set link color to grey, if the origin component cannot be called if( not object.GetOrigin().CanBeCalled() ) { color := Color::Color( color, 0.5 ); } surface.Pen().Color( color ); surface.Brush().Color( color ); // Retrieve UI Style of Link style_string := object.TaskTransporter().UIStyle(); style := PenSpecification::StyleNull(); // Define the PenSpecification style depending on the UI Style of the Link if( style_string = 'Solid' ) { style := PenSpecification::StyleSolid(); } else if( style_string = 'Dashed' ) { style := PenSpecification::StyleDashed(); } else if( style_string = 'Dotted' ) { style := PenSpecification::StyleDotted(); } // Set the style of the Pen based on the PenSpecification style surface.Pen().Style( style ); surface.Draw( shape ); text := text.TrimBoth(); if( text <> '' ) { scale := minvalue( scale_x, scale_y ); arrow_size := maxvalue( 3, 12 - maxvalue( 2, 2 / scale ) ); arrow_size_x := [Number] ( arrow_size * scale / 2 / scale_x ); // Get the relative X coordinate of the outgoing part x := object.First().First().X() - min( object, UIGraphArc.UIGraphArcPoint, p, p.X() - ifexpr( isnull( p.Next() ) and isnull( p.UIGraphArc().Next() ), arrow_size_x, 0 ) ); origin := object.First().Origin() width := origin.Width() / ( origin.Outgoing( relsize ) + 1 ); format := TextFormat::Construct(); format.AlignCenter(); format.AlignMiddle(); surface.Fill( [Number] ( ( x - width / 2 ) * scale_x ), 0, [Number] ( width * scale_x ), [Number] ( 12 * scale_y ), Color::White() ); surface.TextColor( color ); surface.TextFit( [Number] ( ( x - width / 2 ) * scale_x ), [Number] ( 2 * scale_y ), [Number] ( width * scale_x ), [Number] ( 10 * scale_y ), text, 1, format ); } *] CanBindMultiple: false DefinitionID: 'Responsedef_CustomDrawDataLayer_OnDrawObject' }