root/components/umlSequenceDiagram/UmlSequenceDiagramPrinterToHtml.class.php
| 170 | 177 | ||
|---|---|---|---|
272 | return "*/" . $this->getTemplate( "style.css" , $arrReplace ) . "/*"; | 272 | return "*/" . $this->getTemplate( "style.css" , $arrReplace ) . "/*"; |
273 | } | 273 | } |
274 | 274 | ||
275 | protected function makeBase64File( $strFile , $strMime ) | ||
276 | { | ||
277 | $strContent = file_get_contents( $strFile ); | ||
278 | $strBase64 = base64_encode( $strContent ); | ||
279 | return ('data:' . $strMime . ';base64,' . $strBase64 ); | ||
280 | |||
281 | } | ||
282 | |||
275 | protected function getActor( UmlSequenceDiagramActor $objActor ) | 283 | protected function getActor( UmlSequenceDiagramActor $objActor ) |
276 | { | 284 | { |
277 | $objStereotype = $objActor->getStereotype(); | 285 | $objStereotype = $objActor->getStereotype(); |
... | ... | ||
279 | if( $objStereotype->getDefault() ) | 287 | if( $objStereotype->getDefault() ) |
280 | { | 288 | { |
281 | $strImage = '<img alt="' . $objActor->getStereotype()->getName() . '" src="' . $this->getConfiguration()->getPublicFolderPath() . 'images/' . $objStereotype->getName() . '.gif"/>'; | 289 | $strImage = '<img alt="' . $objActor->getStereotype()->getName() . '" src="' . $this->getConfiguration()->getPublicFolderPath() . 'images/' . $objStereotype->getName() . '.gif"/>'; |
290 | //$strImage = '<img alt="' . $objActor->getStereotype()->getName() . '" src="' . $this->makeBase64File( $this->getConfiguration()->getPublicPath() . 'images/' . $objStereotype->getName() . '.gif' , "image/gif" ) . '"/>'; | ||
282 | } | 291 | } |
283 | else | 292 | else |
284 | { | 293 | { |
... | ... | ||
321 | */ | 330 | */ |
322 | protected function getMessage( UmlSequenceDiagramMessage $objMessage ) | 331 | protected function getMessage( UmlSequenceDiagramMessage $objMessage ) |
323 | { | 332 | { |
333 | $strResult = ''; | ||
334 | $strNotesBefore = ''; | ||
335 | |||
336 | $arrNotes = $objMessage->getNotesBefore(); | ||
337 | foreach( $arrNotes as $objNote ) | ||
338 | { | ||
339 | $strNotesBefore .= $this->getNote( $objNote , false ); | ||
340 | } | ||
341 | $arrNotes = $objMessage->getNotesAfter(); | ||
342 | foreach( $arrNotes as $objNote ) | ||
343 | { | ||
344 | $strNotesBefore .= $this->getNote( $objNote , true ); | ||
345 | } | ||
346 | |||
324 | if( $objMessage->isReverse() ) | 347 | if( $objMessage->isReverse() ) |
325 | { | 348 | { |
326 | $intStart = $objMessage->getActorTo()->getPosition(); | 349 | $intStart = $objMessage->getActorTo()->getPosition(); |
... | ... | ||
351 | $arrReplace[ "codetodiagram:message_dif" ] = "dif" . ( $intStart - $intEnd ); | 374 | $arrReplace[ "codetodiagram:message_dif" ] = "dif" . ( $intStart - $intEnd ); |
352 | $arrReplace[ "<codetodiagram:message_values/>" ] = $this->getValues( $objMessage ); | 375 | $arrReplace[ "<codetodiagram:message_values/>" ] = $this->getValues( $objMessage ); |
353 | 376 | ||
354 | $strResult = ''; | ||
355 | |||
356 | while( $objActorActual = array_shift( $arrActors ) ) | 377 | while( $objActorActual = array_shift( $arrActors ) ) |
357 | { | 378 | { |
358 | $intNextPosition = $objActorActual->getPosition() + 1; | 379 | $intNextPosition = $objActorActual->getPosition() + 1; |
... | ... | ||
410 | 431 | ||
411 | 432 | ||
412 | 433 | ||
413 | return $this->getTemplate( "messages.html" , $arrReplace ); | 434 | $strMessages = $this->getTemplate( "messages.html" , $arrReplace ); |
435 | $strMessages = $strNotesBefore . $strMessages; | ||
436 | return $strMessages; | ||
414 | } | 437 | } |
415 | 438 | ||
439 | protected function getNote( UmlSequenceDiagramNote $objNote , $booAfter = true ) | ||
440 | { | ||
441 | $arrActors = $objNote->getActor()->getUmlSequenceDiagram()->getActors(); | ||
442 | $intPosition = $objNote->getActor()->getPosition(); | ||
443 | $strResult = ""; | ||
444 | |||
445 | foreach( $arrActors as $objActor ) | ||
446 | { | ||
447 | $arrReplace = array(); | ||
448 | |||
449 | $strFinal = ( $objActor->getPosition() == sizeof( $arrActors ) ) ? "final" : "regular"; | ||
450 | |||
451 | $arrReplace[ "codetodiagram:message_final" ] = $strFinal; | ||
452 | $arrReplace[ "codetodiagram:actoractual_name" ] = $objActor->getName(); | ||
453 | $arrReplace[ "codetodiagram:message_dif" ] = 0; | ||
454 | $arrReplace[ "codetodiagram:message_values" ] = ""; | ||
455 | |||
456 | /** | ||
457 | * @var $objActor UmlSequenceDiagramActor | ||
458 | */ | ||
459 | |||
460 | if( $objActor->getPosition() < $intPosition ) | ||
461 | { | ||
462 | $strResult .= $this->getTemplate( "line_before.html" , $arrReplace ); | ||
463 | } | ||
464 | elseif( $objActor->getPosition() == $intPosition ) | ||
465 | { | ||
466 | $arrReplace[ "<codetodiagram:message_text/>" ] = $objNote->getContent(); | ||
467 | $strResult .= $this->getTemplate( "line_note.html" , $arrReplace ); | ||
468 | } | ||
469 | elseif( $objActor->getPosition() > $intPosition ) | ||
470 | { | ||
471 | // after line // | ||
472 | $strResult .= $this->getTemplate( "line_after.html" , $arrReplace ); | ||
473 | } | ||
474 | else | ||
475 | { | ||
476 | $strMessage = ''; | ||
477 | $strMessage .= ' Invalid Position ' . "\n" ; | ||
478 | $strMessage .= ' Actual Actor ' . $objActorActual->getPosition() ; | ||
479 | $strMessage .= ' Message Start ' . $intStart ; | ||
480 | $strMessage .= ' Message End' . $intEnd ; | ||
481 | throw new Exception( $strMessage ); | ||
482 | } | ||
483 | } | ||
484 | |||
485 | $arrReplace = array(); | ||
486 | $arrReplace[ '<codetodiagram:message_collection/>' ] = $strResult; | ||
487 | $arrReplace[ '<codetodiagram:message_title/>' ] = $objNote->getContent(); | ||
488 | $arrReplace[ 'codetodiagram:message_click' ] = ""; | ||
489 | |||
490 | //return $strResult; | ||
491 | $strReturn = $this->getTemplate( "messages.html" , $arrReplace ); | ||
492 | // CorujaDebug::debug( $strReturn , 1 ); | ||
493 | return $strReturn; | ||
494 | } | ||
495 | |||
416 | /** | 496 | /** |
417 | * Create and return the string of the messages into the html sequence | 497 | * Create and return the string of the messages into the html sequence |
418 | * diagram | 498 | * diagram |
Download diff