/** * @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); }); } }
/** * @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; }
/** * @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); } }