/** * Override <mxObjectCodec.decode>. */ function decode($dec, $node, $into = null) { $id = $node->getAttribute("id"); $obj = in_array($id, $dec->objects) ? $dec->objects[$id] : null; if (!isset($obj)) { if (isset($into)) { $obj = $into; } else { $tmp = get_class($this->template); $obj = new $tmp(); } if (isset($id)) { $dec->putObject($id, $obj); } } $node = $node->firstChild; while (isset($node)) { if (!$this->processInclude($dec, $node, $obj) && $node->nodeName == "add") { $as = $node->getAttribute("as"); if (strlen($as) > 0) { $extend = $node->getAttribute("extend"); $style = strlen($extend) > 0 && isset($obj->styles[$extend]) ? array_slice($obj->styles[$extend], 0) : null; if (!isset($style)) { $style = array(); } $entry = $node->firstChild; while (isset($entry)) { if ($entry->nodeType == XML_ELEMENT_NODE) { $key = $entry->getAttribute("as"); if ($entry->nodeName == "add") { $text = $entry->textContent; $value = null; if (isset($text) && strlen($text) > 0) { $value = mxUtils::evaluate($text); } else { $value = $entry->getAttribute("value"); } if ($value != null) { $style[$key] = $value; } } else { if ($entry->nodeName == "remove") { unset($style[$key]); } } } $entry = $entry->nextSibling; } $obj->putCellStyle($as, $style); } } $node = $node->nextSibling; } return $obj; }
/** * Function: getPerimeterFunction * * Returns the perimeter function for the given state. */ function getPerimeterFunction($state) { $perimeter = mxUtils::getValue($state->style, mxConstants::$STYLE_PERIMETER); // Converts string values to objects if (is_string($perimeter)) { $tmp = mxStyleRegistry::getValue($perimeter); if ($tmp == null && strpos($perimeter, ".") !== false) { $tmp = mxUtils::evaluate($perimeter); } $perimeter = $tmp; } if ($perimeter instanceof mxPerimeterFunction) { return $perimeter; } return null; }