public function parseSpline(FileReader $iter, $matrix) { $line = $iter->current(); echo "New Spline: " . $iter->key() . "\n"; $d = preg_split('/\\s+/', $line, -1, PREG_SPLIT_NO_EMPTY); $total = $d[13]; echo "Parsing {$total} points\n"; $count = 0; $points = array(); $state = 1; // fetch points $iter->next(); // advance to next line foreach ($iter as $line) { $d = preg_split('/\\s+/', $line, -1, PREG_SPLIT_NO_EMPTY); //echo implode(",",$d)."\n"; switch ($state) { case 1: $points[] = transformPoint($matrix, (object) array('x' => $d[0], 'y' => $d[1])); ++$count; if ($count == $total) { $state = 2; $count = 0; } break; case 2: $count += count($d); if ($count >= $total) { break 2; } break; } } // finished spline echo "Ending Spline: " . $iter->key() . "\n"; return $points; }
/** * Parses the coefficient properties of GROUP 1050 * * @param FileReader $file */ protected function parseGroup1050(FileReader $file) { $coeffStart = []; $coeffCount = []; $coeffSets = []; $nameLen = ceil($this->const->count() / 10); $valueLen = ceil($this->const->count() / 3); // Seek to GROUP 1050 line 1 $file->seek(22 + $nameLen + $valueLen); foreach (explode(' ', $file->current()) as $i) { if ($i != '') { $coeffStart[] = (int) $i; } } // Seek to GROUP 1050 line 2 $file->seek(23 + $nameLen + $valueLen); foreach (explode(' ', $file->current()) as $i) { if ($i != '') { $coeffCount[] = (int) $i; } } // Seek to GROUP 1050 line 3 $file->seek(24 + $nameLen + $valueLen); foreach (explode(' ', $file->current()) as $i) { if ($i != '') { $coeffSets[] = (int) $i; } } // Save coefficient values to properties $this->coeffStart = $coeffStart; $this->coeffCount = $coeffCount; $this->coeffSets = $coeffSets; }