false, "message" => "Cannot load plot context file"); $doc = new DOMDocument("1.0", "UTF-8"); $doc->preserveWhiteSpace = false; $doc->formatOutput = true; if (!$doc->load($filePath)) return array("success" => false, "message" => "Cannot load plot context file"); // $pageNodes = $doc->getElementsByTagName('page'); if ($pageNodes->length <= 0) return array("success" => false, "message" => "Cannot load context page node"); $pageNode = $pageNodes->item(0); $isPortrait = $pageNode->getAttribute('portrait') == "true"; $pageContext = array( 'startTime' => $pageNode->getAttribute('startTime'), 'stopTime' => $pageNode->getAttribute('stopTime'), 'superposeMode' => ($pageNode->getAttribute('superposeMode') == "true"), 'ttName' => $pageNode->getAttribute('ttName'), 'ttIndex' => ($pageNode->getAttribute('ttIndex') == '') ? 0 : intval($pageNode->getAttribute('ttIndex')), 'ttNbIntervals' => ($pageNode->getAttribute('ttNbIntervals') == '') ? 0 : intval($pageNode->getAttribute('ttNbIntervals')), 'portrait' => $isPortrait, //An image rotation of 90 deg. is done after request execution if a page is in "portrait" mode 'width' => ($isPortrait ? intval($pageNode->getAttribute('height')) : intval($pageNode->getAttribute('width'))), 'height' => ($isPortrait ? intval($pageNode->getAttribute('width')) : intval($pageNode->getAttribute('height'))), 'panels' => array() ); // $panelNodes = $pageNode->getElementsByTagName('panel'); foreach ($panelNodes as $panelNode) { $panelContext = array( 'id' => $panelNode->getAttribute('id') ); if ($isPortrait) { $panelContext['x'] = intval($panelNode->getAttribute('y')); $panelContext['width'] = intval($panelNode->getAttribute('height')); $panelContext['height'] = intval($panelNode->getAttribute('width')); $panelContext['y'] = $pageContext['height'] - intval($panelNode->getAttribute('x')) - $panelContext['height']; } else { $panelContext['x'] = intval($panelNode->getAttribute('x')); $panelContext['height'] = intval($panelNode->getAttribute('height')); $panelContext['y'] = $pageContext['height'] - intval($panelNode->getAttribute('y')) - $panelContext['height']; $panelContext['width'] = intval($panelNode->getAttribute('width')); } // $plotAreaNodes = $panelNode->getElementsByTagName('plotArea'); if ($plotAreaNodes->length > 0) { $panelContext['plotArea'] = array(); $plotAreaNode = $plotAreaNodes->item(0); if ($isPortrait) { $panelContext['plotArea']['x'] = intval($plotAreaNode->getAttribute('y')); $panelContext['plotArea']['width'] = intval($plotAreaNode->getAttribute('height')); $panelContext['plotArea']['height'] = intval($plotAreaNode->getAttribute('width')); $panelContext['plotArea']['y'] = $pageContext['height'] - intval($plotAreaNode->getAttribute('x')) - $panelContext['plotArea']['height']; } else { $panelContext['plotArea']['x'] = intval($plotAreaNode->getAttribute('x')); $panelContext['plotArea']['height'] = intval($plotAreaNode->getAttribute('height')); $panelContext['plotArea']['y'] = $pageContext['height'] - intval($plotAreaNode->getAttribute('y')) - $panelContext['plotArea']['height']; $panelContext['plotArea']['width'] = intval($plotAreaNode->getAttribute('width')); } //hasSpectro $panelContext['plotArea']['hasSpectro'] = ($plotAreaNode->getAttribute('hasSpectro') == "true"); // $panelContext['plotArea']['axes'] = array(); $axisNodes = $plotAreaNode->getElementsByTagName('axis'); foreach($axisNodes as $axisNode) { $axisContext = array( 'id' => $axisNode->getAttribute('id'), 'logarithmic' => ($axisNode->getAttribute('logarithmic') == "true"), 'min' => floatval($axisNode->getAttribute('min')), 'max' => floatval($axisNode->getAttribute('max')) ); $panelContext['plotArea']['axes'][] = $axisContext; } } $pageContext['panels'][] = $panelContext; } return array("success" => true, "page" => $pageContext); } } ?>