Esempio n. 1
0
 /**
  * @param Image $image
  * @param NodeInfo $node
  */
 protected function writeContent(Image $image, NodeInfo $node)
 {
     $content = $node->content();
     $rect = $node->rectangle();
     foreach ($content->content() as $line) {
         $image->text($line[0], $rect->left + $line[1], $rect->top + $line[2], function (AbstractFont $font) use($line) {
             $font->color($line[4]);
             $font->size($line[3]);
             $font->align($line[5]);
             $font->valign($line[6]);
             $font->file(static::$fontPath);
         });
     }
 }
Esempio n. 2
0
 /**
  * @param array $nodes
  * @param Rectangle $parent
  * @param int $level
  * @return NodeInfo[]
  */
 protected function format(array $nodes, Rectangle $parent, $level = 0)
 {
     $childAttr = $this->treemap->childrenAttribute;
     $result = [];
     foreach ($nodes as $id => $node) {
         $data = $node;
         unset($data['_rectangle'], $data[$childAttr]);
         $isLeaf = !isset($node[$childAttr]) || empty($node[$childAttr]);
         $rectangle = $node['_rectangle']->shift($parent->left, $parent->top);
         $info = new NodeInfo($data, $id, $level, $isLeaf);
         $info->rectangle($rectangle);
         $info->background('#dddddd');
         $result[] = $info;
         if (!$isLeaf) {
             $result = array_merge($result, $this->format($node[$childAttr], $rectangle, $level + 1));
         }
     }
     return $result;
 }
Esempio n. 3
0
 /**
  * @param NodeInfo $node
  * @param string $mapId
  */
 public function nodeRenderrer(NodeInfo $node, $mapId)
 {
     if ($node->isLeaf()) {
         $data = $node->data();
         $node->content()->html("<span style='line-height:{$node->rectangle()->height}px'>{$data[$this->nameAttribute]}</span>");
     } elseif ($node->level() == 0) {
         $node->visible(true);
         $data = $node->data();
         $node->content()->html("<a title='" . htmlspecialchars($data[$this->nameAttribute]) . "' href='#{$mapId}-{$node->id()}'>{$data[$this->nameAttribute]}</a>");
         $node->background('transparent');
     } else {
         $node->visible(false);
     }
 }