@@ -40,6 +40,8 @@ var ARROWTYPE = Diagram.ARROWTYPE;
4040
4141var ALIGN_LEFT = 0 ;
4242var ALIGN_CENTER = 1 ;
43+ var ALIGN_HORIZONTAL_CENTER = 2 ;
44+ var ALIGN_VERTICAL_CENTER = 3 ;
4345
4446function AssertException ( message ) { this . message = message ; }
4547AssertException . prototype . toString = function ( ) {
@@ -378,38 +380,44 @@ _.extend(BaseTheme.prototype, {
378380 } ,
379381
380382 drawSelfSignal : function ( signal , offsetY ) {
381- assert ( signal . isSelf ( ) , 'signal must be a self signal' ) ;
383+ assert ( signal . isSelf ( ) , 'signal must be a self signal' ) ;
382384
383- var textBB = signal . textBB ;
384- var aX = getCenterX ( signal . actorA ) ;
385+ var textBB = signal . textBB ;
386+ var aX = getCenterX ( signal . actorA ) ;
385387
386- var x = aX + SELF_SIGNAL_WIDTH + SIGNAL_PADDING ;
387- var y = offsetY + SIGNAL_PADDING + signal . height / 2 + textBB . y ;
388+ var y1 = offsetY + SIGNAL_MARGIN + SIGNAL_PADDING ;
389+ var y2 = y1 + signal . height - 2 * SIGNAL_MARGIN - SIGNAL_PADDING ;
388390
389- this . drawText ( x , y , signal . message , this . font_ , ALIGN_LEFT ) ;
391+ // Draw three lines, the last one with a arrow
392+ this . drawLine ( aX , y1 , aX + SELF_SIGNAL_WIDTH , y1 , signal . linetype ) ;
393+ this . drawLine ( aX + SELF_SIGNAL_WIDTH , y1 , aX + SELF_SIGNAL_WIDTH , y2 , signal . linetype ) ;
394+ this . drawLine ( aX + SELF_SIGNAL_WIDTH , y2 , aX , y2 , signal . linetype , signal . arrowtype ) ;
390395
391- var y1 = offsetY + SIGNAL_MARGIN + SIGNAL_PADDING ;
392- var y2 = y1 + signal . height - 2 * SIGNAL_MARGIN - SIGNAL_PADDING ;
396+ // Draw text
397+ var x = aX + SELF_SIGNAL_WIDTH + SIGNAL_PADDING ;
398+ var arrowHeight = ( y2 - y1 ) ;
399+ var emptyVerticalSpace = arrowHeight - textBB . height ;
400+ var topPadding = emptyVerticalSpace / 2 ;
401+ var y = y1 + topPadding ;
393402
394- // Draw three lines, the last one with a arrow
395- this . drawLine ( aX , y1 , aX + SELF_SIGNAL_WIDTH , y1 , signal . linetype ) ;
396- this . drawLine ( aX + SELF_SIGNAL_WIDTH , y1 , aX + SELF_SIGNAL_WIDTH , y2 , signal . linetype ) ;
397- this . drawLine ( aX + SELF_SIGNAL_WIDTH , y2 , aX , y2 , signal . linetype , signal . arrowtype ) ;
398- } ,
403+ this . drawText ( x , y , signal . message , this . font_ , ALIGN_LEFT ) ;
404+ } ,
399405
400406 drawSignal : function ( signal , offsetY ) {
401407 var aX = getCenterX ( signal . actorA ) ;
402408 var bX = getCenterX ( signal . actorB ) ;
403409
404410 // Mid point between actors
405411 var x = ( bX - aX ) / 2 + aX ;
406- var y = offsetY + SIGNAL_MARGIN + 2 * SIGNAL_PADDING ;
412+ var y = offsetY + SIGNAL_MARGIN + SIGNAL_PADDING ;
407413
408414 // Draw the text in the middle of the signal
409- this . drawText ( x , y , signal . message , this . font_ , ALIGN_CENTER ) ;
415+ this . drawText ( x , y , signal . message , this . font_ , ALIGN_HORIZONTAL_CENTER ) ;
410416
411417 // Draw the line along the bottom of the signal
412- y = offsetY + signal . height - SIGNAL_MARGIN - SIGNAL_PADDING ;
418+ // Padding above, between message and line
419+ // Margin below the line, between line and next signal
420+ y = offsetY + signal . height - SIGNAL_PADDING ;
413421 this . drawLine ( aX , y , bX , y , signal . linetype , signal . arrowtype ) ;
414422 } ,
415423
0 commit comments