@@ -40,6 +40,8 @@ var ARROWTYPE = Diagram.ARROWTYPE;
40
40
41
41
var ALIGN_LEFT = 0 ;
42
42
var ALIGN_CENTER = 1 ;
43
+ var ALIGN_HORIZONTAL_CENTER = 2 ;
44
+ var ALIGN_VERTICAL_CENTER = 3 ;
43
45
44
46
function AssertException ( message ) { this . message = message ; }
45
47
AssertException . prototype . toString = function ( ) {
@@ -378,38 +380,44 @@ _.extend(BaseTheme.prototype, {
378
380
} ,
379
381
380
382
drawSelfSignal : function ( signal , offsetY ) {
381
- assert ( signal . isSelf ( ) , 'signal must be a self signal' ) ;
383
+ assert ( signal . isSelf ( ) , 'signal must be a self signal' ) ;
382
384
383
- var textBB = signal . textBB ;
384
- var aX = getCenterX ( signal . actorA ) ;
385
+ var textBB = signal . textBB ;
386
+ var aX = getCenterX ( signal . actorA ) ;
385
387
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 ;
388
390
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 ) ;
390
395
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 ;
393
402
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
+ } ,
399
405
400
406
drawSignal : function ( signal , offsetY ) {
401
407
var aX = getCenterX ( signal . actorA ) ;
402
408
var bX = getCenterX ( signal . actorB ) ;
403
409
404
410
// Mid point between actors
405
411
var x = ( bX - aX ) / 2 + aX ;
406
- var y = offsetY + SIGNAL_MARGIN + 2 * SIGNAL_PADDING ;
412
+ var y = offsetY + SIGNAL_MARGIN + SIGNAL_PADDING ;
407
413
408
414
// 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 ) ;
410
416
411
417
// 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 ;
413
421
this . drawLine ( aX , y , bX , y , signal . linetype , signal . arrowtype ) ;
414
422
} ,
415
423
0 commit comments