Exemple #1
0
 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;
 }
Exemple #2
0
 /**
  * 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;
 }